Zum Ende der Metadaten springen
Zum Anfang der Metadaten
Autor
Logo

Status

STABLE

Version0.4.1
Zweck Das Plugin liest Werte vom 1-Wire Bus ein und sendet Sie an den MS
 Version History...

Version 0.4

  • erste öffentliche Version

Version 0.4.1

  • Abfrage DS2423 Counter-Chip hinzugefügt
 RoadMap...

Inhalt

 


Installation

Das Plugin wird wie alle anderen Plugins per ZIP-Datei im Loxberry installiert.

Konfigurationsoptionen

Die Konfiguration des Plugin wird wie gewohnt im WebUi das Loxberry ausgeführt.

MiniServer
MiniServer → Auswahl des MiniServer an den die Daten gesendet werden sollen.
UDP-Port Sender → an diesen UDP-Port des MiniServer werden Statusmeldungen gesendet.
UDP-Port Receiver → Dieser Port wird am Loxberry geöffnet um z.B. Abfragen von DS2438 oder DS18B20 zu starten.
iButton
Bus 0 ... 8 → bein Ein werden auf diesem Bus zusätzlich zu den anderen Sensoren auch iButtons und DS2401/2411 gelesen.
Input
Active → bein Ein werden auf allen Bussen zusätzlich zu den anderen Sensoren die Eingänge DS2406/2408 gelesen.
Interface
Interface → Hier wählt ihr ob der 1Wire-Bus über USB-Busmaster oder über ein i2c-Shield angebunden wird.

Funktion des Plugins

Das Plugin kann von bis zu 9 USB- (DS9490) oder i2c-Busmaster (Shield)  unterschiedliche 1-Wire Geräte auslesen.
Darunter können unter anderem I-Buttons mit Standort-Erkennung betrieben werden.

Alle Werte werden direkt an VIs des MiniServer weiter gegeben, Status-Meldungen werden per UDP gesendet.

Als Grundlage dient der OWFS Server (Link) der die Geräte erkennt und in Virtuellen-Verzeichnissen zur weiteren Verarbeitung bereit stellt.
Der die Erkennung und Übergabe der Daten an den MiniServer wird über Skripte im Hintergrund erledigt.


Hardware

Raspberry Pi 2/3 / Zero W
USB Busmaster (Link) oder i2C Shield (Link)
1Wire Devices

Da vor allem das Erkennen von iButtons, DS2401/2411 und DS2406/DS2408 als Eingänge einiges an Leistung benötigt, sollte im WebUI nur die Busse auf iButton gestellt werden an denen auch wirklich welche genutzt werden.
Der Zero W verkraftet max. 3-4 Busmaster mit iButton-Erkennung und es sollten dann keine anderen leistungshungrigen Plugins darauf laufen.
Generell Empfehle ich das wenn mehr als 4 Busmaster verwendet werden den Raspberry als reines 1-Wire IP-Gateway zu nutzen.


Unterstütze Geräte

Folgende 1-Wire Family-Codes werden unterstützt
01 = DS2401 / 2411 / 1990 (iButton)
3A = DS2413
12 = DS2406  / DS2407
18 =
DS1963S / DS1962 (SHA iButton)
26 = DS2438
28 = DS18B20
29 = DS2408

Es können auch Geräte verwendet werden die die o.g. simulieren wie z.B. ein 1Wire-RFID-Reader. (Link)

Einrichtung in der Loxone Config Software

Virtuelle Eingänge anlegen

Es muss für jeden Sensor bzw. Sensor Wert (DS2438) ein VI angelegt werden.
Der Sensorname setzt sich bei digitalen Sensoren aus 1W_SensorID zusammen, bei anlogen Sensoren aus 1W_SensorID_ValueTyp.


Den Namen des VI könnt ihr euch anzeigen lassen indem ihr auf im WebUI klickt.
Jetzt öffnet sich nach ein paar Sekunden eine neue Seite mit alle Sensoren die gefunden wurden.

 

