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 1 | und | Variante 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 (https://fhem.de/commandref_DE.html#eventMap) 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 1 | und | Variante 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
Weiterhin ungelöst... :'(
Hat vielleicht jemand in der Ruhe der Feiertage eine Idee dazu gehabt? 8)
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?
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...
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.
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.