html_main_heatcontrol_DE.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /* clang-format off */
  2. #ifdef FIRMWARE_VARIANT_HEATCONTROL
  3. static const char html_main_script[] PROGMEM = R"=====(
  4. <script>
  5. function g(i) { return document.getElementById(i) };
  6. var xhttp, updateTime, reqTime, reqFin;
  7. function sendBtn(btn, conf) {
  8. var frmn='BtnFrm'+btn;
  9. var form = g(frmn);
  10. if(conf !== undefined) {
  11. if(confirm(conf)) return transmit(form);
  12. else return false;
  13. }
  14. else return transmit(form);
  15. }
  16. function transmit(f) {
  17. if (!xhttp) {
  18. reqTime = 0;
  19. reqFin = false;
  20. xhttp = new XMLHttpRequest();
  21. xhttp.timeout = 1000;
  22. xhttp.overrideMimeType("application/json");
  23. xhttp.open('POST', 'api');
  24. xhttp.send(f ? (new FormData(f)) : '');
  25. xhttp.onreadystatechange = function () {
  26. if (xhttp.readyState === XMLHttpRequest.DONE && xhttp.status === 200) {
  27. var data = JSON.parse(xhttp.responseText);
  28. if(data.heatReq == '1') { g('heatReq').innerHTML = 'AKTIV'; g('heatReq').style = 'color:red;'; }
  29. else { g('heatReq').innerHTML = 'INAKTIV'; g('heatReq').style = 'color:black;'; }
  30. if(data.statHeat == '1') { g('statHeat').innerHTML = 'AKTIV'; g('statHeat').style = 'color:red;'; }
  31. else { g('statHeat').innerHTML = 'INAKTIV'; g('statHeat').style = 'color:black;'; }
  32. if(data.outHeat == '1') { g('outHeat').innerHTML = 'AKTIV'; g('outHeat').style = 'color:red;'; }
  33. else { g('outHeat').innerHTML = 'INAKTIV'; g('outHeat').style = 'color:black;'; }
  34. if(data.outPump == '1') { g('outPump').innerHTML = 'AKTIV'; g('outPump').style = 'color:red;'; }
  35. else { g('outPump').innerHTML = 'INAKTIV'; g('outPump').style = 'color:black;'; }
  36. if(data.pumpNL == '0') { g('pumpNL').innerHTML = 'INAKTIV'; g('pumpNL').style = 'color:black;'; }
  37. else { g('pumpNL').innerHTML = data.pumpNL + ' min'; g('pumpNL').style = 'color:red;'; }
  38. if(data.statLock == '0') { g('statLock').innerHTML = 'INAKTIV'; g('statLock').style = 'color:black;'; }
  39. else { g('statLock').innerHTML = 'AKTIV'; g('statLock').style = 'color:red;'; }
  40. if(data.statLockTime == '0') { g('statLockTime').innerHTML = 'INAKTIV'; g('statLockTime').style = 'color:black;'; }
  41. else { g('statLockTime').innerHTML = data.statLockTime + ' min'; g('statLockTime').style = 'color:red;'; }
  42. if(data.lockUntilTFeed !== undefined) {
  43. if(data.lockUntilTFeed == '-') g('lockUntilTFeed').innerHTML = data.lockUntilTFeed;
  44. else g('lockUntilTFeed').innerHTML = data.lockUntilTFeed + '&deg;';
  45. }
  46. if(data.statTest == '0') { g('statTest').innerHTML = 'INAKTIV'; g('statTest').style = 'color:black;'; }
  47. else { g('statTest').innerHTML = data.statTest + ' min'; g('statTest').style = 'color:red;'; }
  48. if(data.cDisHeat == '1') { g('cDisHeat').innerHTML = 'AKTIV'; g('cDisHeat').style = 'color:red;'; }
  49. else { g('cDisHeat').innerHTML = 'INAKTIV'; g('cDisHeat').style = 'color:black;'; }
  50. if(data.cDisPump == '1') { g('cDisPump').innerHTML = 'AKTIV'; g('cDisPump').style = 'color:red;'; }
  51. else { g('cDisPump').innerHTML = 'INAKTIV'; g('cDisPump').style = 'color:black;'; }
  52. if(data.tempFeed !== undefined) g('tempFeed').innerHTML = data.tempFeed.toFixed(1) + '&deg;';
  53. if(data.tempReturn !== undefined) g('tempReturn').innerHTML = data.tempReturn.toFixed(1) + '&deg;';
  54. if(data.tempOut !== undefined) g('tempOut').innerHTML = data.tempOut.toFixed(1) + '&deg;';
  55. if(data.useHeatC !== undefined) {
  56. if(data.useHeatC) {
  57. g('div_heatc').style = 'visibility: visible';
  58. if(data.currHeatC !== undefined) g('currHeatC').innerHTML = data.currHeatC + '&deg;';
  59. if(data.currHeatCOff !== undefined) g('currHeatCOff').innerHTML = data.currHeatCOff + '&deg;';
  60. if(data.currHeatCOn !== undefined) g('currHeatCOn').innerHTML = data.currHeatCOn + '&deg;';
  61. }
  62. }
  63. if(data.temp !== undefined && data.hum !== undefined) {
  64. g('div_sens_dht').style = 'visibility: visible';
  65. g('currTempHum').innerHTML = data.temp.toFixed(1) + '&deg;&nbsp;&nbsp;&nbsp;' + data.hum.toFixed(0) + '%';
  66. }
  67. else if(data.temp !== undefined) {
  68. g('div_sens_dht').style = 'visibility: visible';
  69. g('currTempHum').innerHTML = data.temp.toFixed(1) + '&deg;';
  70. }
  71. else g('div_sens_dht').style = 'visibility: collapse';
  72. var APname;
  73. if(data.WiFiNum == 1) APname='Haupt-AP';
  74. else if(data.WiFiNum == 1) APname='2. AP';
  75. if(data.ssid !== undefined && data.WiFiNum !== undefined && data.WiFiNum > 0) g('ssid').innerHTML = data.ssid + ' (' + APname + ')';
  76. else if(data.ssid !== undefined) g('ssid').innerHTML = data.ssid;
  77. if(data.mqttstate !== undefined) {
  78. if(data.mqttstate == "CONNECTED") { g('mqttstate').innerHTML = ' verbunden mit <i>' + data.mqtthost + '</i>'; }
  79. else g('mqttstate').innerHTML = data.mqttstate;
  80. }
  81. if(data.uptime !== undefined) g('uptime').innerHTML = data.uptime;
  82. if(data.date !== undefined) g('date').innerHTML = data.date;
  83. else g('date').innerHTML = '-';
  84. if(data.time !== undefined) g('time').innerHTML = data.time;
  85. else g('time').innerHTML = '-';
  86. if(data.mqttreconn !== undefined) g('mqttreconn').innerHTML = data.mqttreconn;
  87. xhttp = null;
  88. updateTime = 0;
  89. reqFin = true;
  90. }
  91. else {
  92. if(!reqFin && reqTime > 10) {
  93. xhttp = null;
  94. reqFin = true;
  95. }
  96. }
  97. }
  98. }
  99. return false;
  100. }
  101. function init() {
  102. transmit();
  103. }
  104. setInterval(transmit, 2500);
  105. </script>
  106. )====="; // html_main_script
  107. static const char html_main_body_app[] PROGMEM = R"=====(
  108. <p><b>Status</b></p>
  109. <table style='width:100%'>
  110. <tr><td style='width:50%'>Heizanforderung </td><td><b><span id='heatReq'></span></td></tr>
  111. <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
  112. <tr><td>Heizkessel</td><td>&nbsp;</td></tr>
  113. <tr><td>&nbsp;&nbsp;Ansteuerung</td><td><b><span id='outHeat'></span></b></td></tr>
  114. <tr><td>&nbsp;&nbsp;Rückmeldung</td><td><b><span id='statHeat'></span></td></tr>
  115. <tr><td>&nbsp;&nbsp;Sperre</td><td><b><span id='statLock'></span></td></tr>
  116. <tr><td>&nbsp;&nbsp;Sperrzeit</td><td><b><span id='statLockTime'></span></td></tr>
  117. <tr><td>&nbsp;&nbsp;Sperre bis <br>&nbsp;&nbsp;&nbsp;&nbsp;Vorlauf <</td><td><b><span id='lockUntilTFeed'></span></td></tr>
  118. <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
  119. <tr><td>Pumpe</td><td>&nbsp;</td></tr>
  120. <tr><td>&nbsp;&nbsp;Ansteuerung</td><td><b><span id='outPump'></span></b></td></tr>
  121. <tr><td>&nbsp;&nbsp;Nachlauf</td><td><b><span id='pumpNL'></span></b></td></tr>
  122. <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
  123. <tr><td>Testbetrieb </td><td><b><span id='statTest'></span></b></td></tr>
  124. </table>
  125. <div id='div_heatc' style='visibility: collapse;'>
  126. <table style='width:100%'>
  127. <tr><td style='width:50%'>Heizkurve</td><td>&nbsp;</td></tr>
  128. <tr><td>&nbsp;&nbsp;Schwellwert Aus</td><td><b><span id='currHeatCOff'></span></b></td></tr>
  129. <tr><td>&nbsp;&nbsp;aktueller Sollwert</td><td><b><span id='currHeatC'></span></b></td></tr>
  130. <tr><td>&nbsp;&nbsp;Schwellwert Ein</td><td><b><span id='currHeatCOn'></span></b></td></tr>
  131. </table>
  132. </div>
  133. <div></div>
  134. <div></div>
  135. <p><b>Umgehung Steuerung</b></p>
  136. <table style='width:100%'>
  137. <tr><td style='width:50%'>Heizung </td><td><b><span id='cDisHeat'></span></b></td></tr>
  138. <tr><td>Pumpe </td><td><b><span id='cDisPump'></span></b></td></tr>
  139. </table>
  140. <div></div>
  141. <div></div>
  142. <p><b>Temperaturen</b></p>
  143. <table style='width:100%'>
  144. <tr><td style='width:50%'>Heizung Vorlauf </td><td><b><span id='tempFeed'></span></td></tr>
  145. <tr><td>Heizung R&uuml;cklauf </td><td><b><span id='tempReturn'></span></td></tr>
  146. <tr><td>Au&szlig;en </td><td><b><span id='tempOut'></span></b></td></tr>
  147. </table>
  148. <div id='div_sens_dht' style='padding:0px; visibility:collapse;'>
  149. <table style='width:100%'>
  150. <tr><td style='padding:0px; width:50%'>Heizraum </td><td><b><span id='currTempHum'></span></td></tr>
  151. </table>
  152. </div>
  153. )====="; // html_main_body_app
  154. #endif