edit_config_param.html 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Edit Config</title>
  5. <meta charset="utf-8">
  6. <style>
  7. h1 {font-size: 2em;}
  8. h2 {font-size: 1.5em; margin-block-start: 0.0em; margin-block-end: 0.2em;}
  9. h3 {font-size: 1.2em;}
  10. p {font-size: 1em;}
  11. .button {
  12. padding: 5px 20px;
  13. width: 211px;
  14. font-size: 16px;
  15. }
  16. textarea {
  17. font-size: 14px;
  18. }
  19. </style>
  20. </head>
  21. <body style="font-family: arial; padding: 0px 10px;">
  22. <table style="width:100%">
  23. <tr>
  24. <td>
  25. <h2>Config.ini:</h2>
  26. </td>
  27. <td>
  28. <button class="button" id="Edit_Config_Direct" onclick="editConfigDirect()" style="display:none">Edit Config.ini direct</button>
  29. <input type="checkbox" id="ExpertModus_enabled" value="1" onclick = 'UpdateExpertModus()' unchecked><label for="ExpertModus_enabled"> Expertenmodus </label>
  30. </td>
  31. </tr>
  32. </table>
  33. <br>
  34. <div id = "divall" style="display:none">
  35. <table>
  36. <tr>
  37. <th width="20px" style="text-align: left;">
  38. Enable
  39. </th>
  40. <th width="200px" style="text-align: left;">
  41. Parameter
  42. </th>
  43. <th style="text-align: left;">
  44. Value
  45. </th>
  46. <th style="text-align: left;">
  47. Information
  48. </th>
  49. </tr>
  50. <tr>
  51. <td colspan="4" style="padding-left: 20px;"><h4>MakeImage</h4></td>
  52. </tr>
  53. <tr>
  54. <td width="20px" style="padding-left: 40px;">
  55. <input type="checkbox" id="MakeImage_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("MakeImage_LogImageLocation_value").disabled = !document.getElementById("MakeImage_LogImageLocation_value1").disabled' unchecked >
  56. </td>
  57. <td width="200px">
  58. <class id="MakeImage_LogImageLocation_text" style="color:black;">LogImageLocation</class>
  59. </td>
  60. <td>
  61. <input type="text" name="name" id="MakeImage_LogImageLocation_value1">
  62. </td>
  63. <td style="font-size: 80%;">
  64. Location to store raw images for logging
  65. </td>
  66. </tr>
  67. <tr>
  68. <td width="20px" style="padding-left: 40px;">
  69. <td"><input type="checkbox" id="MakeImage_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("MakeImage_LogfileRetentionInDays_value").disabled = !document.getElementById("MakeImage_LogfileRetentionInDays_value1").disabled' unchecked ></td>
  70. </td>
  71. <td>
  72. <class id="MakeImage_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
  73. </td>
  74. <td>
  75. <input type="number" id="MakeImage_LogfileRetentionInDays_value1" size="13" min="0" step="1">
  76. </td>
  77. <td style="font-size: 80%;">
  78. Time to keep the raw image (in days -"0" = forever)
  79. </td>
  80. </tr>
  81. <tr class="expert" id="ex1">
  82. <td width="20px" style="padding-left: 40px;">
  83. </td>
  84. <td>
  85. <class id="MakeImage_WaitBeforeTakingPicture_text" style="color:black;">WaitBeforeTakingPicture</class>
  86. </td>
  87. <td>
  88. <input type="number" id="MakeImage_WaitBeforeTakingPicture_value1" size="13" min="0" step="any">
  89. </td>
  90. <td style="font-size: 80%;">
  91. Wait time between illumination switch on and take the picture (in seconds)
  92. </td>
  93. </tr>
  94. <tr class="expert" id="ex2">
  95. <td width="20px" style="padding-left: 40px;">
  96. </td>
  97. <td>
  98. <class id="MakeImage_ImageQuality_text" style="color:black;">ImageQuality</class>
  99. </td>
  100. <td>
  101. <input type="number" id="MakeImage_ImageQuality_value1" size="13" min="0" max="63">
  102. </td>
  103. <td style="font-size: 80%;">
  104. Quality index for picture (default = "5" - "0" high ... "63" low)
  105. </td>
  106. </tr>
  107. <tr class="expert" id="ex3">
  108. <td width="20px" style="padding-left: 40px;">
  109. </td>
  110. <td>
  111. <class id="MakeImage_ImageSize_text" style="color:black;">ImageSize</class>
  112. </td>
  113. <td>
  114. <select id="MakeImage_ImageSize_value1">
  115. <option value="0" selected>VGA</option>
  116. <option value="1" >QVGA</option>
  117. </select>
  118. </td>
  119. <td style="font-size: 80%;">
  120. Picture size camera (default = "VGA")
  121. </td>
  122. </tr>
  123. <tr class="expert" id="ex4">
  124. <td colspan="4" style="padding-left: 20px;"><h4>Alignment</h4></td>
  125. </tr>
  126. <tr class="expert" id="ex6">
  127. <td width="20px" style="padding-left: 40px;">
  128. </td>
  129. <td width="200px">
  130. <class id="Alignment_SearchFieldX_text" style="color:black;">SearchFieldX</class>
  131. </td>
  132. <td>
  133. <input type="number" name="name" id="Alignment_SearchFieldX_value1" size="13" min="1" step="1">
  134. </td>
  135. <td style="font-size: 80%;">
  136. x size (width) in which the reference is searched (default = "20")
  137. </td>
  138. </tr>
  139. <tr class="expert" id="ex8">
  140. <td width="20px" style="padding-left: 40px;">
  141. </td>
  142. <td>
  143. <class id="Alignment_SearchFieldY_text" style="color:black;">SearchFieldY</class>
  144. </td>
  145. <td>
  146. <input type="number" name="name" id="Alignment_SearchFieldY_value1" size="13" min="1">
  147. </td>
  148. <td style="font-size: 80%;">
  149. y size (height) in which the reference is searched (default = "20")
  150. </td>
  151. </tr>
  152. <tr class="expert" id="ex4">
  153. <td colspan="4" style="padding-left: 20px;"><h4>Digits</h4></td>
  154. </tr>
  155. <tr>
  156. <td width="20px" style="padding-left: 40px;">
  157. </td>
  158. <td width="200px">
  159. <class id="Digits_Model_text" style="color:black;">Model</class>
  160. </td>
  161. <td>
  162. <input type="text" id="Digits_Model_value1">
  163. </td>
  164. <td style="font-size: 80%;">
  165. path to CNN model file for image recognition (in seconds)
  166. </td>
  167. </tr>
  168. <tr>
  169. <td width="20px" style="padding-left: 40px;">
  170. <input type="checkbox" id="Digits_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("Digits_LogImageLocation_value1").disabled = !document.getElementById("Digits_LogImageLocation_value1").disabled' unchecked >
  171. </td>
  172. <td>
  173. <class id="Digits_LogImageLocation_text" style="color:black;">LogImageLocation</class>
  174. </td>
  175. <td>
  176. <input type="text" name="name" id="Digits_LogImageLocation_value1">
  177. </td>
  178. <td style="font-size: 80%;">
  179. Location to store separated digits for logging
  180. </td>
  181. </tr>
  182. <tr>
  183. <td width="20px" style="padding-left: 40px;">
  184. <td"><input type="checkbox" id="Digits_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Digits_LogfileRetentionInDays_value1").disabled = !document.getElementById("Digits_LogfileRetentionInDays_value1").disabled' unchecked ></td>
  185. </td>
  186. <td>
  187. <class id="Digits_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
  188. </td>
  189. <td>
  190. <input type="number" id="Digits_LogfileRetentionInDays_value1" min="0" step="1">
  191. </td>
  192. <td style="font-size: 80%;">
  193. Time to keep the separated digit images (in days -"0" = forever)
  194. </td>
  195. </tr>
  196. <tr class="expert" id="ex9">
  197. <td width="20px" style="padding-left: 40px;">
  198. </td>
  199. <td>
  200. <class id="Digits_ModelInputSize_text" style="color:black;">ModelInputSize</class>
  201. </td>
  202. <td>
  203. x: <input type="number" id="Digits_ModelInputSize_value1" style="width: 30px;" min="1" step="1">
  204. y: <input type="number" id="Digits_ModelInputSize_value2" style="width: 30px;" min="1" step="1">
  205. </td>
  206. <td style="font-size: 80%;">
  207. Size of the input image for the CNN model
  208. </td>
  209. </tr>
  210. <tr class="expert" id="ex4">
  211. <td colspan="4" style="padding-left: 20px;"><h4>Analog</h4></td>
  212. </tr>
  213. <tr>
  214. <td width="20px" style="padding-left: 40px;">
  215. </td>
  216. <td width="200px">
  217. <class id="Analog_Model_text" style="color:black;">Model</class>
  218. </td>
  219. <td>
  220. <input type="text" id="Analog_Model_value1">
  221. </td>
  222. <td style="font-size: 80%;">
  223. path to CNN model file for image recognition (in seconds)
  224. </td>
  225. </tr>
  226. <tr>
  227. <td width="20px" style="padding-left: 40px;">
  228. <input type="checkbox" id="Analog_LogImageLocation_enabled" value="1" onclick = 'document.getElementById("Analog_LogImageLocation_value1").disabled = !document.getElementById("Analog_LogImageLocation_value1").disabled' unchecked >
  229. </td>
  230. <td>
  231. <class id="Analog_LogImageLocation_text" style="color:black;">LogImageLocation</class>
  232. </td>
  233. <td>
  234. <input type="text" name="name" id="Analog_LogImageLocation_value1">
  235. </td>
  236. <td style="font-size: 80%;">
  237. Location to store separated digits for logging
  238. </td>
  239. </tr>
  240. <tr>
  241. <td width="20px" style="padding-left: 40px;">
  242. <td"><input type="checkbox" id="Analog_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Analog_LogfileRetentionInDays_value1").disabled = !document.getElementById("Analog_LogfileRetentionInDays_value1").disabled' unchecked ></td>
  243. </td>
  244. <td>
  245. <class id="Analog_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
  246. </td>
  247. <td>
  248. <input type="number" id="Analog_LogfileRetentionInDays_value1" min="0" step="1">
  249. </td>
  250. <td style="font-size: 80%;">
  251. Time to keep the separated digit images (in days -"0" = forever)
  252. </td>
  253. </tr>
  254. <tr class="expert" id="ex10">
  255. <td width="20px" style="padding-left: 40px;">
  256. </td>
  257. <td>
  258. <class id="Analog_ModelInputSize_text" style="color:black;">ModelInputSize</class>
  259. </td>
  260. <td>
  261. x: <input type="number" id="Analog_ModelInputSize_value1" style="width: 30px;" min="1" step="1">
  262. y: <input type="number" id="Analog_ModelInputSize_value2" style="width: 30px;" min="1" step="1">
  263. </td>
  264. <td style="font-size: 80%;">
  265. Size of the input image for the CNN model
  266. </td>
  267. </tr>
  268. <tr>
  269. <td colspan="4" style="padding-left: 20px;"><h4>PostProcessing</h4></td>
  270. </tr>
  271. <tr>
  272. <td width="20px" style="padding-left: 40px;">
  273. <input type="checkbox" id="PostProcessing_DecimalShift_enabled" value="1" onclick = 'document.getElementById("PostProcessing_DecimalShift_value1").disabled = !document.getElementById("PostProcessing_DecimalShift_value1").disabled' unchecked >
  274. </td>
  275. <td width="200px">
  276. <class id="PostProcessing_DecimalShift_text" style="color:black;">DecimalShift</class>
  277. </td>
  278. <td>
  279. <input type="number" id="PostProcessing_DecimalShift_value1" step="1">
  280. </td>
  281. <td style="font-size: 80%;">
  282. shift the digit separator within the digital digits (positiv and negativ)
  283. </td>
  284. </tr>
  285. <tr>
  286. <td width="20px" style="padding-left: 40px;">
  287. <input type="checkbox" id="PostProcessing_PreValueUse_enabled" value="1" onclick = 'document.getElementById("PostProcessing_PreValueUse_value1").disabled = !document.getElementById("PostProcessing_PreValueUse_value1").disabled' unchecked >
  288. </td>
  289. <td width="200px">
  290. <class id="PostProcessing_PreValueUse_text" style="color:black;">PreValueUse</class>
  291. </td>
  292. <td>
  293. <select id="PostProcessing_PreValueUse_value1">
  294. <option value="0" selected>true</option>
  295. <option value="1" >false</option>
  296. </select>
  297. </td>
  298. <td style="font-size: 80%;">
  299. Enable to use the previous read value for consistency checks - also on reboots
  300. </td>
  301. </tr>
  302. <tr class="expert" id="ex11">
  303. <td width="20px" style="padding-left: 40px;">
  304. <input type="checkbox" id="PostProcessing_PreValueAgeStartup_enabled" value="1" onclick = 'document.getElementById("PostProcessing_PreValueAgeStartup_value1").disabled = !document.getElementById("PostProcessing_PreValueAgeStartup_value1").disabled' unchecked >
  305. </td>
  306. <td width="200px">
  307. <class id="PostProcessing_PreValueAgeStartup_text" style="color:black;">PreValueAgeStartup</class>
  308. </td>
  309. <td>
  310. <input type="number" id="PostProcessing_PreValueAgeStartup_value1" size="13" min="0">
  311. </td>
  312. <td style="font-size: 80%;">
  313. Time (in minutes), how long a previous read value is valid after reboot (default = 720 min)
  314. </td>
  315. </tr>
  316. <tr>
  317. <td width="20px" style="padding-left: 40px;">
  318. <input type="checkbox" id="PostProcessing_AllowNegativeRates_enabled" value="1" onclick = 'document.getElementById("PostProcessing_AllowNegativeRates_value1").disabled = !document.getElementById("PostProcessing_AllowNegativeRates_value1").disabled' unchecked >
  319. </td>
  320. <td width="200px">
  321. <class id="PostProcessing_AllowNegativeRates_text" style="color:black;">AllowNegativeRates</class>
  322. </td>
  323. <td>
  324. <select id="PostProcessing_AllowNegativeRates_value1">
  325. <option value="0" selected>true</option>
  326. <option value="1" >false</option>
  327. </select>
  328. </td>
  329. <td style="font-size: 80%;">
  330. Set on "false" to ensure, that only positive changes are accepted (typically for counter)
  331. </td>
  332. </tr>
  333. <tr>
  334. <td width="20px" style="padding-left: 40px;">
  335. <input type="checkbox" id="PostProcessing_MaxRateValue_enabled" value="1" onclick = 'document.getElementById("PostProcessing_MaxRateValue_value1").disabled = !document.getElementById("PostProcessing_MaxRateValue_value1").disabled' unchecked >
  336. </td>
  337. <td width="200px">
  338. <class id="PostProcessing_MaxRateValue_text" style="color:black;">MaxRateValue</class>
  339. </td>
  340. <td>
  341. <input type="number" id="PostProcessing_MaxRateValue_value1" size="13" min="0" step="any">
  342. </td>
  343. <td style="font-size: 80%;">
  344. Maximum change of reading from one to the next readout
  345. </td>
  346. </tr>
  347. <tr class="expert" id="ex12">
  348. <td width="20px" style="padding-left: 40px;">
  349. <input type="checkbox" id="PostProcessing_ErrorMessage_enabled" value="1" onclick = 'document.getElementById("PostProcessing_ErrorMessage_value1").disabled = !document.getElementById("PostProcessing_ErrorMessage_value1").disabled' unchecked >
  350. </td>
  351. <td width="200px">
  352. <class id="PostProcessing_ErrorMessage_text" style="color:black;">ErrorMessage</class>
  353. </td>
  354. <td>
  355. <select id="PostProcessing_ErrorMessage_value1">
  356. <option value="0" selected>true</option>
  357. <option value="1" >false</option>
  358. </select>
  359. </td>
  360. <td style="font-size: 80%;">
  361. Do not show error message in return value - in error case, the last valid number will be send out
  362. </td>
  363. </tr>
  364. <tr>
  365. <td width="20px" style="padding-left: 40px;">
  366. <input type="checkbox" id="PostProcessing_CheckDigitIncreaseConsistency_enabled" value="1" onclick = 'document.getElementById("PostProcessing_CheckDigitIncreaseConsistency_value1").disabled = !document.getElementById("PostProcessing_CheckDigitIncreaseConsistency_value1").disabled' unchecked >
  367. </td>
  368. <td width="200px">
  369. <class id="PostProcessing_CheckDigitIncreaseConsistency_text" style="color:black;">CheckDigitIncreaseConsistency</class>
  370. </td>
  371. <td>
  372. <select id="PostProcessing_CheckDigitIncreaseConsistency_value1">
  373. <option value="0" selected>true</option>
  374. <option value="1" >false</option>
  375. </select>
  376. </td>
  377. <td style="font-size: 80%;">
  378. Activate to enalbe additional consistency check - especially zero crossing check between digits
  379. </td>
  380. </tr>
  381. <tr>
  382. <td colspan="4" style="padding-left: 20px;"><h4>MQTT</h4></td>
  383. </tr>
  384. <tr>
  385. <td width="20px" style="padding-left: 40px;">
  386. <input type="checkbox" id="MQTT_Uri_enabled" value="1" onclick = 'document.getElementById("MQTT_Uri_value1").disabled = !document.getElementById("MQTT_Uri_value1").disabled' unchecked >
  387. </td>
  388. <td width="200px">
  389. <class id="MQTT_Uri_text" style="color:black;">Uri</class>
  390. </td>
  391. <td>
  392. <input type="text" id="MQTT_Uri_value1">
  393. </td>
  394. <td style="font-size: 80%;">
  395. URI to the MQTT broker including port: http:\\IP-ADRESS:port
  396. </td>
  397. </tr>
  398. <tr>
  399. <td width="20px" style="padding-left: 40px;">
  400. <input type="checkbox" id="MQTT_Topic_enabled" value="1" onclick = 'document.getElementById("MQTT_Topic_value1").disabled = !document.getElementById("MQTT_Topic_value1").disabled' unchecked >
  401. </td>
  402. <td width="200px">
  403. <class id="MQTT_Topic_text" style="color:black;">Topic</class>
  404. </td>
  405. <td>
  406. <input type="text" id="MQTT_Topic_value1">
  407. </td>
  408. <td style="font-size: 80%;">
  409. MQTT topic, in which the value is registered
  410. </td>
  411. </tr>
  412. <tr>
  413. <td width="20px" style="padding-left: 40px;">
  414. <input type="checkbox" id="MQTT_TopicError_enabled" value="1" onclick = 'document.getElementById("MQTT_TopicError_value1").disabled = !document.getElementById("MQTT_TopicError_value1").disabled' unchecked >
  415. </td>
  416. <td width="200px">
  417. <class id="MQTT_TopicError_text" style="color:black;">TopicError</class>
  418. </td>
  419. <td>
  420. <input type="text" id="MQTT_TopicError_value1">
  421. </td>
  422. <td style="font-size: 80%;">
  423. MQTT topic, in which the error status is reported (empty = no error)
  424. </td>
  425. </tr>
  426. <tr>
  427. <td width="20px" style="padding-left: 40px;">
  428. <input type="checkbox" id="MQTT_ClientID_enabled" value="1" onclick = 'document.getElementById("MQTT_ClientID_value1").disabled = !document.getElementById("MQTT_ClientID_value1").disabled' unchecked >
  429. </td>
  430. <td width="200px">
  431. <class id="MQTT_ClientID_text" style="color:black;">ClientID</class>
  432. </td>
  433. <td>
  434. <input type="text" id="MQTT_ClientID_value1">
  435. </td>
  436. <td style="font-size: 80%;">
  437. ClientID to connect to the MQTT broker
  438. </td>
  439. </tr>
  440. <tr>
  441. <td width="20px" style="padding-left: 40px;">
  442. <input type="checkbox" id="MQTT_user_enabled" value="1" onclick = 'document.getElementById("MQTT_user_value1").disabled = !document.getElementById("MQTT_user_value1").disabled' unchecked >
  443. </td>
  444. <td width="200px">
  445. <class id="MQTT_user_text" style="color:black;">user</class>
  446. </td>
  447. <td>
  448. <input type="text" id="MQTT_user_value1">
  449. </td>
  450. <td style="font-size: 80%;">
  451. user for MQTT authenficiation
  452. </td>
  453. </tr>
  454. <tr>
  455. <td width="20px" style="padding-left: 40px;">
  456. <input type="checkbox" id="MQTT_password_enabled" value="1" onclick = 'document.getElementById("MQTT_password_value1").disabled = !document.getElementById("MQTT_password_value1").disabled' checked >
  457. </td>
  458. <td width="200px">
  459. <class id="MQTT_password_text" style="color:black;">password</class>
  460. </td>
  461. <td>
  462. <input type="text" id="MQTT_password_value1">
  463. </td>
  464. <td style="font-size: 80%;">
  465. password for MQTT authenficiation
  466. </td>
  467. </tr>
  468. <tr>
  469. <td colspan="4" style="padding-left: 20px;"><h4>AutoTimer</h4></td>
  470. </tr>
  471. <tr class="expert" id="ex13">
  472. <td width="20px" style="padding-left: 40px;">
  473. <input type="checkbox" id="AutoTimer_AutoStart_enabled" value="1" onclick = 'document.getElementById("AutoTimer_AutoStart_value1").disabled = !document.getElementById("AutoTimer_AutoStart_value1").disabled' unchecked >
  474. </td>
  475. <td width="200px">
  476. <class id="AutoTimer_AutoStart_text" style="color:black;">AutoStart</class>
  477. </td>
  478. <td>
  479. <select id="AutoTimer_AutoStart_value1">
  480. <option value="0" selected>true</option>
  481. <option value="1" >false</option>
  482. </select>
  483. </td>
  484. <td style="font-size: 80%;">
  485. Start the image recognition immediatly after power up. false is basically for debugging.
  486. </td>
  487. </tr>
  488. <tr>
  489. <td width="20px" style="padding-left: 40px;">
  490. <input type="checkbox" id="AutoTimer_Intervall_enabled" value="1" onclick = 'document.getElementById("AutoTimer_Intervall_value1").disabled = !document.getElementById("AutoTimerg_Intervall_value1").disabled' unchecked >
  491. </td>
  492. <td width="200px">
  493. <class id="AutoTimer_Intervall_text" style="color:black;">Intervall</class>
  494. </td>
  495. <td>
  496. <input type="number" id="AutoTimer_Intervall_value1" size="13" min="3" step="any">
  497. </td>
  498. <td style="font-size: 80%;">
  499. Intervall in which the counter is read (in minutes). Number must be greater than 3 minutes.
  500. </td>
  501. </tr>
  502. <tr>
  503. <td colspan="4" style="padding-left: 20px;"><h4>Debug</h4></td>
  504. </tr>
  505. <tr>
  506. <td width="20px" style="padding-left: 40px;">
  507. <input type="checkbox" id="Debug_Logfile_enabled" value="1" onclick = 'document.getElementById("Debug_Logfile_value1").disabled = !document.getElementById("Debug_Logfile_value1").disabled' unchecked >
  508. </td>
  509. <td width="200px">
  510. <class id="Debug_Logfile_text" style="color:black;">Logfile</class>
  511. </td>
  512. <td>
  513. <select id="Debug_Logfile_value1">
  514. <option value="0" selected>true</option>
  515. <option value="1" >false</option>
  516. </select>
  517. </td>
  518. <td style="font-size: 80%;">
  519. Turn on/off the extended logging
  520. </td>
  521. </tr>
  522. <tr>
  523. <td width="20px" style="padding-left: 40px;">
  524. <td"><input type="checkbox" id="Debug_LogfileRetentionInDays_enabled" value="1" onclick = 'document.getElementById("Debug_LogfileRetentionInDays_value").disabled = !document.getElementById("Debug_LogfileRetentionInDays_value1").disabled' unchecked ></td>
  525. </td>
  526. <td>
  527. <class id="Debug_LogfileRetentionInDays_text" style="color:black;">LogfileRetentionInDays</class>
  528. </td>
  529. <td>
  530. <input type="number" id="Debug_LogfileRetentionInDays_value1" size="13" min="0" step="1">
  531. </td>
  532. <td style="font-size: 80%;">
  533. Time to keep the log files (in days - "0" = forever)
  534. </td>
  535. </tr>
  536. <tr>
  537. <td colspan="4" style="padding-left: 20px;"><h4>System</h4></td>
  538. </tr>
  539. <tr>
  540. <td width="20px" style="padding-left: 40px;">
  541. <td"><input type="checkbox" id="System_TimeZone_enabled" value="1" onclick = 'document.getElementById("System_TimeZone_value").disabled = !document.getElementById("System_TimeZone_value1").disabled' unchecked ></td>
  542. </td>
  543. <td>
  544. <class id="System_TimeZone_text" style="color:black;">TimeZone</class>
  545. </td>
  546. <td>
  547. <input type="text" id="System_TimeZone_value1">
  548. </td>
  549. <td style="font-size: 80%;">
  550. Time zone in POSIX syntax (Europe/Berlin = "CET-1CEST,M3.5.0,M10.5.0/3" - incl. daylight saving)
  551. </td>
  552. </tr>
  553. <tr class="expert" id="ex16">
  554. <td width="20px" style="padding-left: 40px;">
  555. <input type="checkbox" id="System_TimeUpdateIntervall_enabled" value="1" onclick = 'document.getElementById("System_TimeUpdateIntervall_value1").disabled = !document.getElementById("System_TimeUpdateIntervall_value1").disabled' unchecked >
  556. </td>
  557. <td width="200px">
  558. <class id="System_TimeUpdateIntervall_text" style="color:black;">TimeUpdateIntervall</class>
  559. </td>
  560. <td>
  561. <input type="number" id="System_TimeUpdateIntervall_value1" size="13" min="0" step="1">
  562. </td>
  563. <td style="font-size: 80%;">
  564. Intervall for synchronizing the time with the time server (in hours)
  565. </td>
  566. </tr>
  567. </table>
  568. <p>
  569. <button class="button" onclick="saveTextAsFile()">Update Config.ini</button>
  570. </p>
  571. <p>
  572. </p>
  573. <p>
  574. <button class="button" id="reboot" type="button" onclick="doReboot()">Reboot to activate updates</button>
  575. </p>
  576. </div>
  577. <script type="text/javascript" src="./gethost.js"></script>
  578. <script type="text/javascript" src="./readconfigparam.js"></script>
  579. <script type="text/javascript">
  580. var canvas = document.getElementById('canvas'),
  581. basepath = "http://192.168.178.22";
  582. param;
  583. function LoadConfigNeu() {
  584. basepath = getbasepath();
  585. if (!loadConfig(basepath)) {
  586. alert("Config.ini could not be loaded!\nPlease reload the page.");
  587. return;
  588. }
  589. loadConfig(basepath);
  590. ParseConfig();
  591. UpdateInput();
  592. UpdateExpertModus();
  593. document.getElementById("divall").style.display = '';
  594. }
  595. function WriteParameter(_param, _cat, _name, _optional, _select = false, _anzpara = 1){
  596. if (_param[_cat][_name]["found"]){
  597. if (_optional) {
  598. document.getElementById(_cat+"_"+_name+"_enabled").checked = _param[_cat][_name]["enabled"];
  599. for (var j = 1; j <= _anzpara; ++j) {
  600. document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_param[_cat][_name]["enabled"];
  601. }
  602. }
  603. document.getElementById(_cat+"_"+_name+"_text").style="color:black;"
  604. if (_select) {
  605. var textToFind = _param[_cat][_name]["value1"];
  606. var dd = document.getElementById(_cat+"_"+_name+"_value1");
  607. for (var i = 0; i < dd.options.length; i++) {
  608. if (dd.options[i].text.toLowerCase() === textToFind.toLowerCase()) {
  609. dd.selectedIndex = i;
  610. break;
  611. }
  612. }
  613. }
  614. else {
  615. for (var j = 1; j <= _anzpara; ++j) {
  616. document.getElementById(_cat+"_"+_name+"_value"+j).value = _param[_cat][_name]["value"+j];
  617. }
  618. }
  619. }
  620. else {
  621. if (_optional) {
  622. document.getElementById(_cat+"_"+_name+"_enabled").disabled = true;
  623. for (var j = 1; j <= _anzpara; ++j) {
  624. document.getElementById(_cat+"_"+_name+"_value"+j).disabled = true;
  625. }
  626. }
  627. document.getElementById(_cat+"_"+_name+"_text").style="color:lightgrey;"
  628. }
  629. }
  630. function ReadParameter(_param, _cat, _name, _optional, _select = false){
  631. if (_param[_cat][_name]["found"]){
  632. if (_optional) {
  633. _param[_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked;
  634. }
  635. if (_select) {
  636. var sel = document.getElementById(_cat+"_"+_name+"_value1");
  637. _param[_cat][_name]["value1"] = sel.options[sel.selectedIndex].text;
  638. }
  639. else {
  640. for (var j = 1; j <= _param[_cat][_name]["anzpara"]; ++j) {
  641. _param[_cat][_name]["value"+j] = document.getElementById(_cat+"_"+_name+"_value"+j).value;
  642. }
  643. }
  644. }
  645. }
  646. function UpdateInput() {
  647. param = getConfigParameters();
  648. WriteParameter(param, "MakeImage", "LogImageLocation", true);
  649. WriteParameter(param, "MakeImage", "LogfileRetentionInDays", true);
  650. WriteParameter(param, "MakeImage", "WaitBeforeTakingPicture", false);
  651. WriteParameter(param, "MakeImage", "ImageQuality", false);
  652. WriteParameter(param, "MakeImage", "ImageSize", false, true, true);
  653. WriteParameter(param, "Alignment", "SearchFieldX", false);
  654. WriteParameter(param, "Alignment", "SearchFieldY", false);
  655. WriteParameter(param, "Digits", "Model", false);
  656. WriteParameter(param, "Digits", "LogImageLocation", false);
  657. WriteParameter(param, "Digits", "LogfileRetentionInDays", false);
  658. WriteParameter(param, "Digits", "ModelInputSize", false, false, 2);
  659. WriteParameter(param, "Analog", "Model", false);
  660. WriteParameter(param, "Analog", "LogImageLocation", false);
  661. WriteParameter(param, "Analog", "LogfileRetentionInDays", false);
  662. WriteParameter(param, "Analog", "ModelInputSize", false, false, 2);
  663. WriteParameter(param, "PostProcessing", "DecimalShift", true);
  664. WriteParameter(param, "PostProcessing", "PreValueUse", true, true);
  665. WriteParameter(param, "PostProcessing", "PreValueAgeStartup", true);
  666. WriteParameter(param, "PostProcessing", "AllowNegativeRates", true, true);
  667. WriteParameter(param, "PostProcessing", "MaxRateValue", true);
  668. WriteParameter(param, "PostProcessing", "ErrorMessage", true, true);
  669. WriteParameter(param, "PostProcessing", "CheckDigitIncreaseConsistency", true, true);
  670. WriteParameter(param, "MQTT", "Uri", true);
  671. WriteParameter(param, "MQTT", "Topic", true);
  672. WriteParameter(param, "MQTT", "TopicError", true);
  673. WriteParameter(param, "MQTT", "ClientID", true);
  674. WriteParameter(param, "MQTT", "user", true);
  675. WriteParameter(param, "MQTT", "password", true);
  676. WriteParameter(param, "AutoTimer", "AutoStart", true, true);
  677. WriteParameter(param, "AutoTimer", "Intervall", true);
  678. WriteParameter(param, "Debug", "Logfile", true, true);
  679. WriteParameter(param, "Debug", "LogfileRetentionInDays", true);
  680. WriteParameter(param, "System", "TimeZone", true);
  681. WriteParameter(param, "System", "TimeUpdateIntervall", true);
  682. }
  683. function WriteConfig(){
  684. ReadParameter(param, "MakeImage", "LogImageLocation", true);
  685. ReadParameter(param, "MakeImage", "LogfileRetentionInDays", true);
  686. ReadParameter(param, "MakeImage", "WaitBeforeTakingPicture", false);
  687. ReadParameter(param, "MakeImage", "ImageQuality", false);
  688. ReadParameter(param, "MakeImage", "ImageSize", false, true);
  689. ReadParameter(param, "Alignment", "SearchFieldX", false);
  690. ReadParameter(param, "Alignment", "SearchFieldY", false);
  691. ReadParameter(param, "Digits", "Model", false);
  692. ReadParameter(param, "Digits", "LogImageLocation", false);
  693. ReadParameter(param, "Digits", "LogfileRetentionInDays", false);
  694. ReadParameter(param, "Digits", "ModelInputSize", false, false, 2);
  695. ReadParameter(param, "Analog", "Model", false);
  696. ReadParameter(param, "Analog", "LogImageLocation", false);
  697. ReadParameter(param, "Analog", "LogfileRetentionInDays", false);
  698. ReadParameter(param, "Analog", "ModelInputSize", false, false, 2);
  699. ReadParameter(param, "PostProcessing", "DecimalShift", true);
  700. ReadParameter(param, "PostProcessing", "PreValueUse", true, true);
  701. ReadParameter(param, "PostProcessing", "PreValueAgeStartup", true);
  702. ReadParameter(param, "PostProcessing", "AllowNegativeRates", true, true);
  703. ReadParameter(param, "PostProcessing", "MaxRateValue", true);
  704. ReadParameter(param, "PostProcessing", "ErrorMessage", true, true);
  705. ReadParameter(param, "PostProcessing", "CheckDigitIncreaseConsistency", true, true);
  706. ReadParameter(param, "MQTT", "Uri", true);
  707. ReadParameter(param, "MQTT", "Topic", true);
  708. ReadParameter(param, "MQTT", "TopicError", true);
  709. ReadParameter(param, "MQTT", "ClientID", true);
  710. ReadParameter(param, "MQTT", "user", true);
  711. ReadParameter(param, "MQTT", "password", true);
  712. ReadParameter(param, "AutoTimer", "AutoStart", true, true);
  713. ReadParameter(param, "AutoTimer", "Intervall", true);
  714. ReadParameter(param, "Debug", "Logfile", true, true);
  715. ReadParameter(param, "Debug", "LogfileRetentionInDays", true);
  716. ReadParameter(param, "System", "TimeZone", true);
  717. ReadParameter(param, "System", "TimeUpdateIntervall", true);
  718. FormatDecimalValue(param, "PostProcessing", "MaxRateValue");
  719. return setConfigParameters(param);
  720. }
  721. function FormatDecimalValue(_param, _cat, _name) {
  722. for (var j = 1; j <= _param[_cat][_name]["anzpara"]; ++j) {
  723. var _val = _param[_cat][_name]["value"+j];
  724. _val = _val.replace(",", ".");
  725. _param[_cat][_name]["value"+j] = _val;
  726. }
  727. }
  728. function UpdateExpertModus()
  729. {
  730. var _style = 'display:none;';
  731. if (document.getElementById("ExpertModus_enabled").checked) {
  732. _style = '';
  733. document.getElementById("Edit_Config_Direct").style.display = "";
  734. }
  735. else
  736. {
  737. document.getElementById("Edit_Config_Direct").style.display = "none";
  738. }
  739. const expert = document.querySelectorAll(".expert");
  740. for (var i = 0; i < expert.length; i++) {
  741. document.getElementById(expert[i].id).style = _style;
  742. }
  743. }
  744. function saveTextAsFile()
  745. {
  746. if (confirm("Are you sure you want to update \"config.ini\"?")) {
  747. var textToSave = WriteConfig();
  748. FileDeleteOnServer("/config/config.ini", basepath);
  749. FileSendContent(textToSave, "/config/config.ini", basepath);
  750. }
  751. }
  752. function doReboot() {
  753. if (confirm("Are you sure you want to reboot the ESP32?")) {
  754. var stringota = "/reboot";
  755. window.location = stringota;
  756. window.location.href = stringota;
  757. window.location.assign(stringota);
  758. window.location.replace(stringota);
  759. }
  760. }
  761. function editConfigDirect() {
  762. if (confirm("Did you save your changes?")) {
  763. var stringota = "/edit_config.html";
  764. window.location = stringota;
  765. window.location.href = stringota;
  766. window.location.assign(stringota);
  767. window.location.replace(stringota);
  768. }
  769. }
  770. LoadConfigNeu();
  771. </script>
  772. </body>
  773. </html>