mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-08 20:46:52 +03:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20b054472e | ||
|
|
21a70c5655 | ||
|
|
08270f5d6d | ||
|
|
9923be2f1d | ||
|
|
5df57c95d4 | ||
|
|
d8c91466d0 | ||
|
|
37b2e370fe | ||
|
|
98dfba0640 | ||
|
|
574c9084c2 | ||
|
|
9862ae8e7a | ||
|
|
7bc4e63209 | ||
|
|
ad40150cfa | ||
|
|
970530d99f | ||
|
|
c6ae989b82 | ||
|
|
a0ebf354b1 | ||
|
|
97ecbc792e | ||
|
|
5934a59489 | ||
|
|
ee18046581 | ||
|
|
1e4e38c02f | ||
|
|
7a3038eceb | ||
|
|
7d2f86b72e | ||
|
|
3aaa319505 | ||
|
|
f4075f0a51 | ||
|
|
59643a8d52 | ||
|
|
baf2a880e4 | ||
|
|
d71e8320c7 |
126
Changelog.md
126
Changelog.md
@@ -1,6 +1,130 @@
|
|||||||
# Versions
|
# Versions
|
||||||
|
|
||||||
|
##### 5.0.0 Setup Modus - (2020-12-06)
|
||||||
|
|
||||||
|
* Implementation of initial setup modus for fresh installation
|
||||||
|
|
||||||
|
* Code restructuring (full compatibility between pure ESP-IDF and Platformio w/ espressif)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 4.1.1 Configuration editor - (2020-12-02)
|
||||||
|
|
||||||
|
* Bug fixing: internal improvement of file handling (reduce not responding)
|
||||||
|
|
||||||
|
|
||||||
|
##### 4.1.0 Configuration editor - (2020-11-30)
|
||||||
|
|
||||||
|
* Implementation of configuration editor (including basic and expert mode)
|
||||||
|
|
||||||
|
* Adjustable time zone to adjust to local time setting (incl. daylight saving time)
|
||||||
|
|
||||||
|
* MQTT: additional topic for error reporting
|
||||||
|
|
||||||
|
* standardized access to current logfile via `http://IP-ADRESS/logfileact`
|
||||||
|
|
||||||
|
* Update digital CNN to v7.2.0, analog CNN to 6.3.0
|
||||||
|
|
||||||
|
* Bug fixing: truncation error, CheckDigitConsistency & PreValue implementation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 4.0.0 Tflite Core - (2020-11-15)
|
||||||
|
|
||||||
|
* Implementation of rolling log-files
|
||||||
|
|
||||||
|
* Update Tflite-Core to master@20201108 (v2.4)
|
||||||
|
|
||||||
|
* Bug-fixing for reducing reboots
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 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)
|
||||||
|
|
||||||
|
* Implementation of MQTT Client
|
||||||
|
* Improved Version Control
|
||||||
|
* bug-fixing
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.2.1 Version Control (2020-09-27)
|
||||||
|
|
||||||
|
* Bug-Fixing (hostname in wlan.ini and error handling inside flow)
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.2.0 Version Control (2020-09-27)
|
||||||
|
|
||||||
|
* Integrated automated versioning system (menu: SYSTEM --> INFO)
|
||||||
|
* Update Build-System to PlatformIO - Espressif 32 v2.0.0 (ESP-IDF 4.1)
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.1.0 Decimal Shift, Chrome & Edge (2020-09-25)
|
||||||
|
|
||||||
|
* Implementation of Decimal Shift
|
||||||
|
|
||||||
|
* Update default CNN for digits to v6.4.0
|
||||||
|
|
||||||
|
* Improvement HTML
|
||||||
|
|
||||||
|
* Support for Chrome and Edge
|
||||||
|
|
||||||
|
* Reduce logging to minimum - extended logging on demand
|
||||||
|
|
||||||
|
* Implementation of hostname in wlan.ini (`hostname = "HOSTNAME")`
|
||||||
|
|
||||||
|
* Bug fixing, code corrections
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.0.0 Layout update (2020-09-12)
|
||||||
|
|
||||||
|
* Update to **new and modern layout**
|
||||||
|
* Support for Chrome improved
|
||||||
|
* Improved robustness: improved error handling in auto flow reduces spontaneous reboots
|
||||||
|
* File server: Option for "DELETE ALL"
|
||||||
|
* WLan: support of spaces in SSID and password
|
||||||
|
* Reference Image: Option for mirror image, option for image update on the fly
|
||||||
|
* additional parameter in `wasserzaehler.html?noerror=true` to suppress an potential error message
|
||||||
|
* bug fixing
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 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
|
||||||
|
|
||||||
|
##### 1.1.0 (2020-09-06)
|
||||||
|
|
||||||
|
* Implementation of "delete complete directory"
|
||||||
|
**Attention: beside the `firmware.bin`, also the content of `/html` needs to be updated!**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 1.0.2 (2020-09-06)
|
||||||
|
|
||||||
|
* Bug in configuration of analog ROIs corrected
|
||||||
|
* minor bug correction
|
||||||
|
|
||||||
|
##### 1.0.1 (2020-09-05)
|
||||||
|
|
||||||
|
* preValue.ini Bug corrected
|
||||||
|
* minor bug correction
|
||||||
|
|
||||||
|
##### 1.0.0 (2020-09-04)
|
||||||
|
|
||||||
|
* **First usable version** - compatible to previous project (https://github.com/jomjol/water-meter-system-complete)
|
||||||
|
* NEW:
|
||||||
|
* no docker container for CNN calculation necessary
|
||||||
|
* web based configuration editor on board
|
||||||
|
|
||||||
##### 0.1.0 (2020-08-07)
|
##### 0.1.0 (2020-08-07)
|
||||||
|
|
||||||
* Initial Version
|
* Initial Version
|
||||||
|
|
||||||
|
|||||||
72
FeatureRequest.md
Normal file
72
FeatureRequest.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
## Feature Requests
|
||||||
|
|
||||||
|
**There are a lot of ideas for further improvements, but only limited capacity on side of the developer.** Therefore I have created this page as a collection of ideas.
|
||||||
|
|
||||||
|
1. Who ever has a new idea can put it here, so it that it is not forgotten.
|
||||||
|
|
||||||
|
2. Who ever has time, capacity and passion to support, can take any of the ideas and implement them.
|
||||||
|
I will support and help where ever I can!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
____
|
||||||
|
|
||||||
|
#### #4 Initial Shifting and Rotation
|
||||||
|
|
||||||
|
* https://github.com/jomjol/AI-on-the-edge-device/issues/123
|
||||||
|
|
||||||
|
Implementation of a shifting additional to the initial rotation of the raw camera input
|
||||||
|
|
||||||
|
To do:
|
||||||
|
|
||||||
|
* Implementation of shifting
|
||||||
|
* Extension of configuration
|
||||||
|
* Adaption of the html configuration to implement shifting
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### #3 Allow grouping of digits to multiple reading values
|
||||||
|
|
||||||
|
* https://github.com/jomjol/AI-on-the-edge-device/issues/123
|
||||||
|
|
||||||
|
Implementation of two different independent readouts in one setup
|
||||||
|
|
||||||
|
To do:
|
||||||
|
|
||||||
|
* Extend the configuration, setting and processing flow for two independend readouts
|
||||||
|
|
||||||
|
https://github.com/jomjol/AI-on-the-edge-device/issues/123
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
____
|
||||||
|
|
||||||
|
#### #2 MQTT-controll with callback
|
||||||
|
* https://github.com/jomjol/AI-on-the-edge-device/issues/105
|
||||||
|
|
||||||
|
Extend the MQTT client to also enable callbacks for configuration setting
|
||||||
|
|
||||||
|
To do:
|
||||||
|
|
||||||
|
* implement callback for receiving information and override `config.ini` settings
|
||||||
|
|
||||||
|
* change configuration management to handle online updates (currently changes need a restart)
|
||||||
|
|
||||||
|
* think about the startup, as there the default config is loaded
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
____
|
||||||
|
|
||||||
|
#### #1 Optional GPIO for external flash/lighting
|
||||||
|
|
||||||
|
* https://github.com/jomjol/AI-on-the-edge-device/issues/133
|
||||||
|
|
||||||
|
Implementation of an an extrnal flash / lightning through GPIOs.
|
||||||
|
* available GPIOs: 12 & 13 (currently in use for html switching)
|
||||||
|
|
||||||
|
To do:
|
||||||
|
|
||||||
|
* Implementation of a software module for external light source (e.g. WS8132 LED controller, ...)
|
||||||
|
* Update of the camera module to use the external light instead of the internal flash light
|
||||||
|
* Adopt the configuration algorithm with a configurable light source
|
||||||
154
README.md
154
README.md
@@ -41,6 +41,22 @@ If you would like to support the developer with a cup of coffee you can do that
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 6.6.1 Image Processing in Memory - (2021-04-05)
|
||||||
|
|
||||||
|
* NEW 6.6.1: failed SD card initialization indicated by fast blinking LED at startup
|
||||||
|
* Improved SD-card handling (increase compatibility with more type of cards)
|
||||||
|
|
||||||
|
##### 6.5.0 Image Processing in Memory - (2021-03-25)
|
||||||
|
|
||||||
|
* Upgrade digital CNN to v8.2.0 (added new type of digits)
|
||||||
|
* Supporting alignment structures in ROI definition
|
||||||
|
* Bug fixing: definition of hostname in `config.ini`
|
||||||
|
|
||||||
|
##### 6.4.0 Image Processing in Memory - (2021-03-20)
|
||||||
|
|
||||||
|
* Additional alignment marks for settings the ROIs (analog and digit)
|
||||||
|
* Upgrade analog CNN to v7.0.0 (added new type of pointer)
|
||||||
|
|
||||||
##### 6.3.1 Image Processing in Memory - (2021-03-16)
|
##### 6.3.1 Image Processing in Memory - (2021-03-16)
|
||||||
|
|
||||||
* NEW: 6.3.1: bug fixing in initial edit reference image and `config.ini` (Spelling error in `InitialRotate`)
|
* NEW: 6.3.1: bug fixing in initial edit reference image and `config.ini` (Spelling error in `InitialRotate`)
|
||||||
@@ -76,151 +92,43 @@ If you would like to support the developer with a cup of coffee you can do that
|
|||||||
* **Major change**: image processing fully in memory - no need of SD card buffer anymore
|
* **Major change**: image processing fully in memory - no need of SD card buffer anymore
|
||||||
|
|
||||||
* Need to limit camera resolution to VGA (due to memory limits)
|
* Need to limit camera resolution to VGA (due to memory limits)
|
||||||
|
|
||||||
* MQTT: Last Will Testament (LWT) implemented: "connection lost" in case of connection lost to `TopicError`
|
* MQTT: Last Will Testament (LWT) implemented: "connection lost" in case of connection lost to `TopicError`
|
||||||
|
|
||||||
* Disabled `CheckDigitIncreaseConsistency` in default configuration - must now be explicit enabled if needed
|
* Disabled `CheckDigitIncreaseConsistency` in default configuration - must now be explicit enabled if needed
|
||||||
|
|
||||||
* Update digital CNN to v7.2.1 (additional digital images trained)
|
* Update digital CNN to v7.2.1 (additional digital images trained)
|
||||||
|
|
||||||
* Setting of arbitrary time server in `config.ini`
|
* Setting of arbitrary time server in `config.ini`
|
||||||
|
|
||||||
* Option for fixed IP-, DNS-Settings in `wlan.ini`
|
* Option for fixed IP-, DNS-Settings in `wlan.ini`
|
||||||
|
|
||||||
* Increased stability (internal image and camera handling)
|
* Increased stability (internal image and camera handling)
|
||||||
|
|
||||||
* Bug fixing: edit digits, handling PreValue, html-bugs
|
* Bug fixing: edit digits, handling PreValue, html-bugs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Additional ideas
|
||||||
|
|
||||||
|
There are some ideas and feature request, which are not followed currently - mainly due to capacity reasons on side of the developer. They are collected here: [FeatureRequest.md](FeatureRequest.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
##### 5.0.0 Setup Modus - (2020-12-06)
|
##### 5.0.0 Setup Modus - (2020-12-06)
|
||||||
|
|
||||||
* Implementation of initial setup modus for fresh installation
|
|
||||||
|
|
||||||
* Code restructuring (full compatibility between pure ESP-IDF and Platformio w/ espressif)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 4.1.1 Configuration editor - (2020-12-02)
|
##### 4.1.1 Configuration editor - (2020-12-02)
|
||||||
|
|
||||||
* Bug fixing: internal improvement of file handling (reduce not responding)
|
|
||||||
|
|
||||||
|
|
||||||
##### 4.1.0 Configuration editor - (2020-11-30)
|
|
||||||
|
|
||||||
* Implementation of configuration editor (including basic and expert mode)
|
|
||||||
|
|
||||||
* Adjustable time zone to adjust to local time setting (incl. daylight saving time)
|
|
||||||
|
|
||||||
* MQTT: additional topic for error reporting
|
|
||||||
|
|
||||||
* standardized access to current logfile via `http://IP-ADRESS/logfileact`
|
|
||||||
|
|
||||||
* Update digital CNN to v7.2.0, analog CNN to 6.3.0
|
|
||||||
|
|
||||||
* Bug fixing: truncation error, CheckDigitConsistency & PreValue implementation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 4.0.0 Tflite Core - (2020-11-15)
|
##### 4.0.0 Tflite Core - (2020-11-15)
|
||||||
* Implementation of rolling log-files
|
|
||||||
|
|
||||||
* Update Tflite-Core to master@20201108 (v2.4)
|
|
||||||
|
|
||||||
* Bug-fixing for reducing reboots
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 3.1.0 MQTT-Client - (2020-10-26)
|
##### 3.1.0 MQTT-Client - (2020-10-26)
|
||||||
|
|
||||||
* Update digital CNN to v6.5.0 and HTML (Info to hostname, IP, ssid)
|
##### 2.2.1 Version Control - (2020-09-27)
|
||||||
|
|
||||||
* 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)
|
|
||||||
|
|
||||||
* Implementation of MQTT Client
|
|
||||||
* Improved Version Control
|
|
||||||
* bug-fixing
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.1.0 Decimal Shift, Chrome & Edge - (2020-09-25)
|
||||||
##### 2.2.1 Version Control (2020-09-27)
|
|
||||||
|
|
||||||
* Bug-Fixing (hostname in wlan.ini and error handling inside flow)
|
|
||||||
|
|
||||||
|
|
||||||
|
##### 2.0.0 Layout update - (2020-09-12)
|
||||||
|
|
||||||
##### 2.2.0 Version Control (2020-09-27)
|
##### 1.1.3 Initial Version - (2020-09-09)
|
||||||
|
|
||||||
* Integrated automated versioning system (menu: SYSTEM --> INFO)
|
|
||||||
* Update Build-System to PlatformIO - Espressif 32 v2.0.0 (ESP-IDF 4.1)
|
|
||||||
|
|
||||||
|
|
||||||
##### 2.1.0 Decimal Shift, Chrome & Edge (2020-09-25)
|
|
||||||
|
|
||||||
* Implementation of Decimal Shift
|
|
||||||
|
|
||||||
* Update default CNN for digits to v6.4.0
|
|
||||||
|
|
||||||
* Improvement HTML
|
|
||||||
|
|
||||||
* Support for Chrome and Edge
|
|
||||||
|
|
||||||
* Reduce logging to minimum - extended logging on demand
|
|
||||||
|
|
||||||
* Implementation of hostname in wlan.ini (`hostname = "HOSTNAME")`
|
|
||||||
|
|
||||||
* Bug fixing, code corrections
|
|
||||||
|
|
||||||
|
|
||||||
##### 2.0.0 Layout update (2020-09-12)
|
|
||||||
|
|
||||||
* Update to **new and modern layout**
|
|
||||||
* Support for Chrome improved
|
|
||||||
* Improved robustness: improved error handling in auto flow reduces spontaneous reboots
|
|
||||||
* File server: Option for "DELETE ALL"
|
|
||||||
* WLan: support of spaces in SSID and password
|
|
||||||
* Reference Image: Option for mirror image, option for image update on the fly
|
|
||||||
* additional parameter in `wasserzaehler.html?noerror=true` to suppress an potential error message
|
|
||||||
* bug fixing
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 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
|
|
||||||
|
|
||||||
##### 1.1.0 (2020-09-06)
|
|
||||||
|
|
||||||
* Implementation of "delete complete directory"
|
|
||||||
**Attention: beside the `firmware.bin`, also the content of `/html` needs to be updated!**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 1.0.2 (2020-09-06)
|
|
||||||
|
|
||||||
* Bug in configuration of analog ROIs corrected
|
|
||||||
* minor bug correction
|
|
||||||
|
|
||||||
##### 1.0.1 (2020-09-05)
|
|
||||||
|
|
||||||
* preValue.ini Bug corrected
|
|
||||||
* minor bug correction
|
|
||||||
|
|
||||||
##### 1.0.0 (2020-09-04)
|
|
||||||
|
|
||||||
* **First usable version** - compatible to previous project (https://github.com/jomjol/water-meter-system-complete)
|
|
||||||
* NEW:
|
|
||||||
* no docker container for CNN calculation necessary
|
|
||||||
* web based configuration editor on board
|
|
||||||
|
|
||||||
##### 0.1.0 (2020-08-07)
|
|
||||||
|
|
||||||
* Initial Version
|
|
||||||
|
|
||||||
|
|
||||||
#### [Full Changelog](Changelog.md)
|
#### [Full Changelog](Changelog.md)
|
||||||
|
|||||||
@@ -292,11 +292,14 @@ bool ChangeHostName(std::string fn, std::string _newhostname)
|
|||||||
|
|
||||||
for (int i = 0; i < neuesfile.size(); ++i)
|
for (int i = 0; i < neuesfile.size(); ++i)
|
||||||
{
|
{
|
||||||
|
printf(neuesfile[i].c_str());
|
||||||
fputs(neuesfile[i].c_str(), pFile);
|
fputs(neuesfile[i].c_str(), pFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(pFile);
|
fclose(pFile);
|
||||||
|
|
||||||
|
printf("*** Update hostname done ***\n");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,4 +9,5 @@ static const char *TAGPARTOTA = "server_ota";
|
|||||||
void register_server_ota_sdcard_uri(httpd_handle_t server);
|
void register_server_ota_sdcard_uri(httpd_handle_t server);
|
||||||
void CheckOTAUpdate();
|
void CheckOTAUpdate();
|
||||||
void doReboot();
|
void doReboot();
|
||||||
|
void hard_restart();
|
||||||
|
|
||||||
|
|||||||
@@ -382,6 +382,9 @@ bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph)
|
|||||||
{
|
{
|
||||||
// reboot notwendig damit die neue wlan.ini auch benutzt wird !!!
|
// reboot notwendig damit die neue wlan.ini auch benutzt wird !!!
|
||||||
fclose(pfile);
|
fclose(pfile);
|
||||||
|
printf("do reboot\n");
|
||||||
|
esp_restart();
|
||||||
|
hard_restart();
|
||||||
doReboot();
|
doReboot();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,51 +25,111 @@
|
|||||||
#include "ClassControllCamera.h"
|
#include "ClassControllCamera.h"
|
||||||
#include "server_main.h"
|
#include "server_main.h"
|
||||||
#include "server_camera.h"
|
#include "server_camera.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define __SD_USE_ONE_LINE_MODE__
|
||||||
|
|
||||||
|
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||||
#include "server_GPIO.h"
|
#include "server_GPIO.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define BLINK_GPIO GPIO_NUM_33
|
||||||
|
|
||||||
static const char *TAGMAIN = "connect_wlan_main";
|
static const char *TAGMAIN = "connect_wlan_main";
|
||||||
|
|
||||||
#define FLASH_GPIO GPIO_NUM_4
|
#define FLASH_GPIO GPIO_NUM_4
|
||||||
|
|
||||||
void Init_NVS_SDCard()
|
bool Init_NVS_SDCard()
|
||||||
{
|
{
|
||||||
esp_err_t ret = nvs_flash_init();
|
esp_err_t ret = nvs_flash_init();
|
||||||
if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
|
if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
|
||||||
ESP_ERROR_CHECK(nvs_flash_erase());
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
||||||
ret = nvs_flash_init();
|
ret = nvs_flash_init();
|
||||||
}
|
}
|
||||||
|
////////////////////////////////////////////////
|
||||||
|
|
||||||
ESP_LOGI(TAGMAIN, "Initializing SD card");
|
ESP_LOGI(TAG, "Using SDMMC peripheral");
|
||||||
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
|
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
|
||||||
host.flags = SDMMC_HOST_FLAG_1BIT;
|
|
||||||
// sdmmc_host_t host = SDMMC_HOST_SLOT_1();
|
// This initializes the slot without card detect (CD) and write protect (WP) signals.
|
||||||
// host.flags = SDMMC_HOST_FLAG_1BIT;
|
// Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals.
|
||||||
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
|
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
|
||||||
slot_config.width = 1; // 1 line SD mode
|
|
||||||
|
|
||||||
esp_vfs_fat_sdmmc_mount_config_t mount_config = { };
|
// To use 1-line SD mode, uncomment the following line:
|
||||||
mount_config.format_if_mount_failed = false;
|
|
||||||
mount_config.max_files = 5;
|
|
||||||
|
|
||||||
gpio_set_pull_mode((gpio_num_t) 15, GPIO_PULLUP_ONLY); // CMD, needed in 4- and 1- line modes
|
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||||
gpio_set_pull_mode((gpio_num_t) 2, GPIO_PULLUP_ONLY); // D0, needed in 4- and 1-line modes
|
slot_config.width = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// GPIOs 15, 2, 4, 12, 13 should have external 10k pull-ups.
|
||||||
|
// Internal pull-ups are not sufficient. However, enabling internal pull-ups
|
||||||
|
// does make a difference some boards, so we do that here.
|
||||||
|
gpio_set_pull_mode(GPIO_NUM_15, GPIO_PULLUP_ONLY); // CMD, needed in 4- and 1- line modes
|
||||||
|
gpio_set_pull_mode(GPIO_NUM_2, GPIO_PULLUP_ONLY); // D0, needed in 4- and 1-line modes
|
||||||
|
gpio_set_pull_mode(GPIO_NUM_4, GPIO_PULLUP_ONLY); // D1, needed in 4-line mode only
|
||||||
|
gpio_set_pull_mode(GPIO_NUM_12, GPIO_PULLUP_ONLY); // D2, needed in 4-line mode only
|
||||||
|
gpio_set_pull_mode(GPIO_NUM_13, GPIO_PULLUP_ONLY); // D3, needed in 4- and 1-line modes
|
||||||
|
|
||||||
|
// Options for mounting the filesystem.
|
||||||
|
// If format_if_mount_failed is set to true, SD card will be partitioned and
|
||||||
|
// formatted in case when mounting fails.
|
||||||
|
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
|
||||||
|
.format_if_mount_failed = false,
|
||||||
|
.max_files = 5,
|
||||||
|
.allocation_unit_size = 16 * 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
// Use settings defined above to initialize SD card and mount FAT filesystem.
|
||||||
|
// Note: esp_vfs_fat_sdmmc_mount is an all-in-one convenience function.
|
||||||
|
// Please check its source code and implement error recovery when developing
|
||||||
|
// production applications.
|
||||||
sdmmc_card_t* card;
|
sdmmc_card_t* card;
|
||||||
ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card);
|
ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card);
|
||||||
|
|
||||||
if (ret != ESP_OK) {
|
if (ret != ESP_OK) {
|
||||||
if (ret == ESP_FAIL) {
|
if (ret == ESP_FAIL) {
|
||||||
ESP_LOGE(TAGMAIN, "Failed to mount filesystem. If you want the card to be formatted, set format_if_mount_failed = true.");
|
ESP_LOGE(TAG, "Failed to mount filesystem. "
|
||||||
|
"If you want the card to be formatted, set format_if_mount_failed = true.");
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGE(TAGMAIN, "Failed to initialize the card (%d). Make sure SD card lines have pull-up resistors in place.", ret);
|
ESP_LOGE(TAG, "Failed to initialize the card (%s). "
|
||||||
|
"Make sure SD card lines have pull-up resistors in place.", esp_err_to_name(ret));
|
||||||
}
|
}
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Card has been initialized, print its properties
|
||||||
sdmmc_card_print_info(stdout, card);
|
sdmmc_card_print_info(stdout, card);
|
||||||
|
|
||||||
|
|
||||||
// Init the GPIO
|
// Init the GPIO
|
||||||
// Flash ausschalten
|
// Flash ausschalten
|
||||||
gpio_pad_select_gpio(FLASH_GPIO);
|
gpio_pad_select_gpio(FLASH_GPIO);
|
||||||
gpio_set_direction(FLASH_GPIO, GPIO_MODE_OUTPUT);
|
gpio_set_direction(FLASH_GPIO, GPIO_MODE_OUTPUT);
|
||||||
gpio_set_level(FLASH_GPIO, 0);
|
gpio_set_level(FLASH_GPIO, 0);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void task_NoSDBlink(void *pvParameter)
|
||||||
|
{
|
||||||
|
gpio_pad_select_gpio(BLINK_GPIO);
|
||||||
|
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
|
||||||
|
|
||||||
|
|
||||||
|
TickType_t xDelay;
|
||||||
|
xDelay = 100 / portTICK_PERIOD_MS;
|
||||||
|
printf("SD-Card could not be inialized - STOP THE PROGRAMM HERE\n");
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
gpio_set_level(BLINK_GPIO, 1);
|
||||||
|
vTaskDelay( xDelay );
|
||||||
|
gpio_set_level(BLINK_GPIO, 0);
|
||||||
|
vTaskDelay( xDelay );
|
||||||
|
|
||||||
|
}
|
||||||
|
vTaskDelete(NULL); //Delete this task if it exits from the loop above
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void app_main(void)
|
extern "C" void app_main(void)
|
||||||
@@ -79,7 +139,11 @@ extern "C" void app_main(void)
|
|||||||
Camera.InitCam();
|
Camera.InitCam();
|
||||||
Camera.LightOnOff(false);
|
Camera.LightOnOff(false);
|
||||||
|
|
||||||
Init_NVS_SDCard();
|
if (!Init_NVS_SDCard())
|
||||||
|
{
|
||||||
|
xTaskCreate(&task_NoSDBlink, "task_NoSDBlink", configMINIMAL_STACK_SIZE * 64, NULL, tskIDLE_PRIORITY+1, NULL);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
CheckOTAUpdate();
|
CheckOTAUpdate();
|
||||||
|
|
||||||
@@ -113,7 +177,11 @@ extern "C" void app_main(void)
|
|||||||
register_server_tflite_uri(server);
|
register_server_tflite_uri(server);
|
||||||
register_server_file_uri(server, "/sdcard");
|
register_server_file_uri(server, "/sdcard");
|
||||||
register_server_ota_sdcard_uri(server);
|
register_server_ota_sdcard_uri(server);
|
||||||
|
|
||||||
|
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||||
register_server_GPIO_uri(server);
|
register_server_GPIO_uri(server);
|
||||||
|
#endif
|
||||||
|
|
||||||
register_server_main_uri(server, "/sdcard");
|
register_server_main_uri(server, "/sdcard");
|
||||||
|
|
||||||
TFliteDoAutoStart();
|
TFliteDoAutoStart();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const char* GIT_REV="60701bc";
|
const char* GIT_REV="21a70c5";
|
||||||
const char* GIT_TAG="";
|
const char* GIT_TAG="";
|
||||||
const char* GIT_BRANCH="master";
|
const char* GIT_BRANCH="master";
|
||||||
const char* BUILD_TIME="2021-03-16 21:11";
|
const char* BUILD_TIME="2021-04-05 10:14";
|
||||||
@@ -13,7 +13,7 @@ extern "C"
|
|||||||
#include "Helper.h"
|
#include "Helper.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
const char* GIT_BASE_BRANCH = "master - v6.3.1 - 2020-03-16";
|
const char* GIT_BASE_BRANCH = "master - v6.6.1 - 2020-04-05";
|
||||||
|
|
||||||
|
|
||||||
const char* git_base_branch(void)
|
const char* git_base_branch(void)
|
||||||
|
|||||||
@@ -165,8 +165,6 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
|||||||
#
|
#
|
||||||
# CONFIG_BT_ENABLED is not set
|
# CONFIG_BT_ENABLED is not set
|
||||||
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
||||||
CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
|
|
||||||
CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
|
|
||||||
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
|
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
|
||||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
|
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
|
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||||
@@ -241,7 +239,6 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
|
|||||||
#
|
#
|
||||||
# ESP32-specific
|
# ESP32-specific
|
||||||
#
|
#
|
||||||
CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y
|
|
||||||
CONFIG_ESP32_REV_MIN_0=y
|
CONFIG_ESP32_REV_MIN_0=y
|
||||||
# CONFIG_ESP32_REV_MIN_1 is not set
|
# CONFIG_ESP32_REV_MIN_1 is not set
|
||||||
# CONFIG_ESP32_REV_MIN_2 is not set
|
# CONFIG_ESP32_REV_MIN_2 is not set
|
||||||
@@ -660,10 +657,8 @@ CONFIG_LWIP_SO_REUSE=y
|
|||||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||||
# CONFIG_LWIP_SO_RCVBUF is not set
|
# CONFIG_LWIP_SO_RCVBUF is not set
|
||||||
# CONFIG_LWIP_NETBUF_RECVINFO is not set
|
# CONFIG_LWIP_NETBUF_RECVINFO is not set
|
||||||
CONFIG_LWIP_IP4_FRAG=y
|
CONFIG_LWIP_IP_FRAG=y
|
||||||
CONFIG_LWIP_IP6_FRAG=y
|
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||||
# CONFIG_LWIP_IP4_REASSEMBLY is not set
|
|
||||||
# CONFIG_LWIP_IP6_REASSEMBLY is not set
|
|
||||||
# CONFIG_LWIP_STATS is not set
|
# CONFIG_LWIP_STATS is not set
|
||||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||||
@@ -687,10 +682,8 @@ CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
|
|||||||
#
|
#
|
||||||
# TCP
|
# TCP
|
||||||
#
|
#
|
||||||
CONFIG_LWIP_TCP_ISN_HOOK=y
|
|
||||||
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
||||||
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
||||||
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
|
||||||
CONFIG_LWIP_TCP_MAXRTX=12
|
CONFIG_LWIP_TCP_MAXRTX=12
|
||||||
CONFIG_LWIP_TCP_SYNMAXRTX=6
|
CONFIG_LWIP_TCP_SYNMAXRTX=6
|
||||||
CONFIG_LWIP_TCP_MSS=1440
|
CONFIG_LWIP_TCP_MSS=1440
|
||||||
@@ -705,7 +698,6 @@ CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
|
|||||||
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
|
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
|
||||||
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
|
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
|
||||||
# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
|
# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
|
||||||
CONFIG_LWIP_TCP_RTO_TIME=1500
|
|
||||||
# end of TCP
|
# end of TCP
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -721,8 +713,6 @@ CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
|||||||
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
|
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
|
||||||
CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
|
CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
|
||||||
# CONFIG_LWIP_PPP_SUPPORT is not set
|
# CONFIG_LWIP_PPP_SUPPORT is not set
|
||||||
CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
|
|
||||||
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ICMP
|
# ICMP
|
||||||
@@ -1006,8 +996,6 @@ CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
|||||||
#
|
#
|
||||||
CONFIG_WPA_MBEDTLS_CRYPTO=y
|
CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||||
# CONFIG_WPA_TLS_V12 is not set
|
# CONFIG_WPA_TLS_V12 is not set
|
||||||
# CONFIG_WPA_WPS_WARS is not set
|
|
||||||
# CONFIG_WPA_DEBUG_PRINT is not set
|
|
||||||
# end of Supplicant
|
# end of Supplicant
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
This directory is intended for PlatformIO Unit Testing and project tests.
|
|
||||||
|
|
||||||
Unit Testing is a software testing method by which individual units of
|
|
||||||
source code, sets of one or more MCU program modules together with associated
|
|
||||||
control data, usage procedures, and operating procedures, are tested to
|
|
||||||
determine whether they are fit for use. Unit testing finds problems early
|
|
||||||
in the development cycle.
|
|
||||||
|
|
||||||
More information about PlatformIO Unit Testing:
|
|
||||||
- https://docs.platformio.org/page/plus/unit-testing.html
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
const char* GIT_REV="5f0f180";
|
const char* GIT_REV="21a70c5";
|
||||||
const char* GIT_TAG="";
|
const char* GIT_TAG="";
|
||||||
const char* GIT_BRANCH="master";
|
const char* GIT_BRANCH="master";
|
||||||
const char* BUILD_TIME="2021-03-14 12:56";
|
const char* BUILD_TIME="2021-04-05 10:14";
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
images/focus_adjustment.jpg
Normal file
BIN
images/focus_adjustment.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 682 KiB |
BIN
sd-card/config/ana0700s1lq.tflite
Normal file
BIN
sd-card/config/ana0700s1lq.tflite
Normal file
Binary file not shown.
@@ -17,7 +17,7 @@ InitialMirror= false
|
|||||||
AlignmentAlgo = Default
|
AlignmentAlgo = Default
|
||||||
|
|
||||||
[Digits]
|
[Digits]
|
||||||
Model = /config/dig0811s1.tflite
|
Model = /config/dig0820s2q.tflite
|
||||||
;LogImageLocation = /log/digit
|
;LogImageLocation = /log/digit
|
||||||
;LogfileRetentionInDays = 3
|
;LogfileRetentionInDays = 3
|
||||||
ModelInputSize = 20 32
|
ModelInputSize = 20 32
|
||||||
@@ -26,7 +26,7 @@ digit2 355 120 37 67
|
|||||||
digit3 404 120 37 67
|
digit3 404 120 37 67
|
||||||
|
|
||||||
[Analog]
|
[Analog]
|
||||||
Model = /config/ana0630s2.tflite
|
Model = /config/ana0700s1lq.tflite
|
||||||
;LogImageLocation = /log/analog
|
;LogImageLocation = /log/analog
|
||||||
;LogfileRetentionInDays = 3
|
;LogfileRetentionInDays = 3
|
||||||
ModelInputSize = 32 32
|
ModelInputSize = 32 32
|
||||||
|
|||||||
BIN
sd-card/config/dig0820s2q.tflite
Normal file
BIN
sd-card/config/dig0820s2q.tflite
Normal file
Binary file not shown.
@@ -364,6 +364,14 @@ function ParseIni(_basepath) {
|
|||||||
var dx = parseInt(rect.w) + parseInt(lw);
|
var dx = parseInt(rect.w) + parseInt(lw);
|
||||||
var dy = parseInt(rect.h) + parseInt(lw);
|
var dy = parseInt(rect.h) + parseInt(lw);
|
||||||
context.strokeRect(x0, y0, dx, dy);
|
context.strokeRect(x0, y0, dx, dy);
|
||||||
|
context.lineWidth = 1;
|
||||||
|
context.beginPath();
|
||||||
|
context.arc(x0+dx/2, y0+dy/2, dx/2, 0, 2 * Math.PI);
|
||||||
|
context.moveTo(x0+dx/2, y0);
|
||||||
|
context.lineTo(x0+dx/2, y0+dy);
|
||||||
|
context.moveTo(x0, y0+dy/2);
|
||||||
|
context.lineTo(x0+dx, y0+dy/2);
|
||||||
|
context.stroke();
|
||||||
ROIInfo[aktindex]["x"] = rect.startX;
|
ROIInfo[aktindex]["x"] = rect.startX;
|
||||||
ROIInfo[aktindex]["y"] = rect.startY;
|
ROIInfo[aktindex]["y"] = rect.startY;
|
||||||
ROIInfo[aktindex]["dx"] = rect.w;
|
ROIInfo[aktindex]["dx"] = rect.w;
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MakeImage_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("MakeImage_LogImageLocation_value1").disabled = !document.getElementById("MakeImage_LogImageLocation_value1").disabled' unchecked >
|
<input type="checkbox" id="MakeImage_LogImageLocation_enabled" value="1" onclick = 'InvertEnableItem("MakeImage", "LogImageLocation")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MakeImage_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
<class id="MakeImage_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
||||||
@@ -75,7 +75,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="MakeImage_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("MakeImage_LogfileRetentionInDays_value1").disabled = !document.getElementById("MakeImage_LogfileRetentionInDays_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="MakeImage_LogfileRetentionInDays_enabled" value="1" onclick = 'InvertEnableItem("MakeImage", "LogfileRetentionInDays")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="MakeImage_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
<class id="MakeImage_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||||
@@ -223,7 +223,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="AlignmentAlgo_ex8">
|
<tr class="expert" id="AlignmentAlgo_ex8">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="Alignment_AlignmentAlgo_enabled" value="1" onclick = 'document.getElementById("Alignment_AlignmentAlgo_value1").disabled = !document.getElementById("Alignment_AlignmentAlgo_value1").disabled' unchecked >
|
<input type="checkbox" id="Alignment_AlignmentAlgo_enabled" value="1" onclick = 'InvertEnableItem("Alignment", "AlignmentAlgo")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="Alignment_AlignmentAlgo_text" style="color:black;">AlignmentAlgo</class>
|
<class id="Alignment_AlignmentAlgo_text" style="color:black;">AlignmentAlgo</class>
|
||||||
@@ -260,7 +260,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="Digits_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("Digits_LogImageLocation_value1").disabled = !document.getElementById("Digits_LogImageLocation_value1").disabled' unchecked >
|
<input type="checkbox" id="Digits_LogImageLocation_enabled" value="1" onclick = 'InvertEnableItem("Digits", "LogImageLocation")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="Digits_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
<class id="Digits_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
||||||
@@ -274,7 +274,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="Digits_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Digits_LogfileRetentionInDays_value1").disabled = !document.getElementById("Digits_LogfileRetentionInDays_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="Digits_LogfileRetentionInDays_enabled" value="1" onclick = 'InvertEnableItem("Digits", "LogfileRetentionInDays")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="Digits_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
<class id="Digits_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||||
@@ -313,7 +313,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="Analog_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("Analog_LogImageLocation_value1").disabled = !document.getElementById("Analog_LogImageLocation_value1").disabled' unchecked >
|
<input type="checkbox" id="Analog_LogImageLocation_enabled" value="1" onclick = 'InvertEnableItem("Analog", "LogImageLocation")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td> <class id="Analog_LogImageLocation_text" style="color:black;">LogImageLocation</class> </td>
|
<td> <class id="Analog_LogImageLocation_text" style="color:black;">LogImageLocation</class> </td>
|
||||||
<td> <input type="text" name="name" id="Analog_LogImageLocation_value1"> </td>
|
<td> <input type="text" name="name" id="Analog_LogImageLocation_value1"> </td>
|
||||||
@@ -321,7 +321,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="Analog_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Analog_LogfileRetentionInDays_value1").disabled = !document.getElementById("Analog_LogfileRetentionInDays_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="Analog_LogfileRetentionInDays_enabled" value="1" onclick = 'InvertEnableItem("Analog", "LogfileRetentionInDays")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td> <class id="Analog_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class> </td>
|
<td> <class id="Analog_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class> </td>
|
||||||
<td> <input type="number" id="Analog_LogfileRetentionInDays_value1" min="0" step="1"> </td>
|
<td> <input type="number" id="Analog_LogfileRetentionInDays_value1" min="0" step="1"> </td>
|
||||||
@@ -330,7 +330,7 @@ textarea {
|
|||||||
|
|
||||||
<tr class="expert" id="Analog_ExtendedResolution_ex10">
|
<tr class="expert" id="Analog_ExtendedResolution_ex10">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="Analog_ExtendedResolution_enabled" value="1" onclick = 'document.getElementById("Analog_ExtendedResolution_value1").disabled = !document.getElementById("Analog_ExtendedResolution_value1").disabled' unchecked >
|
<input type="checkbox" id="Analog_ExtendedResolution_enabled" value="1" onclick = 'InvertEnableItem("Analog", "ExtendedResolution")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="Analog_ExtendedResolution_text" style="color:black;">ExtendedResolution</class>
|
<class id="Analog_ExtendedResolution_text" style="color:black;">ExtendedResolution</class>
|
||||||
@@ -364,7 +364,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_DecimalShift_enabled" value="1" onclick = 'document.getElementById("PostProcessing_DecimalShift_value1").disabled = !document.getElementById("PostProcessing_DecimalShift_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_DecimalShift_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "DecimalShift")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_DecimalShift_text" style="color:black;">DecimalShift</class>
|
<class id="PostProcessing_DecimalShift_text" style="color:black;">DecimalShift</class>
|
||||||
@@ -378,7 +378,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_PreValueUse_enabled" value="1" onclick = 'document.getElementById("PostProcessing_PreValueUse_value1").disabled = !document.getElementById("PostProcessing_PreValueUse_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_PreValueUse_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "PreValueUse")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_PreValueUse_text" style="color:black;">PreValueUse</class>
|
<class id="PostProcessing_PreValueUse_text" style="color:black;">PreValueUse</class>
|
||||||
@@ -395,7 +395,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="ex11">
|
<tr class="expert" id="ex11">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_PreValueAgeStartup_enabled" value="1" onclick = 'document.getElementById("PostProcessing_PreValueAgeStartup_value1").disabled = !document.getElementById("PostProcessing_PreValueAgeStartup_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_PreValueAgeStartup_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "PreValueAgeStartup")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_PreValueAgeStartup_text" style="color:black;">PreValueAgeStartup</class>
|
<class id="PostProcessing_PreValueAgeStartup_text" style="color:black;">PreValueAgeStartup</class>
|
||||||
@@ -409,7 +409,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_AllowNegativeRates_enabled" value="1" onclick = 'document.getElementById("PostProcessing_AllowNegativeRates_value1").disabled = !document.getElementById("PostProcessing_AllowNegativeRates_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_AllowNegativeRates_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "AllowNegativeRates")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_AllowNegativeRates_text" style="color:black;">AllowNegativeRates</class>
|
<class id="PostProcessing_AllowNegativeRates_text" style="color:black;">AllowNegativeRates</class>
|
||||||
@@ -426,7 +426,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_MaxRateValue_enabled" value="1" onclick = 'document.getElementById("PostProcessing_MaxRateValue_value1").disabled = !document.getElementById("PostProcessing_MaxRateValue_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_MaxRateValue_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "MaxRateValue")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_MaxRateValue_text" style="color:black;">MaxRateValue</class>
|
<class id="PostProcessing_MaxRateValue_text" style="color:black;">MaxRateValue</class>
|
||||||
@@ -440,7 +440,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="ex12">
|
<tr class="expert" id="ex12">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_ErrorMessage_enabled" value="1" onclick = 'document.getElementById("PostProcessing_ErrorMessage_value1").disabled = !document.getElementById("PostProcessing_ErrorMessage_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_ErrorMessage_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "ErrorMessage")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_ErrorMessage_text" style="color:black;">ErrorMessage</class>
|
<class id="PostProcessing_ErrorMessage_text" style="color:black;">ErrorMessage</class>
|
||||||
@@ -457,7 +457,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="PostProcessing_CheckDigitIncreaseConsistency_enabled" value="1" onclick = 'document.getElementById("PostProcessing_CheckDigitIncreaseConsistency_value1").disabled = !document.getElementById("PostProcessing_CheckDigitIncreaseConsistency_value1").disabled' unchecked >
|
<input type="checkbox" id="PostProcessing_CheckDigitIncreaseConsistency_enabled" value="1" onclick = 'InvertEnableItem("PostProcessing", "CheckDigitIncreaseConsistency")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="PostProcessing_CheckDigitIncreaseConsistency_text" style="color:black;">CheckDigitIncreaseConsistency</class>
|
<class id="PostProcessing_CheckDigitIncreaseConsistency_text" style="color:black;">CheckDigitIncreaseConsistency</class>
|
||||||
@@ -478,7 +478,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_Uri_enabled" value="1" onclick = 'document.getElementById("MQTT_Uri_value1").disabled = !document.getElementById("MQTT_Uri_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_Uri_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "Uri")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_Uri_text" style="color:black;">Uri</class>
|
<class id="MQTT_Uri_text" style="color:black;">Uri</class>
|
||||||
@@ -492,7 +492,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_Topic_enabled" value="1" onclick = 'document.getElementById("MQTT_Topic_value1").disabled = !document.getElementById("MQTT_Topic_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_Topic_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "Topic")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_Topic_text" style="color:black;">Topic</class>
|
<class id="MQTT_Topic_text" style="color:black;">Topic</class>
|
||||||
@@ -506,7 +506,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_TopicError_enabled" value="1" onclick = 'document.getElementById("MQTT_TopicError_value1").disabled = !document.getElementById("MQTT_TopicError_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_TopicError_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "TopicError")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_TopicError_text" style="color:black;">TopicError</class>
|
<class id="MQTT_TopicError_text" style="color:black;">TopicError</class>
|
||||||
@@ -520,7 +520,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_ClientID_enabled" value="1" onclick = 'document.getElementById("MQTT_ClientID_value1").disabled = !document.getElementById("MQTT_ClientID_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_ClientID_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "ClientID")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_ClientID_text" style="color:black;">ClientID</class>
|
<class id="MQTT_ClientID_text" style="color:black;">ClientID</class>
|
||||||
@@ -534,7 +534,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_user_enabled" value="1" onclick = 'document.getElementById("MQTT_user_value1").disabled = !document.getElementById("MQTT_user_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_user_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "user")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_user_text" style="color:black;">user</class>
|
<class id="MQTT_user_text" style="color:black;">user</class>
|
||||||
@@ -548,7 +548,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="MQTT_password_enabled" value="1" onclick = 'document.getElementById("MQTT_password_value1").disabled = !document.getElementById("MQTT_password_value1").disabled' unchecked >
|
<input type="checkbox" id="MQTT_password_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "password")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="MQTT_password_text" style="color:black;">password</class>
|
<class id="MQTT_password_text" style="color:black;">password</class>
|
||||||
@@ -566,7 +566,6 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="ex13">
|
<tr class="expert" id="ex13">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="AutoTimer_AutoStart_enabled" value="1" onclick = 'document.getElementById("AutoTimer_AutoStart_value1").disabled = !document.getElementById("AutoTimer_AutoStart_value1").disabled' unchecked >
|
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="AutoTimer_AutoStart_text" style="color:black;">AutoStart</class>
|
<class id="AutoTimer_AutoStart_text" style="color:black;">AutoStart</class>
|
||||||
@@ -583,7 +582,6 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="AutoTimer_Intervall_enabled" value="1" onclick = 'document.getElementById("AutoTimer_Intervall_value1").disabled = !document.getElementById("AutoTimerg_Intervall_value1").disabled' unchecked >
|
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="AutoTimer_Intervall_text" style="color:black;">Intervall</class>
|
<class id="AutoTimer_Intervall_text" style="color:black;">Intervall</class>
|
||||||
@@ -601,7 +599,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<input type="checkbox" id="Debug_Logfile_enabled" value="1" onclick = 'document.getElementById("Debug_Logfile_value1").disabled = !document.getElementById("Debug_Logfile_value1").disabled' unchecked >
|
<input type="checkbox" id="Debug_Logfile_enabled" value="1" onclick = 'InvertEnableItem("Debug", "Logfile")' unchecked >
|
||||||
</td>
|
</td>
|
||||||
<td width="200px">
|
<td width="200px">
|
||||||
<class id="Debug_Logfile_text" style="color:black;">Logfile</class>
|
<class id="Debug_Logfile_text" style="color:black;">Logfile</class>
|
||||||
@@ -618,7 +616,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="Debug_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Debug_LogfileRetentionInDays_value1").disabled = !document.getElementById("Debug_LogfileRetentionInDays_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="Debug_LogfileRetentionInDays_enabled" value="1" onclick = 'InvertEnableItem("Debug", "LogfileRetentionInDays")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="Debug_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
<class id="Debug_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||||
@@ -636,7 +634,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="System_TimeZone_enabled" value="1" onclick = 'document.getElementById("System_TimeZone_value1").disabled = !document.getElementById("System_TimeZone_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="System_TimeZone_enabled" value="1" onclick = 'InvertEnableItem("System", "TimeZone")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="System_TimeZone_text" style="color:black;">TimeZone</class>
|
<class id="System_TimeZone_text" style="color:black;">TimeZone</class>
|
||||||
@@ -650,7 +648,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="ex16">
|
<tr class="expert" id="ex16">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<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"><input type="checkbox" id="System_TimeServer_enabled" value="1" onclick = 'InvertEnableItem("System", "TimeServer")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="System_TimeServer_text" style="color:black;">TimeServer</class>
|
<class id="System_TimeServer_text" style="color:black;">TimeServer</class>
|
||||||
@@ -664,7 +662,7 @@ textarea {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="expert" id="System_Hostname">
|
<tr class="expert" id="System_Hostname">
|
||||||
<td width="20px" style="padding-left: 40px;">
|
<td width="20px" style="padding-left: 40px;">
|
||||||
<td"><input type="checkbox" id="System_Hostname_enabled" value="1" onclick = 'document.getElementById("System_Hostname_value1").disabled = !document.getElementById("System_Hostname_value1").disabled' unchecked ></td>
|
<td"><input type="checkbox" id="System_Hostname_enabled" value="1" onclick = 'InvertEnableItem("System", "Hostname")' unchecked ></td>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<class id="System_Hostname_text" style="color:black;">Hostname</class>
|
<class id="System_Hostname_text" style="color:black;">Hostname</class>
|
||||||
@@ -768,6 +766,33 @@ function WriteParameter(_param, _category, _cat, _name, _optional, _select = fal
|
|||||||
EnDisableItem(_category[_cat]["enabled"], _param, _category, _cat, _name, _optional);
|
EnDisableItem(_category[_cat]["enabled"], _param, _category, _cat, _name, _optional);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function InvertEnableItem(_cat, _param)
|
||||||
|
{
|
||||||
|
_zw = _cat + "_" + _param + "_enabled";
|
||||||
|
_isOn = document.getElementById(_zw).checked;
|
||||||
|
|
||||||
|
_color = "color:lightgrey;";
|
||||||
|
if (_isOn) {
|
||||||
|
_color = "color:black;";
|
||||||
|
}
|
||||||
|
|
||||||
|
_zw = _cat + "_" + _param + "_text";
|
||||||
|
document.getElementById(_zw).disabled = !_isOn;
|
||||||
|
document.getElementById(_zw).style = _color;
|
||||||
|
|
||||||
|
if (param[_cat][_param]["anzParam"] == 2) {
|
||||||
|
_color = "width: 30px;" + _color;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var j = 1; j <= param[_cat][_param]["anzParam"]; ++j) {
|
||||||
|
document.getElementById(_cat+"_"+_param+"_value"+j).disabled = !_isOn;
|
||||||
|
document.getElementById(_cat+"_"+_param+"_value"+j).style=_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function EnDisableItem(_status, _param, _category, _cat, _name, _optional)
|
function EnDisableItem(_status, _param, _category, _cat, _name, _optional)
|
||||||
{
|
{
|
||||||
_status = _param[_cat][_name]["found"] && _category[_cat]["enabled"];
|
_status = _param[_cat][_name]["found"] && _category[_cat]["enabled"];
|
||||||
@@ -864,8 +889,8 @@ function UpdateInput() {
|
|||||||
WriteParameter(param, category, "MQTT", "user", true);
|
WriteParameter(param, category, "MQTT", "user", true);
|
||||||
WriteParameter(param, category, "MQTT", "password", true);
|
WriteParameter(param, category, "MQTT", "password", true);
|
||||||
|
|
||||||
WriteParameter(param, category, "AutoTimer", "AutoStart", true, true);
|
WriteParameter(param, category, "AutoTimer", "AutoStart", false, true);
|
||||||
WriteParameter(param, category, "AutoTimer", "Intervall", true);
|
WriteParameter(param, category, "AutoTimer", "Intervall", false);
|
||||||
|
|
||||||
WriteParameter(param, category, "Debug", "Logfile", true, true);
|
WriteParameter(param, category, "Debug", "Logfile", true, true);
|
||||||
WriteParameter(param, category, "Debug", "LogfileRetentionInDays", true);
|
WriteParameter(param, category, "Debug", "LogfileRetentionInDays", true);
|
||||||
@@ -921,8 +946,8 @@ function ReadParameterAll()
|
|||||||
ReadParameter(param, "MQTT", "user", true);
|
ReadParameter(param, "MQTT", "user", true);
|
||||||
ReadParameter(param, "MQTT", "password", true);
|
ReadParameter(param, "MQTT", "password", true);
|
||||||
|
|
||||||
ReadParameter(param, "AutoTimer", "AutoStart", true, true);
|
ReadParameter(param, "AutoTimer", "AutoStart", false, true);
|
||||||
ReadParameter(param, "AutoTimer", "Intervall", true);
|
ReadParameter(param, "AutoTimer", "Intervall", false);
|
||||||
|
|
||||||
ReadParameter(param, "Debug", "Logfile", true, true);
|
ReadParameter(param, "Debug", "Logfile", true, true);
|
||||||
ReadParameter(param, "Debug", "LogfileRetentionInDays", true);
|
ReadParameter(param, "Debug", "LogfileRetentionInDays", true);
|
||||||
|
|||||||
@@ -355,6 +355,8 @@ function draw() {
|
|||||||
var dx = parseInt(rect.w) + parseInt(lw);
|
var dx = parseInt(rect.w) + parseInt(lw);
|
||||||
var dy = parseInt(rect.h) + parseInt(lw);
|
var dy = parseInt(rect.h) + parseInt(lw);
|
||||||
context.strokeRect(x0, y0, dx, dy);
|
context.strokeRect(x0, y0, dx, dy);
|
||||||
|
context.lineWidth = 1;
|
||||||
|
context.strokeRect(x0+dx*0.2, y0+dy*0.2, dx*0.6, dy*0.6);
|
||||||
ROIInfo[aktindex]["x"] = rect.startX;
|
ROIInfo[aktindex]["x"] = rect.startX;
|
||||||
ROIInfo[aktindex]["y"] = rect.startY;
|
ROIInfo[aktindex]["y"] = rect.startY;
|
||||||
ROIInfo[aktindex]["dx"] = rect.w;
|
ROIInfo[aktindex]["dx"] = rect.w;
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ function loadConfig(_basepath) {
|
|||||||
xhttp.open("GET", url, false);
|
xhttp.open("GET", url, false);
|
||||||
xhttp.send();
|
xhttp.send();
|
||||||
config_gesamt = xhttp.responseText;
|
config_gesamt = xhttp.responseText;
|
||||||
|
config_gesamt = config_gesamt.replace("InitalRotate", "InitialRotate"); // Korrigiere Schreibfehler in config.ini !!!!!
|
||||||
}
|
}
|
||||||
catch (error)
|
catch (error)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
6.3.1
|
6.4.1
|
||||||
|
|||||||
Reference in New Issue
Block a user