mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-07 20:16:55 +03:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a3038eceb | ||
|
|
7d2f86b72e | ||
|
|
3aaa319505 | ||
|
|
f4075f0a51 | ||
|
|
59643a8d52 | ||
|
|
d71e8320c7 | ||
|
|
3b3d924f40 | ||
|
|
60701bc007 | ||
|
|
5ca3e184e0 |
126
Changelog.md
126
Changelog.md
@@ -1,6 +1,130 @@
|
||||
# Versions
|
||||
|
||||
##### 5.0.0 Setup Modus - (2020-12-06)
|
||||
|
||||
* Implementation of initial setup modus for fresh installation
|
||||
|
||||
* Code restructuring (full compatibility between pure ESP-IDF and Platformio w/ espressif)
|
||||
|
||||
|
||||
|
||||
##### 4.1.1 Configuration editor - (2020-12-02)
|
||||
|
||||
* Bug fixing: internal improvement of file handling (reduce not responding)
|
||||
|
||||
|
||||
##### 4.1.0 Configuration editor - (2020-11-30)
|
||||
|
||||
* Implementation of configuration editor (including basic and expert mode)
|
||||
|
||||
* Adjustable time zone to adjust to local time setting (incl. daylight saving time)
|
||||
|
||||
* MQTT: additional topic for error reporting
|
||||
|
||||
* standardized access to current logfile via `http://IP-ADRESS/logfileact`
|
||||
|
||||
* Update digital CNN to v7.2.0, analog CNN to 6.3.0
|
||||
|
||||
* Bug fixing: truncation error, CheckDigitConsistency & PreValue implementation
|
||||
|
||||
|
||||
|
||||
##### 4.0.0 Tflite Core - (2020-11-15)
|
||||
|
||||
* Implementation of rolling log-files
|
||||
|
||||
* Update Tflite-Core to master@20201108 (v2.4)
|
||||
|
||||
* Bug-fixing for reducing reboots
|
||||
|
||||
|
||||
|
||||
##### 3.1.0 MQTT-Client - (2020-10-26)
|
||||
|
||||
* Update digital CNN to v6.5.0 and HTML (Info to hostname, IP, ssid)
|
||||
|
||||
* New implementation of "checkDigitConsistency" also for digits
|
||||
* MQTT-Adapter: user and password for sign in MQTT-Broker
|
||||
|
||||
##### 3.0.0 MQTT-Client (2020-10-14)
|
||||
|
||||
* Implementation of MQTT Client
|
||||
* Improved Version Control
|
||||
* bug-fixing
|
||||
|
||||
|
||||
|
||||
##### 2.2.1 Version Control (2020-09-27)
|
||||
|
||||
* Bug-Fixing (hostname in wlan.ini and error handling inside flow)
|
||||
|
||||
|
||||
##### 2.2.0 Version Control (2020-09-27)
|
||||
|
||||
* Integrated automated versioning system (menu: SYSTEM --> INFO)
|
||||
* Update Build-System to PlatformIO - Espressif 32 v2.0.0 (ESP-IDF 4.1)
|
||||
|
||||
|
||||
##### 2.1.0 Decimal Shift, Chrome & Edge (2020-09-25)
|
||||
|
||||
* Implementation of Decimal Shift
|
||||
|
||||
* Update default CNN for digits to v6.4.0
|
||||
|
||||
* Improvement HTML
|
||||
|
||||
* Support for Chrome and Edge
|
||||
|
||||
* Reduce logging to minimum - extended logging on demand
|
||||
|
||||
* Implementation of hostname in wlan.ini (`hostname = "HOSTNAME")`
|
||||
|
||||
* Bug fixing, code corrections
|
||||
|
||||
|
||||
##### 2.0.0 Layout update (2020-09-12)
|
||||
|
||||
* Update to **new and modern layout**
|
||||
* Support for Chrome improved
|
||||
* Improved robustness: improved error handling in auto flow reduces spontaneous reboots
|
||||
* File server: Option for "DELETE ALL"
|
||||
* WLan: support of spaces in SSID and password
|
||||
* Reference Image: Option for mirror image, option for image update on the fly
|
||||
* additional parameter in `wasserzaehler.html?noerror=true` to suppress an potential error message
|
||||
* bug fixing
|
||||
|
||||
|
||||
|
||||
##### 1.1.3 (2020-09-09)
|
||||
|
||||
* **Bug in configuration of analog ROIs corrected** - correction in v.1.0.2 did not work properly
|
||||
* Improved update page for the web server (`/html` can be updated via a zip-file, which is provided in `/firmware/html.zip`)
|
||||
* Improved Chrome support
|
||||
|
||||
##### 1.1.0 (2020-09-06)
|
||||
|
||||
* Implementation of "delete complete directory"
|
||||
**Attention: beside the `firmware.bin`, also the content of `/html` needs to be updated!**
|
||||
|
||||
|
||||
|
||||
##### 1.0.2 (2020-09-06)
|
||||
|
||||
* Bug in configuration of analog ROIs corrected
|
||||
* minor bug correction
|
||||
|
||||
##### 1.0.1 (2020-09-05)
|
||||
|
||||
* preValue.ini Bug corrected
|
||||
* minor bug correction
|
||||
|
||||
##### 1.0.0 (2020-09-04)
|
||||
|
||||
* **First usable version** - compatible to previous project (https://github.com/jomjol/water-meter-system-complete)
|
||||
* NEW:
|
||||
* no docker container for CNN calculation necessary
|
||||
* web based configuration editor on board
|
||||
|
||||
##### 0.1.0 (2020-08-07)
|
||||
|
||||
* Initial Version
|
||||
|
||||
|
||||
61
FeatureRequest.md
Normal file
61
FeatureRequest.md
Normal file
@@ -0,0 +1,61 @@
|
||||
## Feature Requests
|
||||
|
||||
**There are a lot of ideas for further improvements, but only limited capacity on side of the developer. **Therefore I have created this page as a collection of ideas.
|
||||
|
||||
1. Who ever has a new idea can put it here, so it that it is not forgotten.
|
||||
|
||||
2. Who ever has time, capacity and passion to support, can take any of the ideas and implement them.
|
||||
I will support and help where ever I can!
|
||||
|
||||
|
||||
|
||||
____
|
||||
|
||||
#### #3 Allow grouping of digits to multiple reading values
|
||||
|
||||
* https://github.com/jomjol/AI-on-the-edge-device/issues/123
|
||||
|
||||
Implementation of two different independent readouts in one setup
|
||||
|
||||
To do:
|
||||
|
||||
* Extend the configuration, setting and processing flow for two independend readouts
|
||||
|
||||
|
||||
####
|
||||
|
||||
https://github.com/jomjol/AI-on-the-edge-device/issues/123
|
||||
|
||||
|
||||
|
||||
____
|
||||
|
||||
#### #2 MQTT-controll with callback
|
||||
* https://github.com/jomjol/AI-on-the-edge-device/issues/105
|
||||
|
||||
Extend the MQTT client to also enable callbacks for configuration setting
|
||||
|
||||
To do:
|
||||
|
||||
* implement callback for receiving information and override `config.ini` settings
|
||||
|
||||
* change configuration management to handle online updates (currently changes need a restart)
|
||||
|
||||
* think about the startup, as there the default config is loaded
|
||||
|
||||
|
||||
|
||||
____
|
||||
|
||||
#### #1 Optional GPIO for external flash/lighting
|
||||
|
||||
* https://github.com/jomjol/AI-on-the-edge-device/issues/133
|
||||
|
||||
Implementation of an an extrnal flash / lightning through GPIOs.
|
||||
* available GPIOs: 12 & 13 (currently in use for html switching)
|
||||
|
||||
To do:
|
||||
|
||||
* Implementation of a software module for external light source (e.g. WS8132 LED controller, ...)
|
||||
* Update of the camera module to use the external light instead of the internal flash light
|
||||
* Adopt the configuration algorithm with a configurable light source
|
||||
148
README.md
148
README.md
@@ -41,8 +41,14 @@ If you would like to support the developer with a cup of coffee you can do that
|
||||
|
||||
|
||||
|
||||
##### 6.3.0 Image Processing in Memory - (2021-03-14)
|
||||
##### 6.4.0 Image Processing in Memory - (2021-03-20)
|
||||
|
||||
* Additional alignment marks for settings the ROIs (analog and digit)
|
||||
* Upgrade analog CNN to v7.0.0 (added new type of pointer)
|
||||
|
||||
##### 6.3.1 Image Processing in Memory - (2021-03-16)
|
||||
|
||||
* NEW: 6.3.1: bug fixing in initial edit reference image and `config.ini` (Spelling error in `InitialRotate`)
|
||||
* Initial setup mode: bug fixing, error correction
|
||||
* Bug-fixing
|
||||
|
||||
@@ -75,151 +81,43 @@ If you would like to support the developer with a cup of coffee you can do that
|
||||
* **Major change**: image processing fully in memory - no need of SD card buffer anymore
|
||||
|
||||
* Need to limit camera resolution to VGA (due to memory limits)
|
||||
|
||||
* MQTT: Last Will Testament (LWT) implemented: "connection lost" in case of connection lost to `TopicError`
|
||||
|
||||
* Disabled `CheckDigitIncreaseConsistency` in default configuration - must now be explicit enabled if needed
|
||||
|
||||
* Update digital CNN to v7.2.1 (additional digital images trained)
|
||||
|
||||
* Setting of arbitrary time server in `config.ini`
|
||||
|
||||
* Option for fixed IP-, DNS-Settings in `wlan.ini`
|
||||
|
||||
* Increased stability (internal image and camera handling)
|
||||
|
||||
* Bug fixing: edit digits, handling PreValue, html-bugs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Additional ideas
|
||||
|
||||
There are some ideas and feature request, which are not followed currently - mainly due to capacity reasons on side of the developer. They are collected here: [FeatureRequest.md](FeatureRequest.md)
|
||||
|
||||
|
||||
|
||||
------
|
||||
|
||||
## History
|
||||
|
||||
##### 5.0.0 Setup Modus - (2020-12-06)
|
||||
|
||||
* Implementation of initial setup modus for fresh installation
|
||||
|
||||
* Code restructuring (full compatibility between pure ESP-IDF and Platformio w/ espressif)
|
||||
|
||||
|
||||
|
||||
##### 4.1.1 Configuration editor - (2020-12-02)
|
||||
|
||||
* Bug fixing: internal improvement of file handling (reduce not responding)
|
||||
|
||||
|
||||
##### 4.1.0 Configuration editor - (2020-11-30)
|
||||
|
||||
* Implementation of configuration editor (including basic and expert mode)
|
||||
|
||||
* Adjustable time zone to adjust to local time setting (incl. daylight saving time)
|
||||
|
||||
* MQTT: additional topic for error reporting
|
||||
|
||||
* standardized access to current logfile via `http://IP-ADRESS/logfileact`
|
||||
|
||||
* Update digital CNN to v7.2.0, analog CNN to 6.3.0
|
||||
|
||||
* Bug fixing: truncation error, CheckDigitConsistency & PreValue implementation
|
||||
|
||||
|
||||
|
||||
##### 4.0.0 Tflite Core - (2020-11-15)
|
||||
* Implementation of rolling log-files
|
||||
|
||||
* Update Tflite-Core to master@20201108 (v2.4)
|
||||
|
||||
* Bug-fixing for reducing reboots
|
||||
|
||||
|
||||
|
||||
##### 3.1.0 MQTT-Client - (2020-10-26)
|
||||
|
||||
* Update digital CNN to v6.5.0 and HTML (Info to hostname, IP, ssid)
|
||||
|
||||
* New implementation of "checkDigitConsistency" also for digits
|
||||
* MQTT-Adapter: user and password for sign in MQTT-Broker
|
||||
|
||||
##### 3.0.0 MQTT-Client (2020-10-14)
|
||||
|
||||
* Implementation of MQTT Client
|
||||
* Improved Version Control
|
||||
* bug-fixing
|
||||
##### 2.2.1 Version Control - (2020-09-27)
|
||||
|
||||
|
||||
|
||||
##### 2.2.1 Version Control (2020-09-27)
|
||||
|
||||
* Bug-Fixing (hostname in wlan.ini and error handling inside flow)
|
||||
|
||||
##### 2.1.0 Decimal Shift, Chrome & Edge - (2020-09-25)
|
||||
|
||||
|
||||
##### 2.2.0 Version Control (2020-09-27)
|
||||
##### 2.0.0 Layout update - (2020-09-12)
|
||||
|
||||
* Integrated automated versioning system (menu: SYSTEM --> INFO)
|
||||
* Update Build-System to PlatformIO - Espressif 32 v2.0.0 (ESP-IDF 4.1)
|
||||
|
||||
|
||||
##### 2.1.0 Decimal Shift, Chrome & Edge (2020-09-25)
|
||||
|
||||
* Implementation of Decimal Shift
|
||||
|
||||
* Update default CNN for digits to v6.4.0
|
||||
|
||||
* Improvement HTML
|
||||
|
||||
* Support for Chrome and Edge
|
||||
|
||||
* Reduce logging to minimum - extended logging on demand
|
||||
|
||||
* Implementation of hostname in wlan.ini (`hostname = "HOSTNAME")`
|
||||
|
||||
* Bug fixing, code corrections
|
||||
|
||||
|
||||
##### 2.0.0 Layout update (2020-09-12)
|
||||
|
||||
* Update to **new and modern layout**
|
||||
* Support for Chrome improved
|
||||
* Improved robustness: improved error handling in auto flow reduces spontaneous reboots
|
||||
* File server: Option for "DELETE ALL"
|
||||
* WLan: support of spaces in SSID and password
|
||||
* Reference Image: Option for mirror image, option for image update on the fly
|
||||
* additional parameter in `wasserzaehler.html?noerror=true` to suppress an potential error message
|
||||
* bug fixing
|
||||
|
||||
|
||||
|
||||
##### 1.1.3 (2020-09-09)
|
||||
|
||||
* **Bug in configuration of analog ROIs corrected** - correction in v.1.0.2 did not work properly
|
||||
* Improved update page for the web server (`/html` can be updated via a zip-file, which is provided in `/firmware/html.zip`)
|
||||
* Improved Chrome support
|
||||
|
||||
##### 1.1.0 (2020-09-06)
|
||||
|
||||
* Implementation of "delete complete directory"
|
||||
**Attention: beside the `firmware.bin`, also the content of `/html` needs to be updated!**
|
||||
|
||||
|
||||
|
||||
##### 1.0.2 (2020-09-06)
|
||||
|
||||
* Bug in configuration of analog ROIs corrected
|
||||
* minor bug correction
|
||||
|
||||
##### 1.0.1 (2020-09-05)
|
||||
|
||||
* preValue.ini Bug corrected
|
||||
* minor bug correction
|
||||
|
||||
##### 1.0.0 (2020-09-04)
|
||||
|
||||
* **First usable version** - compatible to previous project (https://github.com/jomjol/water-meter-system-complete)
|
||||
* NEW:
|
||||
* no docker container for CNN calculation necessary
|
||||
* web based configuration editor on board
|
||||
|
||||
##### 0.1.0 (2020-08-07)
|
||||
|
||||
* Initial Version
|
||||
##### 1.1.3 Initial Version - (2020-09-09)
|
||||
|
||||
|
||||
#### [Full Changelog](Changelog.md)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const char* GIT_REV="5f0f180";
|
||||
const char* GIT_REV="3b3d924";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="master";
|
||||
const char* BUILD_TIME="2021-03-14 12:56";
|
||||
const char* BUILD_TIME="2021-03-17 22:46";
|
||||
@@ -13,7 +13,7 @@ extern "C"
|
||||
#include "Helper.h"
|
||||
#include <fstream>
|
||||
|
||||
const char* GIT_BASE_BRANCH = "master - v6.3.0 - 2020-03-14";
|
||||
const char* GIT_BASE_BRANCH = "master - v6.3.1 - 2020-03-16";
|
||||
|
||||
|
||||
const char* git_base_branch(void)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
|
||||
This directory is intended for PlatformIO Unit Testing and project tests.
|
||||
|
||||
Unit Testing is a software testing method by which individual units of
|
||||
source code, sets of one or more MCU program modules together with associated
|
||||
control data, usage procedures, and operating procedures, are tested to
|
||||
determine whether they are fit for use. Unit testing finds problems early
|
||||
in the development cycle.
|
||||
|
||||
More information about PlatformIO Unit Testing:
|
||||
- https://docs.platformio.org/page/plus/unit-testing.html
|
||||
@@ -1,4 +1,4 @@
|
||||
const char* GIT_REV="5f0f180";
|
||||
const char* GIT_REV="3b3d924";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="master";
|
||||
const char* BUILD_TIME="2021-03-14 12:56";
|
||||
const char* BUILD_TIME="2021-03-17 22:46";
|
||||
Binary file not shown.
Binary file not shown.
BIN
sd-card/config/ana0700s1lq.tflite
Normal file
BIN
sd-card/config/ana0700s1lq.tflite
Normal file
Binary file not shown.
@@ -8,7 +8,7 @@ ImageSize = VGA
|
||||
FixedExposure = false
|
||||
|
||||
[Alignment]
|
||||
InitalRotate=180
|
||||
InitialRotate=180
|
||||
/config/ref0.jpg 119 273
|
||||
/config/ref1.jpg 456 138
|
||||
SearchFieldX = 20
|
||||
@@ -26,7 +26,7 @@ digit2 355 120 37 67
|
||||
digit3 404 120 37 67
|
||||
|
||||
[Analog]
|
||||
Model = /config/ana0630s2.tflite
|
||||
Model = /config/ana0700s1lq.tflite
|
||||
;LogImageLocation = /log/analog
|
||||
;LogfileRetentionInDays = 3
|
||||
ModelInputSize = 32 32
|
||||
|
||||
@@ -363,7 +363,15 @@ function ParseIni(_basepath) {
|
||||
var y0 = parseInt(rect.startY) - parseInt(lw/2);
|
||||
var dx = parseInt(rect.w) + parseInt(lw);
|
||||
var dy = parseInt(rect.h) + parseInt(lw);
|
||||
context.strokeRect(x0, y0, dx, dy);
|
||||
context.strokeRect(x0, y0, dx, dy);
|
||||
context.lineWidth = 1;
|
||||
context.beginPath();
|
||||
context.arc(x0+dx/2, y0+dy/2, dx/2, 0, 2 * Math.PI);
|
||||
context.moveTo(x0+dx/2, y0);
|
||||
context.lineTo(x0+dx/2, y0+dy);
|
||||
context.moveTo(x0, y0+dy/2);
|
||||
context.lineTo(x0+dx, y0+dy/2);
|
||||
context.stroke();
|
||||
ROIInfo[aktindex]["x"] = rect.startX;
|
||||
ROIInfo[aktindex]["y"] = rect.startY;
|
||||
ROIInfo[aktindex]["dx"] = rect.w;
|
||||
|
||||
@@ -354,7 +354,9 @@ function draw() {
|
||||
var y0 = parseInt(rect.startY) - parseInt(lw/2);
|
||||
var dx = parseInt(rect.w) + parseInt(lw);
|
||||
var dy = parseInt(rect.h) + parseInt(lw);
|
||||
context.strokeRect(x0, y0, dx, dy);
|
||||
context.strokeRect(x0, y0, dx, dy);
|
||||
context.lineWidth = 1;
|
||||
context.strokeRect(x0+dx*0.2, y0+dy*0.2, dx*0.6, dy*0.6);
|
||||
ROIInfo[aktindex]["x"] = rect.startX;
|
||||
ROIInfo[aktindex]["y"] = rect.startY;
|
||||
ROIInfo[aktindex]["dx"] = rect.w;
|
||||
|
||||
@@ -164,7 +164,7 @@ table {
|
||||
// document.getElementById("MakeImage_Saturation_value1").disabled = true;
|
||||
// document.getElementById("MakeImage_Contrast_value1").disabled = true;
|
||||
document.getElementById("mirror").disabled = false;
|
||||
if (!(param["Alignment"]["InitialMirror"].found))
|
||||
if (!(param["MakeImage"]["Brightness"].found))
|
||||
{
|
||||
document.getElementById("MakeImage_Brightness_value1").type = "hidden";
|
||||
document.getElementById("MakeImage_Brightness_text").style.visibility = "hidden";
|
||||
@@ -200,13 +200,15 @@ table {
|
||||
ReadParameter(param, "MakeImage", "Brightness", false);
|
||||
// ReadParameter(param, "MakeImage", "Contrast", false);
|
||||
// ReadParameter(param, "MakeImage", "Saturation", false);
|
||||
var textToSave = setConfigParameters(param);
|
||||
FileDeleteOnServer("/config/config.ini", basepath);
|
||||
FileSendContent(textToSave, "/config/config.ini", basepath);
|
||||
}
|
||||
|
||||
var canvas = document.getElementById("canvas");
|
||||
drawRotated(false);
|
||||
|
||||
var textToSave = setConfigParameters(param);
|
||||
FileDeleteOnServer("/config/config.ini", basepath);
|
||||
FileSendContent(textToSave, "/config/config.ini", basepath);
|
||||
|
||||
SaveCanvasToImage(canvas, "/config/reference.jpg", true, basepath);
|
||||
showReference();
|
||||
UpdatePage();
|
||||
|
||||
@@ -9,7 +9,7 @@ function getbasepath(){
|
||||
{
|
||||
// host = "http://192.168.2.118"; // jomjol interner test
|
||||
// host = "http://192.168.178.26"; // jomjol interner test
|
||||
host = "http://192.168.178.26"; // jomjol interner Real
|
||||
host = "http://192.168.178.22"; // jomjol interner Real
|
||||
// host = "."; // jomjol interner localhost
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.0.0
|
||||
6.4.0
|
||||
|
||||
Reference in New Issue
Block a user