Nun könnt ihr per Copy&Paste den Namen übernehmen und einen neuen VI anlegen. Bitte keinen "virtuellen UDP Eingang" oder "virtuellen UDP Eingang Befehl".

Beispiel DS2438 VAD (Analog)

1W_26CCF655000000_VAD

Beispiel iButton (digital)

1W_010DA37E190000

 
 Beispiel Bus8 (digital)

1W_BUS.8

Die Einheit nach der Messgröße anpassen:


Wichtig!

Sensoren wie iButton oder DS2401/2411 müssen aktiv sein um angezeigt zu werden. Wenn ihr z.B. einen DS2401 an einem Bewegungsmelder habe müsst ihr jemand in den Raum schicken damit er auslöst.


iButton / DS2401 / DS2411

ohne Standorterkennung

Wenn ihr zB DS2401 für Fenster Kontakte nutzt legt ihr einfach einen VI (digital) mit dem Namen des Sensors an.
zB 1W_0160EDAA070000
Nun kann dieser wie jeder andere Eingang in der Config verwendet werden.

mit Standorterkennung (iButton-Reader)

Um den Standort mit zu erfahren um z.B. zu unterscheiden ob der iButton an der Haustür oder am Garagentor angelegt wurde, darf nur ein Reader je Bus angeschlossen werden.
Hierzu muss zusätzlich ein VI für den jeweiligen Bus angelgt werden, und mittels UND-Baustein mit dem VI des iButton verbunden werden.
Wird nun wie am Bild unten am Reader auf Bus 8 ein iButton angelegt schalten beide VIs auf 1 und somit wird zB der Türöffner an der Haustür freigegeben.
Wenn ihr mehreren iButtons einen Zugriff geben wollt könnt ihr am I2 ein ODER-Baustein mit einfügen.
    

Tipps
Wenn ihr hier eine Seite mit allen iButtons und Bussen macht, und diese dann per Merker weiter verarbeitet bleibt es sehr übersichtlich und bei evtl. Änderungen kann diese schnell gemacht werden.

 

 

DS2438 (Batterie-Management Smart Battery Monitor)

Abfrage auslösen

Anders ist es beim DS2438, hier muss der Scan aktiv ausgelöst werden. Dazu gibt es im Plugin ein UDP-Receiver der die Scan-Befehle annimmt und ausführt.
In der Config legt man dazu einen Virtuelle-Ausgang mit der IP und dem UDP-Receiver-Port den ihr im WebUI eingestellt habt.

Dann wird ein Ausgangsbefehl angelegt in dem man bei EIN den gewünschten Befehl eingibt.

Wichtig ist das \n am Ende des Befehl, dies kann man wie ein druck der Enter-Taste verstehen. Nur so wird der Befehl ausgeführt.

Um den Befehl nun auszulösen verwenden wir einen Impulsgeber-Baustein der alle X-Sekunden ein Impuls ausgibt.
In dem Fall habe ich eine alle 60 Sekunden einen Impuls von 0,5 Sekunden. Ihr könnt an einen Baustein auch mehrere Ausgangsbefehle anschließen.

Befehle
1WIRE_DS2438 all\n
1WIRE_DS2438 ID,ID,ID....\n #Ihr könnt mehre Sensoren abfragen in dem ihr diese mit einem Komma trennt.


Beispiel

Ihr wollt nicht alle DS2438 auf einmal Abfragen sondern nur 2 spezielle die ihr öffter als andere Abfragen wollt.
Jetzt könnt ihr als Befehl bei EIN "1WIRE_DS2438 26CCF655000000,26A6588D000000" eintragen.
Es werden nur die Werte der 2 Sensoren mit der passenden ID zurück geliefert.

Sensoren

Um die Werte nun in der Config verwenden zu können müssen VIs für die einzelnen Werte angelegt werden.
Folgende Werte sind möglich:

