/** * WEB client interface for Power PWM (PID) Regler for StromLog * Version 0.09 * 11.04.2024 P. Rebesky * author Creator P.Rebesky * Copyright (©): 2024-2028 by Peter Rebesky * This code can use in private cases only. Every business or companies using of this codes or codes parts is required an approval of us (me) * Every private using can exchange some parts of code or modify some code-lines. This code is allowed change for private use only. * This software is basicly owned by Peter Rebesky and any comercial using is forbidden without approval of us (me). **/ #ifndef WEB_CLIENT_H_ #define WEB_CLIENT_H_ #define ShowIniFile #include "global.h" #include "configPWR.h" #include "diagram.h" #include "controller.h" extern configPWR cPWR; extern String getTime2String(int hour,int minute,int second); extern String getDate2String(int year,int month,int day); extern String getHistory(); extern bool syncron_NTP_Time(); extern void getTime2Value(uint32_t unixTime); //*********** send status as JSON for controling *************************/ String getStatus(){ String json = "{\"status\":{\"relais\":"; json+=digitalRead(SecureRELAIS); json+=",\"power\":"; json+=_actualConsumption; json+="}}"; return json; } String getJSON(){ String json = "{\"ac\":"; json+=_actualConsumption; json+= ",\"r1\":"; json+=digitalRead(SecureRELAIS); json+= ",\"pwm\":"; json+=relais.PWM_Power; json+= ",\"kwh\":"; json+=_sumConsumption/(float)cPWR.FactorKWH; json+= ",\"pu\":"; json+=digitalRead(CirculationPump); json+= ",\"wt\":"; json+=_controlValue; json+= ",\"er\":"; json+=_errorCount; json+= ",\"co\":"; json+=_receivedOK; json+= ",\"tm0\":"; json+=_temperature0; json+= ",\"tm1\":"; json+=_temperature1; json+= ",\"cmq\":"; json+=_mqttWaitTime2Connect; json+= ",\"ti\":\""; json+=getTime2String(_hour,_minute,_second);json+="\""; json+= "}"; return json; } String WebGetStatus(){ //deprecated String ret = HTTP_ANSWERJSON; ret += getStatus(); return ret; } String WebGetRefresh(){ String ret = HTTP_ANSWERJSON; ret += getJSON(); return ret; } String WebSaveConfig(String PostValues){ cPWR.savePostValues(PostValues); String ret = HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += ""; ret += cPWR.getPName(); ret += ""; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

Ihre Eingaben wurden gespeichert.

"; ret += "

"; ret += HTTP_TEXT_END; return ret; } String WebSaveConfigAdvance(String PostValues){ cPWR.savePostValuesAdvance(PostValues); String ret = HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += ""; ret += cPWR.getPName(); ret += ""; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

Ihre Eingaben wurden gespeichert.

"; ret += "

"; ret += HTTP_TEXT_END; return ret; } String WebSetSetup(){ String ret = HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += ""; ret += cPWR.getPName(); ret += ""; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

Einstellungen


"; ret += "PW-Switch-IP: "; ret += WiFi.localIP().toString(); ret+="
"; ret += "

"; ret += "


"; ret += "


"; ret += "


"; ret += "


"; ret += "


"; ret += "


"; ret += "

Automatik: Speichern

"; ret += "

"; ret += "

"; ret += "
"; ret += "
Regler-Version: "; ret += PWRVersion; ret += "
Check for update firmware"; ret += "

Hilfe & Impressum

"; ret += ""; return ret; } String WebSetSetupAdvance(){ String ret = HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += ""; ret += cPWR.getPName(); ret += ""; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

Weitere Einstellungen


"; ret += "
"; ret += "


"; ret += "


"; ret += "


"; ret += "

Tausche Sensoren °C:

"; else ret += ">

"; ret += "


"; ret += "


"; ret += "


"; ret += "


"; ret += "


"; ret += "

Sende Temperatur-Daten an Server:

"; else ret += ">

