Dummy Device - Nach Status Änderung UserReadings anpassen

Begonnen von MCL, 21 Dezember 2017, 15:43:20

Vorheriges Thema - Nächstes Thema

MCL

Hallo zusammen,

ich habe folgendes Problem: Ich möchte nach Änderung des Status eines Dummy-Devices UserReadings in diesem Dummy-Device ändern.
Prinzipiell funktioniert das auch, ich habe aber mehrere Probleme:
1. bis jetzt habe ich es nur geschafft die UserReadings zu setzen, wenn ich ein Notify dafür verwende (geht das auch anders?)
2. Nach dem Ändern des Status, werden zwar die UserReadings geändert, aber die Änderung erst nach Aktualisierung der Website angezeigt.
3. Mit den UserReadings verbundene ReadingsProxys werden nicht aktualisiert (auch nicht nach Aktualisierung der Website).


Ich habe mir mehrere Dummy Devices für eine Rolladenautomatik erstellt pro Fenster/Rollladen eins.
Den Status des Device verwende ich für Automatik An/Aus. Daneben gibt es einige UserReadings für frühesten/spätesten Auffahrzeitpunkt, frühesten/spätesten Abfahrzeitpunkt, Korrektur für den Sonnenauf und -untergang
Das funktioniert soweit prima.

Nun benötige ich aber ein Device welches drei Rollladen steuern soll. Alle Einstellungen für die drei Rollladen sollen gleich sein, mit Ausnahme von Automatik An/Aus.
Ich habe nun den Status des Dummys als Automatik Zentral An/Aus und drei zusätzliche UserReadings jeweils für die Automatik jedes Rollladen erstellt.
Für jedes dieser Automatik UserReadings gibt es ein Readingsproxys, um im Floorplan die Automatik der Einzelschalter anzeigen zu können.

Beim Schalten der UserReadings werden sowohl der Status, als auch die jeweiligen Readingsproxys aktualisiert. Auch das Schalten der Readingsproxys funktioniert, es werden die UserReadings und der Status des Dummys aktualisiert.
Was ich einfach nicht hinbekomme, ist das korrekte Schalten des Status des Dummys (Zentralschalter) der dann alle drei UserReadings An oder Aus schalten soll.

Nachdem ich es mit dem Dummy-Device alleine überhaupt nicht hinbekommen habe, habe ich ein Notify erstellt, um auf das Schalten des Status zu reagieren. Aber mit den oben genannten Problemen.
Ich habe im Notify versucht sowohl die UserReadings des Dummys, als auch den Status der Readingsproxys zu setzen, ohne den gewünschten Erfolg.

Ich würde mich riesig freuen, wenn mir jemand weiterhelfen könnte.

Viele Grüße
Markus



Meine Gerätedefinitionen:
Dummy Automatikschalter:

defmod EG_wz_RO_automatic_dum dummy
attr EG_wz_RO_automatic_dum alias Rolladenautomatik
attr EG_wz_RO_automatic_dum devStateIcon Aus:fts_shutter_manual@DimGrey:An An:fts_shutter_automatic@LightSkyBlue:Aus 2An:fts_shutter_automatic@Gold:Aus 2Aus:fts_shutter_manual@Gold:An
attr EG_wz_RO_automatic_dum fp_Erdgeschoss 733,1612,0,Wohnzimmer
attr EG_wz_RO_automatic_dum group Automatik-Wohnzimmer
attr EG_wz_RO_automatic_dum icon fts_shutter_updown@DodgerBlue
attr EG_wz_RO_automatic_dum readingList day_night up_min up_max up_offset down_min down_max down_offset ventilation auto_left auto_center auto_right
attr EG_wz_RO_automatic_dum room Testlabor
attr EG_wz_RO_automatic_dum setList auto_left:iconSwitch,An,fts_shutter_manual@Grey,Aus,fts_shutter_automatic@PowderBlue\
auto_center:iconSwitch,An,fts_shutter_manual@Grey,Aus,fts_shutter_automatic@PowderBlue\
auto_right:iconSwitch,An,fts_shutter_manual@Grey,Aus,fts_shutter_automatic@PowderBlue\
day_night:iconSwitch,Nacht,weather_sun@Gold,Tag,scene_night@RoyalBlue\
up_min:time\
up_max:time\
up_offset:slider,-120,5,120\
down_min:time\
down_max:time\
down_offset:slider,-120,5,120\
ventilation:slider,0,5,100
attr EG_wz_RO_automatic_dum sortby 1000
attr EG_wz_RO_automatic_dum stateFormat {\
my $on  = 0;;\
my $off = 0;;\
\
if (ReadingsVal("EG_wz_RO_automatic_dum","auto_left","Aus") eq "An") { $on ++;; }\
else { $off ++;; }\
\
if (ReadingsVal("EG_wz_RO_automatic_dum","auto_center","Aus") eq "An") { $on ++;; }\
else { $off ++;; }\
\
if (ReadingsVal("EG_wz_RO_automatic_dum","auto_right","Aus") eq "An") { $on ++;; }\
else { $off ++;; }\
\
if ($on  == 3) { return "An";; }\
elsif ($off == 3) { return "Aus";; }\
elsif ($on  == 2) { return "2An";; }\
elsif ($off == 2) { return "2Aus";; }\
else { return "?";; }\
}
attr EG_wz_RO_automatic_dum webCmd auto_left:auto_center:auto_right:day_night:up_min:up_max:up_offset:down_min:down_max:down_offset:ventilation
attr EG_wz_RO_automatic_dum webCmdLabel Automatik links\
:Automatik mitte\
:Automatik rechts\
:Tag-Nacht Status\
:Auf nicht vor\
:Auf nicht nach\
:Korrektur in Minuten\
:Ab nicht vor\
:Ab nicht nach\
:Korrektur in Minuten\
:Belüftungsöffnung in %
attr EG_wz_RO_automatic_dum widgetOverride readingList|setList|webCmd|webCmdLabel:textField-long