VDD → Betriebsspannung der Bus (V)
VAD → Analogspannung (V) 
Vsens → Strom (mA)
Temp → Temperatur (°C)
HIH4000 → Luftfeuchte (%) wenn an VAD ein HIH4000 angeschlossen ist (Spannung- + Temperatur-Kompensiert), so spart man sich die Formel in der Config.

Beispiel VAD und HIH4000

 

Counter (DS2423)

Hier ist es im Prinzip das selbe wie bei den DS2438 oben. Der Unterschied sind nur die Befehle um den Scan auszulösen.

Abfrage auslösen

Befehle
1WIRE_DS2423 all\n              #Es werden alle Sensoren gescannt und per UDP zurück geliefert.
1WIRE_DS2423 ID,ID,ID....\n  #Ihr könnt mehre Sensoren abfragen in dem ihr diese mit einem Komma trennt.

Sensoren

Um die Werte nun in der Config verwenden zu können müssen VIs für die einzelnen Werte angelegt werden.
1W_1Dxxxxxxxxxxx_COUNTERA → Counter A
1W_1Dxxxxxxxxxxx_COUNTERA → Counter B


Beispiel


Temperaturen (DS2438 / DS18B20)

Hier ist es im Prinzip das selbe wie bei den DS2438 oben. Der Unterschied sind nur die Befehle um den Scan auszulösen.

Abfrage auslösen

Befehle
1WIRE_TEMP all\n              #Es werden alle Sensoren gescannt und per UDP zurück geliefert.
1WIRE_TEMP ID,ID,ID....\n  #Ihr könnt mehre Sensoren abfragen in dem ihr diese mit einem Komma trennt.

Sensoren

Um die Werte nun in der Config verwenden zu können müssen VIs für die einzelnen Werte angelegt werden.
Folgende Werte sind möglich:

Temp → Temperatur (°C)

Beispiel

 


Ein-/Ausgänge

Unterstützt werden: DS2406, DS2408, DS2413

Es sollten Ein/Ausgänge nicht gemischt werden da es hier bei falscher Konfiguration von Widerständen / Relais usw. zu Fehlern kommen kann.
Deswegen wird dringend Empfohlen Chips nur für einen Zweck zu verwenden, entweder Eingänge oder Ausgänge.

Eingänge

Änderungen an einen VI (analog) gesendet und per Binärdekoder weiter verarbeitet. Der Wert 3 bedeutet z.B. Eingang 1 und 2 ist auf Ein.

Alle 15 Minuten werde zum Abgleich alle Eingänge an den MiniServer gesendet.

 

 

Ausgänge

Die Ausgänge werden per UDP vom MiniServer an das Plugin gesendet.

Dazu sind 3 Werte notwendig:
ID → Die ID des 1Wire Baustein
PIO → Der Ausgang der geschaltet werden soll. Hier wird mit 0 begonnen zu Zählen (DS2406 0-1 / DS2413 0-1 / DS2408 0-7)
BYTE → Der Zustand des Ausgang 0/1

Ausgangsbefehl

1WIRE_WRITE  ID PIO Byte\n



In dem Fall wir am Baustein mit der ID 12EE.... der PIO 0 auf 1 geschaltet.
Wenn der Befehl zum Baustein gesendet wird, kommt als Rückmeldung der Zustand des Eingangs per UDP zurück.
zB IO-RE 12EE...... 0, so kann man ggf. prüfen lassen ob der Eingang auch 0/1 ist.


Wichtig!
Am DS2408 muss zuerst der strobe auf 0 gesetzt werden um Ausgänge schalten zu können.
Das könnt ihr im OWFS WebUI machen indem ihr auf eure Sensor ID klickt und den Eintrag strobe ganz unter sucht. Das Häckchen heraus nehmen und CHANGE klicken.

Stausmeldungen

Zur Funktionskontrolle werden Statusmeldungen per UDP an den MiniServer gesendet.
Mögliche Statusmeldungen

OWFS Server OK
OWFS Server FAILED
1Wire-Bus 0 FAILED
1Wire-Bus 0 OK
.
.
1Wire-Bus 8 FAILED
1Wire-Bus 8 OK

 

