OWX asynchron überarbeitet

Begonnen von ntruchsess, 30 Juni 2013, 00:55:59

Vorheriges Thema - Nächstes Thema

hexenmeister

Nein, ich habe nur gemeint "keine Meldung da, wo ich eine aktualisierung erwarten würde". Sorry für ungenaue Angaben.
Beim Define wird alles gefunden und (glaube ich, habe logs gerade nicht zur Hand) sogar einmalig aktualisiert. Dann ist aber Stille.

ntruchsess

#256
Zitat von: hexenmeister am 16 Juli 2014, 21:37:29
Habe versucht, testweise einen Controller zu löschen. Prompt war FHEM weg:

Can't locate object method "exit" via package "OWX_DS2480" at ./FHEM/00_OWX_ASYNC.pm line 297.


gefixed.

Zitat von: hexenmeister am 16 Juli 2014, 21:37:29
Zieht man den Controller ab, läuft FHEM Amok:
2014.07.16 21:20:03.702 2: OWX: Error initializing OWio2: OWX_ASYNC_Init failed: OWX_SER: Serial device /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0@9600 not defined: No such file or directory
2014.07.16 21:20:03.816 3: Opening OWio2 device /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
2014.07.16 21:20:03.819 3: Can't open /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0: No such file or directory


auch gefixed. Abziehen und Wiederanstecken von DS2480 und/oder FRM sollte jetzt sauber funktionieren (geht natürlich nur, wenn die linux-Devicenamen beim Wiederanstecken die gleichen wie vorher sind...)

Das Thema 'mehrere parallele DS2480 Busmaster' muss ich noch mal untersuchen, da bin ich noch nicht mal zum testen gekommen, muss erst noch einen 2ten DS2480 für den Testaufbau fit machen...

Gruß,

Norbert

while (!asleep()) {sheep++};

hexenmeister


cwagner

#258
Moin, Norbert,

mit OWX_SER aus SVN ( Rev. 6273, reported Rev. 6271)

erhalte ich auf der Konsole fortlaufend diese Meldungen:

Use of uninitialized value $rin in vec at ./FHEM/OWX_SER.pm line 70.
Use of uninitialized value $rin in scalar assignment at ./FHEM/OWX_SER.pm line 70.
Use of uninitialized value $win in vec at ./FHEM/OWX_SER.pm line 71.
Use of uninitialized value $win in scalar assignment at ./FHEM/OWX_SER.pm line 71.

---------------------------
Bei den Modulen OWAD und OWMULTI habe ich kein attr tempconv mit dem ich auf onkick stellen könnte. Interessanterweise sind die jetzt deren Devices die einzigen, mit den ich timeout-Fehler im Log erhalte.

---------------------------
Bei OWTHERM habe ich festgestellt, dass das Attribut timeconv onkick dazu führt, dass keine Werte mehr ausgelesen werden.

Herzliche Grüße

Christian





PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

det.

Hallo Norbert,
die Version, welche gestern über update zu beziehen war funktioniert bei mir perfekt auf dem CUBIE2 in der async. Variante bis auf OWID. Wenn die Tür zu ist, also PRESENT 1 ist alles ok, als ich die gestern Abend aufgelassen hatte und im Biergarten war - 80 Mails über geöffnete und geschlossene Bürotür -... flotiert zwischen PRESEN 0 und 1
LG
det.

ntruchsess

Hallo Christian,

danke fürs Feedback.

Zitat von: cwagner am 19 Juli 2014, 08:01:04
Use of uninitialized value $rin in vec at ./FHEM/OWX_SER.pm line 70.

behoben. (Der Fehler trat bei mir nicht auf. Ist wohl abhängig von der perl-version, ob die 'vec'-funktion mit uninitialisierten Werten klarkommt oder nicht).

Zitat von: cwagner am 19 Juli 2014, 08:01:04
Bei den Modulen OWAD und OWMULTI habe ich kein attr tempconv mit dem ich auf onkick stellen könnte.