ReadingsProxys für die drei Automatikschalter:

defmod EG_wz_RO_automatic_left_rp readingsProxy EG_wz_RO_automatic_dum:auto_left
attr EG_wz_RO_automatic_left_rp alias ReadingsProxy Automatik links
attr EG_wz_RO_automatic_left_rp devStateIcon Aus:fts_shutter_manual@Grey:An An:fts_shutter_automatic@PowderBlue:Aus
attr EG_wz_RO_automatic_left_rp group Automatik-Wohnzimmer
attr EG_wz_RO_automatic_left_rp room Testlabor
attr EG_wz_RO_automatic_left_rp setFn {fhem ("set EG_wz_RO_automatic_dum auto_left $CMD")}
attr EG_wz_RO_automatic_left_rp setList An Aus
attr EG_wz_RO_automatic_left_rp sortby 1005



defmod EG_wz_RO_automatic_center_rp readingsProxy EG_wz_RO_automatic_dum:auto_center
attr EG_wz_RO_automatic_center_rp alias ReadingsProxy Automatik mitte
attr EG_wz_RO_automatic_center_rp devStateIcon Aus:fts_shutter_manual@Grey:An An:fts_shutter_automatic@PowderBlue:Aus
attr EG_wz_RO_automatic_center_rp group Automatik-Wohnzimmer
attr EG_wz_RO_automatic_center_rp room Testlabor
attr EG_wz_RO_automatic_center_rp setFn {fhem ("set EG_wz_RO_automatic_dum auto_center $CMD")}
attr EG_wz_RO_automatic_center_rp setList An Aus
attr EG_wz_RO_automatic_center_rp sortby 1006



defmod EG_wz_RO_automatic_right_rp readingsProxy EG_wz_RO_automatic_dum:auto_right
attr EG_wz_RO_automatic_right_rp alias ReadingsProxy Automatik rechts
attr EG_wz_RO_automatic_right_rp devStateIcon Aus:fts_shutter_manual@Grey:An An:fts_shutter_automatic@PowderBlue:Aus
attr EG_wz_RO_automatic_right_rp group Automatik-Wohnzimmer
attr EG_wz_RO_automatic_right_rp room Testlabor
attr EG_wz_RO_automatic_right_rp setFn {fhem ("set EG_wz_RO_automatic_dum auto_right $CMD")}
attr EG_wz_RO_automatic_right_rp setList An Aus
attr EG_wz_RO_automatic_right_rp sortby 1007


Notify zum Überwachen des zentralen Automatikschalters:

defmod EG_wz_RO_automatic_nf notify (EG_wz_RO_automatic_dum:An|EG_wz_RO_automatic_dum:Aus) {\
#Log 1, "EG_wz_RO_automatic_nf >$EVENT<";;\
fhem ("set EG_wz_RO_automatic_left_rp $EVENT");;\
#fhem ("setreading EG_wz_RO_automatic_dum auto_left $EVENT");;\
fhem ("setreading EG_wz_RO_automatic_dum auto_center $EVENT");;\
fhem ("setreading EG_wz_RO_automatic_dum auto_right $EVENT");;\
#Log 1, "EG_wz_RO_automatic_nf done";;\
}
attr EG_wz_RO_automatic_nf group Automatik-Wohnzimmer
attr EG_wz_RO_automatic_nf icon ring
attr EG_wz_RO_automatic_nf room Testlabor
attr EG_wz_RO_automatic_nf sortby 1010