Aufgabenstellung
Es sollen die Temperaturen der 1Wire Sensoren (DS18x20) eingelesen werden. Sobald die Sensoren im Filesystem erreichbar sind, können diese per exec-Binding und einem kleinen Shell Script eingelesen werden.
Das folgende Bild zeigt einen 1Wire Temperatursensor unter openHAB.
Lösung
Die items Datei erhält dazu den folgenden Eintrag:
Number Temp_Sensor1 "DS 18x20 [%.3f °C]" <temperature> (Hubo_DS18x20, gHubo_Uebersicht {exec="<[/opt/openhab/configurations/scripts/./ReadDS1820 28-00000533f61a:1000:REGEX((.*?))]"}
Die ID des Temperatursensors wird dabei dem Script mitgeteilt, damit dieses auch für andere Sensoren verwendet werden kann. Das Script ist Bestandteil der Installation und beinhaltet nur wenige Zeilen Code.
#!/bin/bash # Read DS 1820 temperature sensors. # usage ./ReadDS1820 <sensor-id> # e.g. ./ReadDS1820 28-00000533f61a temp=`cat /sys/bus/w1/devices/$1/w1_slave | tail -n1 | cut -d '=' -f2` let value=temp/1000 let remainder=temp-value*1000 printf "%d.%d\n" $value $remainder