diff --git a/docs/Parameters.md b/docs/Parameters.md new file mode 100644 index 0000000..bfb0c72 --- /dev/null +++ b/docs/Parameters.md @@ -0,0 +1,613 @@ +# Parameters +This page lists all available Configuration Parameters. + +Click on them to get detailed information about them. + +``` +Note: This is an auto-generated page! +``` +--- + +## Alignment + +### `AlignmentAlgo` +Default Value: `Default` + +#### Description +#### Example + +--- + +### `FlipImageSize` +Default Value: `false` + +#### Description +#### Example + +--- + +### `InitialMirror` +Default Value: `false` + +#### Description +#### Example + +--- + +### `InitialRotate` +Default Value: `179` + +#### Description +#### Example + +--- + +### `SearchFieldX` +Default Value: `20` + +#### Description +#### Example + +--- + +### `SearchFieldY` +Default Value: `20` + +#### Description +#### Example + +--- + + +## Analog + +### `CNNGoodThreshold` +Default Value: `0.5` + +#### Description +#### Example + +--- + +### `ExtendedResolution` +Default Value: `true` + +#### Description +#### Example + +--- + +### `LogImageLocation` +Default Value: `/log/analog` + +#### Description +#### Example + +--- + +### `LogfileRetentionInDays` +Default Value: `3` + +#### Description +#### Example + +--- + +### `Model` +Default Value: `/config/ana-cont_11.3.1_s2.tflite` + +#### Description +#### Example + +--- + + +## AutoTimer + +### `AutoStart` +Default Value: `true` + +#### Description +#### Example + +--- + +### `Intervall` +Default Value: `5` + +#### Description +#### Example + +--- + + +## DataLogging + +### `DataLogActive` +Default Value: `true` + +#### Description +#### Example + +--- + +### `DataLogRetentionInDays` +Default Value: `3` + +#### Description +#### Example + +--- + + +## Debug + +### `Logfile` +Default Value: `1` + +#### Description +#### Example + +--- + +### `LogfileRetentionInDays` +Default Value: `3` + +#### Description +#### Example + +--- + + +## Digits + +### `CNNGoodThreshold` +Default Value: `0.5` + +#### Description +#### Example + +--- + +### `LogImageLocation` +Default Value: `/log/digit` + +#### Description +#### Example + +--- + +### `LogfileRetentionInDays` +Default Value: `3` + +#### Description +#### Example + +--- + +### `Model` +Default Value: `/config/dig-cont_0600_s3.tflite` + +#### Description +#### Example + +--- + + +## GPIO + +### `IO0` +Default Value: `input disabled 10 false false` + +#### Description +#### Example + +--- + +### `IO1` +Default Value: `input disabled 10 false false` + +#### Description +#### Example + +--- + +### `IO12` +Default Value: `input-pullup disabled 10 false false` + +#### Description +#### Example + +--- + +### `IO13` +Default Value: `input-pullup disabled 10 false false` + +#### Description +#### Example + +--- + +### `IO3` +Default Value: `input disabled 10 false false` + +#### Description +#### Example + +--- + +### `IO4` +Default Value: `built-in-led disabled 10 false false` + +#### Description +#### Example + +--- + +### `LEDColor` +Default Value: `150 150 150` + +#### Description +#### Example + +--- + +### `LEDNumbers` +Default Value: `2` + +#### Description +#### Example + +--- + +### `LEDType` +Default Value: `WS2812` + +#### Description +#### Example + +--- + +### `MainTopicMQTT` +Default Value: `wasserzaehler/GPIO` + +#### Description +#### Example + +--- + + +## InfluxDB + +### `Database` +Default Value: `` + +#### Description +#### Example + +--- + +### `Measurement` +Default Value: `undefined` + +#### Description +#### Example + +--- + +### `Uri` +Default Value: `undefined` + +#### Description +#### Example + +--- + +### `password` +Default Value: `undefined` + +#### Description +#### Example + +--- + +### `user` +Default Value: `undefined` + +#### Description +#### Example + +--- + + +## MQTT + +### `ClientID` +Default Value: `watermeter` + +#### Description +#### Example + +--- + +### `HomeassistantDiscovery` +Default Value: `true` + +#### Description +#### Example + +--- + +### `MainTopic` +Default Value: `watermeter` + +#### Description +#### Example + +--- + +### `MeterType` +Default Value: `other` + +#### Description +#### Example + +--- + +### `SetRetainFlag` +Default Value: `true` + +#### Description +#### Example + +--- + +### `Uri` +Default Value: `mqtt://IP-ADRESS:1883` + +#### Description +#### Example + +--- + +### `password` +Default Value: `PASSWORD` + +#### Description +#### Example + +--- + +### `user` +Default Value: `USERNAME` + +#### Description +#### Example + +--- + + +## MakeImage + +### `Brightness` +Default Value: `0` + +#### Description +#### Example + +--- + +### `Contrast` +Default Value: `0` + +#### Description +#### Example + +--- + +### `Demo` +Default Value: `true` + +#### Description +#### Example + +--- + +### `FixedExposure` +Default Value: `false` + +#### Description +#### Example + +--- + +### `ImageQuality` +Default Value: `12` + +#### Description +#### Example + +--- + +### `ImageSize` +Default Value: `VGA` + +#### Description +#### Example + +--- + +### `LEDIntensity` +Default Value: `50` + +#### Description +#### Example + +--- + +### `LogImageLocation` +Default Value: `/log/source` + +#### Description +#### Example + +--- + +### `LogfileRetentionInDays` +Default Value: `15` + +#### Description +#### Example + +--- + +### `Saturation` +Default Value: `0` + +#### Description +#### Example + +--- + +### `WaitBeforeTakingPicture` +Default Value: `5` + +#### Description +#### Example + +--- + + +## PostProcessing + +### `AllowNegativeRates` +Default Value: `false` + +#### Description +#### Example + +--- + +### `CheckDigitIncreaseConsistency` +Default Value: `false` + +#### Description +#### Example + +--- + +### `ErrorMessage` +Default Value: `true` + +#### Description +#### Example + +--- + +### `PreValueAgeStartup` +Default Value: `720` + +#### Description +#### Example + +--- + +### `PreValueUse` +Default Value: `true` + +#### Description +#### Example + +--- + +### `main.AnalogDigitalTransitionStart` +Default Value: `9.2` + +#### Description +#### Example + +--- + +### `main.DecimalShift` +Default Value: `0` + +#### Description +#### Example + +--- + +### `main.ExtendedResolution` +Default Value: `false` + +#### Description +#### Example + +--- + +### `main.IgnoreLeadingNaN` +Default Value: `true` + +#### Description +#### Example + +--- + +### `main.MaxRateType` +Default Value: `AbsoluteChange` + +#### Description +#### Example + +--- + +### `main.MaxRateValue` +Default Value: `0.05` + +#### Description +#### Example + +--- + + +## System + +### `AutoAdjustSummertime` +Default Value: `false` + +#### Description +#### Example + +--- + +### `Hostname` +Default Value: `undefined` + +#### Description +#### Example + +--- + +### `SetupMode` +Default Value: `true` + +#### Description +#### Example + +--- + +### `TimeServer` +Default Value: `pool.ntp.org` + +#### Description +#### Example + +--- + +### `TimeZone` +Default Value: `CET-1CEST,M3.5.0,M10.5.0/3` + +#### Description +#### Example + +--- + diff --git a/docs/nav.yml b/docs/nav.yml index 4cb1812..17414e7 100644 --- a/docs/nav.yml +++ b/docs/nav.yml @@ -22,6 +22,7 @@ nav: - Choosing-the-Model.md - Neural-Network-Types.md - ota.md + - Parameters.md - Advanced: - Integration-Home-Assistant.md diff --git a/generate-param-docs/concat-parameter-pages.py b/generate-param-docs/concat-parameter-pages.py new file mode 100644 index 0000000..416d862 --- /dev/null +++ b/generate-param-docs/concat-parameter-pages.py @@ -0,0 +1,51 @@ +""" +Grab all parameter files and concat them into a single file. +The header structure gets moved down 1 level +""" + +import os +import shutil +import glob + + +parameterDocsFolder = "parameter-docs" +parameterOverviewFile = "../docs/Parameters.md" +parameterOverviewTemplateFile = "./templates/overview.md" + +def appendParameterFile(folder, file): + print(folder, file) + + with open(file, 'r') as parameterFileHandle: + parameterDoc = parameterFileHandle.read() + parameterDoc = parameterDoc.replace("# ", "### ") # Move all headings 2 level down + + # Add parameter doc to overview page + with open(parameterOverviewFile, 'a') as overviewFileHandle: + overviewFileHandle.write(parameterDoc + "\n---\n\n") + + + + + + +# Create templated overview markdown file +if os.path.exists(parameterOverviewFile): + os.remove(parameterOverviewFile) +shutil.copy(parameterOverviewTemplateFile, parameterOverviewFile) + +""" +Append all parameter pages in a sorted manner +""" +folders = sorted( filter( os.path.isdir, glob.glob(parameterDocsFolder + '/*') ) ) +for folder in folders: + folder = folder.split("/")[-1] +# print(folder) + + # Add section + with open(parameterOverviewFile, 'a') as overviewFileHandle: + overviewFileHandle.write("\n## %s\n\n" % folder) + + files = sorted(filter(os.path.isfile, glob.glob(parameterDocsFolder + "/" + folder + '/*'))) + for file in files: +# print(" %s" % file) + appendParameterFile(folder, file) diff --git a/generate-param-docs/generate-param-doc-pages.py b/generate-param-docs/generate-param-doc-pages.py new file mode 100644 index 0000000..6fa5f14 --- /dev/null +++ b/generate-param-docs/generate-param-doc-pages.py @@ -0,0 +1,68 @@ +""" +For each parameter which can be found in the config file, +create a markdown file with a templated contentf 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-docs" +parameterTemplateFile = "./templates/parameter.md" + +# Fetch default config file from URL +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) + + +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() + + + +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)) + + """ + 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 + with open(parameterDocFile, 'w') as paramFileHandle: + content = parameterTemplate + content = content.replace("$NAME", parameter) + content = content.replace("$DEFAULT", value) + + paramFileHandle.write(content) diff --git a/generate-param-docs/templates/overview.md b/generate-param-docs/templates/overview.md new file mode 100644 index 0000000..e750578 --- /dev/null +++ b/generate-param-docs/templates/overview.md @@ -0,0 +1,9 @@ +# Parameters +This page lists all available Configuration Parameters. + +Click on them to get detailed information about them. + +``` +Note: This is an auto-generated page! +``` +--- diff --git a/generate-param-docs/templates/parameter.md b/generate-param-docs/templates/parameter.md new file mode 100644 index 0000000..c0ae2f0 --- /dev/null +++ b/generate-param-docs/templates/parameter.md @@ -0,0 +1,5 @@ +# `$NAME` +Default Value: `$DEFAULT` + +## Description +## Example