Neues OWX Backend in Arbeit

Begonnen von Prof. Dr. Peter Henning, 13 Mai 2015, 08:36:12

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Nachdem ich das laaaange vor mir her geschoben habe, ist jetzt eine neue Version von OWX in Arbeit.
Features:


  • Integrierte Unterstützung für 1-Wire-Interfaces, die per TCP/IP angeschlossen sind (also nie wieder socat)
  • Stark verbessertes Verhalten und automatisches reconnect bei ausgefallenen Interfaces

Eine erste Alpha-Version hänge ich hier an - bestehend aus 00_OWX.pm und 11_OWX_TCP.pm (beide gehören zusammen). Ganz bewusst verteile ich noch nicht die anderen aufgepeppten Backend-Module, denn mich würden zunächst ein paar Testberichte bezüglich der Stabilität und des Verhaltens beim Ausfall der Netzwerkverbindung interessieren.

Also nicht in Produktivumgebungen einspielen.

Einsatz mit WLAN- und Ethernet-Interfaces als

define myInterface OWX 192.168.0.97:23

Eventuell muss man nach 10 Sekunden noch einmal ein get myInterface devices absetzen.

LG

pah

smurfix

Ich hab mal ein bisschen über den Code geschaut ..:

Wer behauptet denn, dass die 1Wire-IDs über Family-Grenzen hinweg eindeutig sind?

$owx_crc (Zeile 575) schleppt den Punkt mit und wird eh nicht verwendet.

OWX_Alarms() sollte im Arraykontext einfach @owx_alarm_names zurückliefern. Analog _Discover().

Du kannst in OWX_CRC16 einfach die beiden CRC-Bytes an die Nachricht anhängen und prüfen, ob das Resultat 0xB001 ist. Siehe OWFS::ow_crc.c

Wozu braucht TCP eine Baudrate?

"all E3 characters have to be duplicated": s/\xE3/\xE3\xE3/g

Die Abfrage in Zeile 632 (OWX_TCP) ist redundant. Die Schleife davor kann man durch s/(.)/sprintf("0x%02x ",$1)/eg ersetzen. Dito Zeilen 249 und 261.

Zeile 242:
print "bla "x3;
bla bla bla


