Hallo,
Ich habe im global Device die Feiertage für BY hinterlegt. Jetzt möchte ich ein Gerät Mo-Fr von 6-22 Uhr und Samstag von 6-13 Uhr schalten. Fällt einer der Tage jedoch auf einen Feiertag, soll nichts passieren. Ist das durch mein erstelltes DOIF bereits abgedeckt oder fehlt da noch was ? Ich werde aus den Beispielen nicht schlau oder hab ich was überlesen ?
define di_Feiertage_Test DOIF ([06:00-22:00|1-5] or [06:00-13:00|6]) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Danke
Wo ist die Bedingung "nicht Feiertag"?
Lösung: define di_Feiertage_Test DOIF (([06:00-22:00|12345] or [06:00-13:00|6]) and !$we) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Mit [06:00-22:00|1-5] funktioniert es nicht.
Zitat von: prenzela am 20 Februar 2025, 09:13:31Mit [06:00-22:00|1-5] funktioniert es nicht.
Wo steht denn diese Syntax?
Zitat von: prenzela am 20 Februar 2025, 09:13:31Lösung: define di_Feiertage_Test DOIF (([06:00-22:00|12345] or [06:00-13:00|6]) and !$we) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Mit [06:00-22:00|1-5] funktioniert es nicht.
Sicher? Ich glaub $we schließt den Samstag mit ein und somit wird [06:00-13:00|6] zwar "wahr" aber in Verbindung mit !$we eben nicht).
$we = Wochenende oder Feiertag.
Schau mal da:https://wiki.fhem.de/wiki/Wochenende,_Feiertage_und_Schulferien#IsWe() (https://wiki.fhem.de/wiki/Wochenende,_Feiertage_und_Schulferien#IsWe())
Damit müsste man die Samstage, die kein Feiertag sind ausschließen können.
Oder für den Fall [06:00-13:00|6] bzw generell ein holiday device abfragen (Anstatt !$we ein ([he:state] eq "none")
Zitat von: prenzela am 20 Februar 2025, 09:13:31Lösung: define di_Feiertage_Test DOIF (([06:00-22:00|12345] or [06:00-13:00|6]) and !$we) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Mit [06:00-22:00|1-5] funktioniert es nicht.
Warum nicht mit Codetag?
define di_Feiertage_Test DOIF (([06:00-22:00|12345] or [06:00-13:00|6]) and !$we) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Warum nicht:
define di_Feiertage_Test DOIF ([06:00-22:00|68]]) (set myswitch1_h on)
DOELSE (set myswitch1_h off)
Zitat von: Bartimaus am 20 Februar 2025, 12:41:23Warum nicht:
define di_Feiertage_Test DOIF ([06:00-22:00|68]]) (set myswitch1_h on)
DOELSE (set myswitch1_h off)
Weil Du die 13:00 für die Wochenden übersehen hast.
Zitat von: rabehd am 20 Februar 2025, 15:44:36Weil Du die 13:00 für die Wochendende übersehen hast.
Fast:
Wochentags von 6 - 22 sofern kein Feiertag und Samstag von 6 - 13 sofern kein Feiertag.
Also:
Wenn((nicht feiertag) und (6-22 und Wochentag) oder (6-13 und Samstag))) dann an, sonst aus.
defmod di_Feiertage_Test DOIF ([holidaydev:today] eq "none" and ([06:00-22:00|12345] or [06:00-13:00|6])) (set myswitch1_h on) DOELSE (set myswitch1_h off)
Zitat von: prenzela am 19 Februar 2025, 18:54:35Fällt einer der Tage jedoch auf einen Feiertag, soll nichts passieren.
DOELSE (set myswitch1_h off)
Danke
Da passt Anforderung und Umsetzung nicht zusammen.
Zitat von: rabehd am 20 Februar 2025, 16:47:43Zitat von: prenzela am 19 Februar 2025, 18:54:35Fällt einer der Tage jedoch auf einen Feiertag, soll nichts passieren.
DOELSE (set myswitch1_h off)
Danke
Da passt Anforderung und Umsetzung nicht zusammen.
Ja OK, ist ein wenig antizipiert und würde Feiertags ausschalten. Ich würde annehmen, dass das im Sinne des TE ist. Ansonsten:
defmod di_Feiertage_Test DOIF ([holidaydev:today] ne "none") (\
### hier passiert am Feiertag nichts\
)\
DOELSEIF ([holidaydev:today] eq "none" and ([06:00-22:00|12345] or [06:00-13:00|6])) (set myswitch1_h on) \
DOELSE (set myswitch1_h off)
Warum nicht:
define di_Feiertage_Test DOIF ([06:00-22:00|8] or [06:00-13:00|6])
(set myswitch1_h on)
DOELSE (set myswitch1_h off)
Schau Dir mal die Bedeutung von [time|7] oder [time|8] an
Zitat von: Bartimaus am 20 Februar 2025, 17:51:17Warum nicht:
define di_Feiertage_Test DOIF ([06:00-22:00|8] or [06:00-13:00|6])
(set myswitch1_h on)
DOELSE (set myswitch1_h off)
Schau Dir mal die Bedeutung von [time|7] oder [time|8] an
Ja,
Zitat7 Wochenende und Feiertage (entspricht $we), 8 Arbeitstag (entspricht !$we)
Wo ist berücksichtigt, wenn der Samstag ein Feiertag ist und wenn der Samstag kein Feiertag ist?
Ok, das wird bei ,,7" nicht berücksichtigt. Nur ob WE ODER Feiertag
Nur mal zur Info.
DOIF wertet selbst $we aus. Da bei $we nicht zwischen Wochenende und Feiertag unterschieden wird, ist die einzig sinnvolle Lösung selbst das holiday-Device abzufragen, wie in der Lösung von @tobi01001