MySensors Luftfeuchtigkeitssensor in FHEM

Nachdem wir uns ein MySensors Wlan-Gateway aufgebaut haben, erkläre ich in diesem Beitrag wie ihr euren ersten MySensors Sensor aufbaut und in FHEM einbindet. Um genau zu sein, zeige ich euch wie ihr den Luftfeuchtigkeitssensor von MySensors aufbaut.

Hardware

Alles was zum Aufbauen benötigt wird ist ein Arduino, ein NRF24L01+ Funkmodul und natürlich ein Luftfeuchtigkeitssensor. Ich habe mich für den DHT22 entschieden. Der Sensor misst die Luftfeuchtigkeit im Bereich von 0-100% mit einer Genauigkeit von +-2% und die Temperatur im Bereich von -40°C bis +80°C mit einer Genauigkeit von +-0,5°C.

SODIAL DHT22/AM2302 Digitaler Feuchtigkeits- und...
  • Brandneu und hochwertig
  • Digitaler Feuchtigkeits- und Temperatursensor DHT22/AM2302
  • Ersatzteil für SHT10 / SHT11 / SHT15

Letzte Aktualisierung am 25.04.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Das Funkmodul und der Sensor werden dann an den Arduino angeschlossen.

MySensors Sensor Humidity

ArduinoNRF24L01+Sensor
GNDGNDGND
3V3VCC
5VVCC
D2IRQ
D3Out
D9CE
D10CSN
D11MOSI
D12MISO
D13SCK

Wie beim WLAN-Gateway kann man auch hier alles auf eine Lochrasterplatine unterbringen.

MySensor HumidityIch persönlich habe nach dem Verdrahten die Unterseiche mit einer Heißkleberpistole zugeklebt um das Abreißen von Drähten zu vermeiden. Für die Stromversorgung kann man direkt den USB-Anschluss des Arduinos verwenden. Da ich jedoch noch einige Micro-USB-Leitungen übrig hatte, habe ich einfach den nicht passenden USB-Stecker abgeschnitten und die beiden Drähte direkt an den Vin und GND Anschluss des Arduinos angeschlossen. Als Stromversorgung entweder ein 5V-USB-Netzteil verwenden oder einen freien USB-Slot in der Wohnung verwenden. Ich habe meine Sensoren zum Beispiel am Receiver, an einem Netzwerkdrucker und am TV angeschlossen.

Software

Nachdem wir die Hardware fertig haben, kann es an die Software gehen. Die Software wird wieder über die Arduino-Software auf den Arduino geladen. Dazu sollte man sich die MySensors-Libary herunterladen. Wer dies noch nicht erledigt hat, sollte sich meinen Beitrag zum WLAN-Gateway anschauen.

ANMERKUNG (21.08.2016): Das Programm für den HumiditySensor befindet sich nicht mehr in der Version 2.0 des MySensors-Libary. Einfach die Version 1.5.4 downloaden und in den Sketch-Ordner kopieren.

Zuerst schließen wir den Sensor mit einem USB-Kabel an den PC und wählen den passenden Port und das passende Board aus (in diesem Fall den Arduino Nano). Nun kann über „Datei / Beispiele / MySensors / HumiditySensor“ der benötigte Sketch ausgewählt werden.

Humidity Sensor Sketch MySensor

Sollte ihr den Sensor wie oben beschrieben angeschlossen haben, muss nichts mehr an der Software verändert werden und kann direkt auf den Arduino geladen werden. Andererseits muss im Sketch die PIN-Belegung geändert werden.

Nach erfolgreichem uploaden der Software kann über den Seriell-Monitor der Sensor getestet werden. Das WLAN-Gateway muss natürlich angeschlossen und mit eurem Netzwerk verbunden sein. Sollte alles geklappt haben, solltet ihr in etwa so eine Ausgabe erhalten:

MySensors_Humidity_SeriellAusgabe

In der ersten Zeile erkennt man, dass sich der Sensor mit der ID 100 mit dem WLAN-Gateway verbunden hat. Weiter unten erhält man nun den Temperaturwert 21,1°C und die Luftfeuchtigkeit mit 48%. Der Sensor funktioniert also.

Einrichtung in FHEM

Nach dem der Sensor funktioniert, können wir mit dem Einrichten bei FHEM beginnen. Um den Sensor in FHEM einzubinden gibt es zwei Möglichkeiten.

  1. Über das Gateway: Nachdem man über das Auswahlmenü des Gateways den „Inclusion-Mode“ auf 1 gesetzt hat, wird 60s nach neuen Sensoren gesucht und diese automatisch in FHEM eingerichtet. Dies funktioniert jedoch nur, wenn während diesen 60s der Sensor Werte an das Gateway sendet.
  2. Die elegantere Methode ist die direkte Definition des Sensors. Diese Methode werde ich euch nun genauer erklären.

MySensors Sensoren werden über das Modul MYSENSORS_DEVICES definiert.

Der obige Befehl definiert uns den Sensor AZ_Sensor mit der Sensor ID 100. Die Sensor ID haben wir durch den Seriell-Monitor erhalten.

MySensor Humidity FHEM

Ein paar Sekunden warten und schon erhält man die Sensorwerte als Reading. Nun kann man noch optionale Attribute hinzufügen. Ich persönlich habe das stateFormat angepasst um die Sensorwerte und den Zeitpunkt der Messung als STATE zu bekommen:

Ich habe für meine Wohnung mehrere solcher Sensoren gebaut. Die Sensoren sammle ich im Raum „MySensor“ und habe für jeden Sensor ein dummy für die Temperatur und für die Luftfeuchtigkeit erstellt und sie über ein at-Befehl mit den Sensordaten gefüttert.

Nun noch das at-Device definieren, um die beiden Dummys mit den Sensorwerten zu füttern:

Nun kann über den Def-Editor die Definition vom eingerichteten at-Device entsprechend angepasst werden:

 

INFO: Der DEF-Editor lässt sich durch anklicken von „DEF“ öffnen.

atdefeditor

In FHEM hat man nun die Werte des Sensors schön übersichtlich dargestellt:

FHEM MySensors Devices

Weitere Infos über den Luftfeuchtigkeitssensor von MySensors erhaltet ihr direkt über deren Homepage.

Neben dem Luftfeuchtigkeitssensor gibt es noch unzählige weitere Sensoren. Jeder Sensor ist gleich aufgebaut. Ein Arduino mit dem Funkmodul und dem gewünschten Sensor verbinden, passenden Sketch auf den Arduino laden und unter FHEM einbinden. Sollte ich selber andere Sensoren aufbauen, werde ich es natürlich auf meinem Blog veröffentlichen.

Mögliches Problem: Keine Messwerte in FHEM

Sollten in FHEM keine Messwerte ankommen, dann sollte überprüft werden, ob der Sensor korrekt funktioniert. Dies geht am besten über den seriellen Monitor. Es sollte in etwa so aussehen:

mySensors Sendet

Ist dies der Fall, dann geht es weiter mit dem WLAN-Gateway. Zunächst überprüft man, ob sich das Gateway mit dem WLAN verbunden hat:

MySensors WLAN Gateway

Ist dies der Fall, dann kann man die Verbindung zwischen FHEM und dem WLAN-Gateway überprüfen. Dies geht am besten, in dem man unter FHEM das Gateway kurz disconnected und wieder connected:

connect_disconnect

Beim seriellen Monitor sollte dieses „Neuverbinden“ nun auch zu erkennen sein:

gateway_disconnect

Ist dies der Fall, dann kann die Verbindung zwischen dem Sensor und dem Gateway überprüft werden. Dazu einfach das Gateway und den Sensor per USB an den Computer anschließen und zweimal die Arduino-Umgebung starten. Nun für jeden der beiden COM-Ports den seriellen Monitor starten. Es sollte zuerkennen sein, dass der Sensor seine Messwerte sendet und das Gateway diese empfängt.

Gateway Sensor

Funktioniert dies auch, dann sollte der Fehler bei FHEM liegen. Hier kann es helfen ein paar Attribute manuell hinzuzufügen:

