diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a302cadc..2bedaf60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,7 +70,7 @@ jobs: #run: echo "Testing... ${{ github.ref_name }}, ${{ steps.vars.outputs.sha_short }}" > ./sd-card/html/version.txt; mkdir -p ./code/.pio/build/esp32cam/; cd ./code/.pio/build/esp32cam/; echo "${{ steps.vars.outputs.sha_short }}" > firmware.bin; cp firmware.bin partitions.bin; cp firmware.bin bootloader.bin # Testing run: cd code; platformio run --environment esp32cam - - name: Prepare Web UI (copy data from repo, generate tooltip pages and update hashes in all files) + - name: Prepare Web UI (generate tooltip pages and update hashes in all files) run: | rm -rf ./html mkdir html @@ -79,7 +79,7 @@ jobs: python -m pip install markdown mkdir html/param-tooltips cd tools/parameter-tooltip-generator - bash generate-param-doc-tooltips.sh + python generate-param-doc-tooltips.py cd ../.. cp -r ./sd-card/html/* ./html/ diff --git a/code/README.md b/code/README.md index d7dce832..b70da572 100644 --- a/code/README.md +++ b/code/README.md @@ -69,3 +69,6 @@ pio device monitor -p /dev/ttyUSB0 - `pio run --target erase` to erase the flash - `pio run --target upload` this will upload the `bootloader.bin, partitions.bin,firmware.bin` from the `code/.pio/build/esp32cam/` folder. - `pio device monitor` to observe the logs via uart + +# Update Parameters +If you create or rename a parameter, make sure to update its documentation in `../param-docs/parameter-pages`! Check the `../param-docs/README.md` for more information. diff --git a/param-docs/.idea/.gitignore b/param-docs/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/param-docs/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/param-docs/.idea/generate-param-docs.iml b/param-docs/.idea/generate-param-docs.iml new file mode 100644 index 00000000..8437fe66 --- /dev/null +++ b/param-docs/.idea/generate-param-docs.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/param-docs/.idea/inspectionProfiles/profiles_settings.xml b/param-docs/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/param-docs/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/param-docs/.idea/misc.xml b/param-docs/.idea/misc.xml new file mode 100644 index 00000000..dc9ea490 --- /dev/null +++ b/param-docs/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/param-docs/.idea/modules.xml b/param-docs/.idea/modules.xml new file mode 100644 index 00000000..c7a3fc0d --- /dev/null +++ b/param-docs/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/param-docs/.idea/vcs.xml b/param-docs/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/param-docs/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/param-docs/README.md b/param-docs/README.md new file mode 100644 index 00000000..bea97d64 --- /dev/null +++ b/param-docs/README.md @@ -0,0 +1,17 @@ +# Parameter Documentation +Each parameter which is listed in the [configfile](https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/sd-card/config/config.ini) has its own description page in the folder `parameter-pages` (grouped by the config sections). +Those pages can be edited as needed. + +During a Github action build, those parameter pages will be used to generate the tooltips in the web interface. And they also are used to build the [Online Documentation](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters). + +If you create or rename a parameter, make sure to also update its description page! + +## Template Generator +The script `generate-template-param-doc-pages.py` should be run whenever a new parameter gets added to the config file. +It then checks if there is already a page for each of the parameters. + - If no page exists yet, a templated page gets generated. + - Existing pages do not get modified. + +If the parameter is listed in `expert-params.txt`, an **Expert warning** will be shown. + +If the parameter is listed in `hidden-in-ui.txt`, a **Note** will be shown. \ No newline at end of file diff --git a/param-docs/expert-params.txt b/param-docs/expert-params.txt new file mode 100644 index 00000000..b3bd2a06 --- /dev/null +++ b/param-docs/expert-params.txt @@ -0,0 +1,31 @@ +demo +WaitBeforeTakingPicture +ImageQuality +ImageSize +LEDIntensity +Brightness +Contrast +Saturation +FixedExposure +SearchFieldX +SearchFieldY +AlignmentAlgo +InitialMirror +FlipImageSize +CNNGoodThreshold +PreValueAgeStartup +ErrorMessage +CheckDigitIncreaseConsistency +IO0 +IO1 +IO3 +IO4 +IO12 +IO13 +AutoStart +Hostname +RSSIThreshold +TimeServer +CACert +ClientCert +ClientKey diff --git a/param-docs/generate-template-param-doc-pages.py b/param-docs/generate-template-param-doc-pages.py new file mode 100644 index 00000000..73daa01f --- /dev/null +++ b/param-docs/generate-template-param-doc-pages.py @@ -0,0 +1,95 @@ +""" +For each parameter which can be found in the config file, +create a markdown file with a templated content if it does not exist yet. +The files are grouped in sub folders representing the config sections. +""" + +import os +import configparser +import urllib.request + + +configFileUrl = "https://raw.githubusercontent.com/jomjol/AI-on-the-edge-device/rolling/sd-card/config/config.ini" + +parameterDocsFolder = "parameter-pages" +parameterTemplateFile = "./templates/parameter.md" +expertParameterListFile = "./expert-params.txt" +hiddenInUiParameterListFile = "./hidden-in-ui.txt" + + +# Fetch default config file from URL +print("Fetching %r..." % configFileUrl) +with urllib.request.urlopen(configFileUrl) as response: + content = response.read().decode("utf-8") + +lines = str(content).split("\n") + +for l in range(len(lines)): + lines[l] = lines[l].strip() + "\n" + if lines[l][0] == ";": + lines[l] = lines[l][1:] # Remove comment + +content = "".join(lines) + +# Fetch list of expert parameters +with open(expertParameterListFile) as f: + expertParameters = f.read().splitlines() + +# Fetch list of parameters not available through the UI +with open(hiddenInUiParameterListFile) as f: + hiddenInUiParameters = f.read().splitlines() + + +config = configparser.ConfigParser(allow_no_value=True) +config.optionxform = str # Make it case-insensitive +config.read_string(content) + +#shutil.rmtree(parameterDocsFolder) +if not os.path.exists(parameterDocsFolder): + os.mkdir(parameterDocsFolder) + +with open(parameterTemplateFile, 'r') as parameterTemplateFileHandle: + parameterTemplate = parameterTemplateFileHandle.read() + + +print("For each section/parameter, check if there is already a documentation page in the folder %r..." % (os.getcwd() + "/" + parameterDocsFolder)) +for section in config: + if section != "DEFAULT": + #print(section) + + subFolder = parameterDocsFolder + "/" + section + + if not os.path.exists(subFolder): + os.mkdir(subFolder) + + for parameter in config[section]: + if not " " in parameter: # Ignore parameters with whitespaces in them (special format, not part of editable config) + value = config[section][parameter] + #print(" %s = %s" % (parameter, value)) + + if "main." in parameter: + parameter = parameter.replace("main.", "NUMBER.") + + """ + For each config line, create a markdown file + """ + parameterDocFile = subFolder + '/' + parameter + ".md" + + if not os.path.exists(parameterDocFile): # File does not exist yet, generate template + print("%r does not exit yet, generating a templated file for it" % (os.getcwd() + "/" + parameterDocFile)) + with open(parameterDocFile, 'w') as paramFileHandle: + content = parameterTemplate + content = content.replace("$NAME", parameter) + content = content.replace("$DEFAULT", value) + + if parameter in expertParameters: + content = content.replace("$EXPERT_PARAMETER", "!!! Warning\n This is an **Expert Parameter**! Only change it if you understand what it does!") # Note: Needs a 4 whitespace Intent! + else: + content = content.replace("$EXPERT_PARAMETER", "") + + if parameter in hiddenInUiParameters: + content = content.replace("$HIDDEN_IN_UI", "!!! Note\n This parameter is not accessible through the Web Interface Configuration Page!") # Note: Needs a 4 whitespace Intent! + else: + content = content.replace("$HIDDEN_IN_UI", "") + + paramFileHandle.write(content) diff --git a/param-docs/hidden-in-ui.txt b/param-docs/hidden-in-ui.txt new file mode 100644 index 00000000..05c3b67e --- /dev/null +++ b/param-docs/hidden-in-ui.txt @@ -0,0 +1,4 @@ +InitialRotate +MainTopicMQTT +AutoAdjustSummertime +SetupMode diff --git a/param-docs/parameter-pages/Alignment/AlignmentAlgo.md b/param-docs/parameter-pages/Alignment/AlignmentAlgo.md new file mode 100644 index 00000000..dc6d4350 --- /dev/null +++ b/param-docs/parameter-pages/Alignment/AlignmentAlgo.md @@ -0,0 +1,14 @@ +# Parameter `AlignmentAlgo` +Default Value: `Default` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Algorithm used for the alignment step. + +Available options: + +- `Default`: Use only red color channel +- `HighAccuracy`: Use all 3 color channels (3x slower) +- `Fast`: First time use `HighAccuracy`, then only check if the image is shifted +- `Off`: Disable alignment algorithm diff --git a/param-docs/parameter-pages/Alignment/FlipImageSize.md b/param-docs/parameter-pages/Alignment/FlipImageSize.md new file mode 100644 index 00000000..b932b329 --- /dev/null +++ b/param-docs/parameter-pages/Alignment/FlipImageSize.md @@ -0,0 +1,11 @@ +# Parameter `FlipImageSize` +Default Value: `false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +!!! Note + This parameter can also be set on the Reference Image configuration. + +This parameter can be used to rotate the viewport together with the alignment rotation: +![](img/flipImageSize.png) diff --git a/param-docs/parameter-pages/Alignment/InitialMirror.md b/param-docs/parameter-pages/Alignment/InitialMirror.md new file mode 100644 index 00000000..8a18a494 --- /dev/null +++ b/param-docs/parameter-pages/Alignment/InitialMirror.md @@ -0,0 +1,10 @@ +# Parameter `InitialMirror` +Default Value: `false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +!!! Note + This parameter can also be set on the Reference Image configuration. + +Option for initially mirroring the image on the original x-axis. diff --git a/param-docs/parameter-pages/Alignment/InitialRotate.md b/param-docs/parameter-pages/Alignment/InitialRotate.md new file mode 100644 index 00000000..3cbc1afa --- /dev/null +++ b/param-docs/parameter-pages/Alignment/InitialRotate.md @@ -0,0 +1,9 @@ +# Parameter `InitialRotate` +Default Value: `179` + +Unit: Degrees + +Initial rotation of image before alignment in degree (0 .. 359) + +!!! Note + This parameter is accessible on the Reference Image Page but not on the Config page! diff --git a/param-docs/parameter-pages/Alignment/SearchFieldX.md b/param-docs/parameter-pages/Alignment/SearchFieldX.md new file mode 100644 index 00000000..b8293147 --- /dev/null +++ b/param-docs/parameter-pages/Alignment/SearchFieldX.md @@ -0,0 +1,14 @@ +# Parameter `SearchFieldX` +Default Value: `20` + +Unit: Pixels + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +X-size (width) in which the reference is searched. + +!!! Note + Since the alignment is one of the steps using a lot of computation time, + the search field should be as small as possible. + The calculation time goes quadratic with the search field size. \ No newline at end of file diff --git a/param-docs/parameter-pages/Alignment/SearchFieldY.md b/param-docs/parameter-pages/Alignment/SearchFieldY.md new file mode 100644 index 00000000..6b51b9a9 --- /dev/null +++ b/param-docs/parameter-pages/Alignment/SearchFieldY.md @@ -0,0 +1,14 @@ +# Parameter `SearchFieldY` +Default Value: `20` + +Unit: Pixels + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Y-size (height) in which the reference is searched. + +!!! Note + Since the alignment is one of the steps using a lot of computation time, + the search field should be as small as possible. + The calculation time goes quadratic with the search field size. diff --git a/param-docs/parameter-pages/Analog/CNNGoodThreshold.md b/param-docs/parameter-pages/Analog/CNNGoodThreshold.md new file mode 100644 index 00000000..acff4a58 --- /dev/null +++ b/param-docs/parameter-pages/Analog/CNNGoodThreshold.md @@ -0,0 +1,10 @@ +# Parameter `CNNGoodThreshold` +Default Value: `0.5` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Threshold above which the classification should be to accept the value (only meaningful for digits). + +!!! Warning + This is only supported for the `ana-class100` models! diff --git a/param-docs/parameter-pages/Analog/ExtendedResolution.md b/param-docs/parameter-pages/Analog/ExtendedResolution.md new file mode 100644 index 00000000..711fd4ec --- /dev/null +++ b/param-docs/parameter-pages/Analog/ExtendedResolution.md @@ -0,0 +1,5 @@ +# Parameter `ExtendedResolution` + +!!! Warning + This parameter is unused! + Use [`NUMBER.ExtendedResolution`](../Parameters/#PostProcessing-NUMBER.ExtendedResolution) instead! diff --git a/param-docs/parameter-pages/Analog/Model.md b/param-docs/parameter-pages/Analog/Model.md new file mode 100644 index 00000000..3481c2b4 --- /dev/null +++ b/param-docs/parameter-pages/Analog/Model.md @@ -0,0 +1,4 @@ +# Parameter `Model` +Default Value: `/config/ana-cont_*.tflite` (See [/config/config.ini](https://github.com/jomjol/AI-on-the-edge-device/blob/master/sd-card/config/config.ini)) + +Path to CNN model file for image recognition. See [here](../Choosing-the-Model) for details. diff --git a/param-docs/parameter-pages/Analog/ROIImagesLocation.md b/param-docs/parameter-pages/Analog/ROIImagesLocation.md new file mode 100644 index 00000000..a8aacecb --- /dev/null +++ b/param-docs/parameter-pages/Analog/ROIImagesLocation.md @@ -0,0 +1,7 @@ +# Parameter `ROIImagesLocation` +Default Value: `/log/analog` + +Location to store separated analog images on the SD-Card. + +!!! Warning + A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/Analog/ROIImagesRetention.md b/param-docs/parameter-pages/Analog/ROIImagesRetention.md new file mode 100644 index 00000000..a36d06b5 --- /dev/null +++ b/param-docs/parameter-pages/Analog/ROIImagesRetention.md @@ -0,0 +1,6 @@ +# Parameter `ROIImagesRetention` +Default Value: `3` + +Unit: Days + +Days to keep the separated analog images (`0` = forever). diff --git a/param-docs/parameter-pages/AutoTimer/AutoStart.md b/param-docs/parameter-pages/AutoTimer/AutoStart.md new file mode 100644 index 00000000..94a93133 --- /dev/null +++ b/param-docs/parameter-pages/AutoTimer/AutoStart.md @@ -0,0 +1,12 @@ +# Parameter `AutoStart` +Default Value: `true` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Automatically start the Flow (Digitization Rounds) immediately after power up. + +!!! Note + Typically this is set to `true`. + The main reasons to set it to `false` is when you want to trigger it manually using the + [REST API](../REST-API) or [MQTT-API](../MQTT-API) or for debugging. \ No newline at end of file diff --git a/param-docs/parameter-pages/AutoTimer/Interval.md b/param-docs/parameter-pages/AutoTimer/Interval.md new file mode 100644 index 00000000..e0e58ebb --- /dev/null +++ b/param-docs/parameter-pages/AutoTimer/Interval.md @@ -0,0 +1,7 @@ +# Parameter `Interval` +Default Value: `5` + +Unit: Minutes + +Interval in which the Flow (Digitization Round) is run. +If a round takes longer than this interval, the next round gets postponed until the current round completes. diff --git a/param-docs/parameter-pages/DataLogging/DataFilesRetention.md b/param-docs/parameter-pages/DataLogging/DataFilesRetention.md new file mode 100644 index 00000000..be6b9b9f --- /dev/null +++ b/param-docs/parameter-pages/DataLogging/DataFilesRetention.md @@ -0,0 +1,6 @@ +# Parameter `DataFilesRetention` +Default Value: `3` + +Unit: Days + +Number of days to keep the data files (`0` = forever). diff --git a/param-docs/parameter-pages/DataLogging/DataLogActive.md b/param-docs/parameter-pages/DataLogging/DataLogActive.md new file mode 100644 index 00000000..03e44ff8 --- /dev/null +++ b/param-docs/parameter-pages/DataLogging/DataLogActive.md @@ -0,0 +1,8 @@ +# Parameter `DataLogActive` +Default Value: `true` +Activate data logging to the SD-Card. + +The files will be stored in `/log/data/data_YYYY-MM-DD.csv`. See [`Data Logging`](../data-logging) for details. + +!!! Warning + A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/Debug/LogLevel.md b/param-docs/parameter-pages/Debug/LogLevel.md new file mode 100644 index 00000000..ac518563 --- /dev/null +++ b/param-docs/parameter-pages/Debug/LogLevel.md @@ -0,0 +1,16 @@ +# Parameter `LogLevel` +Default Value: `1` (`ERROR`) +Define the log level for the logging to the SD-Card. + +Available options: + +- `1`: `ERROR` +- `2`: `WARNING` +- `3`: `INFO` +- `4`: `DEBUG` + +As higher the level, as more log messages get written to the SD-Card. + +!!! Warning + `DEBUG` or `INFO` might damage the SD-Card if enabled long term due to excessive writes to the SD-Card! + A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/Debug/LogfilesRetention.md b/param-docs/parameter-pages/Debug/LogfilesRetention.md new file mode 100644 index 00000000..e8adb036 --- /dev/null +++ b/param-docs/parameter-pages/Debug/LogfilesRetention.md @@ -0,0 +1,6 @@ +# Parameter `LogfilesRetention` +Default Value: `3` + +Unit: Days + +Number of days to keep the log files (`0` = forever). diff --git a/param-docs/parameter-pages/Digits/CNNGoodThreshold.md b/param-docs/parameter-pages/Digits/CNNGoodThreshold.md new file mode 100644 index 00000000..04851292 --- /dev/null +++ b/param-docs/parameter-pages/Digits/CNNGoodThreshold.md @@ -0,0 +1,10 @@ +# Parameter `CNNGoodThreshold` +Default Value: `0.5` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Threshold above which the classification should be to accept the value (only meaningful for digits). + +!!! Warning + This is only supported for the `dig-class100` models! diff --git a/param-docs/parameter-pages/Digits/Model.md b/param-docs/parameter-pages/Digits/Model.md new file mode 100644 index 00000000..73107f79 --- /dev/null +++ b/param-docs/parameter-pages/Digits/Model.md @@ -0,0 +1,4 @@ +# Parameter `Model` +Default Value: `/config/dig-cont_*.tflite` (See [/config/config.ini](https://github.com/jomjol/AI-on-the-edge-device/blob/master/sd-card/config/config.ini)) + +Path to CNN model file for image recognition. See [here](../Choosing-the-Model) for details. diff --git a/param-docs/parameter-pages/Digits/ROIImagesLocation.md b/param-docs/parameter-pages/Digits/ROIImagesLocation.md new file mode 100644 index 00000000..28d6b3ad --- /dev/null +++ b/param-docs/parameter-pages/Digits/ROIImagesLocation.md @@ -0,0 +1,7 @@ +# Parameter `ROIImagesLocation` +Default Value: `/log/digit` + +Location to store separated digit images on the SD-Card. + +!!! Warning + A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/Digits/ROIImagesRetention.md b/param-docs/parameter-pages/Digits/ROIImagesRetention.md new file mode 100644 index 00000000..2d6ca9e3 --- /dev/null +++ b/param-docs/parameter-pages/Digits/ROIImagesRetention.md @@ -0,0 +1,6 @@ +# Parameter `ROIImagesRetention` +Default Value: `3` + +Unit: Days + +Days to keep the separated digit images (`0` = forever). diff --git a/param-docs/parameter-pages/GPIO/IO0.md b/param-docs/parameter-pages/GPIO/IO0.md new file mode 100644 index 00000000..a9b180a0 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO0.md @@ -0,0 +1,21 @@ +# Parameter `IO0` +Default Value: `input disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO0` pin. + +!!! Warning + This pin is only usable with restrictions! + It must be disabled when the camera is used. + Additionally, it is used to activate Bootloader mode and must therefore be HIGH after a reset! + +Parameters: + +- `GPIO 0 state`: One of `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 0 use interrupt`: Enable interrupt trigger +- `GPIO 0 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 0 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 0 enable HTTP`: Enable HTTP write/read +- `GPIO 0 name`: MQTT topic name (empty = `GPIO0`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/IO1.md b/param-docs/parameter-pages/GPIO/IO1.md new file mode 100644 index 00000000..481a847d --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO1.md @@ -0,0 +1,19 @@ +# Parameter `IO1` +Default Value: `input disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO1` pin. + +!!! Warning + This pin is by default used for the serial communication as TX pin (USB logging)! + +Parameters: + +- `GPIO 1 state`: One of `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 1 use interrupt`: Enable interrupt trigger +- `GPIO 1 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 1 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 1 enable HTTP`: Enable HTTP write/read +- `GPIO 1 name`: MQTT topic name (empty = `GPIO1`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/IO12.md b/param-docs/parameter-pages/GPIO/IO12.md new file mode 100644 index 00000000..f5f62b85 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO12.md @@ -0,0 +1,19 @@ +# Parameter `IO12` +Default Value: `input-pullup disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO12` pin. + +!!! Note + This pin is usable without known restrictions! + +Parameters: + +- `GPIO 12 state`: One of `external-flash-ws281x`, `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 12 use interrupt`: Enable interrupt trigger +- `GPIO 12 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 12 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 12 enable HTTP`: Enable HTTP write/read +- `GPIO 12 name`: MQTT topic name (empty = `GPIO12`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/IO13.md b/param-docs/parameter-pages/GPIO/IO13.md new file mode 100644 index 00000000..64bd6426 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO13.md @@ -0,0 +1,19 @@ +# Parameter `IO13` +Default Value: `input-pullup disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO13` pin. + +!!! Note + This pin is usable without known restrictions! + +Parameters: + +- `GPIO 13 state`: One of `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 13 use interrupt`: Enable interrupt trigger +- `GPIO 13 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 13 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 13 enable HTTP`: Enable HTTP write/read +- `GPIO 13 name`: MQTT topic name (empty = `GPIO13`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/IO3.md b/param-docs/parameter-pages/GPIO/IO3.md new file mode 100644 index 00000000..7d00209a --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO3.md @@ -0,0 +1,19 @@ +# Parameter `IO3` +Default Value: `input disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO3` pin. + +!!! Warning + This pin is by default used for the serial communication as RX pin (USB logging)! + +Parameters: + +- `GPIO 3 state`: One of `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 3 use interrupt`: Enable interrupt trigger +- `GPIO 3 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 3 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 3 enable HTTP`: Enable HTTP write/read +- `GPIO 3 name`: MQTT topic name (empty = `GPIO3`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/IO4.md b/param-docs/parameter-pages/GPIO/IO4.md new file mode 100644 index 00000000..f59883d2 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/IO4.md @@ -0,0 +1,20 @@ +# Parameter `IO4` +Default Value: `built-in-led disabled 10 false false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +This parameter can be used to configure the GPIO `IO4` pin. + +!!! Warning + This pin is only usable with restrictions! + By default, it is used for build-in flash light (onboard LED). + +Parameters: + +- `GPIO 4 state`: One of `built-in-led`, `input`, `input pullup`, `input pulldown` or `output`. +- `GPIO 4 use interrupt`: Enable interrupt trigger +- `GPIO 4 PWM duty resolution`: LEDC PWM duty resolution in bit +- `GPIO 4 enable MQTT`: Enable MQTT publishing/subscribing +- `GPIO 4 enable HTTP`: Enable HTTP write/read +- `GPIO 4 name`: MQTT topic name (empty = `GPIO4`). Allowed characters: `a-z, A-Z, 0-9, _, -`. diff --git a/param-docs/parameter-pages/GPIO/LEDColor.md b/param-docs/parameter-pages/GPIO/LEDColor.md new file mode 100644 index 00000000..c7e0816d --- /dev/null +++ b/param-docs/parameter-pages/GPIO/LEDColor.md @@ -0,0 +1,5 @@ +# Parameter `LEDColor` +Default Value: `150 150 150` + +Color of the attached LEDs to GPIO12 in **R**ed, **G**reen **B**lue from `0` (full off) .. `255` (full on) +(See `IO12` parameter). diff --git a/param-docs/parameter-pages/GPIO/LEDNumbers.md b/param-docs/parameter-pages/GPIO/LEDNumbers.md new file mode 100644 index 00000000..b151b240 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/LEDNumbers.md @@ -0,0 +1,4 @@ +# Parameter `LEDNumbers` +Default Value: `2` + +Number of LEDs on the external LED-stripe attached to GPIO12 (See `IO12` parameter). diff --git a/param-docs/parameter-pages/GPIO/LEDType.md b/param-docs/parameter-pages/GPIO/LEDType.md new file mode 100644 index 00000000..e57e68c5 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/LEDType.md @@ -0,0 +1,3 @@ +# Parameter `LEDType` +Default Value: `WS2812` +Type of the `WS2812x` which is connected to GPIO12 (See `IO12` parameter). diff --git a/param-docs/parameter-pages/GPIO/MainTopicMQTT.md b/param-docs/parameter-pages/GPIO/MainTopicMQTT.md new file mode 100644 index 00000000..19ce2b86 --- /dev/null +++ b/param-docs/parameter-pages/GPIO/MainTopicMQTT.md @@ -0,0 +1,8 @@ +# Parameter `MainTopicMQTT` +Default Value: `wasserzaehler/GPIO` + +!!! Note + This parameter is not accessible through the Web Interface Configuration Page! + +The GPIO Interface is prepared to report it's status and status changes as a MQTT topic. With this parameter you configure the MQTT main topic, under which the status is published. +As this parameter is still experimental it can only be set manually in the `config.ini` itself and has not been tested in detail so far. diff --git a/param-docs/parameter-pages/InfluxDB/Database.md b/param-docs/parameter-pages/InfluxDB/Database.md new file mode 100644 index 00000000..860a808b --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/Database.md @@ -0,0 +1,7 @@ +# Parameter `Database` +Default Value: `''` + +Name of the InfluxDB v1 Database into which to publish the values. + +!!! Note + See section `InfluxDBv2` for InfluxDB v2 support! diff --git a/param-docs/parameter-pages/InfluxDB/NUMBER.Field.md b/param-docs/parameter-pages/InfluxDB/NUMBER.Field.md new file mode 100644 index 00000000..8035ca6b --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/NUMBER.Field.md @@ -0,0 +1,4 @@ +# Parameter `.Field` +Default Value: `undefined` + +Dedicated definition of the field for InfluxDB use for saving in the Influx database (e.g.: "watermeter/value"). diff --git a/param-docs/parameter-pages/InfluxDB/NUMBER.Measurement.md b/param-docs/parameter-pages/InfluxDB/NUMBER.Measurement.md new file mode 100644 index 00000000..cd6f69cc --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/NUMBER.Measurement.md @@ -0,0 +1,7 @@ +# Parameter `Measurement` +Default Value: `undefined` + +Name of the InfluxDB v1 Measurement to use to publish the value. + +!!! Note + See section `InfluxDBv2` for InfluxDB v2 support! diff --git a/param-docs/parameter-pages/InfluxDB/Uri.md b/param-docs/parameter-pages/InfluxDB/Uri.md new file mode 100644 index 00000000..16b22c75 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/Uri.md @@ -0,0 +1,7 @@ +# Parameter `Uri` +Default Value: `undefined` + +URI of the HTTP interface to InfluxDB v1, without trailing slash, e.g. `http://192.168.1.1:8086`. + +!!! Note + See section `InfluxDBv2` for InfluxDB v2 support! diff --git a/param-docs/parameter-pages/InfluxDB/password.md b/param-docs/parameter-pages/InfluxDB/password.md new file mode 100644 index 00000000..97dcbcc5 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/password.md @@ -0,0 +1,7 @@ +# Parameter `password` +Default Value: `undefined` + +Password for the InfluxDB v1 authentication. + +!!! Note + See section `InfluxDBv2` for InfluxDB v2 support! diff --git a/param-docs/parameter-pages/InfluxDB/user.md b/param-docs/parameter-pages/InfluxDB/user.md new file mode 100644 index 00000000..3f989a4c --- /dev/null +++ b/param-docs/parameter-pages/InfluxDB/user.md @@ -0,0 +1,7 @@ +# Parameter `user` +Default Value: `undefined` + +Username for the InfluxDB v1 authentication. + +!!! Note + See section `InfluxDBv2` for InfluxDB v2 support! diff --git a/param-docs/parameter-pages/InfluxDBv2/Bucket.md b/param-docs/parameter-pages/InfluxDBv2/Bucket.md new file mode 100644 index 00000000..8dca6643 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/Bucket.md @@ -0,0 +1,4 @@ +# Parameter `Bucket` +Default Value: `''` + +Name of the InfluxDB v2 Bucket into which to publish the values. diff --git a/param-docs/parameter-pages/InfluxDBv2/Database.md b/param-docs/parameter-pages/InfluxDBv2/Database.md new file mode 100644 index 00000000..9fc91233 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/Database.md @@ -0,0 +1,5 @@ +# Parameter `Database` + +!!! Warning + This parameter is unused! + Use [`Basket`](../Parameters/#InfluxDBv2-Basket) instead! diff --git a/param-docs/parameter-pages/InfluxDBv2/NUMBER.Field.md b/param-docs/parameter-pages/InfluxDBv2/NUMBER.Field.md new file mode 100644 index 00000000..58611ad8 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/NUMBER.Field.md @@ -0,0 +1,4 @@ +# Parameter `.Field` +Default Value: `undefined` + +Field for InfluxDB v2 to use for saving. diff --git a/param-docs/parameter-pages/InfluxDBv2/NUMBER.Measurement.md b/param-docs/parameter-pages/InfluxDBv2/NUMBER.Measurement.md new file mode 100644 index 00000000..c79ea6d4 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/NUMBER.Measurement.md @@ -0,0 +1,4 @@ +# Parameter `Measurement` +Default Value: `undefined` + +Name of the InfluxDB v2 Measurement to use to publish the value. diff --git a/param-docs/parameter-pages/InfluxDBv2/Org.md b/param-docs/parameter-pages/InfluxDBv2/Org.md new file mode 100644 index 00000000..4731d7a9 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/Org.md @@ -0,0 +1,4 @@ +# Parameter `Org` +Default Value: `undefined` + +Organisation (Org) for InfluxDB v2 authentication diff --git a/param-docs/parameter-pages/InfluxDBv2/Token.md b/param-docs/parameter-pages/InfluxDBv2/Token.md new file mode 100644 index 00000000..dc723607 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/Token.md @@ -0,0 +1,4 @@ +# Parameter `Token` +Default Value: `undefined` + +Token for InfluxDB v2 authentication diff --git a/param-docs/parameter-pages/InfluxDBv2/Uri.md b/param-docs/parameter-pages/InfluxDBv2/Uri.md new file mode 100644 index 00000000..c02c7302 --- /dev/null +++ b/param-docs/parameter-pages/InfluxDBv2/Uri.md @@ -0,0 +1,4 @@ +# Parameter `Uri` +Default Value: `undefined` + +URI of the HTTP interface to InfluxDB v2, without trailing slash, e.g. `http://192.168.1.1:8086`. diff --git a/param-docs/parameter-pages/MQTT/CACert.md b/param-docs/parameter-pages/MQTT/CACert.md new file mode 100644 index 00000000..5ee45b46 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/CACert.md @@ -0,0 +1,18 @@ +# Parameter `CACert` +Default Value: `""` + +Example: `/config/certs/RootCA.pem`. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Path to the CA certificate file. + +This is part of the configuration to enable TLS for MQTT. +The CA Certificate is used by the client to validate the broker is who it claims to be. +It allows the client to authenticate the server, which is the first part of the MTLS handshake. + +Usually there is a common RootCA certificate for the MQTT broker + +!!! Note + This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! diff --git a/param-docs/parameter-pages/MQTT/ClientCert.md b/param-docs/parameter-pages/MQTT/ClientCert.md new file mode 100644 index 00000000..9cb49241 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/ClientCert.md @@ -0,0 +1,19 @@ +# Parameter `ClientCert` +Default Value: `""` + +Example: `/config/certs/client.pem.crt`. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Path to the Client Certificate file. + +This is part of the configuration to enable TLS for MQTT. +The Client Certificate is used by the client to prove its identity to the server, in conjunction with the Client Key. +It is the second part of the MTLS handshake. + +Usually there is a one pair of Client Certificate/Key for each client that connects to the MQTT broker + +!!! Note + If set, `ClientKey` must be set too + This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! diff --git a/param-docs/parameter-pages/MQTT/ClientID.md b/param-docs/parameter-pages/MQTT/ClientID.md new file mode 100644 index 00000000..6e5ec511 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/ClientID.md @@ -0,0 +1,5 @@ +# Parameter `ClientID` +Default Value: `watermeter` + +Client ID used to connect to the MQTT broker. +If disabled, the `hostname` will be used. \ No newline at end of file diff --git a/param-docs/parameter-pages/MQTT/ClientKey.md b/param-docs/parameter-pages/MQTT/ClientKey.md new file mode 100644 index 00000000..af862f08 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/ClientKey.md @@ -0,0 +1,19 @@ +# Parameter `ClientKey` +Default Value: `""` + +Example: `/config/certs/client.pem.key`. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Path to the Client Key file. + +This is part of the configuration to enable TLS for MQTT. +The Client Key is used by the client to prove its identity to the server, in conjunction with the Client Certificate. +It is the second part of the MTLS handshake. + +Usually there is a one pair of Client Certificate/Key for each client that connects to the MQTT broker + +!!! Note + If set, `ClientCert` must be set too + This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! diff --git a/param-docs/parameter-pages/MQTT/HomeassistantDiscovery.md b/param-docs/parameter-pages/MQTT/HomeassistantDiscovery.md new file mode 100644 index 00000000..50e821fb --- /dev/null +++ b/param-docs/parameter-pages/MQTT/HomeassistantDiscovery.md @@ -0,0 +1,5 @@ +# Parameter `HomeassistantDiscovery` +Default Value: `true` + +Enable or disable the Homeassistant Discovery. +See [here](../Integration-Home-Assistant) for details about the discovery. diff --git a/param-docs/parameter-pages/MQTT/MainTopic.md b/param-docs/parameter-pages/MQTT/MainTopic.md new file mode 100644 index 00000000..3cf12ec2 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/MainTopic.md @@ -0,0 +1,18 @@ +# Parameter `MainTopic` +Default Value: `watermeter` + +MQTT main topic, under which the counters are published. + +The single value will be published with the following key: `MAINTOPIC/NUMBER/RESULT_TOPIC` + +With: + +- `NUMBER`: The name of the value (a meter might have more than one value). + The names get defined in the analog and digital ROI configuration (defaults to `main`). +- `RESULT_TOPIC`: Automatically filled with the right name, eg. `value`, `rate`, `timestamp`, `error`, .... + +The general connection status can be found in `MAINTOPIC/CONNECTION`. +See [MQTT Result Topics](../MQTT-API#result) for a full list of topics. + +!!! Note + The main topic is allowed to contain `/` which can be used to split it into multiple levels, eg. `/basement/meters/watermeter/1/` if you have multiple water meters in your basement. diff --git a/param-docs/parameter-pages/MQTT/MeterType.md b/param-docs/parameter-pages/MQTT/MeterType.md new file mode 100644 index 00000000..a65bd03a --- /dev/null +++ b/param-docs/parameter-pages/MQTT/MeterType.md @@ -0,0 +1,11 @@ +# Parameter `MeterType` +Default Value: `other` + +Select the Meter Type so the sensors have the right units in Homeassistant. + +!!! Note + For `Watermeter` you need to have Homeassistant 2022.11 or newer! + +Please also make sure that the selected Meter Type matches the dimension of the value provided by the meter! +Eg. if your meter provides `m³`, you need to also set it to `m³`. +Alternatively you can set the parameter `DecimalShift` to `3` so the value is converted to `liters`! diff --git a/param-docs/parameter-pages/MQTT/RetainMessages.md b/param-docs/parameter-pages/MQTT/RetainMessages.md new file mode 100644 index 00000000..40a47d6a --- /dev/null +++ b/param-docs/parameter-pages/MQTT/RetainMessages.md @@ -0,0 +1,4 @@ +# Parameter `RetainMessages` +Default Value: `true` + +Enable or disable the [Retain Flag](https://www.hivemq.com/blog/mqtt-essentials-part-8-retained-messages/) for all MQTT entries. diff --git a/param-docs/parameter-pages/MQTT/Uri.md b/param-docs/parameter-pages/MQTT/Uri.md new file mode 100644 index 00000000..e7f93ab9 --- /dev/null +++ b/param-docs/parameter-pages/MQTT/Uri.md @@ -0,0 +1,4 @@ +# Parameter `Uri` +Default Value: `mqtt://example.com:1883` + +URI to the MQTT broker including the port. E.g. `mqtt://192.168.1.1:1883`. diff --git a/param-docs/parameter-pages/MQTT/password.md b/param-docs/parameter-pages/MQTT/password.md new file mode 100644 index 00000000..7a87224b --- /dev/null +++ b/param-docs/parameter-pages/MQTT/password.md @@ -0,0 +1,4 @@ +# Parameter `password` +Default Value: `PASSWORD` + +Password for MQTT authentication. diff --git a/param-docs/parameter-pages/MQTT/user.md b/param-docs/parameter-pages/MQTT/user.md new file mode 100644 index 00000000..7a4230ad --- /dev/null +++ b/param-docs/parameter-pages/MQTT/user.md @@ -0,0 +1,4 @@ +# Parameter `user` +Default Value: `USERNAME` + +Username for MQTT authentication. diff --git a/param-docs/parameter-pages/PostProcessing/AllowNegativeRates.md b/param-docs/parameter-pages/PostProcessing/AllowNegativeRates.md new file mode 100644 index 00000000..4290f8ce --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/AllowNegativeRates.md @@ -0,0 +1,5 @@ +# Parameter `AllowNegativeRates` + +!!! Warning + This parameter is unused! + Use [`NUMBER.AllowNegativeRates`](../Parameters/#PostProcessing-NUMBER.AllowNegativeRates) instead! diff --git a/param-docs/parameter-pages/PostProcessing/CheckDigitIncreaseConsistency.md b/param-docs/parameter-pages/PostProcessing/CheckDigitIncreaseConsistency.md new file mode 100644 index 00000000..8612cd14 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/CheckDigitIncreaseConsistency.md @@ -0,0 +1,8 @@ +# Parameter `CheckDigitIncreaseConsistency` +Default Value: `false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +An additional consistency check. +It especially improves the zero crossing check between digits. diff --git a/param-docs/parameter-pages/PostProcessing/ErrorMessage.md b/param-docs/parameter-pages/PostProcessing/ErrorMessage.md new file mode 100644 index 00000000..2213efb4 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/ErrorMessage.md @@ -0,0 +1,8 @@ +# Parameter `ErrorMessage` +Default Value: `true` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Do not show error message in return value. +In an error case, the last valid number will be used for the various transmission protocols (MQTT, InfluxDB, REST, ...). diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.AllowNegativeRates.md b/param-docs/parameter-pages/PostProcessing/NUMBER.AllowNegativeRates.md new file mode 100644 index 00000000..3bb73429 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.AllowNegativeRates.md @@ -0,0 +1,7 @@ +# Parameter `.AllowNegativeRates` +Default Value: `false` + +Allow a meter to count backwards (decreasing values). + +!!! Note + This is unusual (it means there is a negative rate) and not wanted in most cases! diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md b/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md new file mode 100644 index 00000000..d04831aa --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md @@ -0,0 +1,9 @@ +# Parameter `.AnalogDigitalTransitionStart` +Default Value: `9.2` + +This can be used if you have wrong values, but the recognition of the individual ROIs are correct. +Look for the start of changing of the first digit and note the analog pointer value behind. +Set it here. Only used on combination of digits and analog pointers. +See [here](../Watermeter-specific-analog---digital-transition) for details. + +Range: `6.0` .. `9.9`. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.DecimalShift.md b/param-docs/parameter-pages/PostProcessing/NUMBER.DecimalShift.md new file mode 100644 index 00000000..604bb020 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.DecimalShift.md @@ -0,0 +1,5 @@ +# Parameter `.DecimalShift` +Default Value: `0` + +Shift the decimal separator (positiv or negativ). +Eg. to move from `m³` to `liter` (`1 m³` equals `1000 liters`), you need to set it to `+3`. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.ExtendedResolution.md b/param-docs/parameter-pages/PostProcessing/NUMBER.ExtendedResolution.md new file mode 100644 index 00000000..3689e6f2 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.ExtendedResolution.md @@ -0,0 +1,7 @@ +# Parameter `.ExtendedResolution` +Default Value: `false` + +Use the decimal place of the last analog counter for increased accuracy. + +!!! Note + This parameter is only supported on the `*-class*` and `*-const` models! See [Choosing-the-Model](../Choosing-the-Model) for details. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.IgnoreLeadingNaN.md b/param-docs/parameter-pages/PostProcessing/NUMBER.IgnoreLeadingNaN.md new file mode 100644 index 00000000..5fa11ab7 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.IgnoreLeadingNaN.md @@ -0,0 +1,6 @@ +# Parameter `.IgnoreLeadingNaN` +Default Value: `true` + +Leading `N`'s will be deleted before further processing. +This is only relevant for models which use `N`! +See [here](../Choosing-the-Model) for details. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateType.md b/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateType.md new file mode 100644 index 00000000..aab9d29b --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateType.md @@ -0,0 +1,5 @@ +# Parameter `.MaxRateType` +Default Value: `AbsoluteChange` + +Defines if the **Change Rate** is calculated as the difference between the last two readings (`AbsoluteChange` = difference) or +as the difference normalized to the interval (`RateChange` = difference per minute). diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateValue.md b/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateValue.md new file mode 100644 index 00000000..98bb0afd --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.MaxRateValue.md @@ -0,0 +1,6 @@ +# Parameter `.MaxRateValue` +Default Value: `0,05` + +Maximum allowed change between two readings, if exceeded the last reading will be rejected. Depending on the settings of `.MaxRateType` the `MaxRateValue` is either treated as the difference between the two measurements (`AbsoluteChange` = difference) not taking the set time interval into account or as the difference normalized to the interval (`RateChange` = difference per minute). + +If negative rate is disallowed and no maximum rate value is set, one false high reading will lead to a period of missing measurements until the measurement reaches the previous false high reading. E.g. if the counter is at `600,00` and it's read incorrectly as` 610,00`, all measurements will be skipped until the counter reaches `610,00`. Setting the MaxRateValue to `0,05` leads to a rejection of all readings with a difference `> 0,05`, in this case `610,00`. The rejection also applies to correct readings with a difference `> 0,05`! diff --git a/param-docs/parameter-pages/PostProcessing/PreValueAgeStartup.md b/param-docs/parameter-pages/PostProcessing/PreValueAgeStartup.md new file mode 100644 index 00000000..0c5987bb --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/PreValueAgeStartup.md @@ -0,0 +1,7 @@ +# Parameter `PreValueAgeStartup` +Default Value: `720` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Time in minutes, how long a previous read value is valid after reboot. diff --git a/param-docs/parameter-pages/PostProcessing/PreValueUse.md b/param-docs/parameter-pages/PostProcessing/PreValueUse.md new file mode 100644 index 00000000..58f71985 --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/PreValueUse.md @@ -0,0 +1,5 @@ +# Parameter `PreValueUse` +Default Value: `true` + +Use the previous value (value from previous round) for consistency checks. +This also works through a reboot of the device! diff --git a/param-docs/parameter-pages/System/CPUFrequency.md b/param-docs/parameter-pages/System/CPUFrequency.md new file mode 100644 index 00000000..97152794 --- /dev/null +++ b/param-docs/parameter-pages/System/CPUFrequency.md @@ -0,0 +1,13 @@ +# Parameter `CPUFrequency` +Default Value: `160` + +Set the CPU Frequency. + +!!! Warning + Setting it to 240 will lead to a faster device, but it will also require a stronger power supply! + Additionally, depending on the quality of your ESP32-CAM, it might run unstable! + +Possible values: + +- 160 +- 240 diff --git a/param-docs/parameter-pages/System/Hostname.md b/param-docs/parameter-pages/System/Hostname.md new file mode 100644 index 00000000..347ce76e --- /dev/null +++ b/param-docs/parameter-pages/System/Hostname.md @@ -0,0 +1,8 @@ +# Parameter `Hostname` +Default Value: `undefined` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Hostname for the device. +It gets automatically transferred to `/wlan.ini` on the SD-Card at the next startup. diff --git a/param-docs/parameter-pages/System/RSSIThreshold.md b/param-docs/parameter-pages/System/RSSIThreshold.md new file mode 100644 index 00000000..a7f5ec50 --- /dev/null +++ b/param-docs/parameter-pages/System/RSSIThreshold.md @@ -0,0 +1,19 @@ +# Parameter `RSSIThreshold` +Default Value: `0` + +Possible values: `-100` .. `0` (`0` = disabled). + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + +This parameter activates a client triggered AP switching functionality (simplified roaming). +If actual RSSI value is lower (more negative) than `RSSIThreshold`, all WIFI channels will be scanned for configured access point SSID. If an access point is in range which has better RSSI value (less negative) than actual RSSI value + 5 dBm, the device is trying to connect to this access point with the better RSSI value. + + +!!! Note + The RSSI check only gets initiated at the end of each round to avoid any disturbance of processing. + + +!!! Note + It gets automatically transferred to `/wlan.ini` on the SD-Card at next startup. diff --git a/param-docs/parameter-pages/System/SetupMode.md b/param-docs/parameter-pages/System/SetupMode.md new file mode 100644 index 00000000..18fcdaa6 --- /dev/null +++ b/param-docs/parameter-pages/System/SetupMode.md @@ -0,0 +1,7 @@ +# Parameter `SetupMode` +Default Value: `true` + +!!! Note + This parameter is not accessible through the Web Interface Configuration Page! + +Set this parameter to `true` to stay in the Setup Mode after the next start of the device. diff --git a/param-docs/parameter-pages/System/TimeServer.md b/param-docs/parameter-pages/System/TimeServer.md new file mode 100644 index 00000000..f10713d0 --- /dev/null +++ b/param-docs/parameter-pages/System/TimeServer.md @@ -0,0 +1,10 @@ +# Parameter `TimeServer` +Default Value: `pool.ntp.org` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Time server to synchronize system time. If it is disabled or `undefined`, `pool.ntp.org` will be used. +You can also set it to the IP of your router. Many routers like Fritzboxes can act as a local NTP server. +To disable NTP, you need to activate it but set the TimeServer config to be empty (`""`). +In such case the time always starts at `01.01.1970` after each power cycle! diff --git a/param-docs/parameter-pages/System/TimeZone.md b/param-docs/parameter-pages/System/TimeZone.md new file mode 100644 index 00000000..fb6dfea0 --- /dev/null +++ b/param-docs/parameter-pages/System/TimeZone.md @@ -0,0 +1,5 @@ +# Parameter `TimeZone` +Default Value: `CET-1CEST,M3.5.0,M10.5.0/3` + +Time zone in POSIX syntax (Europe/Berlin = `CET-1CEST,M3.5.0,M10.5.0/3` - incl. daylight saving) +Check the table on `http:///timezones.html` to find the settings for your region. diff --git a/param-docs/parameter-pages/TakeImage/Brightness.md b/param-docs/parameter-pages/TakeImage/Brightness.md new file mode 100644 index 00000000..b3cbd777 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/Brightness.md @@ -0,0 +1,10 @@ +# Parameter `Brightness` +Default Value: `0` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +!!! Note + This parameter can also be set on the Reference Image configuration. + +Image Brightness (`-2` .. `2`) diff --git a/param-docs/parameter-pages/TakeImage/Contrast.md b/param-docs/parameter-pages/TakeImage/Contrast.md new file mode 100644 index 00000000..6aa07ca6 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/Contrast.md @@ -0,0 +1,11 @@ +# Parameter `Contrast` +Default Value: `0` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +!!! Note + This parameter can also be set on the Reference Image configuration. + +Image Contrast (`-2` .. `2`) + diff --git a/param-docs/parameter-pages/TakeImage/Demo.md b/param-docs/parameter-pages/TakeImage/Demo.md new file mode 100644 index 00000000..aa42878a --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/Demo.md @@ -0,0 +1,6 @@ +# Parameter `Demo` +Default Value: `false` + +Enable to use demo images instead of the real camera images. +Make sure to have a `/demo` folder on your SD-Card and make sure it contains the expected files! +Check [here](../Demo-Mode) for details. diff --git a/param-docs/parameter-pages/TakeImage/FixedExposure.md b/param-docs/parameter-pages/TakeImage/FixedExposure.md new file mode 100644 index 00000000..2491e062 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/FixedExposure.md @@ -0,0 +1,7 @@ +# Parameter `FixedExposure` +Default Value: `false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Fixes the illumination setting of camera at the startup and uses this later -> Individual round is faster. diff --git a/param-docs/parameter-pages/TakeImage/ImageQuality.md b/param-docs/parameter-pages/TakeImage/ImageQuality.md new file mode 100644 index 00000000..7f5c4c09 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/ImageQuality.md @@ -0,0 +1,10 @@ +# Parameter `ImageQuality` +Default Value: `12` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Quality index for pictures: `8` (highest quality) ... `63` (lowest quality) + +!!! Warning + Value below 12 could result in system instabilities! diff --git a/param-docs/parameter-pages/TakeImage/ImageSize.md b/param-docs/parameter-pages/TakeImage/ImageSize.md new file mode 100644 index 00000000..73531f3c --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/ImageSize.md @@ -0,0 +1,12 @@ +# Parameter `ImageSize` +Default Value: `VGA` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Size of the camera picture. + +Available options: + +- `VGA` (640 x 480 pixel) +- `QVGA` (320 x 240 pixel) diff --git a/param-docs/parameter-pages/TakeImage/LEDIntensity.md b/param-docs/parameter-pages/TakeImage/LEDIntensity.md new file mode 100644 index 00000000..19bfadcc --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/LEDIntensity.md @@ -0,0 +1,8 @@ +# Parameter `LEDIntensity` +Default Value: `50` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + This parameter can also be set on the Reference Image configuration. + +Set the Flash LED Intensity: (`0` .. `100`) diff --git a/param-docs/parameter-pages/TakeImage/RawImagesLocation.md b/param-docs/parameter-pages/TakeImage/RawImagesLocation.md new file mode 100644 index 00000000..0b53a93c --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/RawImagesLocation.md @@ -0,0 +1,7 @@ +# Parameter `RawImagesLocation` +Default Value: `/log/source` + +Location on the SD-Card to store the raw images. + +!!! Warning + A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/TakeImage/RawImagesRetention.md b/param-docs/parameter-pages/TakeImage/RawImagesRetention.md new file mode 100644 index 00000000..e14e79bc --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/RawImagesRetention.md @@ -0,0 +1,6 @@ +# Parameter `RawImagesRetention` +Default Value: `15` + +Unit: Days + +Number of days to keep the raw images (`0` = forever) diff --git a/param-docs/parameter-pages/TakeImage/Saturation.md b/param-docs/parameter-pages/TakeImage/Saturation.md new file mode 100644 index 00000000..1fc21936 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/Saturation.md @@ -0,0 +1,11 @@ +# Parameter `Saturation` +Default Value: `0` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +!!! Note + This parameter can also be set on the Reference Image configuration. + +Image Saturation (`-2` .. `2`) + diff --git a/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md b/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md new file mode 100644 index 00000000..f6577519 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md @@ -0,0 +1,9 @@ +# Parameter `WaitBeforeTakingPicture` +Default Value: `5` + +Unit: seconds + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + +Waiting time between switching the flash light (onboard LED) on and taking the picture. diff --git a/param-docs/parameter-pages/img/flipImageSize.png b/param-docs/parameter-pages/img/flipImageSize.png new file mode 100644 index 00000000..dd761aa5 Binary files /dev/null and b/param-docs/parameter-pages/img/flipImageSize.png differ diff --git a/param-docs/templates/overview-old.md b/param-docs/templates/overview-old.md new file mode 100644 index 00000000..512b7b6e --- /dev/null +++ b/param-docs/templates/overview-old.md @@ -0,0 +1,13 @@ +# Parameters +This page lists all available [Configuration](../Configuration) Parameters. +If a parameter or section has a tick box on its left side, you can disable it. +In such case the functionality gets disabled respectively the default values will be used. + +!!! Note + This is an auto-generated page! See the [README](https://github.com/jomjol/AI-on-the-edge-device-docs/blob/main/README.md) for details! + +## List of all Parameters + +$TOC + +
\ No newline at end of file diff --git a/param-docs/templates/overview.md b/param-docs/templates/overview.md new file mode 100644 index 00000000..b34eafef --- /dev/null +++ b/param-docs/templates/overview.md @@ -0,0 +1,9 @@ +# Parameters +This page lists all available [Configuration](../Configuration) Parameters. +If a **parameter** or **section** has a tick box on its left side, you can disable it. +In such case the functionality gets disabled respectively the default values will be used. + +!!! Note + This is an auto-generated page! See the [README](https://github.com/jomjol/AI-on-the-edge-device-docs/blob/main/README.md) for details! + +
\ No newline at end of file diff --git a/param-docs/templates/parameter.md b/param-docs/templates/parameter.md new file mode 100644 index 00000000..7ea165f2 --- /dev/null +++ b/param-docs/templates/parameter.md @@ -0,0 +1,5 @@ +# Parameter `$NAME` +Default Value: `$DEFAULT` +$EXPERT_PARAMETER +$HIDDEN_IN_UI +Please fill me with an explanation and useful links. diff --git a/sd-card/html/.gitignore b/sd-card/html/.gitignore new file mode 100644 index 00000000..670a212a --- /dev/null +++ b/sd-card/html/.gitignore @@ -0,0 +1 @@ +edit_config_param.html diff --git a/sd-card/html/edit_config_param.html b/sd-card/html/edit_config_param_template.html similarity index 100% rename from sd-card/html/edit_config_param.html rename to sd-card/html/edit_config_param_template.html diff --git a/tools/parameter-tooltip-generator/generate-param-doc-tooltips.py b/tools/parameter-tooltip-generator/generate-param-doc-tooltips.py index ff3e80a5..349c7877 100644 --- a/tools/parameter-tooltip-generator/generate-param-doc-tooltips.py +++ b/tools/parameter-tooltip-generator/generate-param-doc-tooltips.py @@ -6,8 +6,9 @@ import glob import markdown -parameterDocsFolder = "AI-on-the-edge-device-docs/param-docs/parameter-pages" +parameterDocsFolder = "../../param-docs/parameter-pages" docsMainFolder = "../../sd-card/html" +configPageTemplate = "edit_config_param_template.html" configPage = "edit_config_param.html" htmlTooltipPrefix = """ @@ -20,6 +21,8 @@ htmlTooltipSuffix = """ """ +os.system("cp " + docsMainFolder + "/" + configPageTemplate + " " + docsMainFolder + "/" + configPage) + folders = sorted( filter( os.path.isdir, glob.glob(parameterDocsFolder + '/*') ) ) diff --git a/tools/parameter-tooltip-generator/generate-param-doc-tooltips.sh b/tools/parameter-tooltip-generator/generate-param-doc-tooltips.sh deleted file mode 100755 index bc1a79f3..00000000 --- a/tools/parameter-tooltip-generator/generate-param-doc-tooltips.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# Checkout the documentation reposo we can extract the parameter documentation -if [ -d "AI-on-the-edge-device-docs" ] ; then - # Repo already checked out, pull it - cd AI-on-the-edge-device-docs - git checkout main - git pull - cd .. -else - # Repos folde ris missing, clone it - git clone https://github.com/jomjol/AI-on-the-edge-device-docs.git -fi - -python generate-param-doc-tooltips.py