html_main.ino 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. static const char html_main_script[] PROGMEM = R"=====(
  2. <script>
  3. function g(i) { return document.getElementById(i) };
  4. var xhttp, updateTime, reqTime, reqFin;
  5. function sendBtn(btn, conf) {
  6. var frmn='BtnFrm'+btn;
  7. var form = g(frmn);
  8. if(conf !== undefined) {
  9. if(confirm(conf)) return transmit(form);
  10. else return false;
  11. }
  12. else return transmit(form);
  13. }
  14. function transmit(f) {
  15. if (!xhttp) {
  16. reqTime = 0;
  17. reqFin = false;
  18. xhttp = new XMLHttpRequest();
  19. xhttp.timeout = 1000;
  20. xhttp.overrideMimeType("application/json");
  21. xhttp.open('POST', 'api');
  22. xhttp.send(f ? (new FormData(f)) : '');
  23. xhttp.onreadystatechange = function () {
  24. if (xhttp.readyState === XMLHttpRequest.DONE && xhttp.status === 200) {
  25. var data = JSON.parse(xhttp.responseText);
  26. if(data.setTemp !== undefined) g('setTemp').innerHTML = data.setTemp.toFixed(1) + '&deg;';
  27. if(data.currSetTemp !== undefined) g('currSetTemp').innerHTML = data.currSetTemp.toFixed(1) + '&deg;';
  28. if(data.psetName !== undefined) g('pset').innerHTML = data.psetName.toUpperCase();
  29. if(data.psetName0 !== undefined) g('btnPs0').innerHTML = data.psetName0;
  30. if(data.psetName1 !== undefined) g('btnPs1').innerHTML = data.psetName1;
  31. if(data.psetName2 !== undefined) g('btnPs2').innerHTML = data.psetName2;
  32. //if(data.temp !== undefined) g('temp').innerHTML = data.temp.toFixed(1);
  33. //if(data.hum !== undefined) g('hum').innerHTML = data.hum;
  34. if(data.temp !== undefined && data.hum !== undefined) g('currTempHum').innerHTML = data.temp.toFixed(1) + '&deg;&nbsp;&nbsp;&nbsp;' + data.hum.toFixed(0) + '%';
  35. else if(data.temp !== undefined) g('currTempHum').innerHTML = data.temp.toFixed(1) + '&deg;';
  36. if(data.modeName !== undefined) g('mode').innerHTML = data.modeName.toUpperCase();
  37. if(data.mode == '1') { g('btnModeOn').setAttribute('class', ''); g('btnModeOff').setAttribute('class', 'bgrey');}
  38. else { g('btnModeOn').setAttribute('class', 'bgrey'); g('btnModeOff').setAttribute('class', '');}
  39. if(data.pset == '0') { g('btnPs0').setAttribute('class', ''); g('btnPs1').setAttribute('class', 'bgrey'); g('btnPs2').setAttribute('class', 'bgrey');}
  40. else if(data.pset == '1') {g('btnPs0').setAttribute('class', 'bgrey'); g('btnPs1').setAttribute('class', ''); g('btnPs2').setAttribute('class', 'bgrey');}
  41. else if(data.pset == '2') {g('btnPs0').setAttribute('class', 'bgrey'); g('btnPs1').setAttribute('class', 'bgrey'); g('btnPs2').setAttribute('class', ''); }
  42. if(data.heating == '1' && data.mode == '1') { g('heating').innerHTML = 'HEATING'; g('heating').style = 'color:red;'; }
  43. else if(data.heating == '0' && data.mode == '1') { g('heating').innerHTML = 'IDLE'; g('heating').style = 'color:#1fa3ec;'; }
  44. else if(data.mode == '0') { g('heating').innerHTML = 'OFF'; g('heating').style = 'color:black;'; }
  45. if(data.ssid !== undefined) g('ssid').innerHTML = data.ssid;
  46. if(data.mqttstate !== undefined) {
  47. if(data.mqttstate == "CONNECTED") { g('mqttstate').innerHTML = data.mqttstate + ' to <i>' + data.mqtthost + '</i>'; }
  48. else g('mqttstate').innerHTML = data.mqttstate;
  49. }
  50. if(data.uptime !== undefined) g('uptime').innerHTML = data.uptime;
  51. if(data.mqttreconn !== undefined) g('mqttreconn').innerHTML = data.mqttreconn;
  52. xhttp = null;
  53. updateTime = 0;
  54. reqFin = true;
  55. }
  56. else {
  57. if(!reqFin && reqTime > 10) {
  58. xhttp = null;
  59. reqFin = true;
  60. }
  61. }
  62. }
  63. }
  64. return false;
  65. }
  66. function init() {
  67. transmit();
  68. }
  69. setInterval(transmit, 2500);
  70. </script>
  71. )====="; // html_main_script
  72. static const char html_main_body[] PROGMEM = R"=====(
  73. <p><b>Temperature</b></p>
  74. <div id='setTemp' style='text-align:center;font-weight:bold;font-size:40px'></div>
  75. <div></div>
  76. <table style='width:100%'><tr>
  77. <td style='width:50%'><form id='BtnFrmMinus'><input type='hidden' name='BtnMinus' value='1'><button onclick='return sendBtn("Minus")'>-</button></form></td>
  78. <td style='width:50%'><form id='BtnFrmPlus'><input type='hidden' name='BtnPlus' value='1'><button onclick='return sendBtn("Plus")'>+</button></form></td>
  79. </tr></table>
  80. <table style='width:100%'><tr>
  81. <td style='width:50%'>Current Temp/Hum </td><td><b><span id='currTempHum'></span></td>
  82. </tr></tr>
  83. <td>Actual set Temp </td><td><b><span id='currSetTemp'></span></b></td>
  84. </tr></tr>
  85. <td>Heating State </td><td><b><span id='heating'></span></b></td>
  86. </tr></table>
  87. <div></div>
  88. <div></div>
  89. <p><b>Preset</b></p>
  90. <div id='pset' style='text-align:center;font-weight:bold;font-size:20px'></div>
  91. <div></div>
  92. <form id='BtnFrmPset0'><input type='hidden' name='BtnPset0' value='1'><button id='btnPs0' onclick='return sendBtn("Pset0")'>NORMAL</button></form>
  93. <form id='BtnFrmPset1'><input type='hidden' name='BtnPset1' value='1'><button id='btnPs1' onclick='return sendBtn("Pset1")'>REDUCTION 1</button></form>
  94. <form id='BtnFrmPset2'><input type='hidden' name='BtnPset2' value='1'><button id='btnPs2' onclick='return sendBtn("Pset2")'>REDUCTION 2</button></form>
  95. <div></div>
  96. <div></div>
  97. <div></div>
  98. <form action='redTemps' method='GET'><button>Set Reduction Temps</button></form>
  99. <div></div>
  100. <p><b>Mode</b></p>
  101. <div id='mode' style='text-align:center;font-weight:bold;font-size:20px'></div>
  102. <div></div>
  103. <table style='width:100%'><tr>
  104. <td style='width:50%'><form id='BtnFrmOn'><input type='hidden' name='BtnOn' value='1'><button id='btnModeOn' onclick='return sendBtn("On")'>HEAT</button></form></td>
  105. <td style='width:50%'><form id='BtnFrmOff'><input type='hidden' name='BtnOff' value='1'><button id='btnModeOff' onclick='return sendBtn("Off")'>OFF</button></form></td>
  106. </tr></table>
  107. <hr>
  108. <div></div>
  109. <p><b>System</b></p>
  110. <p>WiFi connected to <i><span id='ssid'></span></i></p>
  111. <p>MQTT <span id='mqttstate'></span></p>
  112. <p>MQTT reconnects: <span id='mqttreconn'></span></p>
  113. <p>Uptime: <span id='uptime'></span></p>
  114. <table style='width:100%'><tr>
  115. <td style='width:50%'>)====="; // html_main_body2
  116. static const char html_main_body_adminonly[] PROGMEM = R"=====(
  117. <form action='conf' method='get'><button class='bgrey'>Config</button></form>
  118. )====="; // html_main_body_adminonly
  119. static const char html_main_body2[] PROGMEM = R"=====(</td>
  120. <td style='width:50%'><form action='/' method='get' onsubmit='return confirm("Confirm Restart");'><button name='restart' class='bred'>Restart</button></form></td>
  121. </tr></table>
  122. )====="; // html_main_body2