wenn morgen Wochenende/Ferien ($We) dann...

Begonnen von spooki, 12 Dezember 2013, 16:14:34

Vorheriges Thema - Nächstes Thema

spooki

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


Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

spooki

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

Paul

#3
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
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Paul

Warum nur Samstag eine Ausnahme?

Spooki hat doch gemäß seinen Angaben Freitag und Samstag die Ausnahme.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

spooki

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

dieda

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 ...


Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

jenscz

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")}}
CCU3 mit 6xHMW-IO-12-Sw7-DR,1x HMW-LC-Bl1-DR, Bewegungsmeldern .....
Gardena Smart IrrigationControl (ic24)