Robins Blog – Technik und Multimedia

Fhem: Fhem2Fhem und Temperatursensordaten empfangen

Update: 07.10.2014 Blog-Beitrag erweitert

Problem: Man hat einen Raspberry Pi mit Fhem und leider nur 2 USB-Ausgänge, welche schon voll belegt sind. Beispielsweise mit einem CUL-Transceiver und einem WLAN-Stick. Entweder kauft man sich jetzt einen aktiven USB-HUB oder, wenn man nur ein bis zwei weitere USB-Slots benötigt, einen neuen Raspberry Pi B Plus (-> Erfahrungsbericht).
Da in meinem Umgebung grundsätzlich USB-Anschlüsse fehlen, weil ich vieles ausprobiere, habe ich mir überlegt, einen zweiten Fhem-Server aufzusetzen. Ich möchte mit der Installation und Konfiguration nicht zu sehr ins Detail gehen, wer jedoch noch einen zweiten Raspberry Pi herumliegen hat, sollte vielleicht an dem Experiment teilnehmen.
Benötigt wird:

Was habe ich vor?
An meinem zweiten Raspberry Pi – nennen wir ihn Slave – habe ich einen Jeelink-Transceiver angedockt, mit dem ich Temperaturdaten aufnehmen kann. Es spielt keine Rolle wo sich der Raspberry Pi befindet, Hauptsache er hat Strom und Netzwerk. Der Jeelink-Tranceiver nimmt die Temperaturdaten auf, die von den Temperatursensoren kommen. Das kann ein Temperatursensor oder auch mehrere sein.
Das Problem ist jetzt, das die Daten natürlich nur auf dem Slave ankommen und dort verwurstet werden, sorry, Graph und Log gespeichert werden.
Ich möchte aber, das diese Daten auch auf dem ersten Raspberry Pi – nennen wir ihn Master – empfangen werden. Hier möchte ich genauso die Daten bekommen, die ich normalerweise auf dem Slave empfange.

Hier kommt Fhem2Fhem ins Spiel: Fhem2Fhem verbindet beide Raspberry Pis auf einfache Weise, entweder durch den RAW oder LOG-Modus. Beim Log-Modus empfängt der Master die Log-Daten des Gerätes (Schalter, Temperatursensor, Feuchtigkeitssensor etc.) im Log.
Im RAW-Modus verhält es sich so, als wenn man das Gerät direkt am Master angeschlossen hätte.

Beides meiner Meinung nach eine geniale Lösung. Ich finde das super ausbaufähig und flexibel, wenn man keine USB-Slots mehr frei hat, oder weitere Strecken überwinden muss, die der 868 MHz – Sensor nicht mehr empfangen kann. Einfach eine Fhem2Fhem-Struktur aufbauen und los gehts.

Software: Um eine Lösung für das obige Beispiel bereitzustellen, war natürlich wieder das Fhem-Forum eine große Hilfe. Hier folgt dem Kochrezept:

Auf der Konsole des Masters (da kommt man am Besten mit Putty unter Windows drauf, oder unter der Mac-Umgebung mit

[sourcecode language=“text“ gutter=“false“]Robin$ ssh root@192.168.178.6[/sourcecode]

, wobei ihr natürlich die IP des Raspberry Pi eingeben müsst.
Anschließend gebt ihr dort ein:

[sourcecode language=“text“ gutter=“false“]mkfifo /tmp/jdummy[/sourcecode]

.
Wichtig: Der Pfad könnt ihr selber auswählen, ich habe aber auch sofort komplette Schreib-Lesezugriffe dazu gegeben, da es bei mir nicht auf Anhieb funktionierte (chmod).

Nun wird in der Fhem.cfg des Masters folgendes eingetragen:

[sourcecode language=“text“ gutter=“false“]define jeelinkcross JeeLink /tmp/jdummy@directio
define remoterpi FHEM2FHEM 192.168.178.29:7072 RAW:jeelinkcross[/sourcecode]

Wichtig: es muss ein funktionierender Zugang zum Telnet-Port vorhanden sein.

Auf dem Slave gebt ihr in der fhem.cfg ein:

[sourcecode language=“text“ gutter=“false“]define jeelinkcross JeeLink /dev/ttyUSB0@57600[/sourcecode]

wenn ihr den Jeelink auf USB0 gesteckt habt. Das könnt ihr auf der Console (s.o.) mit

[sourcecode language=“text“ gutter=“false“]dmesg[/sourcecode]

herausbekommen.

Jetzt sollte bei jeelinkcross ein opened oder connected stehen.

Kehren wir zurück zum Master. Jetzt können wir die Daten vom entfernten Jeelink entfangen. Kurzer Test in der fhem.cfg:

[sourcecode language=“text“ gutter=“false“]
define 04Thermo LaCrosse 68
attr 04Thermo IODev jeelinkcross
#define 04Thermo dummy
attr 04Thermo alias Büro
attr 04Thermo event-min-interval state:600
attr 04Thermo group Temperaturen
attr 04Thermo icon scene_office
attr 04Thermo room Plots
attr 04Thermo doAverage 1
define FileLog_04Thermo FileLog ./log/04Thermo-%Y.log 04Thermo:T:.*
attr FileLog_04Thermo logtype temp4hum6:Temp/Hum,text
define weblink_04Thermo SVG FileLog_04Thermo:weblink_04Thermo:CURRENT
attr weblink_04Thermo alias 6. Büro
attr weblink_04Thermo label "Büro min.: $data{min1} °C, max: $data{max1} °C, Letzte: $data{currval1} °C"
attr weblink_04Thermo room Plots
[/sourcecode]

Bei Euch wird in der ersten Zeile möglicherweise etwas anderes als die 68 stehen, ist abhängig vom gerade automatisch gewählten Funkkanal des Temperatur-Sensors.

 

Monitoring der Temperaturen auf dem Master, am Slave hängt der Jeelink-Ersatz dran

Fazit: Auch wenn ihr wenig USB-Slots an Eurem Raspberry Pi besitzt, könnt ihr durch Fhem2Fhem Daten tunneln. Hier am Beispiel mit einem Jeelink und Temperatursensoren erklärt.

Das könnte Euch auch interessieren:

Arduino Nano mit Transceiver – ein Foto vom Blog-Leser Jörg

Arduino Nano mit Hope FM RFM12BS – Jeelink-Ersatz

Temperatursensoren mit JeeLink, Raspberry Pi und Fhem im Einsatz

Die mobile Version verlassen