Hallo,
ich bin relativer Anfänger in der Programmierung mit Ardunio.
Ich habe mir mal das Beispiel aus dem PubSubClient genommen und möchte jetzt zwei verschiedene Werte an den ESP per MQTT übergeben. Aus den Beispielen werde ich nicht so ganz schlau. Im CALLBACK, durch den die Änderungen durchgeführt werden, die ich im Broker eintrage, wird ja ein TOPIC übergeben.
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
// Switch on the LED if an 1 was received as first character
if ((char)payload[0] == '1') {
digitalWrite(13, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
} else {
digitalWrite(13, HIGH); // Turn the LED off by making the voltage HIGH
}
}
Woher er weiß, welchen Wert er für den TOPIC nehmen soll, erschließt sich mir nicht so ganz. Ich nehme nur an, dass der TOPIC aus dem client.subscribe(“inTopic”) kommt.
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("outTopic", "hello world");
// ... and resubscribe
client.subscribe("inTopic");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
Wie kann ich aber z.B. einen Wert für das Umschalten eines Relais (/cmnd/ESP-Client/Relais) und einen weiteren Werte für das Umstellen von Sommer- auf Winterzeit (/cmnd/ESP-Client/MEZ-MESZ) übergeben?