mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-14 15:36:56 +03:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
776931c0ad | ||
|
|
e22b4b6fe1 | ||
|
|
cad534bffe | ||
|
|
3b44adb6fa | ||
|
|
cc0bd1473f | ||
|
|
58124d27bf | ||
|
|
9ad118814a |
@@ -11,6 +11,12 @@
|
|||||||
|
|
||||||
____
|
____
|
||||||
|
|
||||||
|
#### #12 Less reboots due to memory leakage
|
||||||
|
|
||||||
|
* Issue: #414 & #425 #430
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### #11 MQTT - configurable payload
|
#### #11 MQTT - configurable payload
|
||||||
|
|
||||||
* https://github.com/jomjol/AI-on-the-edge-device/issues/344
|
* https://github.com/jomjol/AI-on-the-edge-device/issues/344
|
||||||
|
|||||||
@@ -47,7 +47,13 @@ In other cases you can contact the developer via email: <img src="https://raw.gi
|
|||||||
|
|
||||||
**General remark:** Beside the `firmware.bin`, typically also the content of `/html` needs to be updated!
|
**General remark:** Beside the `firmware.bin`, typically also the content of `/html` needs to be updated!
|
||||||
|
|
||||||
|
##### 9.2.0 - External Illumination (2021-12-02)
|
||||||
|
|
||||||
|
- Direct JSON access: ``http://IP-ADRESS/json``
|
||||||
|
- Error message in log file in case camera error during startup
|
||||||
|
- Upgrade analog CNN to v9.1.0
|
||||||
|
- Upgrade digital CNN to v13.3.0 (added new images)
|
||||||
|
- html: support of different ports
|
||||||
|
|
||||||
##### 9.1.1 - External Illumination (2021-11-16)
|
##### 9.1.1 - External Illumination (2021-11-16)
|
||||||
|
|
||||||
|
|||||||
@@ -624,4 +624,30 @@ esp_err_t ClassFlowControll::GetJPGStream(std::string _fn, httpd_req_t *req)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string ClassFlowControll::getJSON()
|
||||||
|
{
|
||||||
|
std::vector<NumberPost*>* NUMBERS = flowpostprocessing->GetNumbers();
|
||||||
|
|
||||||
|
std::string json="{\n";
|
||||||
|
|
||||||
|
for (int i = 0; i < (*NUMBERS).size(); ++i)
|
||||||
|
{
|
||||||
|
json += "\"" + (*NUMBERS)[i]->name + "\":\n";
|
||||||
|
json += " {\n";
|
||||||
|
json += " \"value\": " + (*NUMBERS)[i]->ReturnValueNoError + ",\n";
|
||||||
|
json += " \"raw\": \"" + (*NUMBERS)[i]->ReturnRawValue + "\",\n";
|
||||||
|
json += " \"error\": \"" + (*NUMBERS)[i]->ErrorMessageText + "\",\n";
|
||||||
|
json += " \"rate\": " + std::to_string((*NUMBERS)[i]->FlowRateAct) + ",\n";
|
||||||
|
json += " \"timestamp\": \"" + (*NUMBERS)[i]->timeStamp + "\"\n";
|
||||||
|
if ((i+1) < (*NUMBERS).size())
|
||||||
|
json += " },\n";
|
||||||
|
else
|
||||||
|
json += " }\n";
|
||||||
|
}
|
||||||
|
json += "}";
|
||||||
|
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ public:
|
|||||||
string UpdatePrevalue(std::string _newvalue, std::string _numbers, bool _extern);
|
string UpdatePrevalue(std::string _newvalue, std::string _numbers, bool _extern);
|
||||||
string GetPrevalue(std::string _number = "");
|
string GetPrevalue(std::string _number = "");
|
||||||
bool ReadParameter(FILE* pfile, string& aktparamgraph);
|
bool ReadParameter(FILE* pfile, string& aktparamgraph);
|
||||||
|
string getJSON();
|
||||||
|
|
||||||
string TranslateAktstatus(std::string _input);
|
string TranslateAktstatus(std::string _input);
|
||||||
|
|
||||||
|
|||||||
@@ -189,6 +189,36 @@ esp_err_t handler_doflow(httpd_req_t *req)
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
esp_err_t handler_json(httpd_req_t *req)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_DETAIL_ON
|
||||||
|
LogFile.WriteHeapInfo("handler_json - Start");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
printf("handler_JSON uri:\n"); printf(req->uri); printf("\n");
|
||||||
|
|
||||||
|
char _query[100];
|
||||||
|
char _size[10];
|
||||||
|
|
||||||
|
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
|
||||||
|
httpd_resp_set_type(req, "application/json");
|
||||||
|
|
||||||
|
std::string zw = tfliteflow.getJSON();
|
||||||
|
if (zw.length() > 0)
|
||||||
|
httpd_resp_sendstr_chunk(req, zw.c_str());
|
||||||
|
|
||||||
|
string query = std::string(_query);
|
||||||
|
|
||||||
|
/* Respond with an empty chunk to signal HTTP response completion */
|
||||||
|
httpd_resp_sendstr_chunk(req, NULL);
|
||||||
|
|
||||||
|
#ifdef DEBUG_DETAIL_ON
|
||||||
|
LogFile.WriteHeapInfo("handler_JSON - Done");
|
||||||
|
#endif
|
||||||
|
return ESP_OK;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
esp_err_t handler_wasserzaehler(httpd_req_t *req)
|
esp_err_t handler_wasserzaehler(httpd_req_t *req)
|
||||||
@@ -710,4 +740,10 @@ void register_server_tflite_uri(httpd_handle_t server)
|
|||||||
camuri.handler = handler_wasserzaehler;
|
camuri.handler = handler_wasserzaehler;
|
||||||
camuri.user_ctx = (void*) "Wasserzaehler";
|
camuri.user_ctx = (void*) "Wasserzaehler";
|
||||||
httpd_register_uri_handler(server, &camuri);
|
httpd_register_uri_handler(server, &camuri);
|
||||||
|
|
||||||
|
camuri.uri = "/json";
|
||||||
|
camuri.handler = handler_json;
|
||||||
|
camuri.user_ctx = (void*) "JSON";
|
||||||
|
httpd_register_uri_handler(server, &camuri);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,13 +142,7 @@ void task_NoSDBlink(void *pvParameter)
|
|||||||
extern "C" void app_main(void)
|
extern "C" void app_main(void)
|
||||||
{
|
{
|
||||||
TickType_t xDelay;
|
TickType_t xDelay;
|
||||||
|
|
||||||
|
|
||||||
printf("Do Reset Camera\n");
|
|
||||||
PowerResetCamera();
|
|
||||||
Camera.InitCam();
|
|
||||||
Camera.LightOnOff(false);
|
|
||||||
|
|
||||||
if (!Init_NVS_SDCard())
|
if (!Init_NVS_SDCard())
|
||||||
{
|
{
|
||||||
xTaskCreate(&task_NoSDBlink, "task_NoSDBlink", configMINIMAL_STACK_SIZE * 64, NULL, tskIDLE_PRIORITY+1, NULL);
|
xTaskCreate(&task_NoSDBlink, "task_NoSDBlink", configMINIMAL_STACK_SIZE * 64, NULL, tskIDLE_PRIORITY+1, NULL);
|
||||||
@@ -176,8 +170,8 @@ extern "C" void app_main(void)
|
|||||||
printf("DNS IP: %s\n", dns);
|
printf("DNS IP: %s\n", dns);
|
||||||
|
|
||||||
|
|
||||||
wifi_init_sta(ssid, passwd, hostname, ip, gateway, netmask, dns);
|
wifi_init_sta(ssid, passwd, hostname, ip, gateway, netmask, dns);
|
||||||
|
|
||||||
|
|
||||||
xDelay = 2000 / portTICK_PERIOD_MS;
|
xDelay = 2000 / portTICK_PERIOD_MS;
|
||||||
printf("main: sleep for : %ldms\n", (long) xDelay);
|
printf("main: sleep for : %ldms\n", (long) xDelay);
|
||||||
@@ -198,8 +192,8 @@ extern "C" void app_main(void)
|
|||||||
printf("time %s\n", zw.c_str());
|
printf("time %s\n", zw.c_str());
|
||||||
|
|
||||||
// Camera.InitCam();
|
// Camera.InitCam();
|
||||||
// Camera.LightOnOff(false);
|
// Camera.LightOnOff(false);
|
||||||
xDelay = 2000 / portTICK_PERIOD_MS;
|
xDelay = 2000 / portTICK_PERIOD_MS;
|
||||||
printf("main: sleep for : %ldms\n", (long) xDelay);
|
printf("main: sleep for : %ldms\n", (long) xDelay);
|
||||||
vTaskDelay( xDelay );
|
vTaskDelay( xDelay );
|
||||||
|
|
||||||
@@ -215,6 +209,22 @@ extern "C" void app_main(void)
|
|||||||
register_server_main_uri(server, "/sdcard");
|
register_server_main_uri(server, "/sdcard");
|
||||||
|
|
||||||
printf("vor dotautostart\n");
|
printf("vor dotautostart\n");
|
||||||
TFliteDoAutoStart();
|
|
||||||
|
// init camera module
|
||||||
|
printf("Do Reset Camera\n");
|
||||||
|
PowerResetCamera();
|
||||||
|
esp_err_t cam = Camera.InitCam();
|
||||||
|
if (cam != ESP_OK) {
|
||||||
|
ESP_LOGE(TAGMAIN, "Failed to initialize camera module. "
|
||||||
|
"Check that your camera module is working and connected properly.");
|
||||||
|
|
||||||
|
LogFile.SwitchOnOff(true);
|
||||||
|
LogFile.WriteToFile("Failed to initialize camera module. "
|
||||||
|
"Check that your camera module is working and connected properly.");
|
||||||
|
LogFile.SwitchOnOff(false);
|
||||||
|
} else {
|
||||||
|
Camera.LightOnOff(false);
|
||||||
|
TFliteDoAutoStart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const char* GIT_REV="fde0ae4";
|
const char* GIT_REV="e22b4b6";
|
||||||
const char* GIT_TAG="";
|
const char* GIT_TAG="";
|
||||||
const char* GIT_BRANCH="master";
|
const char* GIT_BRANCH="master";
|
||||||
const char* BUILD_TIME="2021-11-16 07:06";
|
const char* BUILD_TIME="2021-12-02 21:53";
|
||||||
@@ -13,7 +13,7 @@ extern "C"
|
|||||||
#include "Helper.h"
|
#include "Helper.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
const char* GIT_BASE_BRANCH = "master - v9.1.1 - 2021-11-16";
|
const char* GIT_BASE_BRANCH = "master - v9.2.0 - 2021-12-02";
|
||||||
|
|
||||||
|
|
||||||
const char* git_base_branch(void)
|
const char* git_base_branch(void)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const char* GIT_REV="fde0ae4";
|
const char* GIT_REV="e22b4b6";
|
||||||
const char* GIT_TAG="";
|
const char* GIT_TAG="";
|
||||||
const char* GIT_BRANCH="master";
|
const char* GIT_BRANCH="master";
|
||||||
const char* BUILD_TIME="2021-11-16 07:05";
|
const char* BUILD_TIME="2021-12-02 21:53";
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
BIN
images/config_s5_ROIs_details.jpg
Normal file
BIN
images/config_s5_ROIs_details.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
sd-card/config/ana0910s3_longq.tflite
Normal file
BIN
sd-card/config/ana0910s3_longq.tflite
Normal file
Binary file not shown.
@@ -20,7 +20,7 @@ FlipImageSize = false
|
|||||||
/config/ref1.jpg 442 142
|
/config/ref1.jpg 442 142
|
||||||
|
|
||||||
[Digits]
|
[Digits]
|
||||||
Model = /config/dig1310s3q.tflite
|
Model = /config/dig1330s1q.tflite
|
||||||
;LogImageLocation = /log/digit
|
;LogImageLocation = /log/digit
|
||||||
;LogfileRetentionInDays = 3
|
;LogfileRetentionInDays = 3
|
||||||
ModelInputSize = 20 32
|
ModelInputSize = 20 32
|
||||||
@@ -29,7 +29,7 @@ main.dig2 343 126 30 54
|
|||||||
main.dig3 391 126 30 54
|
main.dig3 391 126 30 54
|
||||||
|
|
||||||
[Analog]
|
[Analog]
|
||||||
Model = /config/ana0700s1lq.tflite
|
Model = /config/ana0910s3_longq.tflite
|
||||||
;LogImageLocation = /log/analog
|
;LogImageLocation = /log/analog
|
||||||
;LogfileRetentionInDays = 3
|
;LogfileRetentionInDays = 3
|
||||||
ModelInputSize = 32 32
|
ModelInputSize = 32 32
|
||||||
@@ -46,7 +46,7 @@ PreValueAgeStartup = 720
|
|||||||
AllowNegativeRates = false
|
AllowNegativeRates = false
|
||||||
main.MaxRateValue = 0.1
|
main.MaxRateValue = 0.1
|
||||||
ErrorMessage = true
|
ErrorMessage = true
|
||||||
CheckDigitIncreaseConsistency = true
|
CheckDigitIncreaseConsistency = false
|
||||||
|
|
||||||
;[MQTT]
|
;[MQTT]
|
||||||
;Uri = mqtt://IP-ADRESS:1883
|
;Uri = mqtt://IP-ADRESS:1883
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
BIN
sd-card/config/dig1330s1q.tflite
Normal file
BIN
sd-card/config/dig1330s1q.tflite
Normal file
Binary file not shown.
@@ -3,9 +3,12 @@ function gethost_Version(){
|
|||||||
return "1.0.0 - 20200910";
|
return "1.0.0 - 20200910";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getbasepath(){
|
function getbasepath(){
|
||||||
var host = window.location.hostname;
|
var host = window.location.hostname;
|
||||||
if ((host == "127.0.0.1") || (host == "localhost") || (host == ""))
|
if (((host == "127.0.0.1") || (host == "localhost") || (host == ""))
|
||||||
|
&& ((window.location.port == "80") || (window.location.port == "")))
|
||||||
|
|
||||||
{
|
{
|
||||||
// host = "http://192.168.2.219"; // jomjol interner test
|
// host = "http://192.168.2.219"; // jomjol interner test
|
||||||
// host = "http://192.168.178.46"; // jomjol interner test
|
// host = "http://192.168.178.46"; // jomjol interner test
|
||||||
@@ -18,6 +21,10 @@ function getbasepath(){
|
|||||||
{
|
{
|
||||||
host = "http://" + host;
|
host = "http://" + host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (window.location.port != "") {
|
||||||
|
host = host + ":" + window.location.port;
|
||||||
|
}
|
||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ function readconfig_Version(){
|
|||||||
return "1.0.0 - 20200910";
|
return "1.0.0 - 20200910";
|
||||||
}
|
}
|
||||||
|
|
||||||
var config_gesamt;
|
var config_gesamt = "";
|
||||||
var config_split;
|
var config_split = [];
|
||||||
var param;
|
var param = [];
|
||||||
var category;
|
var category;
|
||||||
var ref = new Array(2);
|
var ref = new Array(2);
|
||||||
var NUMBERS = new Array(0);
|
var NUMBERS = new Array(0);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
11.0.1
|
11.1.0
|
||||||
Reference in New Issue
Block a user