#include #include #include "config.h" const char* password = "...................................."; const char* MQTT_BROKER = "10.1.3.252"; IPAddress dns(10, 1, 3, 236); IPAddress gateway(10, 1, 3, 236); IPAddress subnet(255, 255, 255, 0); WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; char msg[50]; int value = 0; // Hilfsvariablen Output volatile byte value_14 = LOW; volatile byte value_13 = LOW; // Hilfsvariablen Differenz zu IPS volatile byte ChangeIPS = LOW; volatile byte valueIPS_13 = LOW; volatile byte valueIPS_14 = LOW; boolean eingang1 = 0; boolean eingang2 = 0; char string_ON[] = "ON"; char string_OFF[] = "OFF"; void setup() { Serial.begin(115200); setup_wifi(); client.setServer(MQTT_BROKER, 1024); client.setCallback(callback); client.subscribe("MQTT-Doppelschalter/Power1"); client.subscribe("MQTT-Doppelschalter/Power2"); client.subscribe("MQTT-Doppelschalter/Status"); // Ein-/Ausgaenge definieren pinMode(14, OUTPUT); pinMode(13, OUTPUT); pinMode(12, INPUT); pinMode(10, INPUT); } void setup_wifi() { WiFi.disconnect(); WiFi.setAutoConnect(false); WiFi.mode(WIFI_STA); WiFi.config(ip, dns, gateway, subnet); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } // Serial.println("bin da 3"); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println(Node_Name); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Received message ["); Serial.print(topic); Serial.print("] "); char msg[length+1]; for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); msg[i] = (char)payload[i]; } Serial.println(); msg[length] = '\0'; Serial.println(msg); if(strcmp(msg,"ON")==0){ digitalWrite(13, HIGH); } else if(strcmp(msg,"OFF")==0){ digitalWrite(13, LOW); } } void reconnect() { while (!client.connected()) { Serial.print("Reconnecting..."); if (!client.connect("ESP8266Client")) { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" retrying in 5 seconds"); delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); snprintf (msg, 50, "Alive since %ld milliseconds", millis()); // Serial.print("Publish message: "); // Serial.println(msg); snprintf (msg, 50, ""); // Serial.println(msg); strcat(msg, "{\"Switch1\":\""); strcat(msg, string_ON); strcat(msg, "\",\"Switch2\":\""); strcat(msg, string_OFF); strcat(msg, "\"}"); // Serial.println(msg); client.publish("MQTT-Doppelschalter/Power1",string_ON); client.publish("MQTT-Doppelschalter/Power2",string_OFF); client.publish("MQTT-Doppelschalter/Status",msg); delay(5000); }