Seite 1 von 2

OpenHAB 2 und 1-wire

Verfasst: 8. Mär 2017 21:16
von jerrykuehn
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

Re: OpenHAB 2 und 1-wire

Verfasst: 9. Mär 2017 08:09
von seppy
Hi,
ja sollte gehen, allerdings mit dem openHAB 1 Binding. Die Basiskonfiguration des Bindings erfolgt dann nicht in der openhab.cfg, sondern onewire.cfg die openHAB beim Laden des Bindings automatisch unter /etc/openhab2/services/ erzeugen sollte.

Testen kann ich leider selber nicht, da ich keine 1-wire Sensoren im Einsatz habe.

Grüße,
Seppy

Re: OpenHAB 2 und 1-wire

Verfasst: 11. Mär 2017 10:05
von jerrykuehn
Danke !

Re: OpenHAB 2 und 1-wire

Verfasst: 13. Mär 2017 11:45
von jerrykuehn
Hallo
Nach ein paar Tagen Pause kann ich wieder bei meinem Projekt weitermachen.
Habe gleich eine wichtige Frage.
Wie kann ich den 1-wire Bus mit dem openHAB-Raspberry verbinden?
Brauche ich da einen eigenen Adapter oder geht das über die GPIO's?
Wird vielleicht Homegear verwendet?
GPIO-Binding ist installiert.
Grüße
Jerry

Re: OpenHAB 2 und 1-wire

Verfasst: 14. Mär 2017 10:17
von seppy

Re: OpenHAB 2 und 1-wire

Verfasst: 14. Mär 2017 21:00
von jerrykuehn
Hallo
Vielen Dank für die Antwort. Vor allem der erste Link bringt mir als Anfänger viel.
Momentan komme ich allerdings nicht vom Fleck. Habe alles wieder neu aufgesetzt(mit neuer Karte, die alte gesichert und nicht gelöscht).
Am Raspi kann ich den 1-wire bus mit meinem Python script tadelos auslesen und ausgeben. Nur im openhab rührt sich nix. Habe GPIO,Homematic und One-Wire-Binding installiert. Die Inbox bleibt leer. Wird kein Thing gefunden. Irgend etwas mach ich falsch.
Ich arbeite ohne Monitor und Tastatur, nur mit Ssh und VNC.
Grüße
Jerry

Re: OpenHAB 2 und 1-wire

Verfasst: 17. Mär 2017 12:42
von seppy
Hi,
so wie ich das sehe ist das OneWire Binding ein Legacy Binding und muss über ein Configfile konfiguriert werden. Dazu legst Du eine Datei unter

Code: Alles auswählen

/etc/openhab2/services/
mit Namen onewire.cfg (soweit ich weiß). Die Konfiguration in diesem File erfolgt genau wie in openHAB 1. Du kannst also den 1-wire Abschitt kopieren.
Things brauchst Du nicht und die Items musst Du über ein *.items File erzeugen.

Grüße,
Seppy

Re: OpenHAB 2 und 1-wire

Verfasst: 17. Mär 2017 21:06
von jerrykuehn
Hallo seppy
Wieder ein kleiner Schritt vorwärts.
Die Sensoren hab ich jetzt in ein Item gepackt.

Group temperatur

Number Sensor_1 "Sensor 1 [%.1f °C]" (temperatur) { exec="<[/home/jerry/scripts/onewiretemp.sh 28-000008596f98:10000:REGEX((.*?))]" }
Number Sensor_2 "Sensor 2 [%.1f °C]" (temperatur) { exec="<[/home/jerry/scripts/onewiretemp.sh 28-000008598474:10000:REGEX((.*?))]" }
Number Sensor_3 "Sensor 3 [%.1f °C]" (temperatur) { exec="<[/home/jerry/scripts/onewiretemp.sh 28-00000859354a:10000:REGEX((.*?))]" }
Number Sensor_4 "Sensor 4 [%.1f °C]" (temperatur) { exec="<[/home/jerry/scripts/onewiretemp.sh 28-00000858ac61:10000:REGEX((.*?))]" }
Number Sensor_5 "Sensor 5 [%.1f °C]" (temperatur) { exec="<[/home/jerry/scripts/onewiretemp.sh 28-000008597447:10000:REGEX((.*?))]" }


