Schlagwort-Archive: OneWire

[openhab] Onewire Sensoren einbinden

In dem ein oder anderen Zimmer befindet sich ein Onewire Sensor um die Temperatur zu messen, die gemessene Temperatur soll nun im openhab dargestellt werden.

Für das auslesen habe ich das Shellscript onewiretemp.sh erstellt:

#!/bin/bash
wert=`cat /sys/bus/w1/devices/$1/w1_slave | tail -n1 | cut -d '=' -f2`
wert2=`echo "scale=3; $wert/1000" | bc`
echo $wert2

Das Script liegt unter /home/openhab/bin und beim Aufruf muss die Sensor ID mit angegeben werden.

./onewiretemp.sh Sensor Id
Die gemessene Temperatur wird dann wie folgt ausgegeben 20,745.

Die Abfragen der einzelnen Sensoren habe ich in einer items Datei zusammengefasst.

Group temperatur

Number Temperature_Flur "Temperatur Flur [%.1f °C]" (flur,temperatur) { exec="<[/home/openhab/bin/onewiretemp.sh 28-000004b92eb4:60000:REGEX((.*?))]" } Number Temperature_Pia "Temperatur Pia [%.1f °C]" (temperatur) { exec="<[/home/openhab/bin/onewiretemp.sh 28-000004b91510:60000:REGEX((.*?))]" }

Damit die Ausgabe an mehreren Stellen in der Sitemap erfolgt, können bei der jeweiligen Abfrage mehrere Gruppen angegeben werden.

Hier noch ein Auszug aus der sitemap:

Frame label="Temperatur"{
Group label="Temperatur" icon="house" item=temperatur
}

ob-onewire1

ob-onewire2

Wie die Onewire Sensoren mit dem Raspberry Pi verbunden werden, habe ich in dem Artikel beschrieben.

Temperatursensoren in FHEM einbinden

Die OneWire Temperatursensoren kann ich wie hier beschrieben, bereits über die Kommandozeile auslesen. Um die Sensoren in fhem einzubinden würde man normalerweise OWFS nutzen, jedoch kann OWFS keine Sensoren direkt am GPIO Port auslesen. Möchte man auf OWFS nicht verzichten, müßten die Dallas Sensoren über ein DS 2482-100S ausgelesen werden.

Eine Alternative wäre ein Shellscript, welches die Temperatur ausliest und in fhem eingebunden werden kann.

Ich habe mich jedoch für das Modul 58_GPIO4.pm entschieden, welches man hier runterladen kann:
https://github.com/mhop/fhem-mirror/blob/master/contrib/58_GPIO4.pm

Das Modul muss in dem Ordner FHEM abgelegt und fhem neugestartet werden.

In der fhem.cfg reicht dann folgendes aus, damit die Werte über die Weboberfläche ausgegeben werden:


# Sensor definieren
define FlurTemp GPIO4 28-000004b91510
# Model des Sensors angeben
attr FlurTemp model DS18B20
# ensprechendes Icon setzen
attr FlurTemp icon icoKLIMA
# Raum zuweisen
attr FlurTemp room Flur

Temperatursensor in fhem

Temperatursensor in fhem

[Raspberry Pi] Temperatur Sensor auslesen

Nachdem die Funksteckdosen in FHEM eingerichtet sind, wollte ich nun die Temperatur in den einzelnen Zimmern messen.
Hierfür hatte ich mir gleich mehrere OneWire Sensoren des Typs Dallas 18B20 zugelegt.

Das Problem bei der Variante über den OneWire Sensor ist die Verbindung zwischen dem Raspberry Pi und den Sensoren herzustellen. Ich hatte Glück das wir vor einigen Jahren gebaut haben und ich nun auf die Netzwerkverkabelung zurückgreifen konnte.
Auf einer Lochrasterplatine habe ich RJ 45 Buchsen gelötet und die Sensoren an RJ 45 Stecker.

OneWire Sensor

RJ45

Die Pins des OneWire Sensors werden wie folgt belegt:

Pin 1: Masse
Pin 2: GPIO4
Pin 3: 3.3V

Pin Belegung
Zwischen Pin 2 und 3 habe ich noch einen 4,7 KOhm Widerstand gesetzt.

Damit der Raspberry Pi in der Lage ist die Sensoren auszulesen, müssen zwei Module geladen werden.


sudo modprobe w1-gpio
sudo modprobe w1-therm

Um sich das händische laden der Module nach jedem Neustart zu sparen, können die Module in der /etc/modules eingetragen werden.

Unter /sys/bus/w1/devices/ findet man dann den Sensor, in meinem Fall ist es 28-000004b84990.
Ein cat 28-000004b84990/w1_slave liefert folgendes:
7f 01 4b 46 7f ff 01 10 33 : crc=33 YES
7f 01 4b 46 7f ff 01 10 33 t=23937

t=23937 gibt die Temperatur an, hier 23,937 Grad.