[gelöst] Warum togglet eventMap nicht (mehr)?

Begonnen von th0masrad, 24 Dezember 2023, 13:57:40

Vorheriges Thema - Nächstes Thema

th0masrad

Ich habe ein Problem, welches ich mir nicht erklären kann, mit eventMap.

Die folgenden beiden eventMap-Definitionen sollten sich doch hier in diesem übersichtlichen Kontext gleich verhalten. Die GHoma-Geräte sind Steckdosenzwischenstecker-Schalter ohne besondere zusätzliche Eigenschaften.
Variante 1undVariante 2
attr GHoma_94a6b2 eventMap /on:angeschaltet/\
/off:ausgeschaltet/\
/toggle:umgeschaltet/\
/set_on:anschaltend/\
/set_off:ausschaltend/\
/set_toggle:umschaltend/
attr GHoma_945e74 eventMap {\
  'dev' => {'on'         => 'angeschaltet',\
            'off'        => 'ausgeschaltet',\
            'toggle'     => 'umgeschaltet',\
            'set_on'     => 'anschaltend',\
            'set_off'    => 'ausschaltend',\
            'set_toggle' => 'umschaltend'\
           }\
}
In der Variante 2 funktioniert der toggle-Befehl nicht. Er wird durch on ersetzt. Wieso und wie kann ich das verhindern? :o
Es ist egal, ob der toggle-Befehl über die Kommandozeile, den FHEMWEB-set-Befehl des Gerätes oder webCmd abgesetzt wird.

Ich weiß, dass für die Variante 2 noch ausführlichere Schreibweisen existieren. Sie führen allerdings zu keiner Verbesserung der Situation.

Ich habe bei meiner Suche im Forum den Beitrag
Zitat von: ThoTo am 18 Februar 2018, 11:32:28Wird 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?
gefunden. Allerdings wurde die Frage im Verlauf des Threads nicht beantwortet...


Sicherheitshaber noch die gesamte Gerätedefinition:
Variante 1undVariante 2
define GHoma_94a6b2 GHoma 94a6b2
attr GHoma_94a6b2 eventMap /on:angeschaltet/\
/off:ausgeschaltet/\
/toggle:umgeschaltet/\
/set_on:anschaltend/\
/set_off:ausschaltend/\
/set_toggle:umschaltend/
attr GHoma_94a6b2 room GHoma
attr GHoma_94a6b2 webCmd toggle
#   DEF        94a6b2
#   FD         17
#   FUUID      65814bc6-f33f-529a-527d-49d85cbeee25a533
#   FVERSION   53_GHoma.pm:0.259100/2022-04-01
#   FWVERSION  1.8.26
#   IP         192.168.1.155
#   Id         94a6b2
#   LASTSTATE  off
#   MAC        AC:CF:23:94:A6:B2
#   NAME       GHoma_94a6b2
#   NR         149
#   PORT       14332
#   Pattern    3223
#   SNAME      GHomaServer
#   STATE      ausgeschaltet
#   TYPE       GHoma
#   eventCount 104
#   stacktrace  TcpServer_Close:407 GHoma_Timer:3508 HandleTimeout:707
#   READINGS:
#     2023-12-24 12:12:14   source          local
#     2023-12-24 12:12:14   state           off
#
setstate GHoma_94a6b2 ausgeschaltet
setstate GHoma_94a6b2 2023-12-24 12:12:14 source local
setstate GHoma_94a6b2 2023-12-24 12:12:14 state off
define GHoma_945e74 GHoma 945e74
attr GHoma_945e74 eventMap {\
  'dev' => {'on'         => 'angeschaltet',\
            'off'        => 'ausgeschaltet',\
            'toggle'     => 'umgeschaltet',\
            'set_on'     => 'anschaltend',\
            'set_off'    => 'ausschaltend',\
            'set_toggle' => 'umschaltend'\
           }\
}
attr GHoma_945e74 room GHoma
attr GHoma_945e74 webCmd toggle
#   DEF        945e74
#   FD         15
#   FUUID      65814bce-f33f-529a-e652-fe9c8faaa54caff0
#   FVERSION   53_GHoma.pm:0.259100/2022-04-01
#   FWVERSION  1.8.26
#   IP         192.168.1.156
#   Id         945e74
#   LASTSTATE  on
#   MAC        AC:CF:23:94:5E:74
#   NAME       GHoma_945e74
#   NR         150
#   PORT       16150
#   Pattern    3223
#   SNAME      GHomaServer
#   STATE      angeschaltet
#   TYPE       GHoma
#   eventCount 321
#   stacktrace  TcpServer_Close:407 GHoma_Timer:3508 HandleTimeout:707
#   READINGS:
#     2023-12-24 13:06:24   source          remote
#     2023-12-24 13:06:24   state           on
#
setstate GHoma_945e74 angeschaltet
setstate GHoma_945e74 2023-12-24 13:06:24 source remote
setstate GHoma_945e74 2023-12-24 13:06:24 state on
P.S.: Fröhliche Weihnachten und/oder fröhliche Feiertage! ;D
Mit freundlichen Grüßen
Th0mas Rad.

