readconfigparam.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. function readconfig_Version(){
  2. return "1.0.0 - 20200910";
  3. }
  4. var config_gesamt;
  5. var config_split;
  6. var param;
  7. var category;
  8. var ref = new Array(2);
  9. function ParseConfig() {
  10. config_split = config_gesamt.split("\n");
  11. var aktline = 0;
  12. param = new Object();
  13. category = new Object();
  14. var catname = "MakeImage";
  15. category[catname] = new Object();
  16. category[catname]["enabled"] = false;
  17. category[catname]["found"] = false;
  18. param[catname] = new Object();
  19. ParamAddValue(param, catname, "LogImageLocation");
  20. ParamAddValue(param, catname, "WaitBeforeTakingPicture");
  21. ParamAddValue(param, catname, "LogfileRetentionInDays");
  22. ParamAddValue(param, catname, "Brightness");
  23. ParamAddValue(param, catname, "Contrast");
  24. ParamAddValue(param, catname, "Saturation");
  25. ParamAddValue(param, catname, "ImageQuality");
  26. ParamAddValue(param, catname, "ImageSize");
  27. ParamAddValue(param, catname, "FixedExposure");
  28. var catname = "Alignment";
  29. category[catname] = new Object();
  30. category[catname]["enabled"] = false;
  31. category[catname]["found"] = false;
  32. param[catname] = new Object();
  33. ParamAddValue(param, catname, "InitialRotate");
  34. ParamAddValue(param, catname, "InitialMirror");
  35. ParamAddValue(param, catname, "SearchFieldX");
  36. ParamAddValue(param, catname, "SearchFieldY");
  37. ParamAddValue(param, catname, "AlignmentAlgo");
  38. ParamAddValue(param, catname, "FlipImageSize");
  39. var catname = "Digits";
  40. category[catname] = new Object();
  41. category[catname]["enabled"] = false;
  42. category[catname]["found"] = false;
  43. param[catname] = new Object();
  44. ParamAddValue(param, catname, "Model");
  45. ParamAddValue(param, catname, "LogImageLocation");
  46. ParamAddValue(param, catname, "LogfileRetentionInDays");
  47. ParamAddValue(param, catname, "ModelInputSize", 2);
  48. var catname = "Analog";
  49. category[catname] = new Object();
  50. category[catname]["enabled"] = false;
  51. category[catname]["found"] = false;
  52. param[catname] = new Object();
  53. ParamAddValue(param, catname, "Model");
  54. ParamAddValue(param, catname, "LogImageLocation");
  55. ParamAddValue(param, catname, "LogfileRetentionInDays");
  56. ParamAddValue(param, catname, "ModelInputSize", 2);
  57. ParamAddValue(param, catname, "ExtendedResolution");
  58. var catname = "PostProcessing";
  59. category[catname] = new Object();
  60. category[catname]["enabled"] = false;
  61. category[catname]["found"] = false;
  62. param[catname] = new Object();
  63. ParamAddValue(param, catname, "DecimalShift");
  64. ParamAddValue(param, catname, "PreValueUse");
  65. ParamAddValue(param, catname, "PreValueAgeStartup");
  66. ParamAddValue(param, catname, "AllowNegativeRates");
  67. ParamAddValue(param, catname, "MaxRateValue");
  68. ParamAddValue(param, catname, "ErrorMessage");
  69. ParamAddValue(param, catname, "CheckDigitIncreaseConsistency");
  70. var catname = "MQTT";
  71. category[catname] = new Object();
  72. category[catname]["enabled"] = false;
  73. category[catname]["found"] = false;
  74. param[catname] = new Object();
  75. ParamAddValue(param, catname, "Uri");
  76. ParamAddValue(param, catname, "Topic");
  77. ParamAddValue(param, catname, "TopicError");
  78. ParamAddValue(param, catname, "TopicRate");
  79. ParamAddValue(param, catname, "TopicTimeStamp");
  80. ParamAddValue(param, catname, "TopicUptime", 1, [/^([a-zA-Z0-9_-]+\/){0,10}[a-zA-Z0-9_-]+$/]);
  81. ParamAddValue(param, catname, "MainTopicGPIO", 1, [/^([a-zA-Z0-9_-]+\/){0,10}[a-zA-Z0-9_-]+$/]);
  82. ParamAddValue(param, catname, "ClientID");
  83. ParamAddValue(param, catname, "user");
  84. ParamAddValue(param, catname, "password");
  85. var catname = "GPIO";
  86. category[catname] = new Object();
  87. category[catname]["enabled"] = false;
  88. category[catname]["found"] = false;
  89. param[catname] = new Object();
  90. ParamAddValue(param, catname, "IO12", 6, [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]);
  91. ParamAddValue(param, catname, "IO13", 6, [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]);
  92. var catname = "AutoTimer";
  93. category[catname] = new Object();
  94. category[catname]["enabled"] = false;
  95. category[catname]["found"] = false;
  96. param[catname] = new Object();
  97. ParamAddValue(param, catname, "AutoStart");
  98. ParamAddValue(param, catname, "Intervall");
  99. var catname = "Debug";
  100. category[catname] = new Object();
  101. category[catname]["enabled"] = false;
  102. category[catname]["found"] = false;
  103. param[catname] = new Object();
  104. ParamAddValue(param, catname, "Logfile");
  105. ParamAddValue(param, catname, "LogfileRetentionInDays");
  106. var catname = "System";
  107. category[catname] = new Object();
  108. category[catname]["enabled"] = false;
  109. category[catname]["found"] = false;
  110. param[catname] = new Object();
  111. ParamAddValue(param, catname, "TimeZone");
  112. ParamAddValue(param, catname, "TimeServer");
  113. ParamAddValue(param, catname, "AutoAdjustSummertime");
  114. ParamAddValue(param, catname, "Hostname");
  115. ParamAddValue(param, catname, "SetupMode");
  116. while (aktline < config_split.length){
  117. for (var cat in category) {
  118. zw = cat.toUpperCase();
  119. zw1 = "[" + zw + "]";
  120. zw2 = ";[" + zw + "]";
  121. if ((config_split[aktline].trim().toUpperCase() == zw1) || (config_split[aktline].trim().toUpperCase() == zw2)) {
  122. if (config_split[aktline].trim().toUpperCase() == zw1) {
  123. category[cat]["enabled"] = true;
  124. }
  125. category[cat]["found"] = true;
  126. category[cat]["line"] = aktline;
  127. aktline = ParseConfigParamAll(aktline, cat);
  128. continue;
  129. }
  130. }
  131. aktline++;
  132. }
  133. }
  134. function ParamAddValue(param, _cat, _param, _anzParam = 1, _checkRegExList = null){
  135. param[_cat][_param] = new Object();
  136. param[_cat][_param]["found"] = false;
  137. param[_cat][_param]["enabled"] = false;
  138. param[_cat][_param]["line"] = -1;
  139. param[_cat][_param]["anzParam"] = _anzParam;
  140. param[_cat][_param].checkRegExList = _checkRegExList;
  141. };
  142. function ParseConfigParamAll(_aktline, _catname){
  143. ++_aktline;
  144. while ((_aktline < config_split.length)
  145. && !(config_split[_aktline][0] == "[")
  146. && !((config_split[_aktline][0] == ";") && (config_split[_aktline][1] == "["))) {
  147. var _input = config_split[_aktline];
  148. let [isCom, input] = isCommented(_input);
  149. var linesplit = ZerlegeZeile(input);
  150. ParamExtractValueAll(param, linesplit, _catname, _aktline, isCom);
  151. ++_aktline;
  152. }
  153. return _aktline;
  154. }
  155. function ParamExtractValue(_param, _linesplit, _catname, _paramname, _aktline, _iscom, _anzvalue = 1){
  156. if ((_linesplit[0].toUpperCase() == _paramname.toUpperCase()) && (_linesplit.length > _anzvalue))
  157. {
  158. _param[_catname][_paramname]["found"] = true;
  159. _param[_catname][_paramname]["enabled"] = !_iscom;
  160. _param[_catname][_paramname]["line"] = _aktline;
  161. _param[_catname][_paramname]["anzpara"] = _anzvalue;
  162. for (var j = 1; j <= _anzvalue; ++j) {
  163. _param[_catname][_paramname]["value"+j] = _linesplit[j];
  164. }
  165. }
  166. }
  167. function ParamExtractValueAll(_param, _linesplit, _catname, _aktline, _iscom){
  168. for (var paramname in _param[_catname]) {
  169. if (_linesplit[0].toUpperCase() == paramname.toUpperCase())
  170. {
  171. while (_linesplit.length <= _param[_catname][paramname]["anzParam"]) {
  172. _linesplit.push("");
  173. }
  174. _param[_catname][paramname]["found"] = true;
  175. _param[_catname][paramname]["enabled"] = !_iscom;
  176. _param[_catname][paramname]["line"] = _aktline;
  177. for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) {
  178. _param[_catname][paramname]["value"+j] = _linesplit[j];
  179. }
  180. }
  181. }
  182. }
  183. function getConfigParameters() {
  184. return param;
  185. }
  186. function setConfigParameters(_param, _category = "") {
  187. for (var cat in _param) {
  188. for (var name in _param[cat]) {
  189. param[cat][name]["found"] = _param[cat][name]["found"];
  190. param[cat][name]["enabled"] = _param[cat][name]["enabled"];
  191. param[cat][name]["line"] = _param[cat][name]["line"];
  192. param[cat][name]["anzParam"] = _param[cat][name]["anzParam"];
  193. for (var j = 1; j <= _param[cat][name]["anzParam"]; ++j) {
  194. param[cat][name]["value"+j] = _param[cat][name]["value"+j];
  195. }
  196. if (param[cat][name]["found"]) {
  197. var text = name + " ="
  198. for (var j = 1; j <= _param[cat][name]["anzParam"]; ++j) {
  199. text = text + " " + param[cat][name]["value"+j];
  200. }
  201. if (!param[cat][name]["enabled"]) {
  202. text = ";" + text;
  203. }
  204. config_split[param[cat][name]["line"]] = text;
  205. }
  206. }
  207. }
  208. for (var cat in _category) {
  209. if (category[cat]["found"])
  210. {
  211. category[cat]["enabled"] = _category[cat]["enabled"];
  212. text = "[" + cat + "]";
  213. if (!category[cat]["enabled"]) {
  214. text = ";" + text;
  215. }
  216. config_split[category[cat]["line"]] = text;
  217. }
  218. }
  219. config_gesamt = config_split[0];
  220. for (var i = 1; i < config_split.length; ++i){
  221. config_gesamt = config_gesamt + "\n" + config_split[i];
  222. }
  223. return config_gesamt;
  224. }
  225. function isCommented(input)
  226. {
  227. let isComment = false;
  228. if (input.charAt(0) == ';') {
  229. isComment = true;
  230. input = input.substr(1, input.length-1);
  231. };
  232. return [isComment, input];
  233. }
  234. function SaveConfigToServer(_basepath){
  235. // leere Zeilen am Ende löschen
  236. var zw = config_split.length - 1;
  237. while (config_split[zw] == "") {
  238. config_split.pop();
  239. }
  240. var config_gesamt = "";
  241. for (var i = 0; i < config_split.length; ++i)
  242. {
  243. config_gesamt = config_gesamt + config_split[i] + "\n";
  244. }
  245. FileDeleteOnServer("/config/config.ini", _basepath);
  246. FileSendContent(config_gesamt, "/config/config.ini", _basepath);
  247. }
  248. function getConfig() {
  249. return config_gesamt;
  250. }
  251. function getConfigCategory() {
  252. return category;
  253. }