Da wir über Port 23 reden ... gibt es überhaupt Gegenstellen, die sich an die Telnet-Spezifikation halten (RFC 854, insbesondere: Duplikation von \xFF; ggf. RFC 856), oder ist das einfach eine TCP-Verbindung und die Portnummer ist ... äh ... als höflicher Mensch sage ich dazu lieber nichts weiter  >:( ...?

Prof. Dr. Peter Henning

Diese Codemäkelei geht mir irgendwie irgendwo vorbei.

pah


UweH

Hallo pah,

ich habe noch Probleme...
FHEM startet mit dem neuen OWX, die Weboberfläche ist aber nicht erreichbar. Ein shutdown restart bringt das gleiche Ergebnis, auch ein kompletter Neustart des Systems half nicht. Mit dem aktuellen OWX über socat bzw. ohne socat mit OWX_Async funktioniert hingegen. Der Start von FHEM mit dem neuen OWX sieht im Log so aus (Ein ETH-Interface mit zwei Busmastern und ein paar angeschlossenen 1Wire-Geräten):
2015.05.14 09:08:19 0: Server started with 95 defined entities (version $Id: fhem.pl 8499 2015-04-30 09:49:39Z rudolfkoenig $, os linux, user fhem, pid 2027)
2015.05.14 09:08:19 5: SW: e3c5
2015.05.14 09:08:20 5: SW: e1f0e3b5
2015.05.14 09:08:20 5: SW: e100000000000000000000000000000000e3a5
2015.05.14 09:08:20 5: OWX_TCP::Search: new device found 28.F09339050000.7B
2015.05.14 09:08:20 5: SW: e3c5
2015.05.14 09:08:20 5: SW: e1f0e3b5
2015.05.14 09:08:20 5: SW: e102000000000000000000000000000000e3a5
2015.05.14 09:08:20 1: OWX_TCP::Search CRC failed
2015.05.14 09:08:20 1: OWX: 1-Wire devices found on bus 1wire_1 (Temp.AZ)
2015.05.14 09:08:20 2: Attempt to write to Active device.
2015.05.14 09:08:20 1: PERL WARNING: Use of uninitialized value $res in substr at ./FHEM/11_OWX_TCP.pm line 665.
2015.05.14 09:08:20 3: stacktrace:
2015.05.14 09:08:20 3:     main::__ANON__                      called by ./FHEM/11_OWX_TCP.pm (665)
2015.05.14 09:08:20 3:     OWX_TCP::Reset_TCP                  called by ./FHEM/11_OWX_TCP.pm (349)
2015.05.14 09:08:20 3:     OWX_TCP::Reset                      called by ./FHEM/11_OWX_TCP.pm (471)
2015.05.14 09:08:20 3:     OWX_TCP::Search                     called by ./FHEM/11_OWX_TCP.pm (418)
2015.05.14 09:08:20 3:     OWX_TCP::First                      called by ./FHEM/11_OWX_TCP.pm (287)
2015.05.14 09:08:20 3:     OWX_TCP::Discover                   called by ./FHEM/00_OWX.pm (549)
2015.05.14 09:08:20 3:     main::OWX_Discover                  called by fhem.pl (2630)
2015.05.14 09:08:20 3:     main::HandleTimeout                 called by fhem.pl (575)
2015.05.14 09:08:20 1: Trying second reset
2015.05.14 09:08:20 2: Attempt to write to Active device.
2015.05.14 09:08:20 1: PERL WARNING: Use of uninitialized value $res in substr at ./FHEM/11_OWX_TCP.pm line 672.
2015.05.14 09:08:20 3: stacktrace:
2015.05.14 09:08:20 3:     main::__ANON__                      called by ./FHEM/11_OWX_TCP.pm (672)
2015.05.14 09:08:20 3:     OWX_TCP::Reset_TCP                  called by ./FHEM/11_OWX_TCP.pm (349)
2015.05.14 09:08:20 3:     OWX_TCP::Reset                      called by ./FHEM/11_OWX_TCP.pm (471)
2015.05.14 09:08:20 3:     OWX_TCP::Search                     called by ./FHEM/11_OWX_TCP.pm (418)
2015.05.14 09:08:20 3:     OWX_TCP::First                      called by ./FHEM/11_OWX_TCP.pm (287)
2015.05.14 09:08:20 3:     OWX_TCP::Discover                   called by ./FHEM/00_OWX.pm (549)
2015.05.14 09:08:20 3:     main::OWX_Discover                  called by fhem.pl (2630)
2015.05.14 09:08:20 3:     main::HandleTimeout                 called by fhem.pl (575)
2015.05.14 09:08:20 3: OWX_TCP::Reset_TCP failure on bus 1wire_2, trying reconnect
2015.05.14 09:08:20 3: Opening 1wire_2 device 192.168.178.71:23
2015.05.14 09:08:20 3: 1wire_2 device opened
2015.05.14 09:08:21 5: SW: e1f0e3b5
2015.05.14 09:08:21 5: SW: e100000000000000000000000000000000e3a5
2015.05.14 09:08:21 1: OWX_TCP::Search CRC failed
2015.05.14 09:08:21 1: OWX: Deleting unused 1-Wire device OWX_29_350F11000000 of type OWSWITCH
2015.05.14 09:08:21 5: Triggering global (1 changes)
2015.05.14 09:08:21 5: Notify loop for global DELETED OWX_29_350F11000000
2015.05.14 09:08:21 1: OWX: Deleting unused 1-Wire device OWX_29_B6C80E000000 of type OWSWITCH
2015.05.14 09:08:21 5: Triggering global (1 changes)
2015.05.14 09:08:21 5: Notify loop for global DELETED OWX_29_B6C80E000000
2015.05.14 09:08:21 1: OWX: 1-Wire devices found on bus 1wire_2 ()
2015.05.14 09:08:21 5: exec at command LCD_Status
2015.05.14 09:08:21 5: redefine at command LCD_Status as +*00:00:10 {prg_Display_Taste}
2015.05.14 09:08:21 5: exec at command LCDup
2015.05.14 09:08:21 5: Cmd: >{prg_LCDup()}<
2015.05.14 09:08:21 5: Cmd: >set LCD line 0 Temp AZ: 21.0 C<
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e0054656d7020415a3a2032312e30204320
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 3: OWX_TCP::Reset_TCP failure on bus 1wire_1, trying reconnect
2015.05.14 09:08:21 3: Opening 1wire_1 device 192.168.178.71:26
2015.05.14 09:08:21 3: 1wire_1 device opened
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e1020202020
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: Triggering LCD (1 changes)
2015.05.14 09:08:21 5: Notify loop for LCD line 0 Temp AZ: 21.0 C
2015.05.14 09:08:21 5: Cmd: >set LCD line 1 T: 9  H: 87  W: 14<
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e40543a203920483a20383720573a203134
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 3: OWX_TCP::Reset_TCP failure on bus 1wire_1, trying reconnect
2015.05.14 09:08:21 3: Opening 1wire_1 device 192.168.178.71:26
2015.05.14 09:08:21 3: 1wire_1 device opened
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e5020202020
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: Triggering LCD (1 changes)
2015.05.14 09:08:21 5: Notify loop for LCD line 1 T: 9 H: 87 W: 14
2015.05.14 09:08:21 5: Cmd: >set LCD line 2 Sonne:<
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e14536f6e6e653a20202020202020202020
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 3: OWX_TCP::Reset_TCP failure on bus 1wire_1, trying reconnect
2015.05.14 09:08:21 3: Opening 1wire_1 device 192.168.178.71:26
2015.05.14 09:08:21 3: 1wire_1 device opened
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e2420202020
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: Triggering LCD (1 changes)
2015.05.14 09:08:21 5: Notify loop for LCD line 2 Sonne:
2015.05.14 09:08:21 5: Cmd: >set LCD line 3 09:08 Diesel:1.25<
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e5430393a30382044696573656c3a312e32
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 3: OWX_TCP::Reset_TCP failure on bus 1wire_1, trying reconnect
2015.05.14 09:08:21 3: Opening 1wire_1 device 192.168.178.71:26
2015.05.14 09:08:21 3: 1wire_1 device opened
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce0700000100004e6435202020
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 1: Trying second reset
2015.05.14 09:08:21 5: SW: e3c5
2015.05.14 09:08:21 5: SW: e155ffce07000001000048
2015.05.14 09:08:22 5: Triggering LCD (1 changes)
2015.05.14 09:08:22 5: Notify loop for LCD line 3 09:08 Diesel:1.25
2015.05.14 09:08:22 5: redefine at command LCDup as +*00:01:00 {prg_LCDup()}
2015.05.14 09:08:22 5: Triggering LCDup (1 changes)
2015.05.14 09:08:22 5: Notify loop for LCDup Next: 09:08:00

Ich hoffe, Du kannst damit was anfangen.

Viele Grüße
Uwe

Prof. Dr. Peter Henning

#4
Ja, danke, damit kann ich etwas anfangen.

Anbei neue alpha-Versionen für TCPIP und USB. Funktioniert wahrscheinlich noch nicht mit einem passiven DS9097.

LG

pah

UweH

Im Moment noch ebenso wie gestern. Log folgt.

Gruß
Uwe

UweH

Hier das Logfile mit diversen Startversuchen. Sobald ich das Device wieder mit OWX_ASYNC definiere, startet FHEM wieder normal.

Gruß
Uwe

Prof. Dr. Peter Henning

Hm. verstehe ich nicht so ganz....
Abwarten, danke für den Test.

LG

pah

Tino.Glatzel

Hallo,

ich habe die Tage den Controller "Controller 1-Wire to Ethernet" bei eservice-online.de gekauft.
socat will nicht so richtig. Bevor ich jetzt mehr Zeit investiere den socat ans laufen zu bekommen, wollte ich mal den aktuellen Stand des neuen OWS Backend erfragen.
Können die Files 00_OWX.pm, 11_OWX_TCP.pm, 11_OWX_SER.pm vom 14. Mai verwendet werden?


Tino

Prof. Dr. Peter Henning

Bei mir laufen sie. Ich bin nur derzeit durch ein EU-Projekt so belastet, dass ich kaum Zeit habe, das weiter zu treiben.

LG

pah

Tino.Glatzel

Hallo,

vielen Dank für die Antwort. Dann teste ich mal die Sache.


Tino

UweH

Moin,

bei mir läuft das übrigens jetzt auch. Es hat mit dem Kristech-Modul nicht funktioniert. Die China-Dinger laufen damit.
Das Log wird zugetextet mit diesen Einträgen:
2015.10.06 18:19:00 1: Trying second reset, state is opened
2015.10.06 18:19:00 1: Trying second reset, state is opened
2015.10.06 18:19:00 1: Trying second reset, state is opened
2015.10.06 18:20:00 1: Trying second reset, state is opened
2015.10.06 18:20:00 1: Trying second reset, state is opened
2015.10.06 18:20:00 1: Trying second reset, state is opened
2015.10.06 18:21:00 1: Trying second reset, state is opened
2015.10.06 18:21:00 1: Trying second reset, state is opened
2015.10.06 18:21:00 1: Trying second reset, state is opened


Was hat es damit auf sich?

Danke und Gruß
Uwe

Prof. Dr. Peter Henning

Kann ich nicht sagen, da das bei mir mit dem Kristech-Modul bestens funktioniert.

LG

pah

enno

Zitat von: Tino.Glatzel am 17 Juli 2015, 21:25:32
Hallo,

vielen Dank für die Antwort. Dann teste ich mal die Sache.


Tino

Hallo Tino,

ich versuche auch gerade den "1-Wire Controller 1" mit den Dateien vom 14 Mai in FHEM einzubinden. Klappt leider nicht ganz. Die Sensorenen werden zwar gefunden, der Controller erscheint dann aber immer als Offline und es werden keine ID der angeschlossenen Sensoren angezeigt. Hattest du Erfolg? Wenn ja, mit welchen Parametern laeuft der Controller 9600 oder 19200?

Gruss Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian