Browse Source

Merge branch 'master' of https://github.com/jomjol/AI-on-the-edge-device

jomjol 5 years ago
parent
commit
3cec93e2f1

+ 8 - 3
README.md

@@ -25,13 +25,18 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571
 
 
 **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!
 
 
+##### Rolling - (2020-10-25)
 
 
+* based on v3.1.0 (2020-10-26)
 
 
-##### Rolling - (2020-10-14)
+  
 
 
-* based on v3.0.0 (2020-10-14)
+##### 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)
 ##### 3.0.0 MQTT-Client  (2020-10-14)
 
 

+ 13 - 0
code/lib/connect_wlan/connect_wlan.cpp

@@ -22,6 +22,7 @@ static const char *MAIN_TAG = "connect_wlan";
 std::string ssid;
 std::string ssid;
 std::string passphrase;
 std::string passphrase;
 std::string hostname;
 std::string hostname;
+std::string ipaddress;
 
 
 std::string std_hostname = "watermeter";
 std::string std_hostname = "watermeter";
 
 
@@ -123,6 +124,7 @@ void initialise_wifi(std::string _ssid, std::string _passphrase, std::string _ho
     xEventGroupWaitBits(wifi_event_group,CONNECTED_BIT,true,true,portMAX_DELAY);
     xEventGroupWaitBits(wifi_event_group,CONNECTED_BIT,true,true,portMAX_DELAY);
     tcpip_adapter_ip_info_t ip_info;
     tcpip_adapter_ip_info_t ip_info;
     ESP_ERROR_CHECK(tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_STA, &ip_info));
     ESP_ERROR_CHECK(tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_STA, &ip_info));
+    ipaddress = std::string(ip4addr_ntoa(&ip_info.ip));
     printf("IPv4 :  %s\n", ip4addr_ntoa(&ip_info.ip));
     printf("IPv4 :  %s\n", ip4addr_ntoa(&ip_info.ip));
     printf("HostName :  %s\n", hostname.c_str());
     printf("HostName :  %s\n", hostname.c_str());
 }
 }
@@ -191,3 +193,14 @@ void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphra
 }
 }
 
 
 
 
+std::string getHostname(){
+    return hostname;
+}
+
+std::string getIPAddress(){
+    return ipaddress;
+}
+
+std::string getSSID(){
+    return ssid;
+}

+ 4 - 0
code/lib/connect_wlan/connect_wlan.h

@@ -10,4 +10,8 @@ void initialise_wifi(std::string _ssid, std::string _passphrase, std::string _ho
 
 
 void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase, std::string &_hostname);
 void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase, std::string &_hostname);
 
 
+std::string getHostname();
+std::string getIPAddress();
+std::string getSSID();
+
 #endif
 #endif

+ 38 - 0
code/lib/jomjol_controlcamera/ClassControllCamera.cpp

@@ -10,6 +10,8 @@
 
 
 #include "camera_define.h"
 #include "camera_define.h"
 
 
+#include "driver/ledc.h"
+
 CCamera Camera;
 CCamera Camera;
 
 
 
 
