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:
[codesyntax lang=”bash”]
mosquitto_pub -t 'Tortuga133edbe0/relay/on/set' -m 'true' -h 192.168.178.72
[/codesyntax]
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
[codesyntax lang=”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(); }
[/codesyntax]