Hallo zusammen,
ich komme alleine nicht weiter und könnte etwas Hilfe gebrauchen.
Folgendes Szenario:
Ich möchte über FS20 einen Fernseher schalten.
Wenn der nächste Tag ein Wochentag ist von Zeit a bis Zeit b und
wenn der nächste Tag aufs Wochenende fällt dann Zeit c bis Zeit d.
Soweit habe ich mir das schon zurechtgebastelt:
define Fernseherabschaltung FS20 0011 00
attr Fernseherabschaltung eventMap on:Fernseher_AN off:Fernseher_Aus
attr Fernseherabschaltung model fs20su
attr Fernseherabschaltung room Test
define FernseherAN at *17:30:00 {\
if ($wday == 0 || $wday == 1 || $wday == 2 || $wday == 3 || $wday == 4) {\
fhem("set Fernseherabschaltung on");; \
fhem("define FernseherAUS at +04:00:00 set Fernseherabschaltung off") \
}\
}
define FernseherAN_WE at *16:30:00 {\
if ($wday == 5 || $wday == 6) {\
fhem("set Fernseherabschaltung on");; \
fhem("define FernseherAUS at +06:30:00 set Fernseherabschaltung off") \
}\
}
Soweit funktioniert das schon ganz gut, nur würde ich ganz gerne die Ferienzeiten mit
integrieren und da hört es schon bei mir auf.
mit hoffnungsvollem Gruß
spooki
Hallo,
# sind die Code-Tags.
dann wird der Text besser lesbar und man sieht auch was Code ist und was nicht.
Die Prüfung mit $wday ist ja in Ordnung geht aber einfacher mit $we = Wochenende und !($we) ist unter der Woche.
Wie und wo pflegst du deine Ferienzeiten?
In einer feiertag.holiday?
Die kann durch FHEM ausgewertet werden und je nach Eintrag wird $we = 1 gesetzt.
Grüße
Danke erst mal für die schnelle Antwort.
Das mit den Code-Tags war mir so noch nicht bekannt, muss mich wohl erst in die Bedienung
des Forums hier einarbeiten.
Ferienzeiten sind noch nicht gepflegt, ist hier der erste Anwendungsfall wo ich sie brauchen
würde.
Den grundsätzlichen Gebrauch von $we und !($we) sowie holiday2we würde ich wohl hin bekommen. Nur mein Anwendungsfall ist ja anders. Ich will das noch mal verdeutlichen:
Das ganze Konstrukt soll den Fernseher meines Juniors steuern. Soll heißen, ist am nächsten Tag Schule (also Wochentag) soll der Fernseher früh ausgehen. Beginnt am nächsten Tag das Wochenende ( bis hier hin habe ich es ja alleine gelöst) bzw. es sind Ferien (das fehlt mir noch) kann der Fernseher später ausgehen.
Ich hoffe jetzt habe ich es verständlicher ausgedrückt.
Gruß
spooki
hallo,
Also die $we Funktion kannst du nicht benutzen, da du ja Samstag und Sonntag unterschiedlich schalten möchtest. Da ist deine Lösung wohl so richtig.
Die Feiertag.holiday schaut auch immer um Mitternacht, steht etwas im Kalender dann setze $we.
Du musst dann im Kalender den letzen Ferientag-1 eingeben.
Dann müsstest du sowas einbauen, wie ist $we aber nicht $wday=0, nein geht nicht weil dann kann dein Sohn auch sonntags in den Ferien nicht länger fernsehen
Hallo,
ZitatDas ganze Konstrukt soll den Fernseher meines Juniors steuern. Soll heißen, ist am nächsten Tag Schule (also Wochentag) soll der Fernseher früh ausgehen.
Äh - Sonntags ist selten Schule also bräuchte man nur für Samstag eine Ausnahmebehandlung da in D wohl Samstag keine Schule ist.
Sorry, ich komme aus Ö und wir hatten am Sa noch bis 13 Uhr Schule.
Grüße
für holliday kannst du z.b. mit get <holiday device> tomorrow
rausfinden ob für den nächsten tag ferien eingetragen sind.
gruss
andre
Warum nur Samstag eine Ausnahme?
Spooki hat doch gemäß seinen Angaben Freitag und Samstag die Ausnahme.
Genau.
Freitag und Samstag, späte Abschaltzeit. Das habe ich auch schon im oben geposteten Code realisiert. Die frühen Abschaltzeiten laufen auch schon so. Der Rest wird sich jetzt am WE zeigen ;) .
Das einzige was mir noch fehlt ist das berücksichtigen der Ferien.
Mein Junior würde mir die Ohren volljaulen wenn er nicht schon Freitag Abend länger schauen könnte.
Gruß
spooki
Ah, eben habe ich NoScript abgeschaltet und schon sehe ich mehr Möglichkeiten im Editorfenster
Hast du es gelöst?
Es gilt ja
Fall 1: Wenn Wochentag 1 oder 2... und keine Ferien dann ...
Fall 2: Wenn Wochentag 1 oder 2... und Ferien dann ...
Fall 3: Wenn Freitag oder Samstag dann ...
Ich habe das wie folgt gelöst:
Ich habe per holiday die Feiertage usw. definiert:
define holiday_nrw holiday
Datei mit den Feiertagen usw.:
holiday_nrw.holiday
# Siehe auch
# http://de.wikipedia.org/wiki/Feiertage_in_Deutschland
1 01-01 Neujahr
1 05-01 Tag der Arbeit
1 10-03 Tag der deutschen Einheit
1 11-01 Allerheiligen
1 12-24 Heiligabend
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
1 12-31 Sylvester
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingsten
2 60 Fronleichnam
3 0 Sat 01 Samstag
3 0 Sun 01 Sonntag
3 0 Sat 02 Samstag
3 0 Sun 02 Sonntag
3 0 Sat 03 Samstag
3 0 Sun 03 Sonntag
3 0 Sat 04 Samstag
3 0 Sun 04 Sonntag
3 0 Sat 05 Samstag
3 0 Sun 05 Sonntag
3 0 Sat 06 Samstag
3 0 Sun 06 Sonntag
3 0 Sat 07 Samstag
3 0 Sun 07 Sonntag
3 0 Sat 08 Samstag
3 0 Sun 08 Sonntag
3 0 Sat 09 Samstag
3 0 Sun 09 Sonntag
3 0 Sat 10 Samstag
3 0 Sun 10 Sonntag
3 0 Sat 11 Samstag
3 0 Sun 11 Sonntag
3 0 Sat 12 Samstag
3 0 Sun 12 Sonntag
Dann ein at für in der Woche, also wenn der nächste Tag kein Feiertag/Wochenende ist (Rollo runter um 21:00):
define timer_Rollo_KZ_runter_MoFr at *21:00 {if (fhem("get holiday_nrw tomorrow") eq "none") {fhem("set Rollo_KZ off")}}
Und ein at für die Tage an denen der nächste Tag ein Feiertag oder Wochenende ist (Rollo runter um 22:00):
define timer_Rollo_KZ_runter_WE at *22:00 {if (fhem("get holiday_nrw tomorrow") ne "none") {fhem("set Rollo_KZ off")}}