Problem weekdaytimer und dummymodus - Hilfe

Begonnen von Dia81, 20 Mai 2020, 22:07:13

Vorheriges Thema - Nächstes Thema

Dia81

Hallo zusammen,

Ich nutze seit Jahren einen dummy automatikmodus der 4 stati zugewiesen bekommt. Dieser wird bei verschiedenen weekdaytimer abgefragt z.b



define WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren 01234567|{sunset_abs(-910)}|on (Value("Automatikmodus") eq "Urlaub_da")




Seit ca 1 Jahr habe ich das Problem das die Rollos nicht mehr runter gehen Webb ich den Automatik Modus ändere sondern erst am nächsten Tag. Ich habe heute beispielsweise den automatikmodus auf urlaub_da geändert :



FUUID      5c84befb-f33f-1dc2-14fb-2498271516ea81a7
   NAME       Automatikmodus
   NR         450
   STATE      Urlaub_da
   TYPE       dummy
   .attraggr:
   .attrminint:
   READINGS:
     2020-05-20 15:12:53   state           Urlaub_da
Attributes:
   devStateIcon Standard:user_available@green Urlaub_da:user_away@orange Urlaub_weg:user_ext_away@yellow Aus:user_unknown@red
   fhem_widget_channels [{"allowed_values":["Standard","Urlaub_da","Urlaub_weg","Aus"],"locations":["APP","WIDGET","WATCH"],"group":"Modus "}]
   group      Schaltung
   icon       rc_PROG
   room       MODI
   setList    state:Standard,Urlaub_da,Urlaub_weg,Aus
   sortby     20
   webCmd     state



Die Rollos gehen jetzt aber nicht runter. Morgen schon. Warum trigger das value abfragen nicht am selben Tag? Das war mal anders scheint aber durch ein Update was geändert worden zu sein. Wie kann ich das ändern? Wenn ich den Modus auf ,,urlaub_weg" stelle und dann nachts die Rollos am ersten Tag nicht runter gehen ist das schlecht. Woran liegt das? Die Anfrage des ,,value" scheint also bei einer Änderung des Sinns kein Ergebnis zu liefern, am nächsten Tag aber scheinbar schon. ?!Danke euch

amenomade

Ein "list" vom WeekdayTimer wäre auch nicht schlecht.

Ansonsten:
Zitat von: CommandRefIf you want to have set all WeekdayTimer their current value (e.g. after a temperature lowering phase holidays) you can call the function WeekdayTimer_SetParm("WD-device") or WeekdayTimer_SetAllParms().
To limit the affected WeekdayTimer devices to a subset of all of your WeekdayTimers, use the WDT_Group attribute and WeekdayTimer_SetAllParms("").
This offers the same functionality than set wd WDT_Params WDT_Group This call can be automatically coupled to a dummy by a notify:
define dummyNotify notify Dummy:. * {WeekdayTimer_SetAllParms()}

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dia81

#2
Zitat von: amenomade am 20 Mai 2020, 22:15:19
Ein "list" vom WeekdayTimer wäre auch nicht schlecht.

Ansonsten:

Stimmt. Nehme ich wieder das gleiche Beispiel :




