jomjol 5 سال پیش
والد
کامیت
50744cf8cd
5فایلهای تغییر یافته به همراه341 افزوده شده و 3 حذف شده
  1. 2 1
      README.md
  2. BIN
      firmware/firmware.bin
  3. BIN
      firmware/html.zip
  4. 337 0
      sd-card/html/ota_page_v2.html
  5. 2 2
      sd-card/html/readconfig.js

+ 2 - 1
README.md

@@ -29,8 +29,9 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571
 
 
 
-##### 1.1.2 (2020-09-07)
+##### 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
 

BIN
firmware/firmware.bin


BIN
firmware/html.zip


+ 337 - 0
sd-card/html/ota_page_v2.html

@@ -0,0 +1,337 @@
+<html><head>
+	<title>jomjol - AI on the edge</title>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<script type="text/javascript">
+		//<![CDATA[
+		//]]>
+
+	</script>
+</head>
+
+<body>
+
+<button id="testupdownload" type="button" onclick="testupdownload()">UpDownload</button>
+
+<h3>It is strongly recommended to update firmware and content of /html directory on SD-card at the same time!</h3>
+<h2>1. Firmware Update</h2>
+<table class="fixed" border="0">
+    <tr>
+        <td>
+            <table border="0">
+                <tr>
+                    <td>
+                        <label for="newfile">Select the firmware file</label>
+                    </td>
+                    <td colspan="2">
+                        <input id="newfile" type="file" onchange="setpath()" style="width:100%;">
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <label for="filepath">Set path on server</label>
+                    </td>
+                    <td>
+                        <input id="filepath" type="text" style="width:100%;" readonly>
+                    </td>
+                    <td>
+                        <button id="upload" type="button" onclick="upload()">Upload</button>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+	<tr>
+		<td>
+			<button id="doUpdate" type="button" onclick="doUpdate()">Flash the firmware</button> (Takes about 60s)
+		</td>
+	</tr>
+</table>
+
+<h2>2. Update /html directory</h2>
+<table class="fixed" border="0">
+    <tr>
+        <td>
+            <table border="0">
+                <tr>
+                    <td>
+                        <label for="newfilehtml">Select the zipped /html content</label>
+                    </td>
+                    <td colspan="2">
+                        <input id="newfilehtml" type="file" onchange="setpathhtml()" style="width:100%;">
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <label for="filepathhtml">Set path on server</label>
+                    </td>
+                    <td>
+                        <input id="filepathhtml" type="text" style="width:100%;" readonly>
+                    </td>
+                    <td>
+                        <button id="uploadhtml" type="button" onclick="uploadhtml()">Upload</button>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+	<tr>
+		<td>
+			<button id="doUpdatehtml" type="button" onclick="doUpdatehtml()">Update "/html" directory</button>
+		</td>
+	</tr>
+</table>
+<h2>3. Reboot</h2>
+<table class="fixed" border="0">
+	<tr>
+		<td>
+			<button id="reboot" type="button" onclick="doReboot()">Reboot to activate updates</button>
+		</td>
+	</tr>
+</table>
+
+<script type="text/javascript" src="./gethost.js"></script> 
+
+
+<script language="JavaScript">
+
+function testupdownload(){
+    var xhr = new XMLHttpRequest();
+    xhr.open("get", "https://github.com/jomjol/AI-on-the-edge-device/raw/master/firmware/html.zip", true);
+    xhr.onload = function () {
+        xhr.close();
+        var xhr2 = new XMLHttpRequest();
+        xhr2.open("post", "/upload/firmware/html2.zip", true);
+        xhr2.send(xhr.response);
+        }
+    xhr.send();
+}
+
+function init(){
+    document.getElementById("reboot").disabled = true;
+    document.getElementById("upload").disabled = true;
+    document.getElementById("uploadhtml").disabled = true;    
+    document.getElementById("doUpdate").disabled = true;
+    document.getElementById("doUpdatehtml").disabled = true;
+}
+
+function doUpdate() {
+	if (confirm("Are you sure to update the firmware?")) {
+		var stringota = "/ota?file=firmware.bin";
+        
+        var xhttp = new XMLHttpRequest();
+	
+        xhttp.onreadystatechange = function() {
+            if (xhttp.readyState == 4) {
+                if (xhttp.status == 200) {
+                    document.getElementById("reboot").disabled = false;
+                    alert("Flash successfull - Reboot necessary to make changes active.");
+                    /* keine Reaktion, damit sich das Dokument nicht ändert */
+                } else if (xhttp.status == 0) {
+                    alert("Server closed the connection abruptly!");
+                    UpdatePage();
+                } else {
+                    alert(xhttp.status + " Error!\n" + xhttp.responseText);
+                    UpdatePage();
+                }
+            }
+        };
+        xhttp.open("GET", stringota, true);
+        xhttp.send();        
+	}
+}
+
+function doUpdatehtml() {
+	if (confirm("Are you sure to update the /html content?")) {
+		var stringota = "/ota?task=unziphtml";
+        
+        var xhttp = new XMLHttpRequest();
+	
+        xhttp.onreadystatechange = function() {
+            if (xhttp.readyState == 4) {
+                if (xhttp.status == 200) {
+                    document.getElementById("reboot").disabled = false;
+                    alert("Update /html successful!");
+                    /* keine Reaktion, damit sich das Dokument nicht ändert */
+                } else if (xhttp.status == 0) {
+                    alert("Server closed the connection abruptly!");
+                    UpdatePage();
+                } else {
+                    alert(xhttp.status + " Error!\n" + xhttp.responseText);
+                    UpdatePage();
+                }
+            }
+        };
+        xhttp.open("GET", stringota, true);
+        xhttp.send();
+	}
+}
+
+function doReboot() {
+	if (confirm("Are you sure you want to reboot the ESP32?")) {
+		var stringota = "/reboot";
+		window.location = stringota;
+		window.location.href = stringota;
+		window.location.assign(stringota);
+		window.location.replace(stringota);
+	}
+}
+
+function setpath() {
+    var fileserverpraefix = "/firmware/firmware.bin";
+    document.getElementById("filepath").value = fileserverpraefix;
+    document.getElementById("upload").disabled = false;
+}
+
+function setpathhtml() {
+    var fileserverpraefix = "/firmware/html.zip";
+    document.getElementById("filepathhtml").value = fileserverpraefix;
+    document.getElementById("uploadhtml").disabled = false;
+}
+
+
+function upload() {
+	var xhttp = new XMLHttpRequest();
+	
+	/* first delete the old firmware */	
+	xhttp.onreadystatechange = function() {
+		if (xhttp.readyState == 4) {
+			if (xhttp.status == 200) {
+				/* keine Reaktion, damit sich das Dokument nicht ändert */
+			} else if (xhttp.status == 0) {
+				alert("Server closed the connection abruptly!");
+				UpdatePage();
+			} else {
+				alert(xhttp.status + " Error!\n" + xhttp.responseText);
+				UpdatePage();
+			}
+		}
+	};
+	xhttp.open("GET", "/ota?delete=firmware.bin", false);
+	xhttp.send();
+	/* ----------------------------- */
+	
+    var filePath = document.getElementById("filepath").value;
+    var upload_path = "/upload/" + filePath;
+    var fileInput = document.getElementById("newfile").files;
+
+    /* Max size of an individual file. Make sure this
+     * value is same as that set in file_server.c */
+    var MAX_FILE_SIZE = 2000*1024;
+    var MAX_FILE_SIZE_STR = "2000KB";
+
+    if (fileInput.length == 0) {
+        alert("No file selected!");
+    } else if (filePath.length == 0) {
+        alert("File path on server is not set!");
+    } else if (filePath.indexOf(' ') >= 0) {
+        alert("File path on server cannot have spaces!");
+    } else if (filePath[filePath.length-1] == '/') {
+        alert("File name not specified after path!");
+    } else if (fileInput[0].size > 2000*1024) {
+        alert("File size must be less than 2000KB!");
+    } else {
+        document.getElementById("newfile").disabled = true;
+        document.getElementById("filepath").disabled = true;
+        document.getElementById("upload").disabled = true;
+		
+        xhttp.onreadystatechange = function() {
+            if (xhttp.readyState == 4) {
+                if (xhttp.status == 200) {
+					alert("Upload successfull!")
+//                    document.reload();
+                    document.getElementById("reboot").disabled = false;
+                    document.getElementById("doUpdate").disabled = false;
+                } else if (xhttp.status == 0) {
+                    alert("Server closed the connection abruptly!");
+                    UpdatePage();
+                } else {
+                    alert(xhttp.status + " Error!\n" + xhttp.responseText);
+                    UpdatePage();
+                }
+            }
+        };
+		
+
+        var file = fileInput[0];
+        xhttp.open("POST", upload_path, true);
+        xhttp.send(file);
+    }
+}
+
+function uploadhtml() {
+	var xhttp = new XMLHttpRequest();
+	
+	/* first delete the old firmware */	
+	xhttp.onreadystatechange = function() {
+		if (xhttp.readyState == 4) {
+			if (xhttp.status == 200) {
+				/* keine Reaktion, damit sich das Dokument nicht ändert */
+			} else if (xhttp.status == 0) {
+				alert("Server closed the connection abruptly!");
+				UpdatePage();
+			} else {
+				alert(xhttp.status + " Error!\n" + xhttp.responseText);
+				UpdatePage();
+			}
+		}
+	};
+	xhttp.open("GET", "/ota?delete=html.zip", false);
+	xhttp.send();
+	/* ----------------------------- */
+	
+    var filePath = document.getElementById("filepathhtml").value;
+    var upload_path = "/upload/" + filePath;
+    var fileInput = document.getElementById("newfilehtml").files;
+
+    /* Max size of an individual file. Make sure this
+     * value is same as that set in file_server.c */
+    var MAX_FILE_SIZE = 2000*1024;
+    var MAX_FILE_SIZE_STR = "2000KB";
+
+    if (fileInput.length == 0) {
+        alert("No file selected!");
+    } else if (filePath.length == 0) {
+        alert("File path on server is not set!");
+    } else if (filePath.indexOf(' ') >= 0) {
+        alert("File path on server cannot have spaces!");
+    } else if (filePath[filePath.length-1] == '/') {
+        alert("File name not specified after path!");
+    } else if (fileInput[0].size > 2000*1024) {
+        alert("File size must be less than 2000KB!");
+    } else {
+        document.getElementById("newfilehtml").disabled = true;
+        document.getElementById("filepathhtml").disabled = true;
+        document.getElementById("uploadhtml").disabled = true;
+		
+        xhttp.onreadystatechange = function() {
+            if (xhttp.readyState == 4) {
+                if (xhttp.status == 200) {
+					alert("Upload successfull!")
+//                    document.reload();
+                    document.getElementById("reboot").disabled = false;
+                    document.getElementById("doUpdatehtml").disabled = false;
+                } else if (xhttp.status == 0) {
+                    alert("Server closed the connection abruptly!");
+                    UpdatePage();
+                } else {
+                    alert(xhttp.status + " Error!\n" + xhttp.responseText);
+                    UpdatePage();
+                }
+            }
+        };
+		
+
+        var file = fileInput[0];
+        xhttp.open("POST", upload_path, true);
+        xhttp.send(file);
+    }
+}
+
+
+init();
+
+</script>
+
+
+</body></html>

+ 2 - 2
sd-card/html/readconfig.js

@@ -137,8 +137,8 @@ function SaveROIToConfig(_ROIInfo, _typeROI, _basepath){
 
      var linewrite = 0;
      for (i = 0; i < _ROIInfo.length; ++i){
-          if (i < digit.length){
-               linewrite = digit[i]["pos_ref"];
+          if (i < targetROI.length){
+               linewrite = targetROI[i]["pos_ref"];
           }
           else {
                linewrite++;