jomjol 5 лет назад
Родитель
Сommit
dffb28816d

+ 19 - 2
README.md

@@ -19,13 +19,30 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571
 
 ### Known Issues
 
-* Reboot on extensive web access due to the limits of the internal web server
+* Spontaneous reboots, most probably due to weak power supply during power intensive operations (taking / calculating pictures)
 
 ------
 
 **General remark:** Beside the `firmware.bin`, typically also the content of `/html` needs to be updated!
 
-##### Rolling - (2020-12-07)
+##### Rolling - (2020-12-27)
+
+* Major change: no need of SD card for image processing anymore (all in memory)
+  * 95% less SD card writing
+  * SD use: mainly reading of data (config, html, tflite parameters), only log files and prevalue write on SD card anymore
+  * Need to limit camera resolution to VGA (due to memory limits)
+* New Feature: setting of time server in `config.ini`
+
+  ```
+  [System]
+  TimeServer = fritz.box
+  ```
+  
+* Bug fix: corrected handling of out commented analog pointer ROIs
+
+
+2020-12-07
+
 
 * Improvement: internal file handling
 

+ 31 - 8
code/components/jomjol_controlcamera/ClassControllCamera.cpp

@@ -206,21 +206,49 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
 //    if (debug_detail_heap) LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After fb_get");
 
     LEDOnOff(false);    
+
+
+    if (delay > 0) 
+    {
+        LightOnOff(false);
+    }
+
+ 
+    TickType_t xDelay = 1000 / portTICK_PERIOD_MS;     
+    vTaskDelay( xDelay );  // wait for power to recover
     
     uint8_t * buf = NULL;
     size_t buf_len = 0; 
 
     int _anz = 0;  
-    TickType_t xDelay = 3000 / portTICK_PERIOD_MS;    
+    xDelay = 3000 / portTICK_PERIOD_MS;    
 
     while (!frame2bmp(fb, &buf, &buf_len) && _anz < 5)
     {
-        esp_camera_fb_return(fb);
         std::string _zw1 = "CCamera::CaptureToBasisImage failed #" + std::to_string(++_anz);
         LogFile.WriteToFile(_zw1);
+
+        esp_camera_fb_return(fb);
+        _zw1 = "CCamera::CaptureToBasisImage failed #" + std::to_string(_anz) + " - after esp_camera_fb_return";
+        LogFile.WriteToFile(_zw1);
+        free(buf);
+
+        _zw1 = "CCamera::CaptureToBasisImage failed #" + std::to_string(_anz) + " - after free";
+        LogFile.WriteToFile(_zw1);
+
+        InitCam();
+
+        _zw1 = "CCamera::CaptureToBasisImage failed #" + std::to_string(_anz) + " - after InitCam";
+        LogFile.WriteToFile(_zw1);
+
         vTaskDelay( xDelay );  
-        fb = esp_camera_fb_get();        
+        fb = esp_camera_fb_get(); 
+
+        _zw1 = "CCamera::CaptureToBasisImage failed #" + std::to_string(_anz) + " - after esp_camera_fb_get";
+        LogFile.WriteToFile(_zw1);
+
     }
+    
 
     esp_camera_fb_return(fb);
 
@@ -256,11 +284,6 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
 
     free(buf);
 
-    if (delay > 0) 
-    {
-        LightOnOff(false);
-    }
-
     if (debug_detail_heap) LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - Done");
 
     return ESP_OK;    

+ 1 - 1
code/components/jomjol_flowcontroll/ClassFlow.cpp

@@ -108,7 +108,7 @@ bool ClassFlow::getNextLine(FILE* pfile, string *rt)
 	}
 	*rt = zw;
 	*rt = trim(*rt);
