conf.htm 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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>
  22. <br>
  23. <input type='submit' value='Save'/>
  24. </form>
  25. <form id='restartForm' onsubmit='return res()'>
  26. <input type='hidden' name='restart' value='1'>
  27. <input type='submit' value='Restart'/>
  28. </form>
  29. <script>
  30. function g(i) { return document.getElementById(i) };
  31. var xhttp, reqTime, reqFin, rxhttp;
  32. function res() {
  33. rxhttp = new XMLHttpRequest();
  34. rxhttp.timeout = 1000;
  35. rxhttp.open('POST', 'restart');
  36. rxhttp.send('');
  37. rxhttp = null;
  38. return false;
  39. }
  40. function setCheckbox(ele, dat) {
  41. if(dat == 1) {
  42. ele.checked = true;
  43. ele.style.visibility = 'visible';
  44. }
  45. else {
  46. ele.checked = false;
  47. ele.style.visibility = 'visible';
  48. }
  49. }
  50. function updateCheckboxValue(ele) {
  51. if (ele.checked) ele.value ='1';
  52. else {
  53. ele.value = '0';
  54. ele.checked = true;
  55. ele.style.visibility = 'hidden';
  56. }
  57. }
  58. function transmit(f) {
  59. if (!xhttp) {
  60. reqTime = 0;
  61. reqFin = false;
  62. updateCheckboxValue(g('outRet'));
  63. updateCheckboxValue(g('willRet'));
  64. xhttp = new XMLHttpRequest();
  65. xhttp.timeout = 2000;
  66. xhttp.open('POST', 'confdata');
  67. xhttp.send(f ? (new FormData(f)) : '');
  68. xhttp.onreadystatechange = function () {
  69. if (xhttp.readyState === XMLHttpRequest.DONE && xhttp.status === 200) {
  70. var data = JSON.parse(xhttp.responseText);
  71. g('httpUser').value = data.httpUser;
  72. g('httpPass').value = data.httpPass;
  73. g('devName').value = data.devName
  74. g('mqttHost').value = data.mqttHost;
  75. g('mqttPort').value = data.mqttPort;
  76. g('mqttUser').value = data.mqttUser;
  77. g('mqttPass').value = data.mqttPass;
  78. g('inTop').value = data.inTop;
  79. g('outTop').value = data.outTop;
  80. g('willTop').value = data.willTop;
  81. g('willQos').value = data.willQos;
  82. setCheckbox(g('outRet'), data.outRet);
  83. setCheckbox(g('willRet'), data.willRet);
  84. g('willMsg').value = data.willMsg;
  85. g('domOutTop').value = data.domOutTop;
  86. g('allOnOffTop').value = data.allOnOffTop;
  87. xhttp = null;
  88. reqFin = true;
  89. }
  90. else {
  91. if(!reqFin && reqTime > 10) {
  92. xhttp = null;
  93. reqFin = true;
  94. }
  95. }
  96. }
  97. }
  98. return false;
  99. }
  100. transmit();
  101. setInterval(function () { ++reqTime; }, 1000);
  102. </script>
  103. </body></html>