Beleuchtung sunset, Wochentage, Zeit

Begonnen von Schuetze5, 19 Juni 2017, 09:24:14

Vorheriges Thema - Nächstes Thema

Schuetze5

Hallo ich stehe gerade ein bisschen auf dem Schlauch, ich schalte meine Hautürbeleuchtung über ein at ein:

*{sunset(900,"17:00","20:58")} set AK_Haustuerbeleuchtung on


und Sonntag, Montag, Dienstag, Mittwoch und Donnerstag über dieses at wieder aus:

*21:00:00 { if(($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 0)&&(Value("DauerlichtHaustuer") eq "Aus")) {fhem("set AK_Haustuerbeleuchtung off") }}


Freitag und Samstag wird über :

*23:59:00 { if(($wday == 5 || $wday == 6)&&(Value("DauerlichtHaustuer") eq "Aus")) {fhem("set AK_Haustuerbeleuchtung off") }}
ausgeschaltet.

Das funktioniert auch soweit nur das die Lampe immer um 20:58 Uhr eingeschaltet wird und das ist Freitag und Samstag im Sommer schon ärgerlich.
Wie kann ich das vereinfachen damit die Lampe engeschaltet wird wenn folgende Bedingungen erfüllt sind:
- es wird zwischen 17:00 und 21:00 Uhr dunkel
- die Lampe soll von Sonntag bis Donnerstag um 21:00 Uhr ausgeschaltet werde bzw. garnicht eingeschaltet werden
- die Lampe soll Freitag und Samstag um 23:59Uhr ausgeschaltet werden
- mit dem dummy DauerlichtHaustuer soll die Automatik ein und ausgeschaltet werden

Ich hoffe das ich es vernünftig erklärt habe was ich möchte und wäre über eine Hilfe sehr dankbar.

Otto123

Moin,

ich habe diese Bedingungen nicht so kompliziert wie Du gemacht und steure das alles über ein DOIF und bei Bedarf über die Anwesenheit.
Um Dein bestehende Lösung aber einfach zu erweitern, fällt mir eine meiner ersten Aktionen in FHEM ein. Ich habe einen dummy Tageslicht, den setze ich über zwei at einfach bei Sonnenaufgang auf 1 und bei Sonnenuntergang auf 0. Ich wollte nicht an vielen Stellen eine einfache Abfrage.

Den nimmst Du einfach als zusätzliche Bedingung if Tageslicht == 0 dann schalte Licht ein.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rabehd

Mein Vorschlag wäre ein DOIF, für mich am übersichtlichsten, da alle Bedingungen im einem Device.

Was heißt Automatik? Gilt das fürs Ein- und Ausschalten?
Die Änderung am dummy DauerlichtHaustuer könnte für das DOIF das Attribut disable setzen. So mache ich das mit der Weihnachsbeleuchtung.

Ausschalten:
Wenn Licht an und Zeitpunkt erfüllt.
Wie wäre es mit einen Party-Modus der Abgefragt wird und so noch andere Zeiten schaltet?

Einschalten:
Wenn Wochentag Sonntag bis Donnerstag und Sonnenuntergang+900 kleiner 21:00, dann Einschalten zum Sonnenuntergang+900, aber frühstens 17:00
oder
Wenn Wochentag Freitag oder Samstag, dann Einschalten zum Sonnenuntergang+900, aber frühstens 17:00


Auch funktionierende Lösungen kann man hinterfragen.

Schuetze5

@rabehd
das mit einem DOIF hatte ich auch schon überlegt nur mir fehlt der ansatz wie.
Party Schaltung brauch ich nicht, dann kann ich ja die Automatik ausschalten und das Licht per Hand an und aus machen.

ZitatAusschalten:
Wenn Licht an und Zeitpunkt erfüllt.
Wie wäre es mit einen Party-Modus der Abgefragt wird und so noch andere Zeiten schaltet?

Einschalten:
Wenn Wochentag Sonntag bis Donnerstag und Sonnenuntergang+900 kleiner 21:00, dann Einschalten zum Sonnenuntergang+900, aber frühstens 17:00
oder
Wenn Wochentag Freitag oder Samstag, dann Einschalten zum Sonnenuntergang+900, aber frühstens 17:00

oder hat jemand ein Beispiel was ungefähr in die Richtung.


rabehd

wo ist das Problem?

Kurz mal zu DOIF einlesen.
Die jeweiligen Bedingungen für ein und aus aufschreiben (hilft).

Dann das DOIF ganz einfach (mit z.B. je einer einfachen Bedingung für ein und aus) definieren.
Dann die jeweiligen Bedingungen/Fälle ergänzen. (deswegen aufschreiben).

Testen....Fertig
Auch funktionierende Lösungen kann man hinterfragen.

Schuetze5


Schuetze5

Hab gerade mal ein bisschen gelesen und probiert, kann das so funktionieren?


(
[({sunset()}+900)] and
[?17:00-20:58]
)     
(set AK_Haustuerbeleuchtung on) 
DOELSEIF
(
(
[21:00|So Mo Di Mi Do] or
[23:58|Fr Sa]
) and
[DauerlichtHaustuer] eq "Aus"
)     
(set AK_Haustuerbeleuchtung off)


Danke

Otto123

Nein, probiere es aus -> {{sunset()}+900} in die Kommandozeile und {sunset(900)} in die Kommandozeile :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rabehd

Zitat von: Schuetze5 am 21 Juni 2017, 11:39:01
Hab gerade mal ein bisschen gelesen und probiert, kann das so funktionieren?

Wenn Du es probiert hast, dann weisst Du es auch.
Auch funktionierende Lösungen kann man hinterfragen.

Schuetze5

Probiert ein DOIF zu schreiben  ;)
Die Lampen sollten ja heute Abend  eigentlich nicht an gehen, da sunset 22:59Uhr ist.

Otto123

Zitat von: Schuetze5 am 21 Juni 2017, 12:16:45
Probiert ein DOIF zu schreiben  ;)
Die Lampen sollten ja heute Abend  eigentlich nicht an gehen, da sunset 22:59Uhr ist.
Weit im Norden? Oder mit einer sehr "tiefen" Einstellung.  ;)
sunset(900) liefert die Zeit 15 min nach dem sunset() bzw. sunset("CIVIL") wo die Sonne schon 6 grad unter dem Horizont steht. Der ist bei mir heute um 22:18 Uhr.

Was ich damit eigentlich sagen will: Sonnenuntergang ist auch eine Frage des Standpunktes  8)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Schuetze5

sunset 900 passt, so hat es ja immer mit den at Programm gelaufen (siehe oben).
Bei meinem alten Programm war halt das Problem das die Lampe um 20:58Uhr eingeschaltet wurde und dann Freitag und Samstag schon an war obwohl noch kein sunset war.
Wenn das jetzt so mit dem DOIF funktioniert ist das auf jedenfall einfacher so.

Danke nochmal an alle