mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-07 03:56:57 +03:00
Rolling 20201204
This commit is contained in:
10
README.md
10
README.md
@@ -25,7 +25,15 @@ 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!
|
||||
|
||||
##### Rolling - (2020-12-03)
|
||||
##### Rolling - (2020-12-04)
|
||||
|
||||
* Implementation of a setup modus at the beginning of a new installation. It guides the user through a check of the parameters and setting and disables at the end automatically.
|
||||
Special modus is entered if `SetupMode=true` in section `[System]`
|
||||
* Bug fix: wrong rounding in case of no analog counters and decimal shift
|
||||
|
||||
|
||||
2020-12-03
|
||||
|
||||
|
||||
* Move source code to `/main` to full compatibility between pure ESP-IDF and Platformio w/ espressif
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ std::vector<HTMLInfo*> ClassFlowControll::GetAllAnalog()
|
||||
void ClassFlowControll::SetInitialParameter(void)
|
||||
{
|
||||
AutoStart = false;
|
||||
SetupModeActive = false;
|
||||
AutoIntervall = 10;
|
||||
}
|
||||
|
||||
@@ -309,6 +310,16 @@ bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph)
|
||||
xTaskCreate(&task_doTimeSync, "update_time", configMINIMAL_STACK_SIZE * 16, &TimeUpdateIntervall, tskIDLE_PRIORITY, NULL);
|
||||
}
|
||||
|
||||
if ((toUpper(zerlegt[0]) == "SETUPMODE") && (zerlegt.size() > 1))
|
||||
{
|
||||
if (toUpper(zerlegt[1]) == "TRUE")
|
||||
{
|
||||
SetupModeActive = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ protected:
|
||||
|
||||
bool AutoStart;
|
||||
float AutoIntervall;
|
||||
bool SetupModeActive;
|
||||
void SetInitialParameter(void);
|
||||
std::string aktstatus;
|
||||
int TimeUpdateIntervall;
|
||||
@@ -29,6 +30,7 @@ protected:
|
||||
public:
|
||||
void InitFlow(std::string config);
|
||||
bool doFlow(string time);
|
||||
bool getStatusSetupModus(){return SetupModeActive;};
|
||||
string getReadout(bool _rawvalue, bool _noerror);
|
||||
string UpdatePrevalue(std::string _newvalue);
|
||||
string GetPrevalue();
|
||||
|
||||
@@ -313,7 +313,6 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
|
||||
|
||||
ReturnRawValue = ShiftDecimal(ReturnRawValue, DecimalShift);
|
||||
|
||||
|
||||
if (!PreValueUse || !PreValueOkay)
|
||||
{
|
||||
ReturnValue = ReturnRawValue;
|
||||
@@ -391,6 +390,9 @@ string ClassFlowPostProcessing::getReadoutParam(bool _rawValue, bool _noerror)
|
||||
|
||||
string ClassFlowPostProcessing::RundeOutput(float _in, int _anzNachkomma){
|
||||
std::stringstream stream;
|
||||
if (_anzNachkomma < 0) {
|
||||
_anzNachkomma = 0;
|
||||
}
|
||||
stream << std::fixed << std::setprecision(_anzNachkomma) << _in;
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
@@ -29,6 +29,12 @@ bool flowisrunning = false;
|
||||
long auto_intervall = 0;
|
||||
bool auto_isrunning = false;
|
||||
|
||||
bool isSetupModusActive() {
|
||||
return tfliteflow.getStatusSetupModus();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void KillTFliteTasks()
|
||||
{
|
||||
printf("Handle: xHandleblink_task_doFlow: %ld\n", (long) xHandleblink_task_doFlow);
|
||||
@@ -418,6 +424,7 @@ void task_autodoFlow(void *pvParameter)
|
||||
doInit();
|
||||
|
||||
auto_isrunning = tfliteflow.isAutoStart(auto_intervall);
|
||||
auto_isrunning = auto_isrunning && (!isSetupModusActive());
|
||||
|
||||
while (auto_isrunning)
|
||||
{
|
||||
|
||||
@@ -11,3 +11,5 @@ void register_server_tflite_uri(httpd_handle_t server);
|
||||
void KillTFliteTasks();
|
||||
|
||||
void TFliteDoAutoStart();
|
||||
|
||||
bool isSetupModusActive();
|
||||
@@ -13,6 +13,8 @@
|
||||
|
||||
#include "esp_wifi.h"
|
||||
|
||||
#include "server_tflite.h"
|
||||
|
||||
|
||||
httpd_handle_t server = NULL;
|
||||
|
||||
@@ -152,7 +154,9 @@ esp_err_t hello_main_handler(httpd_req_t *req)
|
||||
|
||||
if ((strcmp(req->uri, "/") == 0))
|
||||
{
|
||||
filetosend = filetosend + "/html/index.html";
|
||||
{
|
||||
filetosend = filetosend + "/html/index.html";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -163,6 +167,11 @@ esp_err_t hello_main_handler(httpd_req_t *req)
|
||||
}
|
||||
}
|
||||
|
||||
if (filetosend == "/sdcard/html/index.html" && isSetupModusActive()) {
|
||||
printf("System ist im Setupmodus --> index.html --> setup.html");
|
||||
filetosend = "/sdcard/html/setup.html";
|
||||
}
|
||||
|
||||
printf("Filename: %s\n", filename);
|
||||
|
||||
printf("File requested: %s\n", filetosend.c_str());
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const char* GIT_REV="c5059b4";
|
||||
const char* GIT_REV="9e85b12";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="rolling";
|
||||
const char* BUILD_TIME="2020-12-03 20:31";
|
||||
const char* BUILD_TIME="2020-12-04 22:01";
|
||||
@@ -1,4 +1,4 @@
|
||||
const char* GIT_REV="c5059b4";
|
||||
const char* GIT_REV="9e85b12";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="rolling";
|
||||
const char* BUILD_TIME="2020-12-03 20:27";
|
||||
const char* BUILD_TIME="2020-12-04 22:01";
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -59,5 +59,6 @@ LogfileRetentionInDays = 3
|
||||
|
||||
[System]
|
||||
TimeZone = CET-1CEST,M3.5.0,M10.5.0/3
|
||||
SetupMode = true
|
||||
|
||||
[Ende]
|
||||
1
sd-card/html/debug.log
Normal file
1
sd-card/html/debug.log
Normal file
@@ -0,0 +1 @@
|
||||
[1204/185120.033:ERROR:directory_reader_win.cc(43)] FindFirstFile: Das System kann den angegebenen Pfad nicht finden. (0x3)
|
||||
37
sd-card/html/edit_explain_0.html
Normal file
37
sd-card/html/edit_explain_0.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
This is your first start of the digitizer. You need to go through 5 steps, to customize the setting. Just follow the instructions:
|
||||
<p>
|
||||
<ol>
|
||||
<li>Define a reference image on which the digits, counters and reference points are marked</li>
|
||||
<li>Define two references, which are used to align the image and identify fixed positions on the image</li>
|
||||
<li>Mark and define the digits to recognize</li>
|
||||
<li>Mark and define the analog counters to be recognized</li>
|
||||
<li>Adopt general settings</li>
|
||||
</ol>
|
||||
<p>
|
||||
Just use the buttons "Next" and "Previous" to nagivate through the process.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
81
sd-card/html/edit_explain_6.html
Normal file
81
sd-card/html/edit_explain_6.html
Normal file
@@ -0,0 +1,81 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
.button {
|
||||
padding: 5px 20px;
|
||||
width: 211px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Finished!</h4>
|
||||
|
||||
<p>
|
||||
Now you are finished with the setup and ready to reboot to the normal mode.
|
||||
<br>
|
||||
Once you have pushed below button, the setup modus will be left and the digitizer start to normal operation mode.
|
||||
<br>
|
||||
After a view seconds you can reload this page again and will go to normal operation mode.
|
||||
<br>
|
||||
All settings can be changed later on as well in the configuration menue.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<button class="button" onclick="reboot()">Leave Setup Modus and Reboot to Normal</button>
|
||||
</p>
|
||||
|
||||
<script type="text/javascript" src="./gethost.js"></script>
|
||||
<script type="text/javascript" src="./readconfigparam.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var canvas = document.getElementById('canvas'),
|
||||
basepath = "http://192.168.178.22";
|
||||
aktstatu = 0;
|
||||
|
||||
function reboot() {
|
||||
if (confirm("Do you want to leave the configuration mode and restart the ESP32?\n\nPlease reload the page in about 30s.")) {
|
||||
basepath = getbasepath();
|
||||
if (!loadConfig(basepath)) {
|
||||
alert("Setup Modus could not be deactivated!\Please retry.");
|
||||
return;
|
||||
}
|
||||
ParseConfig();
|
||||
param = getConfigParameters();
|
||||
param["System"]["SetupMode"]["enabled"] = false;
|
||||
param["System"]["SetupMode"]["value1"] = "false";
|
||||
setConfigParameters(param);
|
||||
var textToSave = setConfigParameters(param);
|
||||
FileDeleteOnServer("/config/config.ini", basepath);
|
||||
FileSendContent(textToSave, "/config/config.ini", basepath);
|
||||
|
||||
var stringota = "/reboot";
|
||||
window.location = stringota;
|
||||
window.location.href = stringota;
|
||||
window.location.assign(stringota);
|
||||
window.location.replace(stringota);
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
29
sd-card/html/explain_0.html
Normal file
29
sd-card/html/explain_0.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Introduction</h4>
|
||||
<p>
|
||||
Read below!
|
||||
|
||||
</body>
|
||||
</html>
|
||||
33
sd-card/html/explain_1.html
Normal file
33
sd-card/html/explain_1.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Reference Image</h4>
|
||||
The reference image is needed to define the digits, counters and references for alignment.
|
||||
<p>
|
||||
The last taken raw image from the camera is taken. Use the Button "Create New Reference" to make your own reference.<br>
|
||||
Most important feature is a straight alignment of the image. Use the Pre roate Angle and the fine alignment to fine tune the rotation of the image<br>
|
||||
Finish the step by pushing <b>"Update Reference Image"</b>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
36
sd-card/html/explain_2.html
Normal file
36
sd-card/html/explain_2.html
Normal file
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Alignment References</h4>
|
||||
Two opposite alignment references are needed to identify unique fix points on the image.
|
||||
<p>
|
||||
Mark the reference by drag and dop with the mouse or with the coordinates and push <b>"Update Reference"</b>.
|
||||
<br>
|
||||
You can switch between the two reference with <b>"Select Reference"</b>.
|
||||
</p>
|
||||
<p>
|
||||
Don't forget to save your changes with <b>"Save to Config.ini"</b>!.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
37
sd-card/html/explain_3.html
Normal file
37
sd-card/html/explain_3.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Define Digits</h4>
|
||||
Here you define your digits you want to read.
|
||||
<p>
|
||||
With the drop down menue <b>"ROI x"</b> you can change between the different digits. Mark them with the mouse or the coordinates.
|
||||
<br>
|
||||
To create new ROIs use <b>"New ROIs"</b>. The order of the ROIs defines the positon within the reading. <br>
|
||||
You can change it with <b>"move Next" / "move Previous"</b>.
|
||||
</p>
|
||||
<p>
|
||||
Don't forget to save your changes with <b>"Save all to Config.ini"</b>!.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
37
sd-card/html/explain_4.html
Normal file
37
sd-card/html/explain_4.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Define Digits</h4>
|
||||
Here you define your analog counters you want to read. If you do not have analog counters delete all ROIs.
|
||||
<p>
|
||||
With the drop down menue <b>"ROI x"</b> you can change between the different counters. Mark them with the mouse or the coordinates.
|
||||
<br>
|
||||
To create new ROIs use <b>"New ROIs"</b>. The order of the ROIs defines the positon within the reading. <br>
|
||||
You can change it with <b>"move Next" / "move Previous"</b>.
|
||||
</p>
|
||||
<p>
|
||||
Don't forget to save your changes with <b>"Save all to Config.ini"</b>!.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
35
sd-card/html/explain_5.html
Normal file
35
sd-card/html/explain_5.html
Normal file
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>General configuration parameters</h4>
|
||||
Here you define additional setting. The settings should fit for a normal setup. </p>
|
||||
<p>
|
||||
Only if you want to connect to a MQTT-broker you need to adjust the corresponding parameters.
|
||||
</p>
|
||||
<p>
|
||||
Don't forget to save your changes with <b>"Update Config.ini"</b>!.
|
||||
<br>You should not reboot here, but leave the setup modus on the next page.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
27
sd-card/html/explain_6.html
Normal file
27
sd-card/html/explain_6.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:605px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h4>Finished!</h4>
|
||||
Read below!
|
||||
</body>
|
||||
</html>
|
||||
@@ -7,8 +7,8 @@ function getbasepath(){
|
||||
var host = window.location.hostname;
|
||||
if ((host == "127.0.0.1") || (host == "localhost"))
|
||||
{
|
||||
// host = "http://192.168.178.26"; // jomjol interner test
|
||||
host = "http://192.168.178.22"; // jomjol interner Real
|
||||
host = "http://192.168.178.26"; // jomjol interner test
|
||||
// host = "http://192.168.178.22"; // jomjol interner Real
|
||||
// host = "."; // jomjol interner localhost
|
||||
}
|
||||
else
|
||||
|
||||
@@ -97,6 +97,7 @@ li.dropdown {
|
||||
</div>
|
||||
</ul>
|
||||
<p>
|
||||
|
||||
<div class="h_iframe">
|
||||
<iframe name="maincontent" id ="maincontent" src="/wasserzaehler_roi.html" title="fileserver" allowfullscreen></iframe>
|
||||
</div>
|
||||
|
||||
@@ -74,6 +74,7 @@ function ParseConfig() {
|
||||
ParamAddValue(param, catname, "TimeZone");
|
||||
ParamAddValue(param, catname, "AutoAdjustSummertime");
|
||||
ParamAddValue(param, catname, "TimeUpdateIntervall");
|
||||
ParamAddValue(param, catname, "SetupMode");
|
||||
|
||||
while (aktline < config_split.length){
|
||||
if (config_split[aktline].trim().toUpperCase() == "[MAKEIMAGE]") {
|
||||
@@ -150,6 +151,7 @@ function ParseConfigParamSystem(_aktline){
|
||||
ParamExtractValue(param, linesplit, catname, "TimeZone", _aktline, isCom);
|
||||
ParamExtractValue(param, linesplit, catname, "AutoAdjustSummertime", _aktline, isCom);
|
||||
ParamExtractValue(param, linesplit, catname, "TimeUpdateIntervall", _aktline, isCom);
|
||||
ParamExtractValue(param, linesplit, catname, "SetupMode", _aktline, isCom);
|
||||
|
||||
++_aktline;
|
||||
}
|
||||
|
||||
40
sd-card/html/setup - Kopie.html
Normal file
40
sd-card/html/setup - Kopie.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
|
||||
<style>
|
||||
|
||||
div {
|
||||
text-align:center;
|
||||
width:995px;
|
||||
height: 600px;
|
||||
}
|
||||
.iframe_work {
|
||||
display:inline-block;
|
||||
margin: 0px auto;
|
||||
width:70%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.iframe_info {
|
||||
display:inline-block;
|
||||
margin: 0px auto;
|
||||
width:20%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<div>
|
||||
<iframe class="iframe_work" name="iframe_work" id="iframe_work" src="/wasserzaehler_roi.html" allowfullscreen></iframe>
|
||||
<iframe class="iframe_info" name="iframe_info" id="iframe_info" src="/wasserzaehler_roi.html" allowfullscreen></iframe>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
141
sd-card/html/setup.html
Normal file
141
sd-card/html/setup.html
Normal file
@@ -0,0 +1,141 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="width: fit-content">
|
||||
<head>
|
||||
<title>jomjol - AI on the edge</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
.h_iframe iframe {width:995px;height:760px;}
|
||||
.h_iframe {width:995px;height:605px;}
|
||||
|
||||
.h_iframe_explain iframe {width:995px;height:200px;}
|
||||
.h_iframe_explain {width:995px;height:200px;}
|
||||
|
||||
h1 {font-size: 2em; margin-block-end: 0.3em;}
|
||||
h2 {font-size: 1.5em;margin-block-start: 0.3em;}
|
||||
h3 {font-size: 1.2em;}
|
||||
p {font-size: 1em;}
|
||||
|
||||
.button {
|
||||
padding: 5px 20px;
|
||||
width: 211px;
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="font-family: arial">
|
||||
|
||||
<h1>Digitizer - Initial Setup</h1>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="button" id="previous" name="previous" onclick="clickPrevious()">Previous</button>
|
||||
<button class="button" id="next" name="next" onclick="clickNext()">Next</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="h_iframe_explain" id="h_iframe_explain">
|
||||
<iframe name="explaincontent" id ="explaincontent" src="" allowfullscreen></iframe>
|
||||
</div>
|
||||
|
||||
<div class="h_iframe">
|
||||
<iframe name="maincontent" id ="maincontent" src="" allowfullscreen></iframe>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var canvas = document.getElementById('canvas'),
|
||||
basepath = "http://192.168.178.22";
|
||||
aktstatu = 0;
|
||||
|
||||
function clickNext() {
|
||||
aktstatu++;
|
||||
if (aktstatu > 6) {
|
||||
aktstatu = 6;
|
||||
}
|
||||
LoadStep();
|
||||
}
|
||||
|
||||
function clickPrevious() {
|
||||
aktstatu--;
|
||||
if (aktstatu < 0) {
|
||||
aktstatu = 0;
|
||||
}
|
||||
LoadStep();
|
||||
}
|
||||
|
||||
function LoadStep(){
|
||||
switch (aktstatu) {
|
||||
case 0:
|
||||
document.getElementById('maincontent').src = '/edit_explain_0.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "none";
|
||||
document.getElementById("previous").disabled = true;
|
||||
document.getElementById("next").disabled = false;
|
||||
break;
|
||||
case 1:
|
||||
document.getElementById('maincontent').src = '/edit_reference.html';
|
||||
document.getElementById('explaincontent').src = '/explain_1.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = false;
|
||||
break;
|
||||
case 2:
|
||||
document.getElementById('maincontent').src = '/edit_alignment.html';
|
||||
document.getElementById('explaincontent').src = '/explain_2.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = false;
|
||||
|
||||
break;
|
||||
case 3:
|
||||
document.getElementById('maincontent').src = '/edit_digits.html';
|
||||
document.getElementById('explaincontent').src = '/explain_3.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = false;
|
||||
|
||||
break;
|
||||
case 4:
|
||||
document.getElementById('maincontent').src = '/edit_analog.html';
|
||||
document.getElementById('explaincontent').src = '/explain_4.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = false;
|
||||
|
||||
break;
|
||||
case 5:
|
||||
document.getElementById('maincontent').src = '/edit_config_param.html';
|
||||
document.getElementById('explaincontent').src = '/explain_5.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = false;
|
||||
|
||||
break;
|
||||
case 6:
|
||||
document.getElementById('maincontent').src = '/edit_explain_6.html';
|
||||
document.getElementById('explaincontent').src = '/explain_6.html';
|
||||
document.getElementById('h_iframe_explain').style.display = "none";
|
||||
document.getElementById("previous").disabled = false;
|
||||
document.getElementById("next").disabled = true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
LoadStep();
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +1 @@
|
||||
2.1.0
|
||||
3.0.0
|
||||
|
||||
Reference in New Issue
Block a user