conf.htm 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <html><head><body>
  2. <h3>Base configuration</h3>
  3. <a href='/'>Home</a><br><br>
  4. <input type='button' value='reload' onclick='return transmit()'/><br><br>
  5. <form id='form1' onsubmit='return transmit(this)'>
  6. Device Name: <input type='text' name='devName' id='devName'/><br><br>
  7. HTTP User *: <input type='text' name='httpUser' id='httpUser'/><br>
  8. HTTP Password *: <input type='text' name='httpPass' id='httpPass'/><br><br>
  9. MQTT Server *: <input type='text' name='mqttHost' id='mqttHost'/><br>
  10. MQTT Port *: <input type='number' name='mqttPort' id='mqttPort'/><br>
  11. MQTT User *: <input type='text' name='mqttUser' id='mqttUser'/><br>
  12. MQTT Password *: <input type='text' name='mqttPass' id='mqttPass'/><br><br>
  13. In Topic *: <input type='text' name='inTop' id='inTop'/><br>
  14. Out Topic: <input type='text' name='outTop' id='outTop'/><br>
  15. Out Retain *: <input type='checkbox' name='outRet' id='outRet'/><br><br>
  16. LastWill Topic *: <input type='text' name='willTop' id='willTop'/><br>
  17. LastWill Qos *: <select name='willQos' id='willQos'><option>0</option><option>1</option><option>2</option></select><br>
  18. LastWill Retain *: <input type='checkbox' name='willRet' id='willRet'/><br>
  19. LastWill Message *: <input type='text' name='willMsg' id='willMsg'/><br><br>
  20. Domoticz Out Topic *: <input type='text' name='domOutTop' id='domOutTop'/><br><br>
  21. All ON/OFF Topic *: <input type='text' name='allOnOffTop' id='allOnOffTop'/><br><br>
  22. Sleep: <input type='number' name='sleep' id='sleep'/><br>
  23. <br>
  24. <input type='submit' value='Save'/>
  25. </form>
  26. <form id='restartForm' onsubmit='return res()'>
  27. <input type='hidden' name='restart' value='1'>
  28. <input type='submit' value='Restart'/>
  29. </form>
  30. <script>
  31. function g(i) { return document.getElementById(i) };
  32. var xhttp, reqTime, reqFin, rxhttp;
  33. function res() {
  34. rxhttp = new XMLHttpRequest();
  35. rxhttp.timeout = 1000;
  36. rxhttp.open('POST', 'restart');
  37. rxhttp.send('');
  38. rxhttp = null;
  39. return false;
  40. }
  41. function setCheckbox(ele, dat) {
  42. if(dat == 1) {
  43. ele.checked = true;
  44. ele.style.visibility = 'visible';
  45. }
  46. else {
  47. ele.checked = false;
  48. ele.style.visibility = 'visible';
  49. }
  50. }
  51. function updateCheckboxValue(ele) {
  52. if (ele.checked) ele.value ='1';
  53. else {
  54. ele.value = '0';
  55. ele.checked = true;
  56. ele.style.visibility = 'hidden';
  57. }
  58. }
  59. function transmit(f) {
  60. if (!xhttp) {
  61. reqTime = 0;
  62. reqFin = false;
  63. updateCheckboxValue(g('outRet'));
  64. updateCheckboxValue(g('willRet'));
  65. xhttp = new XMLHttpRequest();
  66. xhttp.timeout = 2000;
  67. xhttp.open('POST', 'confdata');
  68. xhttp.send(f ? (new FormData(f)) : '');
  69. xhttp.onreadystatechange = function () {
  70. if (xhttp.readyState === XMLHttpRequest.DONE && xhttp.status === 200) {
  71. var data = JSON.parse(xhttp.responseText);
  72. g('httpUser').value = data.httpUser;
  73. g('httpPass').value = data.httpPass;
  74. g('devName').value = data.devName
  75. g('mqttHost').value = data.mqttHost;
  76. g('mqttPort').value = data.mqttPort;
  77. g('mqttUser').value = data.mqttUser;
  78. g('mqttPass').value = data.mqttPass;
  79. g('inTop').value = data.inTop;
  80. g('outTop').value = data.outTop;
  81. g('willTop').value = data.willTop;
  82. g('willQos').value = data.willQos;
  83. setCheckbox(g('outRet'), data.outRet);
  84. setCheckbox(g('willRet'), data.willRet);
  85. g('willMsg').value = data.willMsg;
  86. g('domOutTop').value = data.domOutTop;
  87. g('allOnOffTop').value = data.allOnOffTop;
  88. g('sleep').value = data.sleep;
  89. xhttp = null;
  90. reqFin = true;
  91. }
  92. else {
  93. if(!reqFin && reqTime > 10) {
  94. xhttp = null;
  95. reqFin = true;
  96. }
  97. }
  98. }
  99. }
  100. return false;
  101. }
  102. transmit();
  103. setInterval(function () { ++reqTime; }, 1000);
  104. </script>
  105. </body></html>