OpenHAB 2 und 1-wire
Verfasst: 8. Mär 2017 21:16
Hallo liebe Leute
Ich bin neu hier in diesem Forum.
Bis jetzt hab ich immer nur in den vorhandenen Themen geschmökert, Jetzt hab ich aber ein Problem, bei dem ich Hilfe brauche.
Bin eher ein Anfänger.
Ich habe auf meinem Raspi 3 openhab 2 und Homegear installiert. Außerdem einen YAHM container mit CCU 2.
Ein Funkmodul ist aufgesteckt(ob es funktioniert weis ich noch nicht).
Außerdem habe ich über 1-wire fünf Temperatursensoren DS18S20 dran hängen. Da die Pins 1-12 vom Funkmodul abgedeckt sind, nehm ich für 1-wire die 3,3 V vom Pin 17, GND von 20 und die Datenleitung hängt am GPIO 21.
Mit folgendem Script lese ich die Sensoren aus. Stammt nicht von mir, so gut bin ich leider noch nicht. Hab ich runtergesaugt und mit einer Funktion erweitert, damit ich jedem Sensor einen Namen zuweisen Kann, der auch ausgegeben wird. Das Ganze in eine Schleife gelegt, alle 10 Sekunden krieg ich die Werte der Sensoren.
#!/usr/bin/python
# -*- coding: utf-8 -*-
def sensor(sensor_name):
if sensor_name == "28-000008596f98":
sensor_name = "Sensor 1"
if sensor_name == "28-000008598474":
sensor_name = "Sensor 2"
if sensor_name == "28-00000859354a":
sensor_name = "Sensor 3"
if sensor_name == "28-00000858ac61":
sensor_name = "Sensor 4"
if sensor_name == "28-000008597447":
sensor_name = "Sensor 5"
return sensor_name
while True:
# Import der Module
import sys
import os
import time
# 1-Wire Slave-Liste lesen
file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
w1_slaves = file.readlines()
file.close()
# Fuer jeden 1-Wire Slave aktuelle Temperatur ausgeben
for line in w1_slaves:
# 1-wire Slave extrahieren
w1_slave = line.split("\n")[0]
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
sensor_name = w1_slave
print(sensor(sensor_name) + ': %6.1f °C' % temperature)
print " "
time.sleep(10)
else:
sys.exit(0)
Funktioniert tadellos
Jetzt meine Frage :
Gibt es eine Möglichkeit den 1-wirw Bus an openhab 2 anzubinden um eine elegantere Darstellung der Ausgabe zu erreichen.
1-Wire Binding hab ich installiert.
Sonst sind meine OpenHAB Kenntnisse eher bescheiden.
Bin Jeden Tip dankbar.
Gruß
Jerry
Ich bin neu hier in diesem Forum.
Bis jetzt hab ich immer nur in den vorhandenen Themen geschmökert, Jetzt hab ich aber ein Problem, bei dem ich Hilfe brauche.
Bin eher ein Anfänger.
Ich habe auf meinem Raspi 3 openhab 2 und Homegear installiert. Außerdem einen YAHM container mit CCU 2.
Ein Funkmodul ist aufgesteckt(ob es funktioniert weis ich noch nicht).
Außerdem habe ich über 1-wire fünf Temperatursensoren DS18S20 dran hängen. Da die Pins 1-12 vom Funkmodul abgedeckt sind, nehm ich für 1-wire die 3,3 V vom Pin 17, GND von 20 und die Datenleitung hängt am GPIO 21.
Mit folgendem Script lese ich die Sensoren aus. Stammt nicht von mir, so gut bin ich leider noch nicht. Hab ich runtergesaugt und mit einer Funktion erweitert, damit ich jedem Sensor einen Namen zuweisen Kann, der auch ausgegeben wird. Das Ganze in eine Schleife gelegt, alle 10 Sekunden krieg ich die Werte der Sensoren.
#!/usr/bin/python
# -*- coding: utf-8 -*-
def sensor(sensor_name):
if sensor_name == "28-000008596f98":
sensor_name = "Sensor 1"
if sensor_name == "28-000008598474":
sensor_name = "Sensor 2"
if sensor_name == "28-00000859354a":
sensor_name = "Sensor 3"
if sensor_name == "28-00000858ac61":
sensor_name = "Sensor 4"
if sensor_name == "28-000008597447":
sensor_name = "Sensor 5"
return sensor_name
while True:
# Import der Module
import sys
import os
import time
# 1-Wire Slave-Liste lesen
file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
w1_slaves = file.readlines()
file.close()
# Fuer jeden 1-Wire Slave aktuelle Temperatur ausgeben
for line in w1_slaves:
# 1-wire Slave extrahieren
w1_slave = line.split("\n")[0]
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
sensor_name = w1_slave
print(sensor(sensor_name) + ': %6.1f °C' % temperature)
print " "
time.sleep(10)
else:
sys.exit(0)
Funktioniert tadellos
Jetzt meine Frage :
Gibt es eine Möglichkeit den 1-wirw Bus an openhab 2 anzubinden um eine elegantere Darstellung der Ausgabe zu erreichen.
1-Wire Binding hab ich installiert.
Sonst sind meine OpenHAB Kenntnisse eher bescheiden.
Bin Jeden Tip dankbar.
Gruß
Jerry