Zusätzlich kann man nun beim WLAN-Gateway kurz den „inclusion-mode“ aktivieren:

Jetzt kurz den Sensor vom Strom trennen und nun sollten eigentlich nach ein paar Sekunden die Messwerte in FHEM erscheinen.

Hinterlasse einen Kommentar

34 Kommentare auf "MySensors Luftfeuchtigkeitssensor in FHEM"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Uwe
Gast
Uwe

Danke für den informativen Artikel. Ich bin auch auf der Suche nach einer Möglichkeit Temperatur und Luftfeuchtigkeit pro Raum zu messen. Dazu habe ich mich entschlossen, alle Messstellen mit dem 1-wire-Bus an FHEM auszustatten. Ich möchte aus Zuverlässigkeitsgründen keine dezentrale Stromversorgung oder gar Batterien. Entsprechende Temeratursensoren sind auch schon im Testbetrieb. Es fehlt bisher an der Möglichkeit so auch die DHT22-Sensoren zu betreiben, sie werden von OWX nicht erkannt. Welche Lösungsmöglichkeit siehst du deine Variante entsprechend anzupassen?

Peter Gottschalk
Gast
Peter Gottschalk

Hallo Daniel

ich hatte dich gestern schon mal angeschrieben auf den Beitrag MyGateway. Diesen haben ich jetzt zu laufen bekommen, vielen Dank nochmal für deine Hilfe.

Jetzt habe ich aber das nächste Problem, ich versuche den DHT 22 zu installieren.Doch leider habe ich unter Datei/Beispiele/MySensor keinen Humidity Sensor zur Auswahl.

Gruß Peter

Peter Gottschalk
Gast
Peter Gottschalk

Hallo Daniel

ich habe nochmal komplett die Verkabelung überprüft, die sieht soweit richtig aus. Den einzigen Unterschied den ich habe ist , dass der DHT22 vier Beine hat, laut Schaltplan im Internet habe ich den wie folgt angeschlossen: von links Bein 1:VDD 2:Data 4:GND

Für mich als Verständnis : der Sensor verbindet sich ja per WLAN , mit dem Gateway oder über die Fritzbox, müsste ich den Sensor im WLAN Netz wiederfinden?

Ach ja , ich habe Arduino auf Arduino Nano/ATmega328 gestellt.

Gruß Peter

Peter Gottschalk
Gast
Peter Gottschalk
Hallo Daniel, ich hatte heute endlich mal ein bischen Zeit mich nochmal um mein Problem zu kümmern. Ich bin nochmal ganz von vorne angefangen und ich glaube ich habe jetzt beide Sachen zum laufen bekommen. Doch leider bekomme ich in FHEM keine Daten angezeigt. der serielle Monitor beim Gateway sieht jetzt so aus : 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:SANCHK:OK 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:SANCHK:OK 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:SANCHK:OK 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:SANCHK:OK 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:READ 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:SANCHK:OK 0;255;3;0;9;TSP:MSG:READ 255-255-0… weiterlesen »
Peter Gottschalk
Gast
Peter Gottschalk
Hallo Daniel, ich habe es endlich geschafft meinen Sensor zum Leben zu erwecken. Ich habe es nur mit der Methode „set MySensorGateway inclusion-mode on“ und den mehrmaligen drücken des Tasters auf den Arduino Nano, geschafft eine Verbindung zu FHEM zu bekommen. Was das merkwürdige ist, das mir im Seriellen Monitor immer die ID 255 angezeigt wird , der Sensor in FHEM aber jetzt die ID 100 bekommen hat. Die Anmeldung habe ich auch nur mitbekommen, weil bei mir hinter Save config ein Fragezeichen kam und ich dann in Unsorted mein Sensor gefunden habe. Ich habe aber jetzt noch ein kleines… weiterlesen »
Markus
Gast
Markus

Hallo Daniel,

