DS18B20-Sensoren in openHAB einbinden

openhabds18b20In diesem Beitrag wurde der 1wire-Sensor DS18B20 vorgestellt und erläutert, wie man diesen an einem Raspberry Pi betreiben kann. Als logische Fortsetzung möchte ich in diesem Beitrag zeigen, wie dieser in openHAB eingebunden und dargestellt werden kann.

 

 

 

Verfügbare Artikel zu openHAB

little_blue_dot Einleitunglittle_blue_dot Einbinden der Internetgeschwindigkeitlittle_blue_dot RFID-Lesegerät einbinden
little_blue_dot Installationlittle_blue_dot Präsenzerkennung via Bluetooth und Pinglittle_blue_dot Einbinden von DS18B20-Sensoren
little_blue_dot Konfigurationlittle_blue_dot Kleines Netzwerkmonitoringlittle_blue_dot ical-Abfallkalender einbinden
little_blue_dot Reverse-Proxy für OpenHABlittle_blue_dot Einbinden von LG-Fernsehern [Update]little_blue_dot openHAB als Wecker
little_blue_dot Datenspeicherung und Statistikenlittle_blue_dot Einbinden Schaltern und Kontaktenlittle_blue_dot Einbinden von Bewegungssensoren
little_blue_dot Regeln planen und konfigurierenlittle_blue_dot Einbinden von Funksteckdosen (433 MHz)little_blue_dot Einbinden einer FritzBox
little_blue_dot Einbinden von USB-Steckdosenleisten (SIS-PMS)little_blue_dot Infrarotgesteuerte Geräte einbindenlittle_blue_dot Sprachausgabe auf einem Raspberry
little_blue_dot Einbinden von Temperatursensorenlittle_blue_dot Steuerung mit NFC-Tagslittle_blue_dot Schaltbare Steckdosenleiste mit Relais
little_blue_dot Externer Zugriff mit my.openhab

 

Bash-Script erstellen

Zunächst erstellen wir auf dem openHAB-Server ein neues Bash-Script, beispielsweise als “/scripts/ds18b20.sh” und befüllen dieses mit folgendem Inhalt:

#! /bin/bash

#Pruefen, ob Suffix angegeben
if [ -z "$1" -o -z "$2" ] ;then
    echo "So geht das nicht"
    exit 1;
fi

# Temperatur des Sensors auslesen
INPUT=$(/usr/bin/ssh -i /scripts/.ssh/id_rsa root@192.168.1.$1 "/bin/cat /sys/bus/w1/devices/$2/w1_slave |tail -n1 |cut -d\"=\" -f2")

TEMP=$(echo "scale=2; $INPUT / 1000" | bc)

# Wert ausgeben
echo $TEMP

 

Wir erlauben die Ausführung des Scripts durch

chmod +x /scripts/ds18b20.sh

und übertragen den Besitz an “openhab” durch

chown openhab: /scripts/ds18b20.sh

 

Im Grunde genommen, wird hier die gleiche Abfrage und Umrechnung durchgeführt, wie auch im eigentlichen DS18B20-Artikel, jedoch wird die Abfrage in diesem Fall via SSH auf einer im Item zu konfigurierenden Himbeere durchgeführt. Das Script können wir nun auf der Kommandozeile testen mit

/scripts/ds18b20.sh LETZTES_OKTETT_DER_HIMBEERE ID_DES_DS18B20_SENSORS

 

Beispielsweise:

/scripts/ds18b20.sh 199 28-00000728fda5

 

Items definieren

Nun wenden wir uns openHAB zu und definieren im ersten Schritt die entsprechenden Items wie folgt:

Number CHART_PERIOD

Number TEMP_AUSSEN "Temperatur Aussen [%.1f °C]" <temperature> { exec="<[/scripts/ds18b20.sh 199 28-00000728fda5:180000:REGEX((.*?))]" }

Das Item “CHART_PERIOD” benötigen wir für die Angabe eines Diagrammbereichs, der im späteren Verlauf des Artikels erläutert wird. Ansonsten sei zu der Itemdefinition nur noch zu erwähnen, dass die vom DS18B20 ermittelte Temperatur als Datentyp “Number” gespeichert wird und somit in openHAB zur Verfügung steht.

 

Sitemap ergänzen

Zu guter Letzt fügen wir unser neues Item in die Sitemap ein. Zudem lassen wir uns optional Diagramme der Messwerte anzeigen, falls die Daten beispielsweise mittels RRD4J dauerhaft gespeichert werden. Ansonsten reicht lediglich die Zeile “Text item=DEIN_DS18B20_ITEM

Text item=TEMP_AUSSEN {
    Switch item=CHART_PERIOD label="Zeitspanne" mappings=[0="Stunde", 1="Tag", 2="Woche"]
    Chart TEMP_AUSSEN period=h refresh=300 visibility=[CHART_PERIOD==0, CHART_PERIOD=="Uninitialized"]
    Chart TEMP_AUSSEN period=D refresh=1800 visibility=[CHART_PERIOD==1]
    Chart TEMP_AUSSEN period=W refresh=3600 visibility=[CHART_PERIOD==2]
}

 

 

ds18b20sitemap