-	while (zw[0] == '#' || (rt->size() == 0))			// Kommentarzeilen und Leerzeilen überspringen
+	while (zw[0] == ';' || zw[0] == '#' || (rt->size() == 0))			// Kommentarzeilen (; oder #) und Leerzeilen überspringen
 	{
 		fgets(zw, 1024, pfile);
 		printf("%s", zw);		

+ 1 - 1
code/main/main.cpp

@@ -29,7 +29,7 @@
 static const char *TAGMAIN = "connect_wlan_main";
 
 
-bool debug_detail_heap = true;
+bool debug_detail_heap = false;
 
 #define FLASH_GPIO GPIO_NUM_4
 

+ 2 - 2
code/main/version.cpp

@@ -1,4 +1,4 @@
-const char* GIT_REV="c05313a";
+const char* GIT_REV="6e521f0";
 const char* GIT_TAG="";
 const char* GIT_BRANCH="rolling-reduce-sd-use";
-const char* BUILD_TIME="2020-12-27 17:35";
+const char* BUILD_TIME="2020-12-28 15:38";

+ 2 - 2
code/version.cpp

@@ -1,4 +1,4 @@
-const char* GIT_REV="c05313a";
+const char* GIT_REV="6e521f0";
 const char* GIT_TAG="";
 const char* GIT_BRANCH="rolling-reduce-sd-use";
-const char* BUILD_TIME="2020-12-27 11:05";
+const char* BUILD_TIME="2020-12-28 15:38";

BIN
firmware/bootloader.bin


BIN
firmware/firmware.bin


BIN
firmware/html.zip


+ 7 - 7
sd-card/html/edit_config_param.html

@@ -570,16 +570,16 @@ textarea {
 		</tr>
 		<tr class="expert"  id="ex16">
 			<td width="20px"  style="padding-left: 40px;">
-				<input type="checkbox" id="System_TimeUpdateIntervall_enabled" value="1"  onclick = 'document.getElementById("System_TimeUpdateIntervall_value1").disabled = !document.getElementById("System_TimeUpdateIntervall_value1").disabled' unchecked >
+				<td"><input type="checkbox" id="System_TimeServer_enabled" value="1"  onclick = 'document.getElementById("System_TimeServer_value1").disabled = !document.getElementById("System_TimeServer_value1").disabled' unchecked ></td>
 			</td>
-			<td  width="200px">
-				<class id="System_TimeUpdateIntervall_text" style="color:black;">TimeUpdateIntervall</class>
+			<td>
+				<class id="System_TimeServer_text" style="color:black;">TimeServer</class>
 			</td>
 			<td>
-				<input type="number" id="System_TimeUpdateIntervall_value1" size="13"  min="0" step="1">
+				<input type="text" id="System_TimeServer_value1">
 			</td>
 			<td style="font-size: 80%;">
-				Intervall for synchronizing the time with the time server (in hours)
+				Time server to synchronize system time (default: "pool.ntp.org" - used if nothing is specified)
 			</td>
 		</tr>
 	</table>
@@ -717,7 +717,7 @@ function UpdateInput() {
 	WriteParameter(param, "Debug", "LogfileRetentionInDays", true);	
 
 	WriteParameter(param, "System", "TimeZone", true);	
-	WriteParameter(param, "System", "TimeUpdateIntervall", true);	
+	WriteParameter(param, "System", "TimeServer", true);	
 }
 
 function WriteConfig(){
@@ -762,7 +762,7 @@ function WriteConfig(){
 	ReadParameter(param, "Debug", "LogfileRetentionInDays", true);	
 
 	ReadParameter(param, "System", "TimeZone", true);	
-	ReadParameter(param, "System", "TimeUpdateIntervall", true);	
+	ReadParameter(param, "System", "TimeServer", true);	
 	
 	FormatDecimalValue(param, "PostProcessing", "MaxRateValue");
 

+ 3 - 2
sd-card/html/readconfigparam.js

@@ -72,9 +72,9 @@ function ParseConfig() {
      var catname = "System";
      param[catname] = new Object();
      ParamAddValue(param, catname, "TimeZone");
+     ParamAddValue(param, catname, "TimeServer");         
      ParamAddValue(param, catname, "AutoAdjustSummertime");
-     ParamAddValue(param, catname, "TimeUpdateIntervall");   
-     ParamAddValue(param, catname, "SetupMode");         
+     ParamAddValue(param, catname, "SetupMode");   
 
      while (aktline < config_split.length){
           if (config_split[aktline].trim().toUpperCase() == "[MAKEIMAGE]") {
@@ -149,6 +149,7 @@ function ParseConfigParamSystem(_aktline){
           var linesplit = ZerlegeZeile(input, " =");
 
           ParamExtractValue(param, linesplit, catname, "TimeZone", _aktline, isCom);
+          ParamExtractValue(param, linesplit, catname, "TimeServer", _aktline, isCom);
           ParamExtractValue(param, linesplit, catname, "AutoAdjustSummertime", _aktline, isCom);
           ParamExtractValue(param, linesplit, catname, "TimeUpdateIntervall", _aktline, isCom);
           ParamExtractValue(param, linesplit, catname, "SetupMode", _aktline, isCom);