Skip to content

Commit

Permalink
release 15.1.0 (#2172)
Browse files Browse the repository at this point in the history
* Testcase for #2145 and debug-log (#2151)

* new models ana-cont-11.0.5, ana-class100-1.5.7, dig-class100-1.6.0

* Testcase for #2145
Added debug log, if allowNegativeRates is handeled

* Fix timezone config parser (#2169)

* make sure to parse the whole config line

* fix crash on empty timezone parameter

---------

Co-authored-by: CaCO3 <[email protected]>

* Enhance ROI pages (#2161)

* Check if the ROIs are equidistant. Only if not, untick the checkbox

* renaming

* Check if the ROIs have same y, dy and dx. If so, tick the sync checkbox

* only allow editing space when box is checked

* fix sync check

* show inner frame on all ROIs

* cleanup

* Check if the ROIs have same dy and dx. If so, tick the sync checkbox

* checkbox position

* renaming

* renaming

* show inner frame and cross hairs on all ROIs

* update ROIs on ticking checkboxes

* show timezone hint

* fix deleting last ROI

* cleanup

---------

Co-authored-by: CaCO3 <[email protected]>

* restart timeout on progress, catch error (#2170)

* restart timeout on progress, catch error

* .

---------

Co-authored-by: CaCO3 <[email protected]>

* BugFix #2167

* Release 15.1 preparations (#2171)

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update changelog

* Fix links to PR

* Formating

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

---------

Co-authored-by: Slider0007 <[email protected]>
Co-authored-by: Slider0007 <[email protected]>

---------

Co-authored-by: Frank Haverland <[email protected]>
Co-authored-by: CaCO3 <[email protected]>
Co-authored-by: jomjol <[email protected]>
Co-authored-by: Slider0007 <[email protected]>
Co-authored-by: Slider0007 <[email protected]>
  • Loading branch information
6 people authored Mar 12, 2023
1 parent 53cee96 commit 7d33c3e
Show file tree
Hide file tree
Showing 12 changed files with 258 additions and 95 deletions.
81 changes: 45 additions & 36 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,67 @@
## [Unreleased]

xxx
## [15.1.0] - 2023-03-12

### Update Procedure

Update Procedure see [online documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#update-ota-over-the-air)

:bangbang: Afterwards you should force-reload the Web Interface (usually Ctrl-F5 will do it).

### Changes
:bangbang: Afterwards you should force-reload the Web Interface (usually Ctrl-F5 will do it)!

This release only migrates some parameters, see #2023 for details and a list of all parameter changes.
The parameter migration happens automatically on the next startup. No user interaction is required.
A backup of the config is stored on the SD-card as `config.bak`.
:bangbang: Afterwards you should check your configuration for errors!

Beside of the parameter change and the bugfix listed below, no changes are contained in this release!
### Changes

If you want to revert back to `v14` or earlier, you will have to revert the migration changes in `config.ini` manually!
For a full list of changes see [Full list of changes](https://github.com/jomjol/AI-on-the-edge-device/compare/v15.0.3...v15.1.0)

#### Added
- The Configuration page has now tooltips with enhanced documentation
- MQTT:
- Added `GJ` (`gigajoule`) as an energy meter unit
- Removed State Class and unit from `raw` topic
- Various Improvements (Only send Homeassistant Discovery the first time we connect, ...) (https://github.com/jomjol/AI-on-the-edge-device/pull/2091
- Added Expert Parameter to change CPU Clock from `160` to `240 Mhz`
- SD card basic read/write check and a folder/file presence check at boot to indicate SD card issues or missing folders / files ([#2085](https://github.com/jomjol/AI-on-the-edge-device/pull/2085))
- Simplified "WIFI roaming" by client triggered channel scan (AP switching at low RSSI) -> using expert parameter "RSSIThreshold" ([#2120](https://github.com/jomjol/AI-on-the-edge-device/pull/2120))
- Log WLAN disconnect reason codes (see [WLAN disconnect reasons](https://jomjol.github.io/AI-on-the-edge-device-docs/WLAN-disconnect-reason))
- Support of InfluxDB v2 ([#2004](https://github.com/jomjol/AI-on-the-edge-device/pull/2004))

- Additional interface to InfluxDB Version 2 upwards
- Updated the network and corrected problems with quantized version:
- Hybrid CNN network to `dig-cont_0611_s3`
- Analog CNN network to `ana-cont-11.0.5` and `ana-clas100-1.5.7`
- Digital CNN network to `dig-class100-1.6.0`

- :bangbang: Update Camera driver: contrast, brightness and saturation now working

:bangbang: **Attention**: this can effect old version as well, because there not all settings were effective!

- Option to change the CPU frequency (stability vs. speed)
- Homeassistant: add GJ (giga joule)
- Implementes "poor mans" wifi roaming to connect to the nearest access point
- Additional startup checks (sd card, folder / file prescence, boot phase)
- Internal updates (log file handling, boot phase)

#### Changed

- [#2023](https://github.com/jomjol/AI-on-the-edge-device/pull/2023) Migrated Parameters
- Removed old `Topic` parameter, it is not used anymore
- Internal optimization of memory usage to enable new features
- Improve MQTT
- Updated models (tflite files), removed old versions (https://github.com/jomjol/AI-on-the-edge-device/pull/2089, https://github.com/jomjol/AI-on-the-edge-device/pull/2133)
:bangbang: **Attention:** Update your configuration!
- Hybrid CNN network to `dig-cont_0611_s3`
- Analog CNN network to `ana-cont-11.0.5` and `ana-clas100-1.5.7`
- Digital CNN network to `dig-class100-1.6.0`
- Various Web interface Improvements/Enhancements:
- Restructured Menu (Needs cache clearing to be applied)
- Enhanced `Previous Value` page
- Improved/faster Graph page
- Various minor improvements
- ROI config pages improvements
- Improved Backup Functionality
- Added log file logs for Firmware Update
- Improved memory management (moved various stuff to external PSRAM, https://github.com/jomjol/AI-on-the-edge-device/pull/2117)
- Camera driver update: Support of contrast and saturation ([#2048](https://github.com/jomjol/AI-on-the-edge-device/pull/2048))
:bangbang: **Attention**: This could have impact to old configurations. Please check your configuration and potentially adapt parametrization, if detection is negativly affected.
- Improved error handling and provide more verbose output in error cases during boot phase ([#2020](https://github.com/jomjol/AI-on-the-edge-device/pull/2020))
- Red board LED is indicating more different errors and states (see [Status LED Blink Codes](https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes))
- Logfile: Print start indication block after time is synced to indicate start in logfile after a cold boot
- `Image Quality Index`: Limit lower input range to 8 to avoid system instabilities

#### Fixed
- Various minor fixes
- Added State Class "measurement" to rate_per_time_unit
- GPIO: Avoid MQTT publishing to empty topic when "MQTT enable" flag is not set
- Fix timezone config parser
- Remote Setup truncated long passwords (https://github.com/jomjol/AI-on-the-edge-device/issues/2167)
- Problem with timestamp in InfluxDB interface

#### Removed

- n.a.


## [15.0.3] - 2023-02-28

**Parameter Migration**
**Name: Parameter Migration**

### Update Procedure

Expand Down Expand Up @@ -93,7 +101,7 @@ If you want to revert back to `v14` or earlier, you will have to revert the migr

## [14.0.3] -2023-02-05

**Stabilization and Improved User Experience**
**Name: Stabilization and Improved User Experience**

Thanks to over 80 Pull Requests from 6 contributors, we can anounce another great release with many many improvements and new features:

Expand Down Expand Up @@ -147,7 +155,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/

## [13.0.8] - 2022-12-19

**Home Assistant MQTT Discovery Support**
**Name: Home Assistant MQTT Discovery Support**

### Update Procedure see [online documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#update-ota-over-the-air)

Expand Down Expand Up @@ -227,7 +235,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/

## [12.0.1] 2022-09-29

Improve **u**ser e**x**perience
Name: Improve **u**ser e**x**perience

:bangbang: The release breaks a few things in ota update :bangbang:

Expand Down Expand Up @@ -895,6 +903,7 @@ External Illumination
- Initial Version


[15.1.0]: https://github.com/jomjol/AI-on-the-edge-device/compare/v15.0.3...v15.1.0
[15.0.3]: https://github.com/jomjol/AI-on-the-edge-device/compare/v14.0.3...v15.0.3
[14.0.3]: https://github.com/jomjol/AI-on-the-edge-device/compare/v13.0.8...v14.0.3
[13.0.8]: https://github.com/jomjol/AI-on-the-edge-device/compare/v12.0.1...v13.0.8
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ void ClassFlowPostProcessing::handleAllowNegativeRate(string _decsep, string _va
_digit = _decsep.substr(0, _pospunkt);
else
_digit = "default";

for (int j = 0; j < NUMBERS.size(); ++j)
{
bool _rt = false;
Expand Down Expand Up @@ -841,13 +841,15 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)

if (!NUMBERS[j]->AllowNegativeRates)
{
LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handleAllowNegativeRate for device: " + NUMBERS[j]->name);
if ((NUMBERS[j]->Value < NUMBERS[j]->PreValue))
{
#ifdef SERIAL_DEBUG
ESP_LOGD(TAG, "Neg: value=%f, preValue=%f, preToll%f", NUMBERS[j]->Value, NUMBERS[j]->PreValue,
NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))
) ;
#endif

// Include inaccuracy of 0.2 for isExtendedResolution.
if (NUMBERS[j]->Value >= (NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))) && NUMBERS[j]->isExtendedResolution) {
NUMBERS[j]->Value = NUMBERS[j]->PreValue;
Expand Down
9 changes: 7 additions & 2 deletions code/components/jomjol_time_sntp/time_sntp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,10 +175,15 @@ bool setupTime() {

while (configFile.getNextLine(&line, disabledLine, eof) &&
!configFile.isNewParagraph(line)) {
splitted = ZerlegeZeile(line);
splitted = ZerlegeZeile(line, "=");

if (toUpper(splitted[0]) == "TIMEZONE") {
timeZone = splitted[1];
if (splitted.size() <= 1) { // parameter part is empty
timeZone = "";
}
else {
timeZone = splitted[1];
}
}

if (toUpper(splitted[0]) == "TIMESERVER") {
Expand Down
18 changes: 9 additions & 9 deletions code/main/softAP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,55 +212,55 @@ esp_err_t config_ini_handler(httpd_req_t *req)
{
ESP_LOGD(TAG, "Query: %s", _query);

if (httpd_query_key_value(_query, "ssid", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "ssid", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "ssid is found: %s", _valuechar);
ssid = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "pwd", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "pwd", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "pwd is found: %s", _valuechar);
pwd = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "ssid", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "ssid", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "ssid is found: %s", _valuechar);
ssid = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "hn", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "hn", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "hostname is found: %s", _valuechar);
hn = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "ip", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "ip", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "ip is found: %s", _valuechar);
ip = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "gw", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "gw", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "gateway is found: %s", _valuechar);
gw = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "nm", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "nm", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "netmask is found: %s", _valuechar);
nm = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "dns", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "dns", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "dns is found: %s", _valuechar);
dns = UrlDecode(std::string(_valuechar));
}

if (httpd_query_key_value(_query, "rssithreshold", _valuechar, 30) == ESP_OK)
if (httpd_query_key_value(_query, "rssithreshold", _valuechar, 100) == ESP_OK)
{
ESP_LOGD(TAG, "rssithreshold is found: %s", _valuechar);
rssithreshold = UrlDecode(std::string(_valuechar));
Expand Down
27 changes: 27 additions & 0 deletions code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,30 @@ void testNegative() {

}

/**
* @brief Fehlerberichte aus Issues
*
*/
void testNegative_Issues() {
// Ohne decimal_shift
std::vector<float> digits = { 2.0, 2.0, 0.0, 1.0, 7.2, 9.0, 8.0};
std::vector<float> analogs = { };
double preValue_extended = 22018.080;
double preValue = 22018.08;

const char* expected = "22017.98";

// https://github.com/jomjol/AI-on-the-edge-device/issues/2145#issuecomment-1461899094
// extendResolution=false
// value < preValue
// Prüfung eingeschaltet => Fehler
preValue = 22018.08; // zu groß
UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digital100, false, false, -2);
setAllowNegatives(underTestPost, false);
setPreValue(underTestPost, preValue_extended);
std::string result = process_doFlow(underTestPost);
TEST_ASSERT_EQUAL_STRING("Neg. Rate - Read: - Raw: 22017.98 - Pre: 22018.08 ", underTestPost->getReadoutError().c_str());
TEST_ASSERT_EQUAL_STRING(expected, result.c_str());
delete underTestPost;

}
8 changes: 4 additions & 4 deletions code/test/test_suite_flowcontroll.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ extern "C" void app_main()
esp_log_level_set("*", ESP_LOG_DEBUG); // set all components to ERROR level

UNITY_BEGIN();

RUN_TEST(testNegative);

RUN_TEST(testNegative_Issues);
/* RUN_TEST(testNegative);
RUN_TEST(test_analogToDigit_Standard);
RUN_TEST(test_analogToDigit_Transition);
RUN_TEST(test_doFlowPP);
Expand All @@ -121,6 +121,6 @@ extern "C" void app_main()
// getReadoutRawString test
RUN_TEST(test_getReadoutRawString);

*/
UNITY_END();
}
Binary file added sd-card/config/dig-class100_0160_s2_q.tflite
Binary file not shown.
20 changes: 17 additions & 3 deletions sd-card/html/backup.html
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,13 @@ <h2>Restore Configuration</h2>
xhr.timeout = 5000; // time in milliseconds
}
else if (retry == 2) { // longer timeout
xhr.timeout = 20000; // time in milliseconds
xhr.timeout = 10000; // time in milliseconds
}
else if (retry == 3) { // longer timeout
xhr.timeout = 30000; // time in milliseconds
xhr.timeout = 20000; // time in milliseconds
}
else { // very long timeout
xhr.timeout = 60000; // time in milliseconds
xhr.timeout = 30000; // time in milliseconds
}

xhr.onload = () => { // Request finished
Expand All @@ -146,6 +146,20 @@ <h2>Restore Configuration</h2>
}
};

xhr.onprogress = (e) => { // XMLHttpRequest progress ... extend timeout
xhr.timeout = xhr.timeout + 500;
};

xhr.onerror = (e) => { // XMLHttpRequest error loading
console.log("Error on fetching " + url + "!");
if (retry > 5) {
setStatus("<span style=\"color: red\">Backup failed, please restart the device and try again!</span>");
}
else {
fetchFiles(urls, filesData, index, retry+1, zipFilename);
}
};

xhr.ontimeout = (e) => { // XMLHttpRequest timed out
console.log("Timeout on fetching " + url + "!");
if (retry > 5) {
Expand Down
2 changes: 1 addition & 1 deletion sd-card/html/common.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

/* The UI can also be run locally, but you have to set the IP of your devide accordingly.
* And you also might have to disable CORS in your webbrowser! */
var domainname_for_testing = "192.168.178.62";
var domainname_for_testing = "192.168.1.153";



Expand Down
Loading

0 comments on commit 7d33c3e

Please sign in to comment.