Ich bin im Loxone Forum auf die 1-Wire Master Platinen von Sheepwalk Electronics (Externer Link: http://www.sheepwalkelectronics.co.uk) aufmerksam geworden. Da wir nächstes Jahr mit der Bewässerung und vielleicht einem kleinen Pool loslegen wollen, habe ich mir eine Platine bestellt. Die Wahl viel schnell auf die RPI2 1-Wire Platine, da diese gegenüber der RPI1 1-Wire Platine viele Vorteile bietet. Unter anderem eine geregelte 5V Spannungsversorgung (wichtig für einen stabilen 1-Wire Bus), einen Überspannungsschutz (DS9503) und einen richtigen I2C-to-1-Wire Chip (DS2482-100) der sehr leistungsfähig ist. Wie auch bei der Loxone 1-Wire Extension die wir für die 1-Wire Sensoren im Haus nutzen, ist ab einer bestimmten Länge des Bussystesm bzw. Anzahl an Teilnehmern mit Problemen zu rechnen.
Übergangsweise habe ich die RPI2 Platine auf den zweiten Raspberry Pi gesteckt um ein wenig damit zu spielen. Wenn man alles genau nach Anleitung macht, sind die Sensoren (Im Bild zu sehen ein DS18B20) schnell ausgelesen.
Hier eine kleine Anleitung:
Zum testen habe ich wie oben auf dem Bild zu sehen, einen DS18B20 Temperatursensor mit 5V Spannungsversorgung (3adrig) an die 1-Wire Platine angeschlossen und die Platine auf den Raspberry Pi gesteckt.
Damit die benötigten Kernel Module gleich beim Start geladen werden muss folgende Datei geöffnet
sudo joe /etc/modules
und folgende Zeilen hinzufügt werden
i2c-bcm2708 i2c-dev
Zum Laden der Module muss der Raspberry Pi neugestartet oder wer nicht warten kann manuell geladen werden
sudo modprobe i2c-bcm2708 sudo modprobe i2c-dev
Nachdem die Module geladen wurden kann geprüft werden, ob die I2C Schnittstelle die Platine erkannt hat
sudo i2cdetect -y 1
es sollte folgende Ausgabe erscheinen
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Die Ausgabe bedeutet, dass an der Adresse 18 ein I2C Gerät in diesem Falle die RPI2 Platine antwortet.
Jetzt muss noch die OWFS (1-Wire File System) Software installiert werden
sudo apt-get install owfs ow-shell
Nach der Installation ist es sehr wichtig noch die Konfiguration anzupassen
joe /etc/owfs.conf
Folgende Zeile kann mit # auskommentiert werden, da hiermit nur Fake Sensoren generiert werden die mich zuerst sehr verwirrt haben. Zum probieren vielleicht ganz nett, man sollte nur dran denken!
FAKE = DS18S20,DS2405
Zusätzlich muss folgende Zeile eingefügt werden
server: device=/dev/i2c-1
Zum einlesen der Konfiguration kann man den ganzen Raspberry Pi neustarten oder nur den OWFS Serivce neustarten, was natürlich etwas schneller geht
sudo service owserver restart
Jetzt kann das virtuelle 1-Wire Filesystem (OWFS) mit
owget
ausgelesen werden. Als Ergenis erhält man das root Verzeichnis
/28.F73924030000 /bus.0 /uncached /settings /system /statistics /structure /simultaneous /alarm
Der virtuelle Ordner 28.F73924030000 entspricht dann dem DS18B20. Die auslesbaren Werte erhält man dann mit
owget /28.F73924030000
Die Liste unterscheidet sich je nach Sensor / Aktor ein wenig
/28.F73924030000/address /28.F73924030000/alias /28.F73924030000/crc8 /28.F73924030000/errata /28.F73924030000/family /28.F73924030000/fasttemp /28.F73924030000/id /28.F73924030000/locator /28.F73924030000/power /28.F73924030000/r_address /28.F73924030000/r_id /28.F73924030000/r_locator /28.F73924030000/temperature /28.F73924030000/temperature10 /28.F73924030000/temperature11 /28.F73924030000/temperature12 /28.F73924030000/temperature9 /28.F73924030000/temphigh /28.F73924030000/templow /28.F73924030000/type
Das Auslesen der Temperatur aus dem Sensor funktioniert wie folgt
owget /28.F73924030000/temperature
Es gibt auch eine fertige HTTP Schnittstelle in der das ganze viel einfacher geht 🙂
http://<Raspberry Pi IP Adresse>:2121
Wenn man z. B. nur die Temperatur von der Adresse 28.F73924030000 auslesen will kann man das mit
http://<Raspberry Pi IP Adresse>:2121/28.F73924030000/temperature
Hallo, können Sie in wenigen schritten erklären wie die Einbindung der 1 wire Messwerte in die loxone Steuerung integriert werden kann?
Hallo Benjamin,
Sorry, da kann ich dir leider nicht weiterhelfen. Ich hatte es mir eigentlich vorgenommen, bin aber nicht mehr dazu gekommen. Den letzten Satz im Beitrag, dass in kürze weitere Beiträge folgen, habe ich daher entfernt.
Ein Lösungsansatz wäre über einen “virtuellen HTTP Eingang” auf dem Loxone Miniserver die Daten direkt von der OWFS Webseite abzufragen bzw. zu parsen. Alternativ ein Shell Skript das die Temperatur ausliest und dann an einen virtuellen Eingang übergibt. Das Skript wird dann per Cronjob gestartet. Das Shell Skript habe ich nur eben schnell zusammengesucht und ist daher ungetestet. Vielleicht hilft es dir ja trotzdem weiter?!
Wenn du noch Fragen hast, melde dich gerne nochmal.
Viele Grüße
Stefan