NEWS
[GELÖST] - Weihnachtsbeleuchtung - zu kompliziert gedacht?
-
Hallo,
Beim aktivieren meiner Weihnachtsbeleuchtung in diesem Jahr musste ich mir von meinen Nachbarn leider sagen lassen, dass man doch besser bis zum Totensonntag warten sollte... wusste ich nicht Shame on me
Im nächsten Jahr würde ich das aber beachten wollen, aber ganz sicher nicht manuell. Das soll bitte automatisch passieren.
Den Totensonntag kann ich mir aus dem Datenpunkt feiertage.0.heute.Name holen.
Im ersten Versuch habe ich gedacht man könnte, wenn der Tag gekommen ist, das irgendwie in ein Datum konvertieren. Ist entweder falsch gemacht, oder falsch gedacht (oder beides). Als Debug kommt in jedem Fall immer 01/01 raus.
Durch den Vergleich (> als ) geht die Beleuchtung praktisch das ganze Jahr an, da ja immer nach dem 01.01. ist... Also unbrauchbar...
- Versuch:
Ich erstelle eine Variable "Totensonntag" mit dem Wert 0.; und erhöhe die um 1 wenn der Totensonntag kommt. Das funktioniert zwar, ist aber fehleranfällig, denn sobald das Script neugestartet, oder nur der Service ioBroker neugestartet wird, funktioniert die Beleuchtung nicht mehr und man muss händisch aktiv werden, da die Variable wieder 0 ist und sich auch nicht mehr ändert, wenn Totensonntag bereits vorbei ist.
Also auch unbrauchbar.
Der 3., mMn funktionierende, Versuch sieht so aus:
Ich habe einen eigenen Datenpunkt erstellt (0_userdata.0.eigene_Datenpunkte.trigger.Totensonntag) dieser wird auf true aktualisiert sobald der Datenpunkt feiertage.0.heute.Name "Totensonntag" ergibt. Die aktualisierung erfolgt mit Verzögerung, denn die Beleuchtung soll nicht am, sondern erst am nächsten Tag laufen.
Im Falls wird dann abgeprüft ob entweder der Datenpunkt 0_userdata.0.eigene_Datenpunkte.trigger.Totensonntag true ist oder vor einem definierten Datum zutrifft.
Per Zeitplan wird am 01.01. eines Jahres der Datenpunkt 0_userdata.0.eigene_Datenpunkte.trigger.Totensonntag wieder auf false aktualisiert, damit nach dem definierten Enddatum die Weihnachtsbeleuchtung nicht mehr an geht.
Ich bin Anfänger, daher die Frage ob man das so macht, oder ob das viel zu kompliziert gedacht ist, oder ob sogar Fehler drinn sind.
- Versuch:
-
@slang-0
Erstmal brauch deine abfrage nach dem Totensonntag ja einen Trigger.
Aktuell schaut er nur nach, wenn du dein Script startest oder speicherst.Trigger Blöcke müssen auch immer außen liegen.
Ich würde evtl. (täglich trigger) eine Abfrage machen auf den Feiertag, ähnlich wie du es schon tust, du brauchst halt nen Trigger, und dann ein weiteres script ein, bzw. ausschalten, wo nur deine Cron Trigger drin sind.
Also das Zeitplan Script separat machen, und das ganze script ein und ausschalten lassen mit der Abfrage.
-
@cinimod
Hi und vielen Dank für deine Hilfe.Ich verstehe es aber nicht. Bislang lief das blockly so:
Hierbei liegt doch der trigger auch nicht außen. Dennoch läuft jeden Tag jeder Trigger der Funktion durch.
Würde das heißen wenn der Falls-Block nur einmal ausgeführt wird (beim speichern oder neustarten) dass das am 31.01. die Funktion auch nicht enden würde???Wenn ich dann den Falls-Bereich in einen Trigger bringe der jeden Tag ausgeführt wird, wie bringe ich dann die übrigen Trigger zum laufen? Denn Trigger dürfen ja auch nicht in Triggern stehen?
Das müsste dann ja falsch sein?
...
-
@slang-0
So?
-
@slang-0
Wie dein altes Script funktioniert hat ist mir etwas schleierhaft.
Ich hätte es so versucht, bin mir aber nicht sicher ob das mit dem Zeit block so richtig ist:
-
Das müsste dann ja falsch sein?
...
Genau, Trigger im Trigger funktioniert garnicht.
-
@slang-0 Kleiner Tip: Ich nutze dafür den Adapter "Deutsche Feiertage", der bei mir in 2 Instanzen läuft. einmal die "echten" Feiertage und einmal die "nicht-Feiertage", wie z.B. Totensonntag, Advent-Sonntage, Heiligabend etc. Das läuft ganz gut und ich stelle damit sicher, dass vor dem Totensonntag nichts in Betrieb ist.
-
@cinimod sagte in Weihnachtsbeleuchtung - zu kompliziert gedacht?:
@slang-0
Wie dein altes Script funktioniert hat ist mir etwas schleierhaft.
Ich hätte es so versucht, bin mir aber nicht sicher ob das mit dem Zeit block so richtig ist:
Vielen Dank! Verstehe, man muss anscheinend um 1000 Ecken denken.
Kann es sein das dein Vorschlag wieder den "Fehler" hat, das der Zeitplan nicht mehr greift, wenn das Script neugestartet wird und Totensonntag bereits vorbei ist? In dem Fall wird die Variable ja nie auf wahr gesetzt. Das müsste ja nur sein, das man ein Systemupdate macht... In dem Fall würde die Variable immer falsch sein, und das Script wird dennoch ausgeführt ohne das etwas geschaltet wird.Ich habs mal so umgesetzt:
-
@ttberlin sagte in Weihnachtsbeleuchtung - zu kompliziert gedacht?:
@slang-0 Kleiner Tip: Ich nutze dafür den Adapter "Deutsche Feiertage", der bei mir in 2 Instanzen läuft. einmal die "echten" Feiertage und einmal die "nicht-Feiertage", wie z.B. Totensonntag, Advent-Sonntage, Heiligabend etc. Das läuft ganz gut und ich stelle damit sicher, dass vor dem Totensonntag nichts in Betrieb ist.
Hi,
Das ist interessant! Wie stellst du denn sicher ob vor, oder schon nach Totensonntag ist?
Im Adapter feiertage ist der Totensonntag ja auch enthalten, aber ich komme einfach nicht drauf wie ich auf einfach Weise prüfen kann ob der Tag schon war, oder noch kommt? Der Tag ist ja schließlich immer an einem anderen Datum. -
@slang-0 Hi,
ich habe das mit dem ical-Adapter ( liest google calender aus indem die Feiertage drin sind) und einem zusätzlichen Datenpunkt "Weihnachtsbeleuchtung" gemacht.
Dieser Datenpunkt wird nach dem Totensonntag auf true gesetzt und am 6.1. wieder auf false.Alle Weichtsbeleuchtungsscripte fragen den dann ab, falls true, lampen gehen an, fertig.
-
Das ist ne sehr coole Idee mit den zwei Instanzen, das werde ich auch mal so übernehmen.
-
Auch ne gute Idee
-
-
@slang-0
Ich hab meine Variable extra nicht Totensonntag genannt, weil diese eben garnichts damit zu tun hat.
Wenn er eintrag Totensontag in deinem Datenpunkt findet, setzt er die variable auf true.
und wenn variable true und nummer vom monat "2" ist. setzt er sie wieder auf false.bei Neustart der script ändert sich doch nichts ?! oder ist die Varaible dann leer
Dann nimm nen Datenpunkt und stell den um. Der bleibt auf jeden fall so wie er gestellt wurde.
-
@slang-0 Na der Adapter beschreibt mehrere Datenpunkte. Ich nutze z.B. "Feiertag-heute". Dieser wird um 00:00 Uhr oder kurz danach mit dem Wert Totensonntag gesetzt. Das werte ich aus. Weiterhin gibt es die Datenpunkte Feiertag-morgen, Feiertag übermorgen, Feiertag nächster.
-
du triggerst mit umschaltung des datenpunktes auf totensonntag, das ist doch quatsch.
-
@cinimod warum an dem Tag abends um 23.55 wird der Datenpunkt auf true gesetzt, der am naechsten Tag abgefragt wird.
-
@cinimod sagte in Weihnachtsbeleuchtung - zu kompliziert gedacht?:
@slang-0
Ich hab meine Variable extra nicht Totensonntag genannt, weil diese eben garnichts damit zu tun hat.
Wenn er eintrag Totensontag in deinem Datenpunkt findet, setzt er die variable auf true.
und wenn variable true und nummer vom monat "2" ist. setzt er sie wieder auf false.bei Neustart der script ändert sich doch nichts ?! oder ist die Varaible dann leer
Dann nimm nen Datenpunkt und stell den um. Der bleibt auf jeden fall so wie er gestellt wurde.
Also würde das Blockly wie hier zu sehen so korrekt sein?
-
@ttberlin sagte in Weihnachtsbeleuchtung - zu kompliziert gedacht?:
@slang-0 Na der Adapter beschreibt mehrere Datenpunkte. Ich nutze z.B. "Feiertag-heute". Dieser wird um 00:00 Uhr oder kurz danach mit dem Wert Totensonntag gesetzt. Das werte ich aus. Weiterhin gibt es die Datenpunkte Feiertag-morgen, Feiertag übermorgen, Feiertag nächster.
-
ach habs falsch gelesen, alles gut.