Arduino -- Elektronik-Experimentierkasten -- Lectron Lehrsytem -- Jugendarbeit -- Elektronik -- Amateurfunk -- Notfunk -- Shop

MQTT-Temperatur-Sensor

In der Haus-Automatisation wird oft MQTT (Message Queuing Telemetry Transport) verwendet.

Dieser Arduino-Sketch liest Messwerte aus einem Dallas/Maxim DS18B20 Temperatursensor aus und sendet diese an einen MQTT-Broker.

In dem Gehäuse steckt ein Ardino Uno und ein Ethernet-Shield

Hardware:

Der One-Wire-Temperatur-Sensor DS1820 ist in diesem Beispiel an den Pin D2 angeschlossen.

Beim Starten des Arduinos verbindet dieser sich mit dem MQTT-Broker. Dieser ist hier unter 192.168.178.122 erreichbar. Die Messwerte werde zyklisch unter dem Topic "DL8MA" über den MQTT-Brocker verschickt. Das Format ist einfach gehalten:  {"Temperatur":"17.50"}

Über das Topic "DL8MA" können nun andere MQTT-Clients wie z.B. Home Assistant o.Ä. die Messwerte entgegennehmen und verarbeiten.

Brocker

Der Brocker ist ein Dienst der auf einem Recher im (Heim-) Netz läuft. Alle MQTT-Clients melden sich bei diesem Brocker an („subscribe"). Dann kann zwischen dem Brocker und dem jeweiligen Client bidirektional kommuniziert werden („publish"). 

Für die Entwicklung und den Test dieses Sketches wurde der Open-Source-MQTT-Brocker Mosquito auf einen Raspberry installiert.

Alternativ kann auch ein im Internet erreichbarer MQTT-Brocker wie z.B. test.mosquitto.org dafür verwendet werden. Dafür muss dann die Adresse des Brockers im Sketch ensprechend angepasst werden. 

 

Topic

Ein Topic ist ein Art "Kanal" über den die Kumunikation läuft. Es können mehrere Topis ( "Kanäle" ) parallel genutzt werden.

Jeder Client der auf einem Topic angemeldet ist bekommt alle Nachrichten die über diesen Topic gesendet werden vom Brocker über das Netzwerk geliefert.

 

Für den Test des Sensors kann z.B. ein MQTT.fx, ein grafisches Werkzeug zum MQTT-Debugging, genutzt werden:

 

 

Quellcode:

Ev. notwendige Anpassungen:

 

IPAddress server(192, 168, 178, 122);

Hier muss die verwendete Adresse des Brockers ev. noch angepasst werden.

 

char inTopic[] = "DL8MA";

Der Name des topics kann hier geändert werden. 

 

payLoad = "{\"Temperatur\":\"";

Je nach Anwendung kann es notwendig sein den Text in der Payload anzupassen

 

delay( 1000 );

Die Frequenz der zyklischen Aussendung der Temperaturwerte kann hier eingestellt werden. Die 1000ms in dem Beispielsketch wurden für die Entwicklung so eingestellt.

 

 

MQTT (Message Queuing Telemetry Transport) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkten Netzwerken.[1] Entsprechende Geräte reichen von Sensoren und Aktoren, Mobiltelefonen, Eingebetteten Systemen in Fahrzeugen oder Laptops bis zu voll entwickelten Rechnern. Das Protokoll wurde von Andy Stanford-Clark von IBM und Arlen Nipper von Cirrus Link Solutions entwickelt.

Seit 2013 wird MQTT über die Organization for the Advancement of Structured Information Standards (OASIS) als Protokoll des Internet der Dinge standardisiert.

Quelle: Wikipedia

 

...

01.03.2018

Dipl.-Ing. (FH) Jürgen Mayer, DL8MA - Weinstadt-Grossheppach
Impressum

zurück zu www.DL8MA.de