Danke Dir , für alle für die es von Interesse ist wäre hier der Code .
Wir schalten hier von unserem Auto aus die Heizung wahlweise auf Forstfrei oder auf Heizbetrieb unseren WLED Streifen welchen wir als Umfeld Beleuchtung nutzen. Einen
Arbeitsscheinwerfer und Innenbeleuchtung .
Wir nutzen einen ESP8266 , das Gehäuse ist 3D gedruckt , und die Taster aus Amazon mit LED Beleuchtung welche ein Feedback über den Schaltzustand geben also Aktiviert LED Leuchtet. Evtl. möchte jemand es auch nutzen
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = “Dein Netzwerk”;
const char* password = “dein Netzwerk Passwort”;
const char* mqtt_server = “dein Mqtt Server”;
const int mqtt_port = 1883;
const char* mqtt_topic_relay_5_power = “pkw/cmnd/relay/5/POWER”;
const char* mqtt_topic_relay_7_power = “pkw/cmnd/relay/7/POWER”;
const char* mqtt_topic_wled_control = “wled/cmnd/white”;
const char* mqtt_topic_heater_power_hot = “pkw/cmnd/heater/POWER/23”;
const char* mqtt_topic_heater_power_cold = “pkw/cmnd/heater/POWER/12”;
const int buttonPin1 = D2; // GPIO Taster 1
const int buttonPin2 = D3; // GPIO Taster 2
const int buttonPin3 = D4; // GPIO Taster 3
const int buttonPin4 = D7; // GPIO Taster 4
const int ledPin1 = D5; // GPIO LED Feedback 1
const int ledPin2 = D6; // GPIO LED Feedback 2
const int ledPin3 = D8; // GPIO LED Feedback 3
const int ledPin4 = D10; // GPIO LED Feedback 4
WiFiClient espClient;
PubSubClient client(espClient);
bool ledState1 = false;
bool ledState2 = false;
bool ledState3 = false;
bool ledState4 = false;
unsigned long lastMillis = 0;
const long interval = 300000; // 5 Minuten
void setup_wifi() {
delay(10);
Serial.begin(115200);
Serial.println();
Serial.print("Verbinde mit ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi verbunden”);
Serial.println("IP-Adresse: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print(“Nachricht erhalten [”);
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void reconnect() {
while (!client.connected()) {
Serial.print(“Versuche MQTT-Verbindung…”);
if (client.connect(“ESP8266Client”)) {
Serial.println(“verbunden”);
// Taster-Status initial senden
client.publish(mqtt_topic_relay_5_power, ledState1 ? “true” : “false”);
client.publish(mqtt_topic_relay_7_power, ledState2 ? “true” : “false”);
client.publish(mqtt_topic_heater_power_hot, ledState4 ? “on” : “off”);
// Taster überwachen
client.subscribe(mqtt_topic_relay_5_power);
client.subscribe(mqtt_topic_relay_7_power);
client.subscribe(mqtt_topic_wled_control);
client.subscribe(mqtt_topic_heater_power_hot);
} else {
Serial.print(“fehlgeschlagen, rc=”);
Serial.print(client.state());
Serial.println(" Versuche es in 5 Sekunden erneut");
delay(5000);
}
}
}
void setup() {
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Taster 1 abfragen
if (digitalRead(buttonPin1) == LOW) {
// LED 1-Zustand umkehren
ledState1 = !ledState1;
// LED 1 steuern
digitalWrite(ledPin1, ledState1 ? HIGH : LOW);
// MQTT-Nachricht für Relais 5 senden
client.publish(mqtt_topic_relay_5_power, ledState1 ? "true" : "false");
// Entprellen
delay(500);
}
// Taster 2 abfragen
if (digitalRead(buttonPin2) == LOW) {
// LED 2-Zustand umkehren
ledState2 = !ledState2;
// LED 2 steuern
digitalWrite(ledPin2, ledState2 ? HIGH : LOW);
// MQTT-Nachricht für Relais 8 senden
client.publish(mqtt_topic_relay_7_power, ledState2 ? "true" : "false");
// Entprellen
delay(500);
}
// Taster 3 abfragen
if (digitalRead(buttonPin3) == LOW) {
// LED 3-Zustand umkehren
ledState3 = !ledState3;
// LED 3 steuern
digitalWrite(ledPin3, ledState3 ? HIGH : LOW);
// WLED Strip steuern
if (ledState3) {
client.publish(mqtt_topic_wled_control, "ON");
} else {
client.publish(mqtt_topic_wled_control, "OFF");
}
// Entprellen
delay(500);
}
// Zeitgesteuertes Ausschalten des WLED Strips
if (ledState3 && (millis() - lastMillis >= interval)) {
lastMillis = millis();
client.publish(mqtt_topic_wled_control, “OFF”);
}
// Taster 4 abfragen
static unsigned long lastButtonPressTime = 0;
if (digitalRead(buttonPin4) == LOW) {
if (millis() - lastButtonPressTime > 1000) {
// LED 4-Zustand umkehren
ledState4 = !ledState4;
// LED 4 steuern
digitalWrite(ledPin4, ledState4 ? HIGH : LOW);
// MQTT-Nachricht für Heater senden
if (ledState4) {
client.publish(mqtt_topic_heater_power_hot, "on");
} else {
client.publish(mqtt_topic_heater_power_cold, "on");
}
}
lastButtonPressTime = millis();
}
}