FHEM Forum

FHEM => Sonstiges => Thema gestartet von: pwlr am 25 Oktober 2020, 18:05:20

Titel: [gelöst] dummy Trigger für userReadings - BUG ?
Beitrag von: pwlr am 25 Oktober 2020, 18:05:20
Moin,

ich habe Probleme beim Triggern eines userReadings innerhalb eines Dummy, wenn state 0 (Null) ist.

Internals:
   FUUID      5c4b88ab-f33f-5817-3861-60a6302baca27292
   NAME       Sommer_Winterzeit
   NR         1187
   STATE      auto
   TYPE       dummy
   READINGS:
     2020-10-25 17:44:49   por_state       updated
     2020-10-25 17:44:49   state           auto
Attributes:
   POR        active
   comment    Umschalter fuer Sommerzeit und Winterzeit
gesetzt per Sommerzeit_01 aus localtime

0 = Winterzeit
1 = Sommerzeit
   devStateIcon 0:weather_frost@blue 1:weather_sun@orange
   event-on-update-reading state
   group      Uhrzeit
   room       -System->time
   setList    auto 0 1
   userReadings por_state:(0|1|auto) {POR_file($name, "update", $name, ReadingsVal($name,"state","unreachable"))}
   userattr   POR:active,inactive
   verbose    4


Die Events werden richtig erzeugt
2020-10-25 17:41:20.256 dummy Sommer_Winterzeit auto
2020-10-25 17:41:33.201 dummy Sommer_Winterzeit 1
2020-10-25 17:41:39.094 dummy Sommer_Winterzeit 0


aber nur bei einem Wert von 0 im state triggert das userReading nicht !

Log:
2020.10.25 17:43:29.256 4: dummy set Sommer_Winterzeit 1
2020.10.25 17:43:29.259 4: Sommer_Winterzeit POR_file: start
2020.10.25 17:43:29.260 4: Sommer_Winterzeit POR_file: timestamp = 2020-10-25 17:43:29
2020.10.25 17:43:29.265 3: Sommer_Winterzeit POR_file: Sommer_Winterzeit value in POR-file unchanged
2020.10.25 17:43:29.266 4: Sommer_Winterzeit POR_file: end
2020.10.25 17:43:56.268 4: dummy set Sommer_Winterzeit 0
2020.10.25 17:44:49.087 4: dummy set Sommer_Winterzeit auto
2020.10.25 17:44:49.089 4: Sommer_Winterzeit POR_file: start
2020.10.25 17:44:49.090 4: Sommer_Winterzeit POR_file: timestamp = 2020-10-25 17:44:49
2020.10.25 17:44:49.095 3: Sommer_Winterzeit POR_file: Sommer_Winterzeit updated to auto
2020.10.25 17:44:49.106 4: Sommer_Winterzeit POR_file: end


userReadings    por_state:(.*) {POR_file($name, "update", $name, ReadingsVal($name,"state","unreachable"))}

geht auch nicht.

userReadings    por_state {POR_file($name, "update", $name, ReadingsVal($name,"state","unreachable"))}

funktioniert. Ist irgendwie komisch, mach ich etwas falsch ?

Moin
Bernd



Titel: Antw:dummy Trigger für userReadings - BUG ?
Beitrag von: amenomade am 26 Oktober 2020, 03:00:43
Das kann ich reproduzieren. Ich würde entweder dein Thread im "Sonstiges" Forum (laut MAINTAINER.txt für fhem.pl) verschieben, oder Rudi direkt kontaktieren.
Titel: Antw:dummy Trigger für userReadings - BUG ?
Beitrag von: xenos1984 am 26 Oktober 2020, 07:25:06
Ich tippe auf diesen Code in der fhem.pl (http://svn.fhem.de/trac/browser/trunk/fhem/fhem.pl) als Ursache:

4735       if(defined($trigger)) {
4736         map { $event  = $_ if($_ && $_ =~ m/^$trigger$/);
4737               $ownRead = 1 if($_ && $_ =~ m/^$reading:/); } @{$hash->{CHANGED}};
4738         next if(!$event || $ownRead);
4739         ($eventName, $eventValue) = ($1, $2) if($event =~ m/^([^:]*): (.*)$/);
4740       }


Das $_ && bewirkt, dass nicht nur überprüft wird, ob das Event zum Trigger passt, sondern auch der Wahrheitswert des Events selbst. 0 ist nicht wahr, wird also übergangen. Wenn kein Trigger definiert ist, wird dieser Test übersprungen.
Titel: Antw:dummy Trigger für userReadings - BUG ?
Beitrag von: rudolfkoenig am 26 Oktober 2020, 19:39:34
Habs gefixt, bitte um Feedback.
Titel: Antw:dummy Trigger für userReadings - BUG ?
Beitrag von: pwlr am 27 Oktober 2020, 11:41:15
Moin,

ja, alles ok.  :)

Vielen Dank !
Bernd