"; ret += "
MQTT Service einschalten:"; if (cPWR.SendMQTT==1) ret += "checked=\"checked\">"; else{ ret += ">"; BrokerHidden=""; ret += "

"; ret += "
"; ret += "
Regler-Version: "; ret += PWRVersion; ret += "
Check for update firmware

"; // ret += HTTP_TEXT_END; ret += FPSTR(HTTP_JS_SETUP); return ret; } String WebGetMainScreen(){ String ret=HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += ""; ret += cPWR.getPName(); ret += ""; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

PW-Switch-Status

"; ret += "

Datum & Zeit: 🔄
"; ret += getDate2String(_year,_month,_day); ret += " "; ret+= getTime2String(_hour,_minute,_second); ret+="


"; ret += "

"; ret += _TransmitResult; ret += "
"; ret += _SendResult; ret += "
"; ret += "Kessel-Temperatur: "; ret+=_temperature0; ret += " °C
"; ret += "Heizstab-Temperatur: "; ret+=_temperature1; ret += " °C"; ret += "

"; ret += cPWR.getPName(); ret += " aktiv: "; if(cPWR.getAutomatic()) ret +="✅"; else ret += "😞"; ret += "
Verbunden mit Zähler: "; if(_receivedOK == true)ret += "✅"; // show a red bubble when meter not connected else ret += "😞"; if(cPWR.getSend2Server()) ret += "
Sende Daten: ✅"; ret +="

"; ret += "Status Pumpe: ";if(digitalRead(CirculationPump))ret += "✅";else ret += "⛔"; // show status of pump ret += "
Status Relais: ";if(digitalRead(SecureRELAIS))ret += "✅";else ret += "⛔"; // show status of relais1 ret += "

"; ret += "Diff. RegelValue: "; ret+= _controlValue; ret+="
"; // ret += "PWM Value: "; ret+=255-relais.PWMvalue; ret+="
"; ret += "Regel-Leistung: "; ret+=relais.PWM_Power; ret+=" W
"; #ifdef CHECK_CONSUMPTION ret += "Messung Leistung: "; ret+=_actualConsumptionCheck; ret += " W
"; #endif ret += "Tages Leistung: "; ret+=_sumConsumption/(float)cPWR.FactorKWH; ret+=" kWh
"; // ret += "Tages Leistung: "; ret+=_sumConsumption/(3600000.0/(float)cPWR.getScanTime()); ret+=" kWh
"; // ret += "Test Value: "; ret+=(float)cPWR.FactorKWH; ret+=" Wert
"; ret += "
Aktuelle Leistung: "; ret+=_actualConsumption; ret += " W
"; if(cPWR.getAutomatic()){ ret += "U-Pumpe AN < "; ret+=cPWR.getValuePumpOn(); ret+=" W
"; ret += "Regelwert = "; ret+=cPWR.getValueREG(); ret+=" W
"; ret += "Abschalten > "; ret+=cPWR.getValueOFF(); ret+=" W
"; }else{ ret += "

"; ret += ""; } ret += "

"; // ret += "Temperatur vorher: "; ret += relais.temperatureBefore; ret+="
"; // ret += cPWR.maxTemperatur(); ret+="
"; int pumpOffTime=relais.getPumpOffTime(); if(pumpOffTime>0 && relais.PWMvalue==255){ ret += "
Pumpe aus in: "; ret+=pumpOffTime; ret+=" min"; } int pumpOnTime=relais.getPumpOnTime(); if(pumpOnTime>0){ ret += "
Pumpe wieder ein in: "; ret+=pumpOnTime; ret+=" min"; } ret += "

"; ret += "Protokoll Errors: "; ret+= _errorCount; ret+="
"; if(cPWR.SendMQTT==1){ ret += "

MQTT Client ist eingeschaltet.

"; } else { ret += "

MQTT Client ist ausgeschaltet.

"; } if(_mqttBrokerOK==0 && cPWR.SendMQTT==1){ ret += "

🔴Error: MQTT Broker ist nicht erreichbar!
Oder Nutzer und Passwort sind nicht erlaubt.
Neuer Verbindungsversuch in "; ret+=_mqttWaitTime2Connect; ret+=" Sekunden.

"; } ret += HTTP_DIAGRAM_BUTTON; ret += HTTP_SETUP_BUTTON; //ret += "Text\n"; ret += "

Hilfe & Impressum

"; ret += "\n"; ret += ""; ret += FPSTR(HTTP_JS_SCRIPT); return ret; } String WebGetMemory(){ String ret = HTTP_ANSWER; ret += "Free space: "; ret += cPWR.FREESPACE; ret += "
"; ret += "
"; ret += cPWR.readDir(); ret += "
"; #ifdef ShowIniFile File Fconfig = LittleFS.open("/configPMW.ini","r"); if (Fconfig){ ret+=Fconfig.readString(); Fconfig.close(); } else ret +="File empty"; #endif ret += HTTP_TEXT_END; return ret; } String webSetTime(){ String ret = HTTP_ANSWER; ret += HTTP_HEAD_PWR; ret += FPSTR(HTTP_BODYSTYLE_PWR); ret += ""; ret += HTTP_DIV_FIELD; ret += "

Die Uhr wird jetzt neu synchronisiert.

"; ret += "

Zeit:

"; ret += "Unix-Time: "; ret += _timestamp; ret +="
"; if (syncron_NTP_Time() == true){ getTime2Value(_timestamp); ret += "Neue Zeit:

"; ret += "Unix-Time: "; ret += _timestamp; ret +="
"; } else { ret += "NTP Serverfehler! Aktuallisierung nicht erfolgt.
Bitte eine Wartezeit von 2 Minuten,
bis zur wiederholten, manuellen Aktuallisierung einhalten.
"; } ret += "


"; ret += HTTP_TEXT_END; return ret; } String WebHelpRestEndpoints(){ String ret = HTTP_ANSWER; ret += "RestEndPoints
/status
/ontime
/refresh
/reOn
/reOff
/pumpOff
/pumpOn
/save
/setup
/advance
"; ret += "/saveAdvance
/searchLogger
/memory
/shutDown
/autoON
/autoOFF
/autoToggle
/help
/setWIFI
"; ret += "/sendHistoryNow
/sendOnAuto
/firmware
/setTime
/getKWH"; ret += HTTP_TEXT_END; return ret; } String WebShutDown(){ // saveHistoryStatus(SHUTDOWN); // cPWR.saveHistory(getRawHistory()); String ret = HTTP_ANSWER; ret += "Restart power-regler now!
"; ret += HTTP_TEXT_END; delay(500); ESP.restart(); return ret; } String ShowSetup(){ return ""; } String NewUpdate(String updateFile){ return ""; } //*** end *** #endif //*** WEB_CLIENT_H_