EGPM2LAN / EGPM: readingsUpdate(pstrip1,1_laser,on) missed to call readingsBegin

Begonnen von tinyfhem, 23 April 2014, 23:34:42

Vorheriges Thema - Nächstes Thema

tinyfhem

erhalte o.g. Meldung im Log und das sieht fuer mich nach einer Fehlermeldung aus, von der ich gerne wuesste, ob die einfach zu ignorieren ist oder ein bug im EGPM2LAN oder EGPM ist, oder ein Fehler in meiner config.

Es geht hier um den Betrieb einer 4-port Energenie Steckdosenleiste, anbei die Definition:

define pstrip1 EGPM2LAN 192.168.xxx.xxx yyyyyyy

Und nun eine funktionierende Definition fuer das schalten eines Laserdruckers an einem der ports:

define laser EGPM pstrip1 1

#---------------------------------
# Turn laser off after 30 min
define n_laser_on  notify laser:on  define laser_off at +00:30:00 set laser off
define n_laser_off notify laser:off delete laser_off

Keinerlei Meldungen im Log und die Logik tut genau das was sie soll: Wird die Steckdose fuer den Drucker eingeschaltet, laeuft ein timer ab und nach 30 min wird die Dose abgeschaltet.

Eine elegantere Loesung sollte sich aber mit folgender Defintion realisieren lassen:

define laser EGPM pstrip1 1

define n_laser_on  notify laser:on  set laser on-for-timer 1800

Diese Loesung funktioniert ebenfalls, bringt allerdings die o.g (Fehler-)meldung im Log. Beim durchsuchen des Forums habe ich gesehen, dass diese Meldung schon des oefteren hier auftauchte, allerdings wurde in keinem bisher berichteten Fall eine Loesung fuer dieses Problem beschrieben.
FHEM auf Raspberry Pi, EnOcean Pi, HomeMatic LAN Konfigurations Adapter, CUL 868 V3, CUL 433 V3

betateilchen

Hallo,

das ist ein Programmfehler im Modul selbst.

Du kannst das in Deinem fhem ad-hoc beheben, indem Du in der Datei 17_EGPM2LAN.pm die Zeile 273 änderst

alt:
readingsBulkUpdate($hash, $index."_".$socketlist[$index-1], ($powerstates[$index-1] ? "on" : "off"));

neu:
readingsSingleUpdate($hash, $index."_".$socketlist[$index-1], ($powerstates[$index-1] ? "on" : "off",1));

Danach sollte die Fehlermeldung verschwinden.

Grundsätzlich sollte sich aber der Ersteller des Moduls um eine saubere Programmierung kümmern und den zugrundeliegenden Logikfehler in seinem Modul dauerhaft beheben!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tinyfhem

Zitat von: betateilchen am 24 April 2014, 09:50:12
Hallo,

das ist ein Programmfehler im Modul selbst.
Das hatte ich vermutet, war mir aber nicht sicher. Insofern vielen Dank fuer die Klaerung und auch den angehaengten fix.
Zitat
Du kannst das in Deinem fhem ad-hoc beheben, indem Du in der Datei 17_EGPM2LAN.pm die Zeile 273 änderst

alt:
readingsBulkUpdate($hash, $index."_".$socketlist[$index-1], ($powerstates[$index-1] ? "on" : "off"));

neu:
readingsSingleUpdate($hash, $index."_".$socketlist[$index-1], ($powerstates[$index-1] ? "on" : "off",1));

Danach sollte die Fehlermeldung verschwinden.

Grundsätzlich sollte sich aber der Ersteller des Moduls um eine saubere Programmierung kümmern und den zugrundeliegenden Logikfehler in seinem Modul dauerhaft beheben!
So sehe ich das auch, denn wenn ich die Aenderung bei mir mache, dann wird selbige ja wieder mit dem naechsten update aus dem svn ueberschrieben.

Es sieht so aus als waere das Problem nicht neu und bestimmt wurde es auch mit dem Module owner bereits diskutiert? Oder ist hier der richtige Weg, das nochmal an einer anderen Stelle zu posten, wo der Owner mitliest?

Und noch eine Frage: Was passiert, wenn ich das nicht fixe? Mit dem Log Eintrag kann ich fuer ne Weile leben aber hat das noch andere Konsequenzen auf bzgl des Verhaltens der "Schaltung"?
FHEM auf Raspberry Pi, EnOcean Pi, HomeMatic LAN Konfigurations Adapter, CUL 868 V3, CUL 433 V3

betateilchen

Nein, das hat keine Auswirkungen.

Ob das schon irgendwann irgendwo diskutiert wurde weiß ich nicht.
Der "richtige" Forumbereich, um zum Modul 17_EGPM2LAN.pm zu diskutieren ist "Sonstiges" - dort sollte der Modulautor regelmäßig lesen, wenn er sich für "sein" Modul wirklich interessiert.

http://forum.fhem.de/index.php/board,46.0.html
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tinyfhem

nach dem o.g. "fix" erhalte ich beim start von FHEM folgende Fehlermeldungen:

Useless use of a constant (on) in void context at ./FHEM/17_EGPM2LAN.pm line 273, <$fh> line 184.
Useless use of a constant (off) in void context at ./FHEM/17_EGPM2LAN.pm line 273, <$fh> line 184.
Subroutine EGPM2LAN_Initialize redefined at ./FHEM/17_EGPM2LAN.pm line 33, <$fh> line 232.
Subroutine EGPM2LAN_Get redefined at ./FHEM/17_EGPM2LAN.pm line 45, <$fh> line 232.
!Subroutine EGPM2LAN_Set redefined at ./FHEM/17_EGPM2LAN.pm line 73, <$fh> line 232.
Subroutine EGPM2LAN_Switch redefined at ./FHEM/17_EGPM2LAN.pm line 140, <$fh> line 232.
Subroutine EGPM2LAN_Login redefined at ./FHEM/17_EGPM2LAN.pm line 159, <$fh> line 232.
Subroutine EGPM2LAN_GetDeviceInfo redefined at ./FHEM/17_EGPM2LAN.pm line 179, <$fh> line 232.
Useless use of a constant (on) in void context at ./FHEM/17_EGPM2LAN.pm line 273, <$fh> line 232.
Useless use of a constant (off) in void context at ./FHEM/17_EGPM2LAN.pm line 273, <$fh> line 232.
FHEM auf Raspberry Pi, EnOcean Pi, HomeMatic LAN Konfigurations Adapter, CUL 868 V3, CUL 433 V3

betateilchen

Das sind keine Fehlermeldungen, sondern Hinweise. Die redefined Meldungen sind völlig normal, wenn ein bereits geladenes Modul neu geladen wird, die beiden anderen Meldungen sind unschön, aber eigentlich problemlos.

Die vorgeschlagene Änderung war auch kein echter Fix, sondern nur ein Workaround, damit die ursprünglich diskutierte Fehlermeldung nicht mehr erscheint.

Probier mal mit zusätzlichen Klammern:

readingsSingleUpdate($hash, $index."_".$socketlist[$index-1], (($powerstates[$index-1] ? "on" : "off"),1));
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!