FHEM Forum

FHEM => Sonstiges => Thema gestartet von: ThoTo am 18 Februar 2018, 11:32:28

Titel: [gelöst] eventMap & SetExtensions
Beitrag von: ThoTo am 18 Februar 2018, 11:32:28
Hallo zusammen!

Beim Versuch das MQTT_DEVICE Modul um die SetExtensions zu erweitern, sind @hexenmeister und ich an eventMap und dem Verhalten zusammen mit den SetExtensions gescheitert bzw. haben interessante Dinge beobachtet...  ???
Thread zum Nachlesen: https://forum.fhem.de/index.php/topic,82240.0.html (https://forum.fhem.de/index.php/topic,82240.0.html)

Das gleiche Verhalten kann der Einfachheit halber mit einem Dummy-Device nachvollzogen werden:
define TestMe dummy
attr TestMe eventMap true:on false:off
attr TestMe setList true false
attr TestMe useSetExtensions 1


set TestMe on-for-timer 5 führ zu Unknown argument true-for-timer, dieses Problem wurde ja auch schon in einigen Threads beschrieben.

set TestMe eventMap { dev=>{ 'true'=>'on', 'false'=>'off' }, usr=>{ '^on$'=>'true', '^off$'=>'false' } }
Das war die Idee eines Workarounds, führt zum Fehler: Final $ should be \$ or $name at (eval 443) line 1, within string␤syntax error at (eval 443) line 1, near ","^off$""
Woran liegt das?

Wird eventMap verwendet, funktioniert toggle auch nur mehr von on->off und nicht mehr von off->on.
Liegt das an den SetExtensions oder an der eventMap?


LG Thomas
Titel: Antw:eventMap & SetExtensions
Beitrag von: rudolfkoenig am 18 Februar 2018, 13:11:01
SetExtension hat die {} Variante von eventMap  nicht unterstuetzt, das habe ich jetzt geaendert.
Es gab eine EnOcean/eventMap spezifische Zeile in SetExtensions.pm, die ich nicht verstehe, deswegen habe ich sie entfernt.
Falls deswegen Probleme auftauchen, bitte melden, zusammen mit den Events und dem eventMap Wert.

Die Fehlermeldung mit "Final..." ist "normal", und muss mit dem fw=> Eintrag gefixt werden, siehe commandref Eintrag zu eventMap.
Titel: Antw:eventMap & SetExtensions
Beitrag von: ThoTo am 18 Februar 2018, 13:31:39
Zitat von: rudolfkoenig am 18 Februar 2018, 13:11:01
SetExtension hat die {} Variante von eventMap  nicht unterstuetzt, das habe ich jetzt geaendert.
Es gab eine EnOcean/eventMap spezifische Zeile in SetExtensions.pm, die ich nicht verstehe, deswegen habe ich sie entfernt.
Falls deswegen Probleme auftauchen, bitte melden, zusammen mit den Events und dem eventMap Wert.
Perfekt, ich werde testen.

Zitat von: rudolfkoenig am 18 Februar 2018, 13:11:01
Die Fehlermeldung mit "Final..." ist "normal", und muss mit dem fw=> Eintrag gefixt werden, siehe commandref Eintrag zu eventMap.

When using regexps in the usr part with wildcards, the fw part must be filled with the exact same keys to enable a correct display in the FHEMWEB set dropdown list in the detail view.

Wer lesen kann ist klar im Vorteil  :o Danke für den Hinweis, Rudi.

LG Thomas
Titel: Antw:[gelöst] eventMap & SetExtensions
Beitrag von: mi.ke am 12 März 2018, 14:01:34
Hatte diesen Beitrag gelesen und wollte setExtensions ausprobieren,
aber leider stürzt fhem bei der Verwendung eines dummy mit useSetExtensions und eventMap bei mir komplett ab,
und zwar in dem Moment, wenn auf das devStateIcon geklickt wird.

fhem ist aktuell.
fhem.pl:16354/2018-03-09 perl:5.020002
Internals:
   NAME       Taster
   NR         450
   STATE      off
   TYPE       dummy
   Readings:
     2018-03-12 11:10:03   state           off
Attributes:
   devStateIcon on:remotecontrol/black_btn_GREEN off:remotecontrol/black_btn_RED
   eventMap   /on-for-timer 3:on/
   room       zumLager
   setList    on off
   useSetExtensions 1
   webCmd     :




[code]
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::SE_DoSet" at FHEM/SetExtensions.pm line 103.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommand" at FHEM/SetExtensions.pm line 38.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::CommandSet" at fhem.pl line 1192.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::DoSet" at fhem.pl line 1811.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 1778.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::dummy_Set" at fhem.pl line 3541.
2018.03.12 13:45:50 1: PERL WARNING: Deep recursion on subroutine "main::SetExtensions" at ./FHEM/98_dummy.pm line 36.


fhem ist dann nicht mehr erreichbar.
Der Rechner noch kurze Zeit über Telenet, dann hilft nur noch Stecker ziehen.

Muss ich Pearl Updates machen, oder liegt der Fehler woanders?

Danke und Grüße

mi.ke
Titel: Antw:[gelöst] eventMap & SetExtensions
Beitrag von: rudolfkoenig am 13 März 2018, 22:44:38
Was passiert:
1. der Klick erzeugt ein "set dummy on"
2. "set dummy on" wird mit eventMap zu "set dummy on-for-timer 3" gemappt.
3. da dieser dummy laut setList kein on-for-timer kennt, springt SetExtensions an.
4. on-for-timer ist in SetExtensions als "on, gefolgt in 3 Sekunden von off" implementiert, da wird also als erstes "set dummy on" ausgefuehrt, das entspricht 1.

Damit waeren wir in einer Endlosschleife, und wir fangen vorne an.
Ich definiere das mal als Benutzerfehler, und habe es nicht vor, zu beheben.
Es sei denn, jemand sagt, wie das einfach ohne Nebenwirkungen gemacht werden kann.
Titel: Antw:[gelöst] eventMap & SetExtensions
Beitrag von: mi.ke am 19 März 2018, 14:31:21
Hallo Rudi.

Danke für die Erklärung.

Ich hatte bei diesem Konstrukt versucht, das bei SetExtensions  nicht vorhandene Attribut "follow-on-timer" zu simulieren (heisst ja auch SetExtensions und nicht AtrrExtensions).

Grüße

mi.ke
Titel: Antw:[gelöst] eventMap & SetExtensions
Beitrag von: rudolfkoenig am 19 März 2018, 18:38:57
"follow-on-timer" ist bei einem mit SetExtensions realisierten on-for-timer nicht notwendig, weil SetExtensions explizit ein "off" erzeugt.
follow-on-timer ist bei FS20 notwendig, da FS20 sich beim Abschalten nicht meldet.