Im Webinterface kann eine Zeit eingestellt das alle 30/60/120/180 Sekunden ein "Heartbeat" Signal des BusMaster gesendet wird um die Busse zu Überwachung.


Reset bei Fehler

Es werden von den einzelnen Skripten OK und FAILED (Heartbeat) an den MiniServer gesendet.
Diese könnt ihr Prüfen lassen zB mit einem Zähler und ggf. das Plugin neu starten.
Hier zu müsst ihr lediglich ein UDP-Ausgang anlegen und im EIN Befehl 1WIRE_RESTART\n schrieben.
Empfängt das Plugin den Befehl wird es neu gestartet.

virtuellen Taster erstellen:

virtuellen Ausgang erstellen:

 → siehe "Abfrage auslösen"

 

 

 

Debug

Es können viele Meldungen per Debug geprüft werden, dazu werden folgende Log-Dateien geschrieben.

1wire.log                 #Allgemeine Meldungen des Plugins
1wire_bus_0.log     #Meldungen für die iButton-Erkennung des Bus 0
.
.
.
1wire_bus_8.log     #Meldungen für die iButton-Erkennung des Bus 8
1wire_DS2438.log  #Medungen für die Abfrage der DS2438 Bausteine
1wire_temp.log       #Medungen für die Abfrage des DS18B20
1wire_io.log            #Meldungen für die Abfrage der DS2406/2408


Um den Debug zu starten im WebUI den Schalter auf "Ein" stellen und speichern. Rechts oben in der Hilfe findet ihr die Links zur jeweiligen Log-Datei.
Wichtig!! Da viele Daten geschrieben werden sollte der Debug nicht zulange laufen um die SD-Karte zu schonen.

 

iButton / DS2401/2411 mit anderen Sensoren am gleichen Bus

 Wie auch bei der Loxone 1Wire-Extension kann es beim mischen von DS2438/2401/18B20 zu einer Verzögerung der iButton-Erkennung kommen.
Das geschieht immer genau dann wenn zB DS2438 abgefragt wird und gleichzeitig ein iButton angelegt wird. Dann wird dieser ans Ende der Empfangsmeldung gestellt.
Das scheint generell ein 1Wire Problem zu sein und  hat nichts mit dem Plugin zu tun.

Tipp!

Trennt die iButton und Sensorik auf 2 unterschiedliche Busmaster auf wenn die Anwendung zeitkritisch ist.

Spannungsversorgung

Die Spannungsversorgung kann prinzipiell direkt vom Busmaster genommen werden.

Hierbei ist zu bedenken:

  • Je Busmaster kann max 100mA genutzt werden, wovon im aktiven Zustand der BusMaster selber schon max. 58mA (Idle 5mA) benötigt.
    Somit verbleiben für die Geräte am Bus nur ~42mA (Empfehlung des Hersteller sogar nur 25mA), und das könnte bei vielen Geräten zu Problemen führen.
    zB braucht ein 1Wire-RFID-Reader schon 12mA beim lesen und senden.
  • Der USB-Bus kann max 500mA leisten die er sich beim Raspberry aber mit diversen anderen Geräten (Netzwerk/Soundkarte...) teilen muss
  • Die Spannungsqualität des Raspberry ist mit vielen Geräten bzw. vielen 1-Wire Teilnehmern nicht gerade perfekt und kann ggf. Messergebnisse verfälschen.

Bei vielen Busmastern / 1Wire Geräten sollte man sich Gedanken machen ein kleines 5V Netzteil (z.B. TDK DSP10-5) zur Stabilisierung einzusetzen.
Alternativ kann man auch einen aktiven USB-Hub einsetzten, hier scheint aber nicht jeder Billig-Hub zu funktionieren, ich empfehle daher ein externes Netzteil.

 

 

Fragen stellen und Fehler melden

https://www.loxforum.com/forum/projektforen/loxberry/plugins/134900-plugin-1wire