Internals:
   COMMAND   
   CONDITION  (Value("Automatikmodus") eq "Urlaub_da")
   DEF        EG_Rollos_ohne_Tueren 01234567|{sunset_abs(-910)}|on (Value("Automatikmodus") eq "Urlaub_da")
   DEVICE     EG_Rollos_ohne_Tueren
   FUUID      5c84befb-f33f-1dc2-9b29-fd6b052e5c0f2a1a
   GlobalDaylistSpec
   LANGUAGE   en
   NAME       WD_UZ_MOFRSASO_Rollos1_Abends
   NR         566
   Profil 0: Sunday 21:53:07 on
   Profil 1: Monday 21:53:07 on
   Profil 2: Tuesday 21:53:07 on
   Profil 3: Wednesday 21:53:07 on
   Profil 4: Thursday 21:53:07 on
   Profil 5: Friday 21:53:07 on
   Profil 6: Saturday 21:53:07 on
   Profil 7: weekend 21:53:07 on
   STATE      on
   STILLDONETIME 0
   TYPE       WeekdayTimer
   .attraggr:
   .attrminint:
   READINGS:
     2020-05-18 21:49:49   currValue       on
     2020-05-18 21:49:49   nextUpdate      2020-05-19 21:49:49
     2020-05-18 21:49:49   nextValue       on
     2020-05-17 21:48:08   state           on
   SWITCHINGTIMES:
     01234567|{sunset_abs(-910)}|on
   TIMER:
     WD_UZ_MOFRSASO_Rollos1_Abends_SetTimerOfDay:
       HASH       WD_UZ_MOFRSASO_Rollos1_Abends
       MODIFIER   SetTimerOfDay
       NAME       WD_UZ_MOFRSASO_Rollos1_Abends_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
   dayNumber:
     !$we       8
     $we        7
     fr         5
     mo         1
     sa         6
     su         0
     th         4
     tu         2
     we         3
   helper:
     daysRegExp (su|mo|tu|we|th|fr|sa|\$we|\!\$we)
     daysRegExpMessage (su|mo|tu|we|th|fr|sa|$we|!$we)
     SWITCHINGTIME:
       0:
         21:53:07   on
       1:
         21:53:07   on
       2:
         21:53:07   on
       3:
         21:53:07   on
       4:
         21:53:07   on
       5:
         21:53:07   on
       6:
         21:53:07   on
       7:
         21:53:07   on
     WEDAYS:
       1          1
       3          1
       4          1
   longDays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
     nl:
       Zondag
       Maandag
       Dinsdag
       Woensdag
       Donderdag
       Vrijdag
       Zaterdag
       weekend
       werkdagen
   profil:
     1:
       EPOCH      1590004387
       PARA       on
       TIME       {sunset_abs(-910)}
       WE_Override 0
       TAGE:
         0
         1
         2
         3
         4
         5
         6
         7
   profile_IDX:
     0:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     1:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     2:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     3:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     4:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     5:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     6:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
     7:
       21:48:08   1
       21:49:49   1
       21:51:28   1
       21:53:07   1
   shortDays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
     nl:
       zo
       ma
       di
       wo
       do
       vr
       za
       $we
       !$we
Attributes:
   commandTemplate set $NAME  $EVENT



Wie Gesagt würde verstehen wenn ich an diesem Code was geändert hätte, habe ich seit Jahren nicht und würde verstehen, wenn es gar nicht geht, oder halt immer, aber bei Änderung am selben Tag nicht aber ab morgen früh wieder ja erschließt sich mir irgendwie nicht

Beta-User

Hmm, also:

Meines Wissens nach habe ich diesen Teil der Logik effektiv nicht angefaßt, die Prüfung dessen, was als Condition angegeben war, erfolgte "schon immer" nur zu Tagesbeginn. Früher gab es zur Behebung des "Problems" nur die Option, das mit Perl-Commands neu zu initialisieren, das war u.a. ein Grund, die setter einzuführen...

Du kannst das Umgehen, indem du nicht eine Condition angibst, sondern den Befehl in der Perl-Form verwendest:

{set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}

Bei der Gelegenheit zwei weitere Anmerkungen:

Die Angabe der Wochentage ist in der Konstellation unnötig, das soll ja "immer", und das Umstellen auf deutsche Bezeichnungen erfolgt automatisch, wenn du in global language auf DE stellst. Lokal ginge das auch mit "de".

(Spracheinstellungen über global) ergäbe:
defmod WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren {sunset_abs(-910)}|on {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Dia81

#4
Zitat von: Beta-User am 21 Mai 2020, 05:42:03
Hmm, also:

Meines Wissens nach habe ich diesen Teil der Logik effektiv nicht angefaßt, die Prüfung dessen, was als Condition angegeben war, erfolgte "schon immer" nur zu Tagesbeginn. Früher gab es zur Behebung des "Problems" nur die Option, das mit Perl-Commands neu zu initialisieren, das war u.a. ein Grund, die setter einzuführen...

Du kannst das Umgehen, indem du nicht eine Condition angibst, sondern den Befehl in der Perl-Form verwendest:

{set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}

Bei der Gelegenheit zwei weitere Anmerkungen:

Die Angabe der Wochentage ist in der Konstellation unnötig, das soll ja "immer", und das Umstellen auf deutsche Bezeichnungen erfolgt automatisch, wenn du in global language auf DE stellst. Lokal ginge das auch mit "de".

(Spracheinstellungen über global) ergäbe:
defmod WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren {sunset_abs(-910)}|on {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}

Ich danke dir vielmals! Werde das bei meinen nicht wenigen Timern ausprobieren und berichten. Komisch das es vorher ging ?! :) bin gespannt ... habe aber noch nie mit defmod gearbeitet und muss mich mal einlesen was das verändert oder wo der Unterschied zum define ist . Mit den Tagen gebe ich dir recht , gibt aber auch ganz vielen WD die nur an speziellen Tagen schalten deswegen hab ich das wohl so übernommen. nochmals vielen Dank

