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
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()}
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
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"}
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
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 :(((
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.
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