tempconv=onkick gibt's nur beim OWTHERM. Und eigentlich macht es auch nur da Sinn weil da der AD-Wandler in den DS18B20 so langsam ist (und auflösungsabhängig bis knapp 1 Sekunde braucht). Allerdings bringt die parallelisierung der Wandlung beim OWX_ASYNC keinen signifikanten Vorteil mehr, man spart sich nur noch den Traffic auf dem Bus ein - die 1-Sekunden Pause wird ja nicht mehr synchron gewartet. Beim DS2450 und DS2438 ist die AD-Wandlung sowieso deutlich schneller.

Zitat von: cwagner am 19 Juli 2014, 08:01:04Interessanterweise sind die jetzt deren Devices die einzigen, mit den ich timeout-Fehler im Log erhalte.
Ich hab mal das Timing im OWAD und OWMULTI etwas defensiver eingestellt. Berichte mal, ob es damit bei Dir besser läuft (bei mir gibt's mit OWX_SER keine Timeouts)

Zitat von: cwagner am 19 Juli 2014, 08:01:04
Bei OWTHERM habe ich festgestellt, dass das Attribut timeconv onkick dazu führt, dass keine Werte mehr ausgelesen werden.

am OWX_ASYNC-device ist attribute 'dokick=1' eingetellt?

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

Zitat von: det. am 19 Juli 2014, 13:05:38flotiert zwischen PRESEN 0 und 1

Hallo Detlef,

darauf kann ich mir grade keinen Reim machen. Kannst Du mal alles posten, was da in Deiner Config mit reinspielt?

Gruß,

Norbert
while (!asleep()) {sheep++};

det.

Hallo Norbert,
der Code:define Tuer_Buero OWID 01 56EA4E0E0000
attr Tuer_Buero IODev 1wire_1
attr Tuer_Buero devStateIcon present:fts_door_right absent:fts_door_right_open
attr Tuer_Buero event-on-change-reading present
attr Tuer_Buero group Info
attr Tuer_Buero model DS2401
attr Tuer_Buero room Buero
attr Tuer_Buero stateFormat {ReadingsVal($name,"present",0) ? "present" : "absent"}


define FileLog_Tuer_Buero FileLog ./log/Tuer_Buero-%Y-%m.log Tuer_Buero
attr FileLog_Tuer_Buero logtype .*,text
attr FileLog_Tuer_Buero room hidden
define mail_Buerotuer notify .*Tuer_*.* { \
  my $zeit=sprintf("%%02d:%%02d",$hour,$min);;\
  my $text;;\
  my $status;;\
  $status=Value "@";;\
  $text ="@ $zeit Uhr $status";;\
  if (Value("HomeStatus") ne "present")\
{DebianMail('x@@x.de',$text,$text);;\
  }\
}
define SVG_FileLog_Tuer_Buero_1 SVG FileLog_Tuer_Buero:SVG_FileLog_Tuer_Buero_1:CURRENT
attr SVG_FileLog_Tuer_Buero_1 room Buero

das zugehörige Diagramm:

LG
det.

cwagner

Zitat von: ntruchsess am 19 Juli 2014, 14:09:47
behoben. (Der Fehler trat bei mir nicht auf. Ist wohl abhängig von der perl-version, ob die 'vec'-funktion mit uninitialisierten Werten klarkommt oder nicht).

Ich hab mal das Timing im OWAD und OWMULTI etwas defensiver eingestellt. Berichte mal, ob es damit bei Dir besser läuft (bei mir gibt's mit OWX_SER keine Timeouts)

am OWX_ASYNC-device ist attribute 'dokick=1' eingetellt?
Hallo Norbert,
so, dass Thema mit OWX_SER ist erfolgreich gefixt. Über das Verhalten der Sensoren berichte ich noch.
dokick=1 ist eingestellt.

Vielen Dank für die schnelle Reaktion.

Herzliche Grüße

Christian
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

T.ihmann

Habe nach dem Update das Problem, daß ein DS18B20 nicht mehr richtig funktioniert. Sensor an der Haustür ist parasitär über 2 Kabel angebunden (mangels fehlender Leitungen) und liefert deshalb ab und zu mal 85°C als Fehlermeldung. Das hat bislang kein Problem dargestellt, beim nächsten Abrufen hat es wieder funktioniert, Werte hatte ich im Gplot ausgeblendet.
Jetzt ist es so, daß nach einem 85°C Wert keine erneute Abfrage erfolgt. Fragt man die Temperaturen manuell über get temperature ab so bekommt man folgende Fehlermeldung:

OWTHERM: Could not get values from device Haustuer_Temp, return was Can't call method "poll" without a package or object reference

Liebe Grüße,

T. Ihmann

cwagner

Zitat von: T.ihmann am 19 Juli 2014, 15:31:49
ab und zu mal 85°C als Fehlermeldung. Das hat bislang kein Problem dargestellt, beim nächsten Abrufen hat es wieder funktioniert, Werte hatte ich im Gplot ausgeblendet.

Hallo,

verrätst Du, wie Du die 85 Grad, die mich auch ärgern, im Gplot ausgeblendet bekommst?

Herzliche Grüße

Christian
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

cwagner

Zitat von: T.ihmann am 19 Juli 2014, 15:31:49
Fragt man die Temperaturen manuell über get temperature ab so bekommt man folgende Fehlermeldung:

OWTHERM: Could not get values from device Haustuer_Temp, return was Can't call method "poll" without a package or object reference


Hallo Norbert,
das hatte ich auch bei einem get alarm, hatte aber die falsche Ursache gesehen. Habe es gerade ausprobiert:

get alarm
get temperature
get present

führen alle zu dem "poll"-Fehler.

Die anderen gets geben sinnvolle Werte

Herzliche Grüße

Christian
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

T.ihmann

Zitat von: cwagner am 19 Juli 2014, 16:08:35
Hallo,

verrätst Du, wie Du die 85 Grad, die mich auch ärgern, im Gplot ausgeblendet bekommst?

Herzliche Grüße

Christian

Du mußt die gplot Datei direkt editieren, geht nicht über Web-Interface

Beispiel:
#FileLog 4:Raumname.temperature\x3a.(?!85):15:

cwagner

PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

cwagner

Zitat von: ntruchsess am 19 Juli 2014, 14:09:47
Ich hab mal das Timing im OWAD und OWMULTI etwas defensiver eingestellt. Berichte mal, ob es damit bei Dir besser läuft (bei mir gibt's mit OWX_SER keine Timeouts)

Hallo Norbert,

die Erfahrung nach rund einem Tag: Die Temperaturfühler laufen toll, auch beim Switch habe ich keine Probleme.
Der DS2450, "betreut" vom OWAD,  hat häufiger über den Tag verteilt - ohne das ich ein Muster erkennen kann - diesen Fehler, manchmal mehrfach hintereinander:
2014.07.20 19:31:01 4: OWX_ASYNC_RunTasks: Umweltsensor task Error: invalid CRC at ./FHEM/21_OWAD.pm line 1610.
2014.07.20 20:07:32 4: OWX_ASYNC_RunTasks: Umweltsensor task Error: invalid CRC at ./FHEM/21_OWAD.pm line 1610.
2014.07.20 20:29:32 4: OWX_ASYNC_RunTasks: Umweltsensor task Error: invalid CRC at ./FHEM/21_OWAD.pm line 1610.

---------------
Nochmal eine Nachfrage: Bei OWTHERM gibt es ja das Attribut tempconv, bei dem ONKICK vorgeschlagen wird. Benutze ich dieses Attribut, werden die Temp-Devices nicht mehr aktualsiert. Ist dieses Attribut noch eine "Altlast" oder was muss ich mir da vorstellen?

Herzliche Grüße

Christian
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB