mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-07 12:06:58 +03:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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
|
||||
|
||||
##### 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)
|
||||
|
||||
* 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
|
||||
153
README.md
153
README.md
@@ -39,7 +39,20 @@ If you would like to support the developer with a cup of coffee you can do that
|
||||
|
||||
**General remark:** Beside the `firmware.bin`, typically also the content of `/html` needs to be updated!
|
||||
|
||||
##### 6.6.0 Image Processing in Memory - (2021-03-28)
|
||||
|
||||
* 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)
|
||||
|
||||
@@ -76,151 +89,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
|
||||
|
||||
* 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`
|
||||
|
||||
* Disabled `CheckDigitIncreaseConsistency` in default configuration - must now be explicit enabled if needed
|
||||
|
||||
* Update digital CNN to v7.2.1 (additional digital images trained)
|
||||
|
||||
* Setting of arbitrary time server in `config.ini`
|
||||
|
||||
* Option for fixed IP-, DNS-Settings in `wlan.ini`
|
||||
|
||||
* Increased stability (internal image and camera handling)
|
||||
|
||||
* 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)
|
||||
|
||||
* 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)
|
||||
|
||||
|
||||
|
||||
##### 2.2.1 Version Control (2020-09-27)
|
||||
|
||||
* Bug-Fixing (hostname in wlan.ini and error handling inside flow)
|
||||
|
||||
##### 2.1.0 Decimal Shift, Chrome & Edge - (2020-09-25)
|
||||
|
||||
|
||||
##### 2.2.0 Version Control (2020-09-27)
|
||||
##### 2.0.0 Layout update - (2020-09-12)
|
||||
|
||||
* 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
|
||||
##### 1.1.3 Initial Version - (2020-09-09)
|
||||
|
||||
|
||||
#### [Full Changelog](Changelog.md)
|
||||
|
||||
@@ -292,11 +292,14 @@ bool ChangeHostName(std::string fn, std::string _newhostname)
|
||||
|
||||
for (int i = 0; i < neuesfile.size(); ++i)
|
||||
{
|
||||
printf(neuesfile[i].c_str());
|
||||
fputs(neuesfile[i].c_str(), pFile);
|
||||
}
|
||||
|
||||
fclose(pFile);
|
||||
|
||||
printf("*** Update hostname done ***\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,4 +9,5 @@ static const char *TAGPARTOTA = "server_ota";
|
||||
void register_server_ota_sdcard_uri(httpd_handle_t server);
|
||||
void CheckOTAUpdate();
|
||||
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 !!!
|
||||
fclose(pfile);
|
||||
printf("do reboot\n");
|
||||
esp_restart();
|
||||
hard_restart();
|
||||
doReboot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,14 @@
|
||||
#include "ClassControllCamera.h"
|
||||
#include "server_main.h"
|
||||
#include "server_camera.h"
|
||||
|
||||
|
||||
#define __SD_USE_ONE_LINE_MODE__
|
||||
|
||||
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||
#include "server_GPIO.h"
|
||||
#endif
|
||||
|
||||
static const char *TAGMAIN = "connect_wlan_main";
|
||||
|
||||
#define FLASH_GPIO GPIO_NUM_4
|
||||
@@ -37,34 +44,61 @@ void Init_NVS_SDCard()
|
||||
ESP_ERROR_CHECK(nvs_flash_erase());
|
||||
ret = nvs_flash_init();
|
||||
}
|
||||
////////////////////////////////////////////////
|
||||
|
||||
ESP_LOGI(TAGMAIN, "Initializing SD card");
|
||||
ESP_LOGI(TAG, "Using SDMMC peripheral");
|
||||
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
|
||||
host.flags = SDMMC_HOST_FLAG_1BIT;
|
||||
// sdmmc_host_t host = SDMMC_HOST_SLOT_1();
|
||||
// host.flags = SDMMC_HOST_FLAG_1BIT;
|
||||
|
||||
// This initializes the slot without card detect (CD) and write protect (WP) signals.
|
||||
// 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();
|
||||
slot_config.width = 1; // 1 line SD mode
|
||||
|
||||
esp_vfs_fat_sdmmc_mount_config_t mount_config = { };
|
||||
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
|
||||
gpio_set_pull_mode((gpio_num_t) 2, GPIO_PULLUP_ONLY); // D0, needed in 4- and 1-line modes
|
||||
// To use 1-line SD mode, uncomment the following line:
|
||||
|
||||
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||
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;
|
||||
ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card);
|
||||
|
||||
if (ret != ESP_OK) {
|
||||
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 {
|
||||
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;
|
||||
}
|
||||
|
||||
// Card has been initialized, print its properties
|
||||
sdmmc_card_print_info(stdout, card);
|
||||
|
||||
|
||||
// Init the GPIO
|
||||
// Flash ausschalten
|
||||
gpio_pad_select_gpio(FLASH_GPIO);
|
||||
@@ -113,7 +147,11 @@ extern "C" void app_main(void)
|
||||
register_server_tflite_uri(server);
|
||||
register_server_file_uri(server, "/sdcard");
|
||||
register_server_ota_sdcard_uri(server);
|
||||
|
||||
#ifdef __SD_USE_ONE_LINE_MODE__
|
||||
register_server_GPIO_uri(server);
|
||||
#endif
|
||||
|
||||
register_server_main_uri(server, "/sdcard");
|
||||
|
||||
TFliteDoAutoStart();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const char* GIT_REV="60701bc";
|
||||
const char* GIT_REV="d8c9146";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="master";
|
||||
const char* BUILD_TIME="2021-03-16 21:11";
|
||||
const char* BUILD_TIME="2021-03-28 20:09";
|
||||
@@ -13,7 +13,7 @@ extern "C"
|
||||
#include "Helper.h"
|
||||
#include <fstream>
|
||||
|
||||
const char* GIT_BASE_BRANCH = "master - v6.3.1 - 2020-03-16";
|
||||
const char* GIT_BASE_BRANCH = "master - v6.6.0 - 2020-03-28";
|
||||
|
||||
|
||||
const char* git_base_branch(void)
|
||||
|
||||
@@ -165,8 +165,6 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
#
|
||||
# CONFIG_BT_ENABLED is not set
|
||||
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_BR_EDR_MAX_ACL_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
|
||||
#
|
||||
CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y
|
||||
CONFIG_ESP32_REV_MIN_0=y
|
||||
# CONFIG_ESP32_REV_MIN_1 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_RCVBUF is not set
|
||||
# CONFIG_LWIP_NETBUF_RECVINFO is not set
|
||||
CONFIG_LWIP_IP4_FRAG=y
|
||||
CONFIG_LWIP_IP6_FRAG=y
|
||||
# CONFIG_LWIP_IP4_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_IP6_REASSEMBLY is not set
|
||||
CONFIG_LWIP_IP_FRAG=y
|
||||
# CONFIG_LWIP_IP_REASSEMBLY is not set
|
||||
# CONFIG_LWIP_STATS is not set
|
||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||
@@ -687,10 +682,8 @@ CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
|
||||
#
|
||||
# TCP
|
||||
#
|
||||
CONFIG_LWIP_TCP_ISN_HOOK=y
|
||||
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
||||
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
||||
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
||||
CONFIG_LWIP_TCP_MAXRTX=12
|
||||
CONFIG_LWIP_TCP_SYNMAXRTX=6
|
||||
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_QUARTER_MSS is not set
|
||||
# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
|
||||
CONFIG_LWIP_TCP_RTO_TIME=1500
|
||||
# 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=0x7FFFFFFF
|
||||
# CONFIG_LWIP_PPP_SUPPORT is not set
|
||||
CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
|
||||
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
|
||||
|
||||
#
|
||||
# ICMP
|
||||
@@ -1006,8 +996,6 @@ CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
||||
#
|
||||
CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||
# CONFIG_WPA_TLS_V12 is not set
|
||||
# CONFIG_WPA_WPS_WARS is not set
|
||||
# CONFIG_WPA_DEBUG_PRINT is not set
|
||||
# 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="d8c9146";
|
||||
const char* GIT_TAG="";
|
||||
const char* GIT_BRANCH="master";
|
||||
const char* BUILD_TIME="2021-03-14 12:56";
|
||||
const char* BUILD_TIME="2021-03-28 20:09";
|
||||
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
|
||||
|
||||
[Digits]
|
||||
Model = /config/dig0811s1.tflite
|
||||
Model = /config/dig0820s2q.tflite
|
||||
;LogImageLocation = /log/digit
|
||||
;LogfileRetentionInDays = 3
|
||||
ModelInputSize = 20 32
|
||||
@@ -26,7 +26,7 @@ digit2 355 120 37 67
|
||||
digit3 404 120 37 67
|
||||
|
||||
[Analog]
|
||||
Model = /config/ana0630s2.tflite
|
||||
Model = /config/ana0700s1lq.tflite
|
||||
;LogImageLocation = /log/analog
|
||||
;LogfileRetentionInDays = 3
|
||||
ModelInputSize = 32 32
|
||||
|
||||
BIN
sd-card/config/dig0820s2q.tflite
Normal file
BIN
sd-card/config/dig0820s2q.tflite
Normal file
Binary file not shown.
@@ -363,7 +363,15 @@ function ParseIni(_basepath) {
|
||||
var y0 = parseInt(rect.startY) - parseInt(lw/2);
|
||||
var dx = parseInt(rect.w) + 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]["y"] = rect.startY;
|
||||
ROIInfo[aktindex]["dx"] = rect.w;
|
||||
|
||||
@@ -61,7 +61,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MakeImage_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
||||
@@ -75,7 +75,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<class id="MakeImage_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||
@@ -223,7 +223,7 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="AlignmentAlgo_ex8">
|
||||
<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>
|
||||
<class id="Alignment_AlignmentAlgo_text" style="color:black;">AlignmentAlgo</class>
|
||||
@@ -260,7 +260,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<class id="Digits_LogImageLocation_text" style="color:black;">LogImageLocation</class>
|
||||
@@ -274,7 +274,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<class id="Digits_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||
@@ -313,7 +313,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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> <class id="Analog_LogImageLocation_text" style="color:black;">LogImageLocation</class> </td>
|
||||
<td> <input type="text" name="name" id="Analog_LogImageLocation_value1"> </td>
|
||||
@@ -321,7 +321,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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> <class id="Analog_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class> </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">
|
||||
<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 width="200px">
|
||||
<class id="Analog_ExtendedResolution_text" style="color:black;">ExtendedResolution</class>
|
||||
@@ -364,7 +364,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_DecimalShift_text" style="color:black;">DecimalShift</class>
|
||||
@@ -378,7 +378,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_PreValueUse_text" style="color:black;">PreValueUse</class>
|
||||
@@ -395,7 +395,7 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="ex11">
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_PreValueAgeStartup_text" style="color:black;">PreValueAgeStartup</class>
|
||||
@@ -409,7 +409,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_AllowNegativeRates_text" style="color:black;">AllowNegativeRates</class>
|
||||
@@ -426,7 +426,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_MaxRateValue_text" style="color:black;">MaxRateValue</class>
|
||||
@@ -440,7 +440,7 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="ex12">
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_ErrorMessage_text" style="color:black;">ErrorMessage</class>
|
||||
@@ -457,7 +457,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="PostProcessing_CheckDigitIncreaseConsistency_text" style="color:black;">CheckDigitIncreaseConsistency</class>
|
||||
@@ -478,7 +478,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_Uri_text" style="color:black;">Uri</class>
|
||||
@@ -492,7 +492,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_Topic_text" style="color:black;">Topic</class>
|
||||
@@ -506,7 +506,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_TopicError_text" style="color:black;">TopicError</class>
|
||||
@@ -520,7 +520,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_ClientID_text" style="color:black;">ClientID</class>
|
||||
@@ -534,7 +534,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_user_text" style="color:black;">user</class>
|
||||
@@ -548,7 +548,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="MQTT_password_text" style="color:black;">password</class>
|
||||
@@ -566,7 +566,6 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="ex13">
|
||||
<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 width="200px">
|
||||
<class id="AutoTimer_AutoStart_text" style="color:black;">AutoStart</class>
|
||||
@@ -583,7 +582,6 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="AutoTimer_Intervall_text" style="color:black;">Intervall</class>
|
||||
@@ -601,7 +599,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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 width="200px">
|
||||
<class id="Debug_Logfile_text" style="color:black;">Logfile</class>
|
||||
@@ -618,7 +616,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<class id="Debug_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
|
||||
@@ -636,7 +634,7 @@ textarea {
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<class id="System_TimeZone_text" style="color:black;">TimeZone</class>
|
||||
@@ -650,7 +648,7 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="ex16">
|
||||
<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>
|
||||
<class id="System_TimeServer_text" style="color:black;">TimeServer</class>
|
||||
@@ -664,7 +662,7 @@ textarea {
|
||||
</tr>
|
||||
<tr class="expert" id="System_Hostname">
|
||||
<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>
|
||||
<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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_status = _param[_cat][_name]["found"] && _category[_cat]["enabled"];
|
||||
@@ -864,8 +889,8 @@ function UpdateInput() {
|
||||
WriteParameter(param, category, "MQTT", "user", true);
|
||||
WriteParameter(param, category, "MQTT", "password", true);
|
||||
|
||||
WriteParameter(param, category, "AutoTimer", "AutoStart", true, true);
|
||||
WriteParameter(param, category, "AutoTimer", "Intervall", true);
|
||||
WriteParameter(param, category, "AutoTimer", "AutoStart", false, true);
|
||||
WriteParameter(param, category, "AutoTimer", "Intervall", false);
|
||||
|
||||
WriteParameter(param, category, "Debug", "Logfile", true, true);
|
||||
WriteParameter(param, category, "Debug", "LogfileRetentionInDays", true);
|
||||
@@ -921,8 +946,8 @@ function ReadParameterAll()
|
||||
ReadParameter(param, "MQTT", "user", true);
|
||||
ReadParameter(param, "MQTT", "password", true);
|
||||
|
||||
ReadParameter(param, "AutoTimer", "AutoStart", true, true);
|
||||
ReadParameter(param, "AutoTimer", "Intervall", true);
|
||||
ReadParameter(param, "AutoTimer", "AutoStart", false, true);
|
||||
ReadParameter(param, "AutoTimer", "Intervall", false);
|
||||
|
||||
ReadParameter(param, "Debug", "Logfile", true, true);
|
||||
ReadParameter(param, "Debug", "LogfileRetentionInDays", true);
|
||||
|
||||
@@ -354,7 +354,9 @@ function draw() {
|
||||
var y0 = parseInt(rect.startY) - parseInt(lw/2);
|
||||
var dx = parseInt(rect.w) + 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]["y"] = rect.startY;
|
||||
ROIInfo[aktindex]["dx"] = rect.w;
|
||||
|
||||
@@ -172,6 +172,7 @@ function loadConfig(_basepath) {
|
||||
xhttp.open("GET", url, false);
|
||||
xhttp.send();
|
||||
config_gesamt = xhttp.responseText;
|
||||
config_gesamt = config_gesamt.replace("InitalRotate", "InitialRotate"); // Korrigiere Schreibfehler in config.ini !!!!!
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.3.1
|
||||
6.4.1
|
||||
|
||||
Reference in New Issue
Block a user