eventMap mit mehreren state Inhalten

Begonnen von TiPpFeHlEr, 23 Juni 2018, 19:32:27

Vorheriges Thema - Nächstes Thema

TiPpFeHlEr

Hallo,

möchte mittels eventMap mein state von "Mo,Di,Mi,Do,Fr,Sa,So" auf "1,2,3,4,5,6,7" ändern lassen.
leider erzeugt eventMap etwas seltsames
1,2,Mi,Do,Fr,Sa,So
Es werden immer nur die ersten beiden Werte im state geändert, der Rest bleibt.

die Definition lautet
defmod SSR2_day dummy
attr SSR2_day alias Tag 1
attr SSR2_day eventMap Mo:1 Di:2 Mi:3 Do:4 Fr:5 Sa:6 So:7
attr SSR2_day group SSR_2
attr SSR2_day room GPIO
attr SSR2_day setList setList state:multiple-strict,Mo,Di,Mi,Do,Fr,Sa,So
attr SSR2_day webCmd state


wo liegt der Fehler?

Otto123

Hi,

eventuell hast Du was falsch verstanden? Das Konstrukt arbeitet einwandfrei:
ein set SSR2_day 1 erzeugt ein Mo im state.

Welches Verhalten erwartest Du bei welchen Befehl?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TiPpFeHlEr

Hi,

wie in dem dummy zu sehen ist, kann ich Mo,Di,Mi,Do,Fr,Sa,So auswählen, also Tag1-7.
Nun gibt der dummy dann aber Mo,Di,Mi,Do,Fr,Sa,So als state aus, dieses kann ich aber in meinem DOIF nicht gebrauchen.
Dort benötige ich 1,2,3,4,5,6,7.
also dachte ich mir, mit eventMap dieses direkt im state zu ändern.
leider ändert eventMap aber nur 2 Werte im state.

zum testen leg dir mal den dummy an, und schaus dir an

mfg Maik

Otto123

Moin Maik,

hab ich ja gemacht, sonst hätte ich nicht gesagt es arbeitet :)

Allerdings hast Du für diesen Fall kein EventMap angelegt, EventMap arbeitet ja durch Pärchenweise Ersetzung.
ZitateventMap
Ersetze Event Namen und setze Argumente. Der Wert dieses Attributes besteht aus einer Liste von durch Leerzeichen getrennte Werten. Jeder Wert ist ein durch Doppelpunkt getrenntes Paar. Der erste Teil stellt den "alten" Wert, der zweite Teil den "neuen" Wert dar.
Deine EventMap enthält nur die einzelnen Tage. Das man damit dann auch einen kompletten String durch einzel Definitionen austauschen kann wäre mir neu.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Wie Otto das erwaehnt hat: eventMap bricht nach der ersten erfolgreichen Uebersetzung ab.

Mit der im commandref (https://fhem.de/commandref_modular.html#eventMap) als explizit bezeichnete Variante kriegt man es hin, aber die Loesung, die ich gefunden habe, ist ein Hack und nix fuer Anfaenger:
fhem> define SSR2_day dummy
fhem> attr SSR2_day eventMap { usr=>{'.'=>'"=~m/x/;; my %v=(Mo=>1,Di=>2,Mi=>3,Do=>4,Fr=>5,Sa=>6,So=>7);; $nstr=~s/([^,]{2})/$v{$1}/ge;; "$nstr' } }
fhem> info on
fhem> set SSR2_day Mo,Di,Mi
dummy SSR2_day 1,2,3