MQTT Homie Beispiel
Ein kleines Beispiel, um den Start mit homie zu erleichtern,.
Erklärungen gitb es bei Jan-Piet: http://jpmens.net/2016/03/22/mqtt-on-an-esp8266-thing/
Das Beispiel unten ist nicht besonders gut, da mit nicht bewusst war, dass das ‘Base topic’ auch ein ‘/’ am Ende erhalten muss: Also statt Tortuga sollte dort Tortuga/ stehen.
Der Code ESP_homie.c (s.u.) wird auf den ESP hochgeladen.
Auf dem MQTT-Server kann man nun Befehle absetzen:
mosquitto_pub -t 'Tortuga133edbe0/relay/on/set' -m 'true' -h 192.168.178.72
Erläuterung:
MQTT-Nachricht -t 'Tortuga133edbe0/relay/on/set'
MQTT-Message -m 'true' MQTT-Server -h 192.168.172.72
Oder mit einem MQTT-Tool wie z.B. MQTT.fx
Zuerst den Thema abonnieren
Den Befehl senden wie bei mosquitto_pub
Anschließend kann man dies bei MQTT.fx sehen
Im debug -Fenster der arduino IDE bzw. eclipse, sieht man, das der input handler aufgerufen wurde.
Nicht jedoch welche Nachrichten gesendet werden.
ESP_Homie.c
#include <Homie.h>
#define RELAY_PIN 16
// mosquitto_pub -t 'Tortuga133edbe0/relay/on/set' -m 'true' -h 192.168.178.72
// define Node: 'relay'
HomieNode relayNode("relay", "relay");
// define property : on
bool relayHandler(String message)
{
if (message == "true") {
digitalWrite(RELAY_PIN, HIGH);
Homie.setNodeProperty(relayNode, "on", "true");
} else if (message == "false") {
digitalWrite(RELAY_PIN, LOW);
Homie.setNodeProperty(relayNode, "on", "false");
} else {
return false;
}
return true;
}
void setup()
{
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
Homie.setFirmware("h-sensor", "1.0.1");
relayNode.subscribe("on", relayHandler);
Homie.registerNode(relayNode);
Homie.setup();
}
void loop()
{
Homie.loop();
}