danke für deine super Anleitung. Alles klappt soweit, leider verstehe ich aber diesen Schritt hier nicht: „Nun kann über den Def-Editor die Definition entsprechend angepasst werden:“ müssen diese Zeilen
„+*00:03:00 {
my $d= ReadingsVal(„AZ_Sensor“,“temperature1″,0);;
my $e= ReadingsVal(„AZ_Sensor“,“humidity“,0);;
fhem(„set AZ_Temperatur $d“);;
fhem(„set AZ_Luftfeuchtigkeit $e“);}

in eine 99_myUtils.pm eingetragen werden oder wo kommt das hin?

Vielen Dank und liebe Grüße,

Markus

Markus
Gast
Markus

Habe es jetzt doch herausgefunden 🙂
Ich wusste nicht, dass dies beim „at-Device“ eingefügt werden muss 😉

Klappt jetzt alles wunderbar! Danke noch einmal für die tolle Anleitung! 🙂

liebe Grüße,

Markus

Boris
Gast
Boris

Danke für das Tutorial, funktioniert prima!

Marco
Gast
Marco

Super Tutorial, aber:

was ist jetzt besser? Ein nRF24L01+ in Verbindung mit einem Arduino oder einen ESP-01. Ich will einfach nur Temp/Luftfeuchte pro Raum abrufen. Was würde mehr Strom brauchen, wie ist die Verbindung? Einfacher Aufbau etc. Als Stromquelle würde u.U. der Meanwell IRM-03-3.3 laufen. Ich bin mir über die Gefahren im Umgang mit 230 V bewusst.

Gruß, Marco

Marco
Gast
Marco
Hallo Daniel, Erstmal vielen Dank für Deine promte Antwort. Ich denke um die Kosten für die ersten Versuche klein zu halten werde ich es mal mit einem ESP-01 (geschuldet dem EasyESP) testen. Ich habe schon einiges Zuhause, hatte aber bis jetzt keine Gelegenheit, irgend etwas zu testen und probieren. Wird mal Zeit, wird da jeder sagen 🙂 Mir kommt es auch so vor, als würde die Programmierung mit dem ESP einfacher sein. Ich bin aber noch etwas unsicher, was der Anschluss zu einem Programmieradapter CP2102 angeht. ESP verträgt nur 3,3V, klar. wie steht es aber mit RX und TX, muss… weiterlesen »
Marco
Gast
Marco

🙂

Ich probiere es einfach mal, hab da grad ne gute Schematik gefunden. Ich hab 2 Stück, da kann einer mal rauchen 🙂

Vieleicht klappt es ja…

Nochmal besten Dank für die Tipps/Infos und schönen (Feier)Abend noch.

Viele Grüße

Marco

peer
Gast
peer
hey daniel. danke! auch für die anderen beiträge, sind top! eins ist mir aufgefallen, beim at eintrag, da ist was mit dem brackets nicht richtig, ergebnis ist eine logflut: logflut: 2017.03.01 00:02:27 1: PERL WARNING: Missing argument in sprintf at (eval 146707) line 1. 2017.03.01 00:02:27 3: eval: { my $d= ReadingsVal("WZ_MySensor","temperature1",0);; my $e= ReadingsVal("WZ_MySensor","humidity",0);; fhem("set WZ_Temperatur $d");; fhem("set WZ_Luftfeuchtigkeit $e");} 2017.03.01 00:02:27 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 146707) line 1. 2017.03.01 00:02:27 3: eval: { my $d= ReadingsVal("WZ_MySensor","temperature1",0);; my $e= ReadingsVal("WZ_MySensor","humidity",0);; fhem("set WZ_Temperatur $d");; fhem("set WZ_Luftfeuchtigkeit $e");} 2017.03.01 00:02:27 1: PERL WARNING:… weiterlesen »
Norbert
Gast
Norbert

Hallo Peer,
das Prozentzeichen „attr AZ_Temperatur stateFormat {sprintf(„%%.2f“.“ °C“,ReadingsVal(„AZ_Temperatur“,“state“,0))}“ einfach mal doppelt eintragen, da es ansonsten falsch interpretiert wird. Hat bei mir geholfen!

wpDiscuz