Dia81

Zitat von: Beta-User am 21 Mai 2020, 05:42:03
Hmm, also:

Meines Wissens nach habe ich diesen Teil der Logik effektiv nicht angefaßt, die Prüfung dessen, was als Condition angegeben war, erfolgte "schon immer" nur zu Tagesbeginn. Früher gab es zur Behebung des "Problems" nur die Option, das mit Perl-Commands neu zu initialisieren, das war u.a. ein Grund, die setter einzuführen...

Du kannst das Umgehen, indem du nicht eine Condition angibst, sondern den Befehl in der Perl-Form verwendest:

{set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}

Bei der Gelegenheit zwei weitere Anmerkungen:

Die Angabe der Wochentage ist in der Konstellation unnötig, das soll ja "immer", und das Umstellen auf deutsche Bezeichnungen erfolgt automatisch, wenn du in global language auf DE stellst. Lokal ginge das auch mit "de".

(Spracheinstellungen über global) ergäbe:
defmod WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren {sunset_abs(-910)}|on {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}

Leider muss ich feststellen das die Änderungen keinen Effekt hatten. Habe alle WD geändert , hier ein Beispiel (noch mit unlogischen Tagen):



define WD_UZ_MOFRSASO_Rollos4_Abends WeekdayTimer OG_Rollos 01234567|{sunset_abs(-900,"16:00","21:15")}|on {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}



Die Rollos hätten um 21:15 heruntergehen müssen. Sind sie aber leider nicht da immer noch oben. See Automationssystem steht auf Urlaub_da:



Internals:
   COMMAND    {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}
   CONDITION 
   DEF        OG_Rollos 01234567|{sunset_abs(-900,"16:00","21:15")}|on {set $NAME $EVENT if Value("Automatikmodus") eq "Urlaub_da"}
   DEVICE     OG_Rollos
   FUUID      5c84befb-f33f-1dc2-be0e-6c80f6f872ceffab
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       WD_UZ_MOFRSASO_Rollos4_Abends
   NR         580
   Profil 0: Sonntag 21:15:00 on
   Profil 1: Montag 21:15:00 on
   Profil 2: Dienstag 21:15:00 on
   Profil 3: Mittwoch 21:15:00 on
   Profil 4: Donnerstag 21:15:00 on
   Profil 5: Freitag 21:15:00 on
   Profil 6: Samstag 21:15:00 on
   Profil 7: Wochenende 21:15:00 on
   STATE      on
   STILLDONETIME 0
   TYPE       WeekdayTimer
   .attraggr:
   .attrminint:
   READINGS:
     2020-05-21 21:15:00   currValue       on
     2020-05-21 21:15:00   nextUpdate      2020-05-22 21:15:00
     2020-05-21 21:15:00   nextValue       on
     2020-05-21 21:15:00   state           on
   SWITCHINGTIMES:
     01234567|{sunset_abs(-900,"16:00","21:15")}|on
   TIMER:
     WD_UZ_MOFRSASO_Rollos4_Abends_1:
       HASH       WD_UZ_MOFRSASO_Rollos4_Abends
       MODIFIER   1
       NAME       WD_UZ_MOFRSASO_Rollos4_Abends_1
     WD_UZ_MOFRSASO_Rollos4_Abends_SetTimerOfDay:
       HASH       WD_UZ_MOFRSASO_Rollos4_Abends
       MODIFIER   SetTimerOfDay
       NAME       WD_UZ_MOFRSASO_Rollos4_Abends_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
   dayNumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     SWITCHINGTIME:
       0:
         21:15:00   on
       1:
         21:15:00   on
       2:
         21:15:00   on
       3:
         21:15:00   on
       4:
         21:15:00   on
       5:
         21:15:00   on
       6:
         21:15:00   on
       7:
         21:15:00   on
     WEDAYS:
       0          1
       2          1
       3          1
   longDays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
     nl:
       Zondag
       Maandag
       Dinsdag
       Woensdag
       Donderdag
       Vrijdag
       Zaterdag
       weekend
       werkdagen
   profil:
     1:
       EPOCH      1590088500
       PARA       on
       TIME       {sunset_abs(-900,"16:00","21:15")}
       WE_Override 0
       TAGE:
         0
         1
         2
         3
         4
         5
         6
         7
   profile_IDX:
     0:
       21:15:00   1
     1:
       21:15:00   1
     2:
       21:15:00   1
     3:
       21:15:00   1
     4:
       21:15:00   1
     5:
       21:15:00   1
     6:
       21:15:00   1
     7:
       21:15:00   1
   shortDays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
     nl:
       zo
       ma
       di
       wo
       do
       vr
       za
       $we
       !$we
