[Modul] OWFS (OneWireFileServer)

Hallo Leute,

weil ich es selbst brauchte habe ich ein Modul zum Zugriff auf den OWFS (OneWireFileServer) erstellt. Aktuell handelt es sich um einen Splitter, einen Konfigurator und die Instanzen für den DS18B20 und den DS18S20. Weitere können sicherlich auch erstellt werden.

Es wird dringend dazu geraten den Konfigurator zur Erstellung der Instanzen zu nutzen, nur so ist sichergestellt dass das Format des Device-ID korrekt erstellt wird.

Bei mir läuft es jetzt, Fehler sind aber definitiv nicht ausgeschlossen.:wink:

Das Modul ist hierzu finden:

In meinem IPS2GPIO-Modul gibt es eine Instanz mit dem Namen IPS2GPIO_1Wire. Diese funktionierte nicht mehr da sich die Datei-Struktur des OWFS geändert hatte. Es wird demnächst vom Netz genommen.

Joachim

…noch ein paar Tipps zum OWFS:
Mit

sudo nano /etc/owfs.conf

ruft man die Konfiguration des OWFS auf dem Raspberry Pi auf.
Ich verwende im aktuellen Projekt den blauen USB-!-Wire-Adapter, deswegen habe ich

server: usb = all

einkommentiert. Wenn man

server: FAKE = DS18S20,DS2405

auskommentiert verschwinden die zwei Fake-1-Wire-Devices.

Ansonsten ist nichts was man für zeitkritische Anwendung nutzen sollte, aber da ist 1-Wire sicherlich auch nicht gedacht…:wink:

Joachim

Moin Joachim,

hast Du denn eventuell geplant auch den 2408 zu implementieren - oder könntest mir eventuell einen Tipp geben wie ich dies am besten tun kann?

Mir würde völlig reichen, dass PIO.BYTE oder PIO.ALL setzen zu können (siehe Anlage).

Ciao
HerbertF

Hallo Herbert,

ist aktuell nicht geplant weil der ja nach meinem Kenntnisstand (leider) seit langem abgekündigt ist.

Ich schaue mir das mal gerne an, kann aber aktuell nichts über eine Umsetzung sagen.

Joachim

Hallo, ist es geplant die OWFS-Module noch zu erweitern?
Ich hätte Bedarf an DS2450 und DS2438.

Alexander

Hallo zusammen, ich habe heute versucht, das Modul bei mir zum Laufen zu bringen und scheitere leider noch dabei. Das Einbinden des Moduls war noch kein Problem und den Splitter habe ich auch eingerichtet. Wenn ich jetzt versuche, die Konfigurator Instanz zu starten, werden auch alle Devices auf meinem Bus erkannt (ich hab’ das Debug Logging etwas erweitert und sehe jetzt jede Abfrage auf die einzelnen 1W Geräte), aber nach Abschluss des Busscans (Funktion DeviceList() in IPS2OWFS_Splitter/module.php wird noch erfolgreich ausgeführt) bekomme ich folgende Fehlermeldung:

Konnte Konfigurationsform von neuer Instanz nicht bestimmen
Warning: 
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 130
Warning: Trying to access array offset on value of type null in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Splitter/module.php on line 131
RESULT:a:10:{s:15:"2D.4874C0120000";a:2:{s:7:"Address";s:16:"2D4874C01200004D";s:4:"Type";s:6:"DS2431";}s:15:"2D.6731C0120000";a:2:{s:7:"Address";s:16:"2D6731C0120000E4";s:4:"Type";s:6:"DS2431";}s:15:"2D.F177C0120000";a:2:{s:7:"Address";s:16:"2DF177C012000092";s:4:"Type";s:6:"DS2431";}s:15:"28.C739FD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.7B16FD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.CBB1FD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.5314FD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.8E22FD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.06DCFD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}s:15:"28.F23AFD0C0000";a:2:{s:7:"Address";N;s:4:"Type";N;}} in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Configurator/module.php on line 101
Warning: Undefined variable $Devices in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Configurator/module.php on line 120
Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Configurator/module.php:49
Stack trace:
#0 /-(3): IPS2OWFS_Configurator->GetConfigurationForm()
#1 {main}
  thrown in /var/lib/symcon/modules/IPS2OWFS/IPS2OWFS_Configurator/module.php on line 49 (Code: -32603)

Ich habe jetzt wieder etwas im Code gestöbert und festgestellt, dass im Modul IPS2OWFS_Configurator/module.php in der Funktion GetData() in Zeile 102 die Funktion $this->SendDataToParent(…) FALSE zurückliefert, wo eigentlich der JSON String zurück kommen müsste. Und das führt dann weiter dazu, dass in Z. 47 die Variable $DeviceArray nicht gefüllt wird und damit geht dann natürlich auch ein count darauf auf die Bretter… Aber leider verstehe ich die internen Mechanismen der Modulprogrammierung nicht genug, um sagen zu können, warum SendDataToParent() schief läuft. Hat jemand von euch vielleicht eine Idee, wo man suchen könnte…?
VG Malte

Hallo Malte,

ich vermute das das Modul mit dem FamilyCode 2D (= DS2431/DS1972) nicht umgehen kann…

Ich schaue mir das mal an.

Joachim

Nachtrag: Welche 1-Wire-Devices verwendest Du noch in Deinem Netzwerk?

Hallo Malte,

ich habe Dir mal den DS2431 als Instanz hinzugefügt - aber noch ohne inhaltliche Funktion…

Wenn das fehlerfrei funktioniert müsstest Du mal bitte im Debug der DS2431-Instanz schauen was der an Daten sendet.
So wie ich es verstehe ist relevant ob der DS2431 „online“ ist oder „offline“?

Joachim