Ohje ob das ne gute Idee ist 
//Internet
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
//Temperaturfühler
#include <OneWire.h>
#include <DallasTemperature.h>
//Uhrzeit
#include <time.h>
//Erweiterungsmodul
#include"PCF8574.h"
const char* ssid = "";
const char* password = "";
// Den Telegram-Bot initialisieren
#define botToken "" // den Bot-Token bekommst du vom Botfather)
//Deine User ID
#define userID ""
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
//Uhrzeit
char tmp[50];
char time_value[20];
//Temperaturfühler
const int temperaturbus = D3; //Bus Pin
OneWire oneWire(temperaturbus);
DallasTemperature sensors(&oneWire);
uint8_t sensor1[8] = { 0x28, 0x1D, 0xE1, 0x49, 0xF6, 0xC5, 0x3C, 0x61 }; //Temperatur Pool
uint8_t sensor2[8] = { 0x28, 0x81, 0x6D, 0x48, 0xF6, 0x8C, 0x3C, 0xE1 }; //Temperatur Heizung
uint8_t sensor3[8] = { 0x28, 0xA3, 0x89, 0x48, 0xF6, 0x2F, 0x3C, 0x47 }; //Temperatur Außen
//Erweiterungsmodul
PCF8574 m1(0X20);
float tempPool;
float tempNachHeizung;
float tempAusen;
float dimmwert = 1.0;
unsigned long abfrageZeitTemperatur = 1000;
unsigned long abfrageZeitUhr = 1000;
unsigned long einschaltZeitFrost;
unsigned long ausschaltZeitFrost;
unsigned long einschaltZeitHeizung;
unsigned long ausschaltZeitHeizung;
unsigned long pumpeHeizungLaufzeit;
unsigned long pumpeDüseZeit;
unsigned long zeitHoch;
unsigned long zeitRunter;
unsigned long ulReqcount;
unsigned long ulReconncount;
unsigned long heizenLauuft;
int pumpeHeizung = P0;
int netzteil = P1;
int rolladenein = P2;
int umwaelz = P3;
int rolladenbewegen = P4;
int PumpeDuesen = P5;
int poolSteuerung = P6;
int ledRot = D5;
int ledGruen = D6;
int ledBlau = D7;
int ledWeis = D8;
int hauptschalter = HIGH;
int hauptschalterPool= HIGH;
int heizungPool = HIGH;
int temperaturSoll = 37;
int frost = HIGH;
int ledBeleuchtung = HIGH;
int klappeFernseherRunter = HIGH;
int klappeFernseherHoch = HIGH;
int klappeFernseherStop = LOW;
int pumpeHeizungLauuft = HIGH;
int pumpeHeizungHeizen = HIGH;
int pumpeHeizungFrost = HIGH;
int umwaelzpumpe = HIGH;
int umwaelzpumpeHeizung = HIGH;
int umwaelzpumpeFiltern = HIGH;
int umwaelzpumpeFrost = HIGH;
int netzteilHeizung = HIGH;
int netzteilLed = HIGH ;
int netzteilFrost = HIGH;
int netzteilStatus = HIGH;
int filtern = HIGH;
int filterModus = LOW;
int badeModus = HIGH;
int weis = HIGH;
int blau = HIGH;
int gruen = HIGH;
int rot = HIGH;
int gelb = HIGH;
int pink = HIGH;
int lila = HIGH;
int orange = HIGH;
int ledAus = HIGH;
int farbeAendern = HIGH;
int statusGasLeer = HIGH;
int aktuelleMinute;
int aktuelleStunde;
int umwaelzStunden = 3;
// Create an instance of the server on Port 80
WiFiServer server(80);
//Telegram Nachrichten
void handleNewMessages(int numNewMessages)
{
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i = 0; i < numNewMessages; i++)
{
String chat_id = bot.messages[i].chat_id;
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
if (from_name == "")
from_name = "Guest";
if (text == "/Status")
{
bot.sendChatAction(chat_id, "typing");
delay(1000);
String stringtemp = "Pooltemp: ";
stringtemp += String(tempPool , 1);
stringtemp += "°";
stringtemp += "\n";
stringtemp += "Heizungtemp: ";
stringtemp += String(tempNachHeizung, 1);
stringtemp += "°";
stringtemp += "\n";
stringtemp += "Außentemp: ";
stringtemp += String(tempAusen, 1);
stringtemp += "°";
stringtemp += "\n";
if (heizungPool == LOW) {
stringtemp += "Heizung eingeschaltet" ;
}
if (heizungPool == HIGH) {
stringtemp += "Heizung ausgeschaltet" ;
}
stringtemp += "\n";
stringtemp += "Solltemp: ";
stringtemp += String(temperaturSoll);
stringtemp += "°";
bot.sendMessage(chat_id, (stringtemp));
}
if (text == "/HeizungEin")
{
bot.sendChatAction(chat_id, "typing");
delay(1000);
heizungPool = LOW;
bot.sendMessage(chat_id, "Heizung eingeschaltet");
}
if (text == "/HeizungAus")
{
bot.sendChatAction(chat_id, "typing");
delay(1000);
heizungPool = HIGH;
bot.sendMessage(chat_id, "Heizung ausgeschaltet");
}
}
}
void setup()
{
m1.begin();
// setup globals
ulReqcount = 0;
ulReconncount = 0;
m1.pinMode(pumpeHeizung, OUTPUT);
m1.digitalWrite(pumpeHeizung, HIGH);
m1.pinMode(netzteil, OUTPUT);
m1.digitalWrite(netzteil, HIGH);
m1.pinMode(rolladenein, OUTPUT);
m1.digitalWrite(rolladenein, HIGH);
m1.pinMode(umwaelz, OUTPUT);
m1.digitalWrite(umwaelz, HIGH);
m1.pinMode(rolladenbewegen, OUTPUT);
m1.digitalWrite(rolladenbewegen, HIGH);
m1.pinMode(PumpeDuesen, OUTPUT);
m1.digitalWrite(PumpeDuesen, HIGH);
m1.pinMode(poolSteuerung, OUTPUT);
m1.digitalWrite(poolSteuerung, HIGH);
pinMode(ledWeis, OUTPUT);
digitalWrite(ledWeis, 0);
pinMode(ledRot, OUTPUT);
digitalWrite(ledRot, 0);
pinMode(ledGruen, OUTPUT);
digitalWrite(ledGruen, 0);
pinMode(ledBlau, OUTPUT);
digitalWrite(ledBlau, 0);
// start serial
Serial.begin(9600);
delay(1);
//Tempfühler
sensors.begin();
// inital connect
WiFi.mode(WIFI_STA);
WiFiStart();
//Uhrzeit
// Aktuelle Uhrzeit über den Zeit-Server ermitteln
configTime(2 * 3600, 0, "0.de.pool.ntp.org", "ptbtime1.ptb.de");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
client.setInsecure();
}
void WiFiStart()
{
ulReconncount++;
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
IPAddress ip();
IPAddress dns();
IPAddress gateway();
IPAddress subnet();
WiFi.config(ip, dns, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop()
{
//Hauptschalter: Jede Nacht oder über den Hauptschalter(Webserver) wird der Pool ausgeschaltet. Umwälzpumpe geht immer(zur eingestellten Zeit).
if(hauptschalterPool == LOW){
m1.digitalWrite(poolSteuerung, LOW);
}
if(hauptschalterPool == HIGH){
m1.digitalWrite(poolSteuerung, HIGH);
}
if (((aktuelleStunde == 01) && (aktuelleMinute == 30)) or (hauptschalter == LOW)) {
heizungPool = HIGH;
ledBeleuchtung = HIGH;
klappeFernseherRunter = LOW;
hauptschalter = HIGH;
hauptschalterPool = HIGH;
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = LOW;
farbeAendern = LOW;
}
//Heizung: Wird die Heizung eingeschaltet (Heizung hat vorrang bei Frost) kann über die Solltemperatur (Webseerver) die Temperatur vom Pool gesteuert werden.
if (heizungPool == LOW) {
netzteilHeizung = LOW;
umwaelzpumpeHeizung = LOW;
if (((tempPool + 100) - temperaturSoll) >= 100) {
pumpeHeizungHeizen = HIGH;
ausschaltZeitHeizung = millis();
einschaltZeitHeizung = millis();
}
if (((tempPool + 100) - temperaturSoll) < 99) {
heizenLauuft = millis();
if (millis() - einschaltZeitHeizung < 840000) {
pumpeHeizungHeizen = LOW;
ausschaltZeitHeizung = millis();
}
if (millis() - einschaltZeitHeizung >= 840000) {
pumpeHeizungHeizen = HIGH;
if (millis() - ausschaltZeitHeizung >= 10000) {
einschaltZeitHeizung = millis();
}
}
}
}
if (heizungPool == HIGH) {
umwaelzpumpeHeizung = HIGH;
netzteilHeizung = HIGH;
pumpeHeizungHeizen = HIGH;
ausschaltZeitHeizung = millis();
einschaltZeitHeizung = millis();
statusGasLeer = HIGH;
}
//Frost: Fällt die Temperatur unter 1° wird die Frostschaltung aktiviert. Die Heizungspumpe wird alle 15 Minuten für 2 Minuten eingeschaltet um wärmeres Wasser durch die Heizung zu Pumpen. Bei aktiver Heizung wird die
//Frostschaltung deaktiviert fertig
if (tempAusen < 1) {
frost = LOW;
}
if (tempAusen >= 1) {
frost = HIGH;
}
if ((frost == LOW) && (pumpeHeizungHeizen == HIGH) && (millis() - heizenLauuft > 30000)) { //Bei Frost und Heizungspumpe aus (Falls Heizunng Pool aktiv ist aktiviert sich die Frostschaltung erst
umwaelzpumpeFrost = LOW; // nach 30 Sekunden wegen der 15 Minuten abschaltung der Gasheizung
netzteilFrost = LOW;
if (millis() - einschaltZeitFrost < 60000) { // 1 Minuten ein
pumpeHeizungFrost = LOW;
ausschaltZeitFrost = millis();
}
if (millis() - einschaltZeitFrost >= 60000) {
pumpeHeizungFrost = HIGH;
if (millis() - ausschaltZeitFrost >= 900000) { // 15 Minuten aus
einschaltZeitFrost = millis();
}
}
}
if (frost == HIGH) {
ausschaltZeitFrost = millis();
einschaltZeitFrost = millis();
pumpeHeizungFrost = HIGH;
umwaelzpumpeFrost = HIGH;
netzteilFrost = HIGH;
}
//Led Beleuchtung: Wird eine Farbe gewählt wird (Webserver), wird die Led Beleuchtung und das Netzteil eingeschaltet.
if ((ledAus == LOW) && (farbeAendern == LOW)) {
netzteilLed = HIGH;
analogWrite(ledWeis, 0);
analogWrite(ledBlau, 0);
analogWrite(ledRot, 0);
analogWrite(ledGruen, 0);
farbeAendern = HIGH;
}
if ((weis == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledBlau, 0);
analogWrite(ledRot, 0);
analogWrite(ledGruen, 0);
analogWrite(ledWeis, (255 * dimmwert));
farbeAendern = HIGH;
}
if ((blau == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledRot, 0);
analogWrite(ledGruen, 0);
analogWrite(ledBlau, (255 * dimmwert));
farbeAendern = HIGH;
}
if ((gruen == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledBlau, 0);
analogWrite(ledRot, 0);
analogWrite(ledGruen, (255 * dimmwert));
farbeAendern = HIGH;
}
if ((rot == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledBlau, 0);
analogWrite(ledGruen, 0);
analogWrite(ledRot, (255 * dimmwert));
farbeAendern = HIGH;
}
if ((gelb == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledBlau, 0);
analogWrite(ledRot, (255 * dimmwert));
analogWrite(ledGruen, (255 * dimmwert));
farbeAendern = HIGH;
}
if ((pink == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledRot, (255 * dimmwert));
analogWrite(ledGruen, (20 * dimmwert));
analogWrite(ledBlau, (147 * dimmwert));
farbeAendern = HIGH;
}
if ((lila == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledRot, (102 * dimmwert));
analogWrite(ledGruen, (0 * dimmwert));
analogWrite(ledBlau, (204 * dimmwert));
farbeAendern = HIGH;
}
if ((orange == LOW) && (farbeAendern == LOW)) {
netzteilLed = LOW;
analogWrite(ledWeis, 0);
analogWrite(ledBlau, 0);
analogWrite(ledRot, (255 * dimmwert));
analogWrite(ledGruen, (127 * dimmwert));
farbeAendern = HIGH;
}
//Fernseher Klappe auf und zu
if (klappeFernseherStop == LOW) {
m1.digitalWrite(rolladenein, HIGH);
m1.digitalWrite(rolladenbewegen, HIGH);
zeitHoch = millis();
zeitRunter = millis();
}
if (klappeFernseherHoch == LOW) {
m1.digitalWrite(rolladenein, LOW);
m1.digitalWrite(rolladenbewegen, HIGH);
zeitRunter = millis();
}
if (klappeFernseherRunter == LOW) {
klappeFernseherStop = HIGH;
m1.digitalWrite(rolladenein, LOW);
m1.digitalWrite(rolladenbewegen, LOW);
if (millis() - zeitRunter > 30000) {
klappeFernseherRunter = HIGH;
klappeFernseherStop = LOW;
}
}
//Umwälzpumpe: Die Pumpe wird zum Filtern für die eingestellten Stunden pro Tag eingeschaltet
if ((aktuelleStunde == 12) && (aktuelleMinute == 30)) {
filtern = LOW;
umwaelzpumpeFiltern = LOW;
}
if ((aktuelleStunde == (12 + umwaelzStunden)) && (aktuelleMinute == 30)) {
filtern = HIGH;
umwaelzpumpeFiltern = HIGH;
}
// Wenn Filtern aktiviert, wird die Jet Pumpe für 20 Sekunden dazu geschaltet
if ((filtern == LOW) && (millis() - pumpeDüseZeit < 20000)) {
m1.digitalWrite(PumpeDuesen, LOW);
}
if ((filtern == LOW) && (millis() - pumpeDüseZeit >= 20000)) {
m1.digitalWrite(PumpeDuesen, HIGH);
}
if (filtern == HIGH) {
pumpeDüseZeit = millis();
}
//Umwälzpumpe
if ((umwaelzpumpeHeizung == LOW) or (umwaelzpumpeFrost == LOW) or (umwaelzpumpeFiltern == LOW)) {
umwaelzpumpe = LOW;
}
if ((umwaelzpumpeHeizung == HIGH) && (umwaelzpumpeFrost == HIGH) && (umwaelzpumpeFiltern == HIGH)) {
umwaelzpumpe = HIGH;
}
if (umwaelzpumpe == LOW) {
m1.digitalWrite(umwaelz, LOW);
}
if (umwaelzpumpe == HIGH) {
m1.digitalWrite(umwaelz, HIGH);
}
//Netzteil
if ((netzteilLed == LOW) or (netzteilHeizung == LOW) or (netzteilFrost == LOW)) {
netzteilStatus = LOW;
}
if ((netzteilLed == HIGH) && (netzteilHeizung == HIGH) && (netzteilFrost == HIGH)) {
netzteilStatus = HIGH;
}
if (netzteilStatus == LOW) {
m1.digitalWrite(netzteil, LOW);
}
if (netzteilStatus == HIGH) {
m1.digitalWrite(netzteil, HIGH);
}
//Heizungspumpe
if ((pumpeHeizungHeizen == LOW) or (pumpeHeizungFrost == LOW)) {
m1.digitalWrite(pumpeHeizung, LOW);
pumpeHeizungLauuft = LOW;
}
if ((pumpeHeizungHeizen == HIGH) && (pumpeHeizungFrost == HIGH)) {
m1.digitalWrite(pumpeHeizung, HIGH);
pumpeHeizungLauuft = HIGH;
pumpeHeizungLaufzeit = millis();
}
// überwachung Füllstand Gasflasche. Wenn Flasche leer wird eine Telegram Nachricht gesendet
if ((pumpeHeizungLauuft == LOW) && (millis() - pumpeHeizungLaufzeit > 120000) && (frost == HIGH)) {
if (((tempNachHeizung - tempPool) < 5) && (statusGasLeer == HIGH)) {
bot.sendMessage(userID, "Gas leer", "");
Serial.println("Gas leer");
statusGasLeer = LOW;
}
}
//Telegram, Temperatur und Uhrzeit wird alle 10 Sekunden abfragen
if (millis() - abfrageZeitTemperatur > 10000) {
//Prüfe Telegram Chat
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while (numNewMessages)
{
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
//Temperatursensoren auslesen
sensors.requestTemperatures();
tempPool = sensors.getTempC(sensor1);
tempNachHeizung = sensors.getTempC(sensor2);
tempAusen = sensors.getTempC(sensor3);
Serial.print("Temperatur Pool: ");
Serial.print(tempPool);
Serial.println("ºC");
Serial.print("Temperatur nach Heizung: ");
Serial.print(tempNachHeizung);
Serial.println("ºC");
Serial.print("Temperatur Außen: ");
Serial.print(tempAusen, 1);
Serial.println("ºC");
//Zeit auslesen
time_t now = time(nullptr);
String time = String(ctime(&now));
time.trim();
time.substring(0, 19).toCharArray(time_value, 20);
struct tm *timeinfo = localtime(&now);
aktuelleMinute = timeinfo-> tm_min;
aktuelleStunde = timeinfo-> tm_hour;
Serial.print("Uhrzeit: ");
Serial.println(time_value);
abfrageZeitTemperatur = millis();
}
//Webserver
// check if WLAN is connected
if (WiFi.status() != WL_CONNECTED)
{
WiFiStart();
}
// Check if a client has connected
WiFiClient client = server.available();
if (!client)
{
return;
}
// Wait until the client sends some data
Serial.println("new client");
unsigned long ultimeout = millis() + 250;
while (!client.available() && (millis() < ultimeout) )
{
delay(1);
}
if (millis() > ultimeout)
{
Serial.println("client connection time-out!");
return;
}
// Read the first line of the request
String sRequest = client.readStringUntil('\r');
//Serial.println(sRequest);
client.flush();
// stop client, if request is empty
if (sRequest == "")
{
Serial.println("empty request! - stopping client");
client.stop();
return;
}
// get path; end of path is either space or ?
// Syntax is e.g. GET /?pin=MOTOR1STOP HTTP/1.1
String sPath = "", sParam = "", sCmd = "";
String sGetstart = "GET ";
int iStart, iEndSpace, iEndQuest;
iStart = sRequest.indexOf(sGetstart);
if (iStart >= 0)
{
iStart += +sGetstart.length();
iEndSpace = sRequest.indexOf(" ", iStart);
iEndQuest = sRequest.indexOf("?", iStart);
// are there parameters?
if (iEndSpace > 0)
{
if (iEndQuest > 0)
{
// there are parameters
sPath = sRequest.substring(iStart, iEndQuest);
sParam = sRequest.substring(iEndQuest, iEndSpace);
}
else
{
// NO parameters
sPath = sRequest.substring(iStart, iEndSpace);
}
}
}
///////////////////////////////////////////////////////////////////////////////
// output parameters to serial, you may connect e.g. an Arduino and react on it
///////////////////////////////////////////////////////////////////////////////
if (sParam.length() > 0)
{
int iEqu = sParam.indexOf("=");
if (iEqu >= 0)
{
sCmd = sParam.substring(iEqu + 1, sParam.length());
Serial.println(sCmd);
}
}
///////////////////////////
// format the html response
///////////////////////////
String sResponse, sHeader;
////////////////////////////
// 404 for non-matching path
////////////////////////////
if (sPath != "/")
{
sResponse = "<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL was not found on this server.</p></body></html>";
sHeader = "HTTP/1.1 404 Not found\r\n";
sHeader += "Content-Length: ";
sHeader += sResponse.length();
sHeader += "\r\n";
sHeader += "Content-Type: text/html\r\n";
sHeader += "Connection: close\r\n";
sHeader += "\r\n";
}
///////////////////////
// format the html page
///////////////////////
else
{
ulReqcount++;
sResponse = "<html><head><title>Whirlpool</title></head><body>";
sResponse += "<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">";
sResponse += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">";
sResponse += "<h1>Whirlpool Steuerung</h1>";
sResponse += "<p> <a href=\"?pin=Aktualisieren\"><button>Aktualisieren</button></a></p>";
sResponse += "Temp. Pool: ";
sResponse += String (tempPool, 1);
sResponse += "°<BR>";
sResponse += "Temp. Heizung: ";
sResponse += String (tempNachHeizung, 1);
sResponse += "°<BR>";
sResponse += "Temp. Außen: ";
sResponse += String (tempAusen, 1);
sResponse += "°<BR>";
sResponse += "<FONT SIZE=+1>";
sResponse += "<p>Hauptschalter: <a href=\"?pin=hauptschalterEin\"><button>Einschalten</button></a> <a href=\"?pin=hauptschalterAus\"><button>Ausschalten</button></a></p>";
sResponse += "<p>Heizung: <a href=\"?pin=heizungEin\"><button>Einschalten</button></a> <a href=\"?pin=heizungAus\"><button>Ausschalten</button></a></p>";
sResponse += "<p>Soll Wassertemperatur: <a href=\"?pin=Temperaturtief\"><button>Kälter</button></a> <a href=\"?pin=Temperaturhoch\"><button>Wärmer</button></a> ";
if ((sCmd.indexOf("Temperaturtief") >= 0) && (temperaturSoll > 10))
{
temperaturSoll--;
}
if ((sCmd.indexOf("Temperaturhoch") >= 0) && (temperaturSoll < 42))
{
temperaturSoll++;
}
sResponse += String (temperaturSoll);
sResponse += "°";
sResponse += "<p>";
sResponse += "<p>LED Beleuchtung: <a href=\"?pin=ledAus\"><button>Ausschalten</button></a> Dimmer: <a href=\"?pin=dunkler\"><button> - </button></a> <a href=\"?pin=heller\"><button> + </button></a></p>";
if (sCmd.indexOf("dunkler") >= 0)
{
if (dimmwert > 0.1) {
dimmwert = dimmwert - 0.1;
farbeAendern = LOW;
}
}
if (sCmd.indexOf("heller") >= 0)
{
if (dimmwert < 1.0) {
dimmwert = dimmwert + 0.1;
farbeAendern = LOW;
}
}
sResponse += "<p><a href=\"?pin=weis\"><button>Weiß</button></a> <a href=\"?pin=blau\"><button>Blau</button></a> <a href=\"?pin=gruen\"><button>Grün</button></a> <a href=\"?pin=rot\"><button>Rot</button></a> <p>";
sResponse += "<a href=\"?pin=gelb\"><button>Gelb</button></a> <a href=\"?pin=pink\"><button>Pink</button></a> <a href=\"?pin=lila\"><button>Lila</button></a> <a href=\"?pin=orange\"><button>Orange</button></a></p>";
sResponse += "<p>Fernseher Tür: <a href=\"?pin=tuerHoch\"><button>Hoch</button></a> <a href=\"?pin=tuerStop\"><button>Stop</button></a> <a href=\"?pin=tuerRunter\"><button>Runter</button></a></p>";
//////////////////////
// react on parameters
//////////////////////
if (sCmd.length() > 0)
{
if (sCmd.indexOf("hauptschalterEin") >= 0)
{
hauptschalterPool = LOW;
}
if (sCmd.indexOf("hauptschalterAus") >= 0)
{
hauptschalter = LOW;
}
if (sCmd.indexOf("heizungEin") >= 0)
{
heizungPool = LOW;
}
if (sCmd.indexOf("heizungAus") >= 0)
{
heizungPool = HIGH;
}
if (sCmd.indexOf("ledAus") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = LOW;
farbeAendern = LOW;
}
if (sCmd.indexOf("weis") >= 0)
{
weis = LOW;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("blau") >= 0)
{
weis = HIGH;
blau = LOW;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("gruen") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = LOW;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("rot") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = LOW;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("gelb") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = LOW;
pink = HIGH;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("pink") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = LOW;
lila = HIGH;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("lila") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = LOW;
orange = HIGH;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("orange") >= 0)
{
weis = HIGH;
blau = HIGH;
gruen = HIGH;
rot = HIGH;
gelb = HIGH;
pink = HIGH;
lila = HIGH;
orange = LOW;
ledAus = HIGH;
farbeAendern = LOW;
}
if (sCmd.indexOf("tuerHoch") >= 0)
{
klappeFernseherStop = HIGH;
klappeFernseherRunter = HIGH;
klappeFernseherHoch = LOW;
zeitHoch = millis();
}
if (sCmd.indexOf("tuerStop") >= 0)
{
klappeFernseherHoch = HIGH;
klappeFernseherRunter = HIGH;
klappeFernseherStop = LOW;
}
if (sCmd.indexOf("tuerRunter") >= 0)
{
klappeFernseherStop = HIGH;
klappeFernseherHoch = HIGH;
klappeFernseherRunter = LOW;
zeitRunter = millis();
}
}
sResponse += "Heizung: ";
if (heizungPool == LOW) {
sResponse += "Ein<BR>";
}
if (heizungPool == HIGH) {
sResponse += "Aus<BR>";
}
sResponse += "<p>Soll Umwälzpumpe: <a href=\"?pin=stundeweniger\"><button> - </button></a> <a href=\"?pin=stundemehr\"><button> + </button></a> ";
if ((sCmd.indexOf("stundeweniger") >= 0) && (umwaelzStunden > 1))
{
umwaelzStunden--;
}
if ((sCmd.indexOf("stundemehr") >= 0) && (umwaelzStunden < 8))
{
umwaelzStunden++;
}
sResponse += String (umwaelzStunden);
sResponse += " Stunden";
sResponse += "<p>";
sResponse += "Umwälzpumpe: ";
if (umwaelzpumpe == LOW) {
sResponse += "Ein<BR>";
}
if (umwaelzpumpe == HIGH) {
sResponse += "Aus<BR>";
}
sResponse += "<FONT SIZE=-2>";
sResponse += "<BR>Aufrufzähler=";
sResponse += ulReqcount;
sResponse += " - Verbindungszähler=";
sResponse += ulReconncount;
sResponse += "<BR>";
sResponse += "Whirlpool 11/2023<BR>";
sResponse += "</body></html>";
sHeader = "HTTP/1.1 200 OK\r\n";
sHeader += "Content-Length: ";
sHeader += sResponse.length();
sHeader += "\r\n";
sHeader += "Content-Type: text/html\r\n";
sHeader += "Connection: close\r\n";
sHeader += "\r\n";
}
// Send the response to the client
client.print(sHeader);
client.print(sResponse);
// and stop the client
client.stop();
abfrageZeitTemperatur = millis();
Serial.println("Client disonnected");
}