| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146 |
- <!DOCTYPE html>
- <html>
- <head>
- <title>Edit Config</title>
- <meta charset="utf-8">
- <style>
- h1 {font-size: 2em;}
- h2 {font-size: 1.5em; margin-block-start: 0.0em; margin-block-end: 0.2em;}
- h3 {font-size: 1.2em;}
- p {font-size: 1em;}
- .button {
- padding: 5px 20px;
- width: 211px;
- font-size: 16px;
- }
- textarea {
- font-size: 14px;
- }
- </style>
- </head>
- <body style="font-family: arial; padding: 0px 10px;">
- <table style="width:100%">
- <tr>
- <td>
- <h2>Config.ini:</h2>
- </td>
- <td>
- <button class="button" id="Edit_Config_Direct" onclick="editConfigDirect()" style="display:none">Edit Config.ini direct</button>
- <input type="checkbox" id="ExpertModus_enabled" value="1" onclick = 'UpdateExpertModus()' unchecked><label for="ExpertModus_enabled"> Expertenmodus </label>
- </td>
- </tr>
- </table>
- <br>
- <div id = "divall" style="display:none">
- <table>
- <tr>
- <th width="20px" style="text-align: left;">
- Enable
- </th>
- <th width="200px" style="text-align: left;">
- Parameter
- </th>
- <th style="text-align: left;">
- Value
- </th>
- <th style="text-align: left;">
- Information
- </th>
- </tr>
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4>MakeImage</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" name="name" id="MakeImage_LogImageLocation_value1">
- </td>
- <td style="font-size: 80%;">
- Location to store raw images for logging
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="MakeImage_LogfileRetentionInDays_value1" size="13" min="0" step="1">
- </td>
- <td style="font-size: 80%;">
- Time to keep the raw image (in days -"0" = forever)
- </td>
- </tr>
- <tr class="expert" id="ex1">
-
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_WaitBeforeTakingPicture_text" style="color:black;">WaitBeforeTakingPicture</class>
- </td>
- <td>
- <input type="number" id="MakeImage_WaitBeforeTakingPicture_value1" size="13" min="0" step="any">
- </td>
- <td style="font-size: 80%;">
- Wait time between illumination switch on and take the picture (in seconds)
- </td>
- </tr>
- <tr class="expert" id="ex2">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_ImageQuality_text" style="color:black;">ImageQuality</class>
- </td>
- <td>
- <input type="number" id="MakeImage_ImageQuality_value1" size="13" min="0" max="63">
- </td>
- <td style="font-size: 80%;">
- Quality index for picture (default = "5" - "0" high ... "63" low)
- </td>
- </tr>
- <tr class="expert" id="ex3">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_ImageSize_text" style="color:black;">ImageSize</class>
- </td>
- <td>
- <select id="MakeImage_ImageSize_value1">
- <option value="0" selected>VGA</option>
- <option value="1" >QVGA</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Picture size camera (default = "VGA")
- </td>
- </tr>
- <tr class="expert" id="Brightness_ex3">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_Brightness_text" style="color:black;">Brightness</class>
- </td>
- <td>
- <input type="number" id="MakeImage_Brightness_value1" size="13" min="-2" max="2">
- </td>
- <td style="font-size: 80%;">
- Image Brightness (-2 .. 2 - default = "0")
- </td>
- </tr>
- <tr class="expert" id="MakeImage_FixedExposure_ex10">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td width="200px">
- <class id="MakeImage_FixedExposure_text" style="color:black;">FixedExposure</class>
- </td>
- <td>
- <select id="MakeImage_FixedExposure_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Fixes the illumination setting of camera at the startup and uses this later --> individual round is faster
- </td>
- </tr>
- <!--
- <tr class="expert" id="Contrast_ex3">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_Contrast_text" style="color:black;">Contrast</class>
- </td>
- <td>
- <input type="number" id="MakeImage_Contrast_value1" size="13" min="-2" max="2">
- </td>
- <td style="font-size: 80%;">
- Image Contrast (-2 .. 2 - default = "0")
- </td>
- </tr>
- <tr class="expert" id="Saturation_ex3">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="MakeImage_Saturation_text" style="color:black;">Saturation</class>
- </td>
- <td>
- <input type="number" id="MakeImage_Saturation_value1" size="13" min="-2" max="2">
- </td>
- <td style="font-size: 80%;">
- Image Saturation (-2 .. 2 - default = "0")
- </td>
- </tr>
- -->
- <tr class="expert" id="ex4">
- <td colspan="4" style="padding-left: 20px;"><h4>Alignment</h4></td>
- </tr>
- <tr class="expert" id="ex6">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td width="200px">
- <class id="Alignment_SearchFieldX_text" style="color:black;">SearchFieldX</class>
- </td>
- <td>
- <input type="number" name="name" id="Alignment_SearchFieldX_value1" size="13" min="1" step="1">
- </td>
- <td style="font-size: 80%;">
- x size (width) in which the reference is searched (default = "20")
- </td>
- </tr>
- <tr class="expert" id="ex8">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="Alignment_SearchFieldY_text" style="color:black;">SearchFieldY</class>
- </td>
- <td>
- <input type="number" name="name" id="Alignment_SearchFieldY_value1" size="13" min="1">
- </td>
- <td style="font-size: 80%;">
- y size (height) in which the reference is searched (default = "20")
- </td>
- </tr>
- <tr class="expert" id="AlignmentAlgo_ex8">
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="Alignment_AlignmentAlgo_value1">
- <option value="0" selected>Default</option>
- <option value="1" >HighAccurity</option>
- <option value="2" >Fast</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- "Default" = use only R-Channel, "HighAccurity" = use all Channels (RGB, 3x slower), <br> "Fast" (First time RGB, then only check if image is shifted)
- </td>
- </tr>
- <tr id="Category_Digits_ex4">
- <td colspan="4" style="padding-left: 20px;">
- <h4><input type="checkbox" id="Category_Digits_enabled" value="1" onclick = 'UpdateAfterCategoryCheck()' unchecked >Digits</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td width="200px">
- <class id="Digits_Model_text" style="color:black;">Model</class>
- </td>
- <td>
- <input type="text" id="Digits_Model_value1">
- </td>
- <td style="font-size: 80%;">
- path to CNN model file for image recognition
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" name="name" id="Digits_LogImageLocation_value1">
- </td>
- <td style="font-size: 80%;">
- Location to store separated digits for logging
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="Digits_LogfileRetentionInDays_value1" min="0" step="1">
- </td>
- <td style="font-size: 80%;">
- Time to keep the separated digit images (in days -"0" = forever)
- </td>
- </tr>
- <tr class="expert" id="ex9">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td>
- <class id="Digits_ModelInputSize_text" style="color:black;">ModelInputSize</class>
- </td>
- <td>
- x: <input type="number" id="Digits_ModelInputSize_value1" style="width: 30px;" min="1" step="1">
- y: <input type="number" id="Digits_ModelInputSize_value2" style="width: 30px;" min="1" step="1">
- </td>
- <td style="font-size: 80%;">
- Size of the input image for the CNN model
- </td>
- </tr>
- <tr class="expert" id="ex4">
- <td colspan="4" style="padding-left: 20px;">
- <h4><input type="checkbox" id="Category_Analog_enabled" value="1" onclick = 'UpdateAfterCategoryCheck()' unchecked > Analog</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;"> </td>
- <td width="200px"> <class id="Analog_Model_text" style="color:black;">Model</class> </td>
- <td> <input type="text" id="Analog_Model_value1"> </td>
- <td style="font-size: 80%;"> path to CNN model file for image recognition</td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- <td style="font-size: 80%;"> Location to store separated digits for logging </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- <td style="font-size: 80%;"> Time to keep the separated digit images (in days -"0" = forever) </td>
- </tr>
- <tr class="expert" id="Analog_ExtendedResolution_ex10">
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="Analog_ExtendedResolution_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Enable to use the after point resolution for the last analog counter
- </td>
- </tr>
- ExtendedResolution
- <tr class="expert" id="ex10">
- <td width="20px" style="padding-left: 40px;"> </td>
- <td> <class id="Analog_ModelInputSize_text" style="color:black;">ModelInputSize</class> </td>
- <td>
- x: <input type="number" id="Analog_ModelInputSize_value1" style="width: 30px;" min="1" step="1">
- y: <input type="number" id="Analog_ModelInputSize_value2" style="width: 30px;" min="1" step="1">
- </td>
- <td style="font-size: 80%;"> Size of the input image for the CNN model </td>
- </tr>
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4>PostProcessing</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="PostProcessing_PreValueUse_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Enable to use the previous read value for consistency checks - also on reboots
- </td>
- </tr>
- <tr class="expert" id="ex11">
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="PostProcessing_PreValueAgeStartup_value1" size="13" min="0">
- </td>
- <td style="font-size: 80%;">
- Time (in minutes), how long a previous read value is valid after reboot (default = 720 min)
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="PostProcessing_AllowNegativeRates_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Set on "false" to ensure, that only positive changes are accepted (typically for counter)
- </td>
- </tr>
- <tr class="expert" id="ex12">
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="PostProcessing_ErrorMessage_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Do not show error message in return value - in error case, the last valid number will be send out
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="PostProcessing_CheckDigitIncreaseConsistency_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Activate to enalbe additional consistency check - especially zero crossing check between digits
- </td>
- </tr>
- <tr>
- <td style="padding-left: 40px;" colspan="4">
- <br>
- <b>Postprocessing Individual Paramters:
- <select id="Numbers_value1" onchange="numberChanged()">
- <option value="0" selected>default</option>
- <option value="1" >NT</option>
- <option value="2" >HT</option>
- </select></b>
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="PostProcessing_DecimalShift_value1" step="1">
- </td>
- <td style="font-size: 80%;">
- shift the digit separator within the digital digits (positiv and negativ)
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="PostProcessing_MaxRateValue_value1" size="13" min="0" step="any">
- </td>
- <td style="font-size: 80%;">
- Maximum change of reading from one to the next readout
- </td>
- </tr>
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4><input type="checkbox" id="Category_MQTT_enabled" value="1" onclick = 'UpdateAfterCategoryCheck()' unchecked > MQTT</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="MQTT_Uri_value1">
- </td>
- <td style="font-size: 80%;">
- URI to the MQTT broker including port e.g.: mqtt://IP-Address:Port
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <input type="checkbox" id="MQTT_MainTopic_enabled" value="1" onclick = 'InvertEnableItem("MQTT", "MainTopic")' unchecked >
- </td>
- <td width="200px">
- <class id="MQTT_MainTopic_text" style="color:black;">MainTopic</class>
- </td>
- <td>
- <input type="text" id="MQTT_MainTopic_value1">
- </td>
- <td style="font-size: 80%;">
- MQTT main topic, under which the counters are published. The single value will be published with the following key: MAINTOPIC/VALUE_NAME/PARAMTER <br>
- where parameters are: value, rate, timestamp, error<br>
- The general connection status can be found in MAINTOPiC"/CONNECTION
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="MQTT_ClientID_value1">
- </td>
- <td style="font-size: 80%;">
- ClientID to connect to the MQTT broker
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="MQTT_user_value1">
- </td>
- <td style="font-size: 80%;">
- user for MQTT authentication
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="MQTT_password_value1">
- </td>
- <td style="font-size: 80%;">
- password for MQTT authentication
- </td>
- </tr>
-
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4>AutoTimer</h4></td>
- </tr>
- <tr class="expert" id="ex13">
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td width="200px">
- <class id="AutoTimer_AutoStart_text" style="color:black;">AutoStart</class>
- </td>
- <td>
- <select id="AutoTimer_AutoStart_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Start the image recognition immediatly after power up. false is basically for debugging.
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- </td>
- <td width="200px">
- <class id="AutoTimer_Intervall_text" style="color:black;">Intervall</class>
- </td>
- <td>
- <input type="number" id="AutoTimer_Intervall_value1" size="13" min="3" step="any">
- </td>
- <td style="font-size: 80%;">
- Intervall in which the counter is read (in minutes). Number must be greater than 3 minutes.
- </td>
- </tr>
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4>Debug</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <select id="Debug_Logfile_value1">
- <option value="0" selected>true</option>
- <option value="1" >false</option>
- </select>
- </td>
- <td style="font-size: 80%;">
- Turn on/off the extended logging
- </td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="number" id="Debug_LogfileRetentionInDays_value1" size="13" min="0" step="1">
- </td>
- <td style="font-size: 80%;">
- Time to keep the log files (in days - "0" = forever)
- </td>
- </tr>
- <tr>
- <td colspan="4" style="padding-left: 20px;"><h4>System</h4></td>
- </tr>
- <tr>
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="System_TimeZone_value1">
- </td>
- <td style="font-size: 80%;">
- Time zone in POSIX syntax (Europe/Berlin = "CET-1CEST,M3.5.0,M10.5.0/3" - incl. daylight saving)
- </td>
- </tr>
- <tr class="expert" id="ex16">
- <td width="20px" style="padding-left: 40px;">
- <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>
- </td>
- <td>
- <input type="text" id="System_TimeServer_value1">
- </td>
- <td style="font-size: 80%;">
- Time server to synchronize system time (default: "pool.ntp.org" - used if nothing is specified)
- </td>
- </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 = 'InvertEnableItem("System", "Hostname")' unchecked ></td>
- </td>
- <td>
- <class id="System_Hostname_text" style="color:black;">Hostname</class>
- </td>
- <td>
- <input type="text" id="System_Hostname_value1">
- </td>
- <td style="font-size: 80%;">
- Hostname for server - will be transfered to wlan.ini at next startup)
- </td>
- </tr>
- </table>
- <p>
- <button class="button" onclick="saveTextAsFile()">Update Config.ini</button>
- </p>
- <p>
-
- </p>
- <div id="doreboot">
- <p>
- <button class="button" id="Edit_Config_Direct" onclick="editConfigDirect()" style="display:none">Edit Config.ini direct</button>
-
- <button class="button" id="reboot" type="button" onclick="doReboot()">Reboot to activate updates</button>
- </p>
- </div>
- </div>
- <script type="text/javascript" src="./gethost.js"></script>
- <script type="text/javascript" src="./readconfigcommon.js"></script>
- <script type="text/javascript" src="./readconfigparam.js"></script>
-
- <script type="text/javascript">
- var canvas = document.getElementById('canvas'),
- basepath = "http://192.168.178.22";
- param;
- category;
- NUNBERSAkt = -1;
- NUMBERS;
- function LoadConfigNeu() {
- var isInitialSetup = getParameterByName('InitialSetup');
- if (isInitialSetup === 'true')
- {
- document.getElementById("reboot").style.display = "none";
- }
- basepath = getbasepath();
- if (!loadConfig(basepath)) {
- alert("Config.ini could not be loaded!\nPlease reload the page.");
- return;
- }
- ParseConfig();
- param = getConfigParameters();
- category = getConfigCategory();
- InitIndivParameter();
- UpdateInput();
- UpdateInputIndividual();
- UpdateExpertModus();
- document.getElementById("divall").style.display = '';
- }
- function InitIndivParameter()
- {
- NUMBERS = getNUMBERInfo();
- var _index = document.getElementById("Numbers_value1");
- while (_index.length)
- _index.remove(0);
- for (var i = 0; i < NUMBERS.length; ++i){
- var option = document.createElement("option");
- option.text = NUMBERS[i]["name"];
- option.value = i;
- _index.add(option);
- }
- _index.selectedIndex = 0;
- }
- function getParameterByName(name, url = window.location.href) {
- name = name.replace(/[\[\]]/g, '\\$&');
- var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
- results = regex.exec(url);
- if (!results) return null;
- if (!results[2]) return '';
- return decodeURIComponent(results[2].replace(/\+/g, ' '));
- }
- function WriteParameter(_param, _category, _cat, _name, _optional, _select = false, _anzpara = 1, _number = -1){
- if (_number > -1)
- {
- {
- if (_optional) {
- document.getElementById(_cat+"_"+_name+"_enabled").checked = _param[_cat][_name]["enabled"];
- for (var j = 1; j <= _anzpara; ++j)
- document.getElementById(_cat+"_"+_name+"_value"+j).disabled = NUMBERS[_number][_cat][_name]["enabled"];
- }
- document.getElementById(_cat+"_"+_name+"_text").style="color:black;"
- if (_select) {
- var textToFind;
- textToFind = NUMBERS[_number][_cat][_name]["value1"];
- var dd = document.getElementById(_cat+"_"+_name+"_value1");
- for (var i = 0; i < dd.options.length; i++) {
- if (dd.options[i].text.toLowerCase() === textToFind.toLowerCase()) {
- dd.selectedIndex = i;
- break;
- }
- }
- }
- else {
- for (var j = 1; j <= _anzpara; ++j)
- document.getElementById(_cat+"_"+_name+"_value"+j).value = NUMBERS[_number][_cat][_name]["value"+j];
- }
- }
- }
- else
- {
- {
- if (_optional) {
- document.getElementById(_cat+"_"+_name+"_enabled").checked = _param[_cat][_name]["enabled"];
- for (var j = 1; j <= _anzpara; ++j)
- document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_param[_cat][_name]["enabled"];
- }
- document.getElementById(_cat+"_"+_name+"_text").style="color:black;"
- if (_select) {
- var textToFind;
- textToFind = _param[_cat][_name]["value1"];
- var dd = document.getElementById(_cat+"_"+_name+"_value1");
- for (var i = 0; i < dd.options.length; i++) {
- if (dd.options[i].text.toLowerCase() === textToFind.toLowerCase()) {
- dd.selectedIndex = i;
- break;
- }
- }
- }
- else {
- for (var j = 1; j <= _anzpara; ++j)
- document.getElementById(_cat+"_"+_name+"_value"+j).value = _param[_cat][_name]["value"+j];
- }
- }
- }
- ///////////////// am Ende, falls Kategorie als gesamtes nicht ausgewählt --> deaktivieren
- if (_category[_cat]["enabled"] == false)
- {
- if (_optional) {
- document.getElementById(_cat+"_"+_name+"_enabled").disabled = true;
- for (var j = 1; j <= _anzpara; ++j) {
- document.getElementById(_cat+"_"+_name+"_value"+j).disabled = true;
- }
- }
- document.getElementById(_cat+"_"+_name+"_text").style="color:lightgrey;"
- }
- 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, _number = -1)
- {
- _status = _category[_cat]["enabled"];
- _color = "color:lightgrey;";
- if (_status) {
- _color = "color:black;";
- }
- if (_optional) {
- document.getElementById(_cat+"_"+_name+"_enabled").disabled = !_status;
- document.getElementById(_cat+"_"+_name+"_enabled").style=_color;
- }
- if (_number == -1){
- if (!_param[_cat][_name]["enabled"]) {
- _status = false;
- _color = "color:lightgrey;";
- }
- }
- else
- if (!NUMBERS[_number][_cat][_name]["enabled"]) {
- _status = false;
- _color = "color:lightgrey;";
- }
- document.getElementById(_cat+"_"+_name+"_text").disabled = !_status;
- document.getElementById(_cat+"_"+_name+"_text").style = _color;
- if (_param[_cat][_name]["anzParam"] == 2) {
- _color = "width: 30px;" + _color;
- }
- for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) {
- document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_status;
- document.getElementById(_cat+"_"+_name+"_value"+j).style=_color;
- }
- }
- function ReadParameter(_param, _cat, _name, _optional, _select = false, _number = -1){
- if (_number > -1)
- {
- if (_cat == "Digits")
- _cat = "digit"
- if (_cat == "Analog")
- _cat = "analog"
- if (_optional) {
- NUMBERS[_number][_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked;
- }
- if (_select) {
- var sel = document.getElementById(_cat+"_"+_name+"_value1");
- NUMBERS[_number][_cat][_name]["value1"] = sel.options[sel.selectedIndex].text;
- }
- else {
- for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) {
- NUMBERS[_number][_cat][_name]["value"+j] = document.getElementById(_cat+"_"+_name+"_value"+j).value;
- }
- }
- }
- else
- {
- if (_optional) {
- _param[_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked;
- }
- if (_select) {
- var sel = document.getElementById(_cat+"_"+_name+"_value1");
- _param[_cat][_name]["value1"] = sel.options[sel.selectedIndex].text;
- }
- else {
- for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) {
- _param[_cat][_name]["value"+j] = document.getElementById(_cat+"_"+_name+"_value"+j).value;
- }
- }
- }
- }
- function UpdateInputIndividual()
- {
- if (NUNBERSAkt != -1)
- {
- ReadParameter(param, "PostProcessing", "DecimalShift", true, false, NUNBERSAkt)
- ReadParameter(param, "PostProcessing", "MaxRateValue", true, false, NUNBERSAkt)
- }
- var sel = document.getElementById("Numbers_value1");
- NUNBERSAkt = sel.selectedIndex;
- WriteParameter(param, category, "PostProcessing", "DecimalShift", true, false, 1, NUNBERSAkt);
- WriteParameter(param, category, "PostProcessing", "MaxRateValue", true, false, 1, NUNBERSAkt);
- }
- function UpdateInput() {
- document.getElementById("Category_Analog_enabled").checked = category["Analog"]["enabled"];
- document.getElementById("Category_Digits_enabled").checked = category["Digits"]["enabled"];
- document.getElementById("Category_MQTT_enabled").checked = category["MQTT"]["enabled"];
- WriteParameter(param, category, "MakeImage", "LogImageLocation", true);
- WriteParameter(param, category, "MakeImage", "LogfileRetentionInDays", true);
- WriteParameter(param, category, "MakeImage", "WaitBeforeTakingPicture", false);
- WriteParameter(param, category, "MakeImage", "ImageQuality", false);
- WriteParameter(param, category, "MakeImage", "Brightness", false);
- // WriteParameter(param, category, "MakeImage", "Contrast", false);
- // WriteParameter(param, category, "MakeImage", "Saturation", false);
- WriteParameter(param, category, "MakeImage", "ImageSize", false, true, true);
- WriteParameter(param, category, "MakeImage", "FixedExposure", false, true, true);
- WriteParameter(param, category, "Alignment", "SearchFieldX", false);
- WriteParameter(param, category, "Alignment", "SearchFieldY", false);
- WriteParameter(param, category, "Alignment", "AlignmentAlgo", true, true, true);
- WriteParameter(param, category, "Digits", "Model", false);
- WriteParameter(param, category, "Digits", "LogImageLocation", true);
- WriteParameter(param, category, "Digits", "LogfileRetentionInDays", true);
- WriteParameter(param, category, "Digits", "ModelInputSize", false, false, 2);
-
- WriteParameter(param, category, "Analog", "Model", false);
- WriteParameter(param, category, "Analog", "LogImageLocation", true);
- WriteParameter(param, category, "Analog", "LogfileRetentionInDays", true);
- WriteParameter(param, category, "Analog", "ExtendedResolution", true, true);
- WriteParameter(param, category, "Analog", "ModelInputSize", false, false, 2);
-
- WriteParameter(param, category, "PostProcessing", "PreValueUse", true, true);
- WriteParameter(param, category, "PostProcessing", "PreValueAgeStartup", true);
- WriteParameter(param, category, "PostProcessing", "AllowNegativeRates", true, true);
- // WriteParameter(param, category, "PostProcessing", "MaxRateValue", true);
- WriteParameter(param, category, "PostProcessing", "ErrorMessage", true, true);
- WriteParameter(param, category, "PostProcessing", "CheckDigitIncreaseConsistency", true, true);
- WriteParameter(param, category, "MQTT", "Uri", true);
- WriteParameter(param, category, "MQTT", "MainTopic", true);
- WriteParameter(param, category, "MQTT", "ClientID", true);
- WriteParameter(param, category, "MQTT", "user", true);
- WriteParameter(param, category, "MQTT", "password", 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);
- WriteParameter(param, category, "System", "TimeZone", true);
- WriteParameter(param, category, "System", "Hostname", true);
- WriteParameter(param, category, "System", "TimeServer", true);
- }
- function ReadParameterAll()
- {
- category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked;
- category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked;
- category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked;
- ReadParameter(param, "MakeImage", "LogImageLocation", true);
- ReadParameter(param, "MakeImage", "LogfileRetentionInDays", true);
- ReadParameter(param, "MakeImage", "WaitBeforeTakingPicture", false);
- ReadParameter(param, "MakeImage", "ImageQuality", false);
- ReadParameter(param, "MakeImage", "Brightness", false);
- // ReadParameter(param, "MakeImage", "Contrast", false);
- // ReadParameter(param, "MakeImage", "Saturation", false);
- ReadParameter(param, "MakeImage", "ImageSize", false, true);
- ReadParameter(param, "MakeImage", "FixedExposure", false, true);
- ReadParameter(param, "Alignment", "SearchFieldX", false);
- ReadParameter(param, "Alignment", "SearchFieldY", false);
- ReadParameter(param, "Alignment", "AlignmentAlgo", true, true);
- ReadParameter(param, "Digits", "Model", false);
- ReadParameter(param, "Digits", "LogImageLocation", true);
- ReadParameter(param, "Digits", "LogfileRetentionInDays", true);
- ReadParameter(param, "Digits", "ModelInputSize", false, false);
- ReadParameter(param, "Analog", "Model", false);
- ReadParameter(param, "Analog", "LogImageLocation", true);
- ReadParameter(param, "Analog", "LogfileRetentionInDays", true);
- ReadParameter(param, "Analog", "ExtendedResolution", true, true);
- ReadParameter(param, "Analog", "ModelInputSize", false, false);
- ReadParameter(param, "PostProcessing", "PreValueUse", true, true);
- ReadParameter(param, "PostProcessing", "PreValueAgeStartup", true);
- ReadParameter(param, "PostProcessing", "AllowNegativeRates", true, true);
- ReadParameter(param, "PostProcessing", "MaxRateValue", true);
- ReadParameter(param, "PostProcessing", "ErrorMessage", true, true);
- ReadParameter(param, "PostProcessing", "CheckDigitIncreaseConsistency", true, true);
- ReadParameter(param, "MQTT", "Uri", true);
- ReadParameter(param, "MQTT", "MainTopic", true);
- ReadParameter(param, "MQTT", "ClientID", true);
- ReadParameter(param, "MQTT", "user", true);
- ReadParameter(param, "MQTT", "password", true);
- ReadParameter(param, "AutoTimer", "AutoStart", false, true);
- ReadParameter(param, "AutoTimer", "Intervall", false);
- ReadParameter(param, "Debug", "Logfile", true, true);
- ReadParameter(param, "Debug", "LogfileRetentionInDays", true);
- ReadParameter(param, "System", "TimeZone", true);
- ReadParameter(param, "System", "Hostname", true);
- ReadParameter(param, "System", "TimeServer", true);
- UpdateInputIndividual();
-
- // FormatDecimalValue(param, "PostProcessing", "MaxRateValue");
- }
- function WriteConfig(){
- ReadParameterAll();
- return setConfigParameters(param, category);
- }
- function FormatDecimalValue(_param, _cat, _name) {
- for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) {
- var _val = _param[_cat][_name]["value"+j];
- _val = _val.replace(",", ".");
- _param[_cat][_name]["value"+j] = _val;
- }
- }
- function UpdateAfterCategoryCheck() {
- ReadParameterAll();
- category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked;
- category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked;
- category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked;
- UpdateInput();
- UpdateInputIndividual();
- }
- function UpdateExpertModus()
- {
- var _style = 'display:none;';
- if (document.getElementById("ExpertModus_enabled").checked) {
- _style = '';
- document.getElementById("Edit_Config_Direct").style.display = "";
- }
- else
- {
- document.getElementById("Edit_Config_Direct").style.display = "none";
- }
- const expert = document.querySelectorAll(".expert");
- for (var i = 0; i < expert.length; i++) {
- document.getElementById(expert[i].id).style = _style;
- }
- }
- function saveTextAsFile()
- {
- if (confirm("Are you sure you want to update \"config.ini\"?")) {
- ReadParameterAll();
- WriteConfigININew();
- SaveConfigToServer(basepath);
- }
- }
- function doReboot() {
- if (confirm("Are you sure you want to reboot the ESP32?")) {
- var stringota = "/reboot";
- window.location = stringota;
- window.location.href = stringota;
- window.location.assign(stringota);
- window.location.replace(stringota);
- }
- }
- function editConfigDirect() {
- if (confirm("Did you save your changes?")) {
- var stringota = "/edit_config.html";
- window.location = stringota;
- window.location.href = stringota;
- window.location.assign(stringota);
- window.location.replace(stringota);
- }
- }
- function numberChanged()
- {
- UpdateInputIndividual();
- }
-
- LoadConfigNeu();
-
- </script>
-
- </body>
- </html>
|