@@ -20,6 +22,42 @@ typedef struct {
         size_t len;
         size_t len;
 } jpg_chunking_t;
 } jpg_chunking_t;
 
 
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////
+#define LEDC_LS_CH2_GPIO       (4)
+#define LEDC_LS_CH2_CHANNEL    LEDC_CHANNEL_2
+#define LEDC_LS_TIMER          LEDC_TIMER_1
+#define LEDC_LS_MODE           LEDC_LOW_SPEED_MODE
+#define LEDC_TEST_DUTY         (4000)
+
+void test(){
+    ledc_channel_config_t ledc_channel = { };
+
+    ledc_channel.channel = LEDC_LS_CH2_CHANNEL;
+    ledc_channel.duty       = 0;
+    ledc_channel.gpio_num   = FLASH_GPIO;
+    ledc_channel.speed_mode = LEDC_LS_MODE;
+    ledc_channel.hpoint     = 0;
+    ledc_channel.timer_sel  = LEDC_LS_TIMER;
+
+    ledc_channel_config(&ledc_channel);
+
+    ledc_set_duty(ledc_channel.speed_mode, ledc_channel.channel, LEDC_TEST_DUTY);
+    ledc_update_duty(ledc_channel.speed_mode, ledc_channel.channel);
+    vTaskDelay(1000 / portTICK_PERIOD_MS);
+};
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
 static size_t jpg_encode_stream(void * arg, size_t index, const void* data, size_t len){
 static size_t jpg_encode_stream(void * arg, size_t index, const void* data, size_t len){
     jpg_chunking_t *j = (jpg_chunking_t *)arg;
     jpg_chunking_t *j = (jpg_chunking_t *)arg;
     if(!index){
     if(!index){

+ 3 - 0
code/lib/jomjol_fileserver_ota/server_ota.cpp

@@ -404,6 +404,9 @@ void doReboot(){
     LogFile.WriteToFile("Reboot - now");
     LogFile.WriteToFile("Reboot - now");
     KillTFliteTasks();
     KillTFliteTasks();
     xTaskCreate(&task_reboot, "reboot", configMINIMAL_STACK_SIZE * 64, NULL, 10, NULL);
     xTaskCreate(&task_reboot, "reboot", configMINIMAL_STACK_SIZE * 64, NULL, 10, NULL);
+    vTaskDelay(5000 / portTICK_PERIOD_MS);
+    esp_restart();
+    hard_restart();    
 }
 }
 
 
 
 

+ 8 - 10
code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp

@@ -335,25 +335,23 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
     Value = std::stof(zw);
     Value = std::stof(zw);
     if (checkDigitIncreaseConsistency)
     if (checkDigitIncreaseConsistency)
     {
     {
-//        Value = checkDigitConsistency(Value, DecimalShift, isanalog);
+        Value = checkDigitConsistency(Value, DecimalShift, isanalog);
     }
     }
 
 
     zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
     zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
 
 
     if ((!AllowNegativeRates) && (Value < PreValue))
     if ((!AllowNegativeRates) && (Value < PreValue))
     {
     {
-        error = "Negative Rate - Returned old value - read value: " + zwvalue;
+        error = error + "Negative Rate - Returned old value - read value: " + zwvalue + " ";
         Value = PreValue;
         Value = PreValue;
         zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
         zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
     }
     }
-    else
+
+    if (useMaxRateValue && (abs(Value - PreValue) > MaxRateValue))
     {
     {
-        if (useMaxRateValue && (abs(Value - PreValue) > MaxRateValue))
-        {
-            error = "Rate too high - Returned old value - read value: " + zwvalue;
-            Value = PreValue;
-            zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
-        }
+        error = error + "Rate too high - Returned old value - read value: " + zwvalue + " ";
+        Value = PreValue;
+        zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift);
     }
     }
 
 
     ReturnValueNoError = zwvalue;
     ReturnValueNoError = zwvalue;
@@ -426,7 +424,7 @@ float ClassFlowPostProcessing::checkDigitConsistency(float input, int _decilamsh
     float zw;
     float zw;
 
 
     pot = _decilamshift;
     pot = _decilamshift;
-    if (!_isanalog)             // falls es keine analogwerte gibt, kann die letzte nicht bewerte werden
+    if (!_isanalog)             // falls es keine analogwerte gibt, kann die letzte nicht bewertet werden
     {
     {
         pot++;
         pot++;
     }
     }

+ 30 - 0
code/src/server_main.cpp

@@ -7,6 +7,8 @@
 
 
 #include "time_sntp.h"
 #include "time_sntp.h"
 
 
+#include "connect_wlan.h"
+
 #include "version.h"
 #include "version.h"
 
 
 #include "esp_wifi.h"
 #include "esp_wifi.h"
@@ -94,6 +96,34 @@ esp_err_t info_get_handler(httpd_req_t *req)
         return ESP_OK;        
         return ESP_OK;        
     }
     }
 
 
+    if (_task.compare("Hostname") == 0)
+    {
+        std::string zw;
+        zw = std::string(getHostname());
+        httpd_resp_sendstr_chunk(req, zw.c_str());
+        httpd_resp_sendstr_chunk(req, NULL);  
+        return ESP_OK;        
+    }
+
+    if (_task.compare("IP") == 0)
+    {
+        std::string zw;
+        zw = std::string(getIPAddress());
+        httpd_resp_sendstr_chunk(req, zw.c_str());
+        httpd_resp_sendstr_chunk(req, NULL);  
+        return ESP_OK;        
+    }
+
+    if (_task.compare("SSID") == 0)
+    {
+        std::string zw;
+        zw = std::string(getSSID());
+        httpd_resp_sendstr_chunk(req, zw.c_str());
+        httpd_resp_sendstr_chunk(req, NULL);  
+        return ESP_OK;        
+    }
+
+
     return ESP_OK;
     return ESP_OK;
 }
 }
 
 

BIN
firmware/bootloader.bin


+ 1 - 1
sd-card/config/config.ini

@@ -13,7 +13,7 @@ SearchFieldY = 20
 
 
 
 
 [Digits]
 [Digits]
-Model=/config/dig0640s3.tflite
+Model=/config/dig0650s3.tflite
 LogImageLocation = /log/digit
 LogImageLocation = /log/digit
 ModelInputSize 20, 32
 ModelInputSize 20, 32
 digit1, 306, 120, 37, 67
 digit1, 306, 120, 37, 67

BIN
sd-card/config/dig0640s3.tflite


BIN
sd-card/config/dig0650s3.tflite


+ 2 - 2
sd-card/html/index.html

@@ -73,8 +73,8 @@ li.dropdown {
 
 
 <body style="font-family: arial">
 <body style="font-family: arial">
 
 
-<h1>Watermeter - AI on the edge</h1>
-<h2>An ESP32 all in neural network recognition system</h2>
+<h1>Digitizer - AI on the edge</h1>
+<h2>An ESP32 all inclusive neural network recognition system for meter digitalization</h2>
 
 
 <ul>
 <ul>
   <li><a href="#"onclick="document.getElementById('maincontent').src = '/wasserzaehler_roi.html';">Overview</a></li>
   <li><a href="#"onclick="document.getElementById('maincontent').src = '/wasserzaehler_roi.html';">Overview</a></li>

+ 34 - 1
sd-card/html/info.html

@@ -23,9 +23,42 @@ div {
 
 
 </head>
 </head>
 
 
+<body style="font-family: arial; padding: 0px 10px;">
+<h3>Host Info</h3>
 
 
+<table style="font-family: arial">
+	<tr>
+		<td>
+			Hostname:
+		</td>
+		<td>
+			<div id="gitbranch">
+				<object data="/version?type=Hostname"></object>
+			</div>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			IP-Address:
+		</td>	
+		<td>
+			<div id="gitbranch">
+				<object data="/version?type=IP"></object>
+			</div>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			WLan-SSID:
+		</td>	
+		<td>
+			<div id="gitbranch">
+				<object data="/version?type=SSID"></object>
+			</div>
+		</td>
+	</tr>
+</table>
 
 
-<body style="font-family: arial; padding: 0px 10px;">
 <h3>Version Info</h3>
 <h3>Version Info</h3>
 
 
 <table style="font-family: arial">
 <table style="font-family: arial">

+ 1 - 1
sd-card/html/version.txt

@@ -1 +1 @@
-1.0.0
+1.1.0