Robins Blog – Technik und Multimedia

Raspberry Pi: Temperaturmessung mit one wire DS18B20 Sensoren und Fhem

Ich hatte in einen meiner letzten Blog-Beiträge schon einiges über Fhem, dem Freundlichen Haus und Energie-Monitor geschrieben. Diese Hausautomations-Software ist Open-Source, in Perl geschrieben, hat eine große Community und läuft auf meinem Raspberry Pi mit Raspbmc perfekt. Wenn ich nicht dauernd die Software und Hardware mit (überflüssigen) Komponenten erweitern würde :-). Da mal wieder das Wochenende vor der Tür stand, bin ich hingegangen und habe aus meinen vorherigen Projekten meinen Temperatur-Sensor DS18B20 herausgebaut und mit dem Raspberry Pi verbunden.

Hardware: Man benötigt, wie schon oben erwähnt, den Temperatursensor DS 18B20 (amazon.de: 10 × DS18B20 Digital Temperature Sensor Thermperatursensor TO92 – 55°C – +125°C
) und einen ohmschen Widerstand mit 4,7 kOhm. Ich habe leider nur 1 kOhm zur Hand gehabt, klappt aber auch. Ebenfalls benötigt man ein mindestens 3-adriges Kabel, welches eine Zuleitung zum Temperatursensor darstellt, solange man nicht auf der Platine des Raspberry Pi die Temperatur messen möchte.

Die Schaltung:

Installation und Testen des Sensors

Wenn man alles verschaltet hat, kommt man zum Testen. Hier gibt man über die Kommandozeilenoberfläche

modprobe w1-gpio
modprobe w1-therm

Im Ordner

/sys/bus/w1/devices

sollte nun ein Ordner mit ID des Temperaturmoduls vorhanden sein. Hier steht neben dem CRC auch die Temperatur, bei mir 21,562 Grad.Damit der Sensor auch nach einem Neustart wieder gefunden wird (die obigen Kommandos gelten nur bis zu einem Reboot), sollte auch sofort softwaremäßig der Sack zu gemacht werden.


Hierzu gibt man auf der Kommandozeilenoberfläche ein:

sudo vi /etc/modules

und fügt folgende Zeilen hinzu

wire
w1_gpio
w1_therm

Ihr könnte anstatt vi auch jeden anderen Editor benutzen. Ich nutze beispielsweise den Midnight Commander mit dem Editor nano.

Ein Reboot tut anschließend gut.

Das wäre es schon mal von der Hardware-Software-Seite:
Fassen wir zusammen:

One-Wire DS18B20 in Fhem.

Hierzu geht man in den /fhem/contrib Ordner und kopiert die Datei 58_GPIO4.pm in den Fhem-Ordner.
Anschließend editiert man die in den Fhem-Ordner liegende Datei 98_autocreate.pm und fügt folgenden Code hinzu

# GPIO
"GPIO4_(DS18B20|DS1820).*"
=> { GPLOT => "temp4:Temp,", FILTER => "%NAME" },

anschließend mit shutdown restart fhem neu starten, oder RPi neu Booten.

In der File-Config-Datei noch folgende Zeile einfügen, damit der Temperatur-Sensor von Fhem erkannt wird.

define Temperatursensor1 GPIO4 BUSMASTER

Nun sollte das Modul auch im Plot die gemessenen Temperaturen anzeigen.
Tipp: Standardmäßig nimmt der Sensor jede Minute (60s) eine Messung vor. Ihr könnt mit dem Attribut pollingInterval die Messintervalle einstellen. Bei einem Eintrag von 320 wird jede 5min gemessen.

[asa]B008XVAUPI[/asa]

Fazit:
Die One-Wire-Messung ist eine preiswerte Methode zum Messen von Temperaturen. Ihr könnt mehrere Sensoren parallelschalten. Der Sensor selber kostet bei Conrad ungefähr 2 bis 3 Euro. Vorteil ist der Preis, nachteilig natürlich die Verkabelung.

Möchte man drahtlos die Temperatur und Luftfeuchtigkeit seiner Räume überwachen, empfehle ich die LaCrosse Temperatur- und Luftfeuchtigkeitssensoren mit einem JeeLink-Transceiver. Bitte dazu auch meinen Blogbeitrag über diese günstigen Sensoren lesen.

Die mobile Version verlassen