mqtt:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
mqtt:start [2016/04/26 05:56] – [Wie] chasermqtt:start [2019/12/15 00:06] (aktuell) – updated domains raven
Zeile 1: Zeile 1:
-====== MQTT ======+====== MQTT [deprecated] ======
 ===== Was ===== ===== Was =====
 https://de.wikipedia.org/wiki/MQ_Telemetry_Transport https://de.wikipedia.org/wiki/MQ_Telemetry_Transport
Zeile 8: Zeile 8:
  
 MQTT hat den Vorteil das jedes Gerät nur seine eigene Funktion kennt. MQTT hat den Vorteil das jedes Gerät nur seine eigene Funktion kennt.
-Misst ein Sensor  (Schalter, Temperatursensor, Fenstersensor, Türschloss etc.) ein Event setzt dieser nur eine entsprechende Nachricht auf dem Broker (mosquitto auf sushi.binary.kitchen) ab.+Misst ein Sensor  (Schalter, Temperatursensor, Fenstersensor, Türschloss etc.) ein Event setzt dieser nur eine entsprechende Nachricht auf dem Broker (mosquitto auf pizza.binary.kitchen) ab.
  
 Diese Nachricht wird dann von Node-Red gelesen, verarbeitet und einem entsprechende Aktion an einem Aktor (Lampe, Heizungsthermostat, Web-API, Twitter etc.) ausgelöst. Diese Nachricht wird dann von Node-Red gelesen, verarbeitet und einem entsprechende Aktion an einem Aktor (Lampe, Heizungsthermostat, Web-API, Twitter etc.) ausgelöst.
Zeile 17: Zeile 17:
  
 Ein einfaches System besteht aus einem Senor und einem Aktor (es können aber theoretisch beliebig viele Sensoren mit beliebig vielen Aktoren verknüpft werden. Ein einfaches System besteht aus einem Senor und einem Aktor (es können aber theoretisch beliebig viele Sensoren mit beliebig vielen Aktoren verknüpft werden.
-Der Aktor muss so programmiert werden das er eine entsprechende Nachricht an den Broker (mosquitto auf sushi.binary.kitchen sendet, siehe auch [[mqtt:start#nachrichtenformat|Nachrichtenformat]]).+Der Aktor muss so programmiert werden das er eine entsprechende Nachricht an den Broker (mosquitto auf pizza.binary.kitchen sendet, siehe auch [[mqtt:start#nachrichtenformat|Nachrichtenformat]]).
 Node-Red liest dann die Nachrichten, bereitet sie auf (manipulation per Javascript ist möglich), erstellt daraus eine neue MQTT-Nachricht (unter einem Topic auf das der Aktor subscribed und löst damit die entsprechende Reaktion am Aktor aus) oder triggert eine Web-Api etc. Node-Red liest dann die Nachrichten, bereitet sie auf (manipulation per Javascript ist möglich), erstellt daraus eine neue MQTT-Nachricht (unter einem Topic auf das der Aktor subscribed und löst damit die entsprechende Reaktion am Aktor aus) oder triggert eine Web-Api etc.
 Ein Aktor sollte niemals direkt auf ein MQTT-Topic eines Sensors subscribed werden sondern ausschließlich auf Topics die von node-red generiert werden. Ein Aktor sollte niemals direkt auf ein MQTT-Topic eines Sensors subscribed werden sondern ausschließlich auf Topics die von node-red generiert werden.
Zeile 29: Zeile 29:
 ==== Nachrichtenformat ==== ==== Nachrichtenformat ====
  
-Jede Nachricht besteht aus einem Topic und einem Value+Jede Nachricht besteht aus einem Topic und einem Payload
  
 Das **Topic** muss folgendes Format erfüllen: Das **Topic** muss folgendes Format erfüllen:
Zeile 39: Zeile 39:
 ^ ::: | ::: | kitchen/lock/frontdoor/00:0a:95:9d:68:16 | ^ ::: | ::: | kitchen/lock/frontdoor/00:0a:95:9d:68:16 |
 ^ ::: | ::: | kitchen/windowstatus/cellar/00:0a:95:9d:68:16 | ^ ::: | ::: | kitchen/windowstatus/cellar/00:0a:95:9d:68:16 |
 +^ ::: | ::: | kitchen/switches/android/00:0a:95:9d:68:16 |
 ^ Aktor (subscriber)  | kitchen/<type>/<location><mac> | kitchen/heating/kitchen/00:0a:95:9d:68:16 | ^ Aktor (subscriber)  | kitchen/<type>/<location><mac> | kitchen/heating/kitchen/00:0a:95:9d:68:16 |
 +^ ::: | ::: | kitchen/notificator/android/00:0a:95:9d:68:16 |
  
-Der **Value** ist immer ein String hat aber keine Formats- bzwTypenkonvention. +<note important>Handyapps etcbitte nicht unter portable klassifizieren sondern mit dem jeweiligen OS (z.B.: android|ios|blackbarry|windows). Die Klasse Portable ist für batteriebetriebene Sensoren und Aktoren gedacht.</note>
-Das Parsen des Values muss in Node-Red entsprechend durchgeführt werden.+
  
 +Die **Payload** ist immer ein String und sollte ein Command und eine Value entsprechend folgender Tabelle enthalten:
  
 +^ Message ^ Command ^ Value ^ potentielle Interpretation|
 +^ colorchange:lamp1#FFFFFF | colorchange | lamp1#FFFFFF | Schaltet Lampe 1 auf Weiss |
 +^ colorchange:lamp2#000000 | colorchange | lamp2#000000 | Schaltet Lampe 2 aus |
 +
 +Command und Value müssen durch eine Raute (#) getrennt werden, Werte innerhalb der Value werden durch Doppelpunkte getrennt.
 +
 +<note important>Jegliche interpretation der Payload muss durch Node-Red erfolgen!</note>
 =====  Abschaltung =====  =====  Abschaltung ===== 
  
Zeile 52: Zeile 61:
  
 ===== Software =====  ===== Software ===== 
 +==== Libraries zum entwickeln ====
 +
 +<note>Beispiele zum Entwickeln stelle ich auf Github unter: https://github.com/dragonchaser/bkMqttBoilerplate </note>
 +
  
 ==== Linux-Server ==== ==== Linux-Server ====
  
-Broker und Node-Red sind im Kitchen-Wlan unter **sushi.binary.kitchen** verfügbar.+Broker und Node-Red sind im Kitchen-(W)Lan unter **pizza.binary.kitchen** verfügbar.
  
 === Broker === === Broker ===
  • mqtt/start.1461650180.txt.gz
  • Zuletzt geändert: 2016/04/26 05:56
  • von chaser