Dann eine Sitemap


Group item=temperatur label="Heizungsteuerung" {
Frame label="Temperaturen" {
Text item=Sensor_1
Text item=Sensor_2
Text item=Sensor_3
Text item=Sensor_4
Text item=Sensor_5
}
}

In der Paper UI Tauchen alle 5 Sensoren bei den items auf, nicht aber bei den Things.
Wenn ich das Script mit der jeweiligen Sensor ID aufrufe, läuft es und ich krieg die Temperatur angezeigt.
Am Script kann es also nicht liegen.
Kannst Du mir vielleicht weiterhelfen.
Leide schon an akutem Schlafmangel.

Grüße
Jerry

Re: OpenHAB 2 und 1-wire

Verfasst: 20. Mär 2017 09:37
von seppy
Hi,
Legacy Bindings erzeugen keine Things, da bin ich am Anfang auch drüber gestolpert. Kann es sein das Du ein Berechtigungsproblem hast? Aktivieren mal das Debugging. Ich habe gerade von Cyrelian gelernt, wie das in openHAB2 funktioniert. Am einfachsten über die Karaf Console (http://docs.openhab.org/administration/console.html):

1) Anmelden an der Karaf Console

Code: Alles auswählen

ssh -p 8101 openhab@localhost
2) Den Debug Modus für das Binding aktivieren:

Code: Alles auswählen

Log:set DEBUG org.openhab.binding.onewire
3) Ob es funktioniert hat kannst Du mit dem folgenden Befehl prüfen:

Code: Alles auswählen

log:list
4) Ab diesem Zeitpunkt kannst Du im Logfile genau verfolgen was passiert und ggfls. nicht läuft:

Code: Alles auswählen

tail -f -n 1000 /var/log/openhab2/openhab.log
Grüße,
Seppy

Re: OpenHAB 2 und 1-wire

Verfasst: 21. Mär 2017 21:43
von jerrykuehn
Hallo seppy
Bin schon wieder ein Stück weiter.
Hab jetzt alle Sensore manuell zu den Things eingefügt.
Werden alle bei Configuration -> Things angezeigt mit grünen Feld "ONLINE"
Bein ClassicUI hab ich sie alle da.
Wenn ich einen anklicke steht der Onlineschalter auf off. Wenn ich ihn umschalte spingt er nach ca. 10 sec wieder auf off.
Die Log Datei schaut so aus:

2017-03-21 21:40:10.254 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'Connect.php' contains invalid characters, new Datapoint name 'Connect_php'
2017-03-21 21:40:10.258 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'GetID.php' contains invalid characters, new Datapoint name 'GetID_php'
2017-03-21 21:40:10.261 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'ReadMe.txt' contains invalid characters, new Datapoint name 'ReadMe_txt'
2017-03-21 21:40:32.122 [INFO ] [ternal.communicator.HomematicGateway] - No event since 1802 seconds from gateway '287faae0', restarting RPC server
2017-03-21 21:40:32.143 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'Test.php' contains invalid characters, new Datapoint name 'Test_php'
2017-03-21 21:40:32.144 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'DeviceScripts/Sonos/espeakTTS.php' contains invalid characters, new Datapoint name 'DeviceScripts_Sonos_espeakTTS_php'
2017-03-21 21:40:32.146 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'DeviceScripts/Sonos/IvonaTTS.php' contains invalid characters, new Datapoint name 'DeviceScripts_Sonos_IvonaTTS_php'
2017-03-21 21:40:32.147 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'Connect.php' contains invalid characters, new Datapoint name 'Connect_php'
2017-03-21 21:40:32.148 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'GetID.php' contains invalid characters, new Datapoint name 'GetID_php'
2017-03-21 21:40:32.149 [INFO ] [ng.homematic.internal.misc.MiscUtils] - Datapoint name 'ReadMe.txt' contains invalid characters, new Datapoint name 'ReadMe_txt'

Da kann ich leider nix anfangen damit.
Kannst Du mir weiter helfen
Grüße
jerry