th0masrad

Weiterhin ungelöst... :'(

Hat vielleicht jemand in der Ruhe der Feiertage eine Idee dazu gehabt? 8)
Mit freundlichen Grüßen
Th0mas Rad.

betateilchen

Zitat von: th0masrad am 24 Dezember 2023, 13:57:40Die GHoma-Geräte sind Steckdosenzwischenstecker-Schalter ohne besondere zusätzliche Eigenschaften.

Diese Hardware kenne ich nicht. Sind das Schalter, die eine aktive Rückmeldung an FHEM liefern, wenn sie geschaltet werden?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

erwin

Die Frage von betateilchen ist eine gute Frage  ;D
Ich hätte noch folgenden Bemerkung:
'dev' => {...} bezeichnet die Richtung (aka Rückmeldung) vom Gerät zu FHEM.
Versuch mal 'dev' => mit 'usr' => zu ersetzen. - Nachdem du von set cmd's schreibst gehts um die umgekehrte Richtung...
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

betateilchen

Wenn man dev durch usr ersetzt, dann wird aber bei einem "on" dann "angeschaltet" an das device geschickt - was zu einem Fehler führen dürfte.

In meinen Augen ist das ein Problem im Zusammenspiel mit den SetExtensions. Wenn das device selbst kein toggle unterstützt, dann muss ja automatisiert ein "on" oder "off" an das physikalische Gerät geschickt werden.

Und da kommt meine obige Frage ins Spiel. Wenn das Gerät kein toggle kennt, kommt ja das toggle auch nie am Gerät an, sondern nur on oder off. Deshalb kann dann auch über die EventMap nur "on" oder "off" gemappt werden, falls das Gerät seinen neuen Zustand zurückmeldet.

Wenn ich eine EventMap mit der hash-Variante baue, dann IMMER mit korrekten Mappings für beide Richtungen. Einfach, damit man das Verhalten einfacher und logischer nachvollziehen kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

th0masrad

Zitat von: betateilchen am 07 Januar 2024, 18:17:40Wenn ich eine EventMap mit der hash-Variante baue, dann IMMER mit korrekten Mappings für beide Richtungen. Einfach, damit man das Verhalten einfacher und logischer nachvollziehen kann.
Das ist die Lösung. Es müssen beide Richtungen definiert sein:
define GHoma_945e74 GHoma 945e74
attr GHoma_945e74 eventMap {\
  'dev' => {\
            'toggle'     => 'umgeschaltet',\
            'set_toggle' => 'umschaltend',\
            'on'         => 'angeschaltet',\
            'off'        => 'ausgeschaltet',\
            'set_on'     => 'anschaltend',\
            'set_off'    => 'ausschaltend',\
           },\
  'dev' => {\
            'umgeschaltet'  => 'toggle',\
            'umschaltend'   => 'set_toggle',\
            'angeschaltet'  => 'on',\
            'ausgeschaltet' => 'off',\
            'anschaltend'   => 'set_on',\
            'ausschaltend'  => 'set_off',\
           }\
}



Mit an Sicherheit grenzender Wahrscheinlichkeit hatte ich das auch schon so programmiert. Da es aber ebenfalls nicht funktionierte, habe ich den Code der Übersichtlichkeit halber reduziert. Ein Fehler! Vermutlich habe ich beim ersten Versuch den Code zwar getippt, aber dann doch nicht dem Attribut zugewiesen. Keine Ahnung, was da los war; sehr mysteriös... :o

Danke an alle, die mitgeholfen haben, mich auf die richtige Spur zu setzen! :-*



Zur Vollständigkeit:
Zitat von: betateilchen am 07 Januar 2024, 17:05:17Sind das Schalter, die eine aktive Rückmeldung an FHEM liefern, wenn sie geschaltet werden?
Ja, denn ein Umschalten direkt an der GHOMA-Zwischensteckdose wird von FHEM registriert.
Mit freundlichen Grüßen
Th0mas Rad.