//Basiert auf https://www.heise.de/select/ct/2018/17/1534215254552977 //MQTT reconnect von https://randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/ //ezButton Library https://github.com/ArduinoGetStarted/button #include #include #include #include #include const char* wifi_ssid = "HEIMNETZ"; const char* wifi_password = "PASSWORT"; const char *deviceName = "Klingel"; #define MQTT_USER "MQTTUSER" #define MQTT_PASSWORD "MQTTPWD" IPAddress mqttserver(192, 168, 178, 11); WiFiClient espClient; PubSubClient client(espClient); ezButton button(12); void setup() { pinMode(ledPin, OUTPUT); // Button pressed - Kontrolle >> kann gelöscht werden Serial.begin(115200); Serial.println("Booting"); button.setDebounceTime(200); WiFi.hostname(deviceName); WiFi.begin(wifi_ssid, wifi_password); WiFi.mode(WIFI_STA); while (WiFi.status() != WL_CONNECTED) { delay(50); } client.setServer(mqttserver, 1883); client.connect(deviceName,MQTT_USER,MQTT_PASSWORD); client.setKeepAlive(40); if (client.connected()) { client.publish("klingel/status", "MQTT connected."); } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect(deviceName,MQTT_USER,MQTT_PASSWORD)) { client.publish("klingel/status", "MQTT reconnected."); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { button.loop(); //MQTT Reconnect if (!client.connected()) { reconnect(); } if (button.isPressed()) { client.publish("klingel/klingel", "1"); Serial.println("Button pressed"); } if (button.isReleased()) { client.publish("klingel/klingel", "0"); Serial.println("Button released"); } }