Attributes:
   commandTemplate set $NAME  $EVENT




Internals:
   FUUID      5c84befb-f33f-1dc2-14fb-2498271516ea81a7
   NAME       Automatikmodus
   NR         450
   STATE      Urlaub_da
   TYPE       dummy
   READINGS:
     2020-05-20 15:12:53   state           Urlaub_da
Attributes:
   devStateIcon Standard:user_available@green Urlaub_da:user_away@orange Urlaub_weg:user_ext_away@yellow Aus:user_unknown@red
   fhem_widget_channels [{"allowed_values":["Standard","Urlaub_da","Urlaub_weg","Aus"],"locations":["APP","WIDGET","WATCH"],"group":"Modus "}]
   group      Schaltung
   icon       rc_PROG
   room       MODI
   setList    state:Standard,Urlaub_da,Urlaub_weg,Aus
   sortby     20
   webCmd     state


Es geht heute übrigens keins der Rollos runter also funktioniert kein einziger WD :(((

Beta-User

Argh, da hatte ich das Perl-"fhem()" unterschlagen. Sicherheitshalber auch noch ein paar Klammern zu dem if. Also sollte/könnte das hier klappen:
defmod WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren {sunset_abs(-910)}|on {fhem("set $NAME $EVENT") if (Value("Automatikmodus") eq "Urlaub_da")}

Zwei Anmerkungen noch:
Das mit der Wochentagsangabe war zwar unlogisch, aber noch ok; bringst du "78" ins Spiel, wird es mit der aktuellen Fassung "lustig", das verdaut erst die grade im Test befindliche Fassung (https://forum.fhem.de/index.php/topic,111401.0/topicseen.html) richtig (hoffentlich jedenfalls). Die bringt dann auch etwas reduzierte list-Ausgaben.
Dass (und was) da nicht stimmt, sollte auch im (fhem-) log stehen. Falls es mit der obigen Fassung weiter nicht geht, bitte da mal schauen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Dia81

Zitat von: Beta-User am 22 Mai 2020, 06:18:54
Argh, da hatte ich das Perl-"fhem()" unterschlagen. Sicherheitshalber auch noch ein paar Klammern zu dem if. Also sollte/könnte das hier klappen:
defmod WD_UZ_MOFRSASO_Rollos1_Abends WeekdayTimer EG_Rollos_ohne_Tueren {sunset_abs(-910)}|on {fhem("set $NAME $EVENT") if (Value("Automatikmodus") eq "Urlaub_da")}

Zwei Anmerkungen noch:
Das mit der Wochentagsangabe war zwar unlogisch, aber noch ok; bringst du "78" ins Spiel, wird es mit der aktuellen Fassung "lustig", das verdaut erst die grade im Test befindliche Fassung (https://forum.fhem.de/index.php/topic,111401.0/topicseen.html) richtig (hoffentlich jedenfalls). Die bringt dann auch etwas reduzierte list-Ausgaben.
Dass (und was) da nicht stimmt, sollte auch im (fhem-) log stehen. Falls es mit der obigen Fassung weiter nicht geht, bitte da mal schauen.

danke dir, habe alle dauerhaft ausführenden WE die Zeiten (0-8) enfernt und alles angepasst. Wenn heute abend alles klappt markiere ich den Strang als gelöst. DANKE