Seite 1 von 1

Hilfe bei Day rhythm Rule

Verfasst: 10. Aug 2020 23:07
von Backbe01
Hallo,

bei solch einer Rule stoße ich wiedermal an meine Grenzen der Machbarkeit. Ich habe im Esszimmer einen DualWhite LED Stripe verbaut. Es war schon immer mein Wunsch, diesen im Tagesrytmus zu steuern und dies automatisch. Dies ist nun bestimmt zwei Jahre her, aber wirklich funktionieren tut noch nichts.

Bisher habe ich folgende Rule:

Code: Alles auswählen

var  int iFarbtemperatur = 80
var int  iHelligkeit = 75

rule "Esszimmer"

when 
    Item shelly1pm_LEDstripe_EZ_Input changed from 0 to 1

then 
     logInfo("EZ1", "Shelly wurde ausgelöst")
    if(LEDstripe_EG_EsszimmerDH.state != 0) {
    logInfo("EZ2", "Stripe war an")
    LEDstripe_EG_Esszimmer.sendComand (OFF)
    logInfo("EZ3", "Stripe geht aus")
    }

    else {

    if(LEDstripe_EG_EsszimmerDH.state == 0 || shelly1pm_LEDstripe_EZ_Power.state == OFF)
    sendCommand(shelly1pm_LEDstripe_EZ_Power, ON)
    logInfo("Led Stripe war aus", "LED Stripe geht an")
    
    if(now.getMinuteOfDay >= 0 && now.getMinuteOfDay < 5 * 60 +29 && Besuch_anwesend.state != ON) {iHelligkeit = 20 iFarbtemperatur = 20}
    if(now.getMinuteOfDay >= 5 * 60 +30 && now.getMinuteOfDay < 7 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 60 iFarbtemperatur = 80}
    if(now.getMinuteOfDay >= 7 * 60 && now.getMinuteOfDay < 10 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 80 iFarbtemperatur = 20}
    if(now.getMinuteOfDay >= 10 * 60 && now.getMinuteOfDay < 14 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 80 iFarbtemperatur = 10}
    if(now.getMinuteOfDay >= 14 * 60 && now.getMinuteOfDay < 18 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 80 iFarbtemperatur = 65}
    if(now.getMinuteOfDay >= 18 * 60 && now.getMinuteOfDay < 20 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 60 iFarbtemperatur = 70}
    if(now.getMinuteOfDay >= 20 * 60 && now.getMinuteOfDay < 24 * 60 && Besuch_anwesend.state != ON) {iHelligkeit = 50 iFarbtemperatur = 80}
    if(Besuch_anwesend.state == ON) {iHelligkeit = 80 iFarbtemperatur = 80} 
    LEDstripe_EG_EsszimmerDH.sendCommand(iHelligkeit)
    LEDstripe_EG_EsszimmerDF.sendCommand(iFarbtemperatur)}

end


  /*  
    (LEDstripe_EG_EsszimmerDH.state == 0 || shelly1pm_LEDstripe_EZ_Power.state == OFF) {
        logInfo("EZ4", "Stripe war aus")
        shelly1pm_LEDstripe_EZ_Power.sendCommand (ON)
    /*
        shelly1pm_LEDstripe_EZ_Power.sendCommand(ON)
        LEDstripe_EG_EsszimmerDH.sendCommand (25)
        LEDstripe_EG_EsszimmerDF.sendCommand (80)
       
        
    if(now.getHourOfDay > 0 && now.getHourOfDay < 5)   
        LEDstripe_EG_EsszimmerDH.sendCommand (25)
        LEDstripe_EG_EsszimmerDF.sendCommand (80)
        logInfo("EZ5", "Licht geht an 0-5")
    
    if(now.getHourOfDay > 5 && now.getHourOfDay < 11)   
        LEDstripe_EG_EsszimmerDH.sendCommand (75)
        LEDstripe_EG_EsszimmerDF.sendCommand (34)
        logInfo("EZ5", "Licht geht an 6-11")

    if(now.getHourOfDay > 11 && now.getHourOfDay < 16)   
        LEDstripe_EG_EsszimmerDH.sendCommand (75)
        LEDstripe_EG_EsszimmerDF.sendCommand (50)
        logInfo("EZ5", "Licht geht an 12-16")

    if(now.getHourOfDay > 16 && now.getHourOfDay < 20)   
        LEDstripe_EG_EsszimmerDH.sendCommand (75)
        LEDstripe_EG_EsszimmerDF.sendCommand (65)
        logInfo("EZ5", "Licht geht an 17- 20")

    if(now.getHourOfDay > 20)   
        LEDstripe_EG_EsszimmerDH.sendCommand (50)
        LEDstripe_EG_EsszimmerDF.sendCommand (80)
        logInfo("EZ5", "Licht geht an ab 21")


    }
end 
 */
Meine Items hierfür sind:

Code: Alles auswählen

Dimmer  LEDstripe_EG_EsszimmerDF    "Farbtemperatur Esszimmer"                 (EG_Esszimmer,gLampen,gSzenengeraete)  [ "Lighting" ]    {channel="hue:0220:001788a519da:26:color_temperature"}
Dimmer  LEDstripe_EG_EsszimmerDH    "Helligkeit Esszimmer"                     (EG_Esszimmer,gLampen,gSzenengeraete)  [ "Lighting" ]    {channel="hue:0220:001788a519da:26:brightness"}
Switch  LEDstripe_EG_Esszimmer      "Ein/Aus Stripe Esszimmer"                                                                          {channel="hue:0220:001788a519da:26:brightness"}
Switch  shelly1pm_LEDstripe_EZ_Power       "LEDstripe Esszimmer Power"              <light>   (EG_Esszmmer,gLampen,gSzenengeraete)  [ "Lighting" ]      {channel="mqtt:topic:Mosquitto:shelly1pm_EZ:power"}
//Number  shelly1pm_LEDstripe_EZ_Temp        "Shelly1pm EZ Temperatur [%.1f°C]"       <temperature>    (EG_Esszimmer,gLampen,gSzenengeraete)                     {channel="mqtt:topic:Mosquitto:shelly1pm_EZ:temperature"}
Number  shelly1pm_LEDstripe_EZ_Energy      "Shelly1pm EZ Energie [%.1f W]"          <energy>  (EG_Esszimmer,gLampen,gSzenengeraete)                     {channel="mqtt:topic:Mosquitto:shelly1pm_EZ:energy"}
String  shelly1pm_LEDstripe_EZ_Input       "Shelly1pm EZ Input [%d]"                                                                                    {channel="mqtt:topic:Mosquitto:shelly1pm_EZ:input_1"}
Jetzt habe ich im internationalen Forum folgenden Thread ausgegraben:
https://community.openhab.org/t/automat ... bulbs/4695

Hier wird das Ganze über das Astro-Binding gelöst. Dies wäre der absolute Hammer, da hier auch der Sonnenstand mit berücksichtigt wird.

Nun wäre ich Euch äußerst dankbar, wenn ihr mir bei der Umsetzung dieser Regel helfen könnt, da ich mit den ganzen var´s und int´s völlig überfordert bin.

Wichtige Info noch. Das Setup sieht wie folgt aus (damals so aufgebaut um Strom zu sparen).

Wandschalter -> Shelly1pm -> Netzteil -> Gledopto Controller (Hue) -> Stripe

Lichtfarbe: LEDstripe_EG_EsszimmerDF: 0% = 6500K, 100% = 2800K

Was ich ebenfalls versucht habe zu realisieren, dass der shelly auf detached steht und sobald der input auf 1 schaltet, schaltet das Relais des shelly1pm auf ein, sofern es nicht schon ein ist. (ich würde gerne mit einer anderen Abwesendheits-rule den shelly ausschalten entweder über Zeit ober über das vorhanden tr064-Binding).

Randnotiz: Es gibt noch ein item Besuch-anwesend. Wenn dieses auf ON steht, sit z.B. die Einschaltdauer der BWM im Flur länger und hier sollte immer helles Licht angehen.

(Wer bis hierher gelesen hat, schon einmal ein dickes Dankeschön :lol: )

Re: Hilfe bei Day rhythm Rule

Verfasst: 11. Aug 2020 01:08
von udo1toni
Du gehst die Sache etwas zu kompliziert an. Trenne die Funktionen auf. Eine Rule setzt den Sollwert für Farbtemperatur und Helligkeit. Diese Rule wird durch Astro gesteuert. Du kannst z.B. die Elevation dazu verwenden. Ob die Sonne gerade auf- oder untergeht, kannst Du dann über den Azimuth ermitteln, ist er unter 180°, ist es vormittags, ansonsten nachmittags. (Die Uhrzeit ist dazu ungeeignet, wegen Sommerzeit und Ortszeit-Abweichung).
Du musst allerdings genau überlegen, wie sich die Farbtemperatur verhalten soll. Im Winter hat die Elevation ein anderes Maximum als im Sommer. Bei welcher Elevation soll die minimale Farbtemperatur gelten usw.
Dennoch muss diese Rule nur diese eine Funktion erledigen: exakt zwei Werte setzen, ohne jegliche andere Entscheidungen. Wenn Die beiden Sollwerte mathematisch bestimmt werden, kannst Du die Abstufung in vielen kleinen Schritten vornehmen.

Eine zweite Rule kümmert sich nun um das eigentliche Licht. Diese Rule triggert, wenn sich die Sollwerte ändern und wenn das Licht oder der Gäste-Schalter sich ändern. anhand der Vorgaben werden dann die Entscheidungen getroffen, ob das Licht an oder aus sein soll, in welchem Zeitfenster das Licht aus gehen soll und ob das gedimmte Licht laufen soll oder nicht.

Statt zig mal die selbe Abfrage mit Bool'scher Algebra anzuwenden, ist es sinnvoller, solche für alle Anweisungen gleichen Bedingungen vorher zu erledigen. z.B.:

Code: Alles auswählen

var int iFarbtemperatur = 80
var int iHelligkeit = 75

rule "Esszimmer"
when 
    Item shelly1pm_LEDstripe_EZ_Input changed from 0 to 1
then 
    logInfo("dimmer", "Shelly wurde ausgelöst")
    if(LEDstripe_EG_EsszimmerDH.state != 0) {
        logInfo("dimmer", "Stripe war an")
        LEDstripe_EG_Esszimmer.sendCommand (OFF)
        logInfo("dimmer", "Stripe geht aus")
        return;
    } else {
        sendCommand(shelly1pm_LEDstripe_EZ_Power, ON)
        logInfo("dimmer", "LED Stripe geht an")
    }
    if(Besuch_anwesend.state != ON) {
             if(now.getMinuteOfDay < 5 * 60 +29) {iHelligkeit = 20 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 7 * 60)     {iHelligkeit = 60 iFarbtemperatur = 80}
        else if(now.getMinuteOfDay < 10 * 60)    {iHelligkeit = 80 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 14 * 60)    {iHelligkeit = 80 iFarbtemperatur = 10}
        else if(now.getMinuteOfDay < 18 * 60)    {iHelligkeit = 80 iFarbtemperatur = 65}
        else if(now.getMinuteOfDay < 20 * 60)    {iHelligkeit = 60 iFarbtemperatur = 70}
        else                                     {iHelligkeit = 50 iFarbtemperatur = 80}
    } else                                       {iHelligkeit = 80 iFarbtemperatur = 80} 
    LEDstripe_EG_EsszimmerDH.sendCommand(iHelligkeit)
    LEDstripe_EG_EsszimmerDF.sendCommand(iFarbtemperatur)
end
Zunächst prüft die Rule, ob der Dimmer an war, ist das der Fall schaltet sie den Dimmer aus und bricht anschließend ab(!).
Läuft die Rule weiter, so war der Dimmer aus und muss also eingeschaltet werden.
Nun ist die nächste Bedingung, dass Besuch abwesend ist. ist das der Fall, läuft die Rule durch die einzelnen Stufen. Da nur eine der Bedingungen abgearbeitet wird (wegen der else-Anweisung vor jedem if) reicht eine Grenze, die Liste muss natürlich aufsteigend sortiert sein. Je später am Tag, desto weiter wandert die Rule, bis die Bedingung gültig wird.
Ist hingegen Besuch anwesend, so wird der dynamische Teil übersprungen und direkt die fixen Werte gesetzt.
Zum Abschluss werden die Werte in die Lampe geschrieben.

Die Rule berücksichtigt natürlich nicht, dass sich die Lichtverhältnisse ändern. Im eingeschalteten Zustand müsste die Rule zu den Grenzzeiten getriggert werden, um jeweils die neuen Sollwerte zu setzen und gegebenenfalls zu schreiben. deshalb solltest Du den Werteteil in eine eigene Rule verlegen :) wie oben beschrieben.

Was das logging betrifft: Ich kann es nur immer wieder erklären :) alle log-Befehle nehmen genau zwei Strings als Parameter an, der erste String ist der Logger, der zweite Parameter ist die geloggte Meldung. Bitte nicht mit unterschiedlichen Loggern arbeiten, damit dann quasi eine Überschrift gebildet wird. Diese gehört zur Meldung. Also nicht

Code: Alles auswählen

logInfo("EZ1", "Shelly wurde ausgelöst")
    logInfo("EZ2", "Stripe war an")
    logInfo("EZ3", "Stripe geht aus")
sondern

Code: Alles auswählen

logInfo("dimmer","EZ1: Shelly wurde ausgelöst")
    logInfo("dimmer","EZ2: Stripe war an")
    logInfo("dimmer","EZ3: Stripe geht aus")
Diese Meldungen lassen sich dann gemeinsam zur Laufzeit deaktivieren oder aktivieren, dafür ist der erste Parameter da!

Re: Hilfe bei Day rhythm Rule

Verfasst: 11. Aug 2020 21:31
von Backbe01
Hallo Udo,

vielen Dank für Deine Hilfe! Die Rule läuft nach zwei kleinen Anpassungen (fehlendes m bei Command und die geschweifte Klammer am Ende war zuviel (nur als Info für evtl. andere User)), aber hey... Nachts um ein Uhr dies auf die Schnelle... ich bin immer wieder verblüfft.

Du hast Anfangs geschrieben, dies soll über zwei Rules laufen. Hier jetzt die reine Lichtsteuerung und in einer separaten den Sonnenstand abfragen. Könntest Du mir hierfür evtl. noch ein Beispiel bereitstellen. Ich kann mir gar nicht vorstellen, wie eine Rule von einer anderen abhängig gemacht werden kann. Ich für meinen Teil werde mir in der Sitemap jetzt erstmal die Items Elevation und Azimuth anzeigen lassen um zu verstehen, wa da eigentlich genau passiert! ;)

Zum logging: Ehrlich gesagt verstehe ich nur Bahnhof! Aber wenn Du sagst, der erste Teil soll in einer Regel immer gleich sein, dann mach ich das in Zukunft!

Was ich noch nicht verstehe:

In diesen Zeilen

Code: Alles auswählen

else if(now.getMinuteOfDay < 18 * 60)    {iHelligkeit = 80 iFarbtemperatur = 65}
else if(now.getMinuteOfDay < 20 * 60)    {iHelligkeit = 60 iFarbtemperatur = 70}
        
trifft doch der else Teil für den ganzen Tag zu, weil es ist doch bei allen anderen Zeilen auch <20 Uhr? Warum muss der Zeitraum nicht Anfang und Ende haben?

Edit:
Diese blöde Abwesenheitsrule will auch nicht klappen:

Code: Alles auswählen

rule "Abwesend"

when 
    Item Handy_Gerhard changed from OPEN to CLOSED &&  Item Handy_Tanja changed from OPEN to CLOSED && Item Handy_Gabriel changed from OPEN to CLOSED || (now.getMinuteOfDay < 5 * 60 +28)
    
then 
    sendCommand(LEDstripe_EG_EsszimmerDH, OFF)
    sendCommand(shelly1pm_LEDstripe_EZ_Power, OFF)
end
Kann ich die in an die obige Rule anhängen, gehören ja irgendwie doch zusammen...

Re: Hilfe bei Day rhythm Rule

Verfasst: 12. Aug 2020 08:41
von udo1toni
Tja, Tippfehler sind immer gern genommen :) hab ich jetzt aber direkt oben korrigiert...

Die Aufteilung in zwei Rules ist kein Problem, wenn die Sollwerte (iHelligkeit und iFarbtemperatur) einfach in ungebundene Number Items gespeichert werden. Also die erste Rule schreibt die Sollwerte, die 2. Rule triggert, wenn sich die Sollwerte geändert haben bzw. der normale Trigger (...changed from 0 to 1) ausgelöst hat. Innerhalb der Rule können dann die Werte mit den weiteren Abhängigkeiten abgeglichen und entsprechend reagiert werden. Der Grund für die Trennung ist hier, dass nur der Code für die Bestimmung der Sollwerte zyklisch durchlaufen werden muss, die 2. Rule wird nur bei Wertänderungen getriggert. Azimuth: Die Sonne wandert innerhalb 24 Stunden einmal im Kreis (360°) um die Erde (natürlich nur vom Standpunkt des Betrachters auf der Erde gesehen...)
Elevation: Die Sonne steigt und sinkt zyklisch über den Tag, wobei die Maxima und Minima übers Jahr wechseln. Das ist durch die Neigung der Rotationsachse bedingt. Höchststand der Sonne ist in Deutschland, wenn die Sonne im Süden steht (mittlere Ortszeit 12 Uhr mittags), Tiefststand ist um Mitternacht (ebenfalls mittlere Ortszeit) und die Sonne ist dann im Norden. Logischerweise ist sie da aber unsichtbar, weil tief unter dem Horizont.

Logging: Nicht nur soll der erste String gewöhnlich innerhalb einer Regel identisch sein, er sollte auch möglichst nur kleingeschrieben sein und nur Buchstaben enthalten. einzelne Punkte wären auch noch ok. Prinzipiell kann man seine Logger beliebig benennen, aber es gibt halt ungeschriebene Regeln.
Ein Logger ist dabei ein Regelsatz, der sich um das Logging kümmert. Im Logger wird festgelegt, wie das Log formatiert wird, in welche Datei das Log geschrieben wird usw.
Dass Du Dich um diese ganzen Werte nicht kümmern musst, liegt daran, dass log4j2 als zuständiges Paket hierarchisch aufgebaut ist, d.h., wenn es für einen Logger keine Definition gibt, wird log4j2 die Konfiguration der nächsthöheren Ebene nutzen. Alle Logger, die in der Rules DSL angelegt werden, gehören zu org.openhab.model.script. Wenn Du also einen Befehl logInfo("dimmer","Logmeldung") schreibst, erzeugt log4j2 daraus den Logger org.openhab.model.script.dimmer und schickt mit der Logstufe INFO die Meldung Logmeldung. Die Vorgabe ist die Ausgabe in die Datei openhab.log mit der bekannten Formatierung, entsprechend entsteht die Logzeile

Code: Alles auswählen

2020-08-12 07:20:33.195 [INFO ] [     org.openhab.model.script.dimmer] Logmeldung
Nun sollte auch klar werden, warum nur . und Kleinbuchstaben verwendet werden sollten. Der Punkt markiert die nächste Hierarchieebene. Der Witz beim Logger ist, es gibt verschiedene Dringlichkeitsstufen, die mit den unterschiedlichen Befehlen erzeugt werden, logDebug(), logInfo(), logWarn() und logError(). Nun kannst Du all diese Befehle innerhalb einer Rule verwenden und jeweils den gleichen Logger verwenden. Und wenn die Rule gut funktioniert, löschst Du nicht die log-Befehle aus dem Script, sondern loggst Di in die Karaf Konsole ein und sendest den Befehl

Code: Alles auswählen

log:set WARN org.openhab.model.script.dimmer
und Schwupps, werden keine logZeilen der Stufe DEBUG oder INFO miehr erzeugt, wohl aber noch WARN und ERROR. Wenn es später mal ein Problem gibt, kannst Du den Level auf DEBUG setzen und bekommst massig zusätzliche Infos. Deshalb ist es auch keine gute Idee, den Log Level zu missbrauchen, um Meldungen einer bestimmten Rule farblich hervorzuheben. Dafür gibt es in Frontail Filter, das ist wesentlich effizienter.

Ablauf der Rule (if und else...):
Zur Vereinfachung habe ich den Code mal reduziert. Der Block

Code: Alles auswählen

var test = 0
     if(val <  5) {test = 1}
else if(val <  7) {test = 2}
else if(val < 10) {test = 3}
else if(val < 14) {test = 4}
else if(val < 18) {test = 5}
else if(val < 20) {test = 6}
else              {test = 7}
wird von oben nach unten durchlaufen. Dabei sind die Zahlenwerte aufsteigend sortiert und es wird nach "kleiner als" geprüft. Ist val also kleiner als 5, so trifft die erste Bedingung zu, die Variable wird auf 1 gesetzt, der else-Teil wird aber nicht mehr durchlaufen, stattdessen springt das Programm direkt hinter den Block. Ist der Wert größer oder gleich 7, aber kleiner als 10, so trifft die erste Bedingung nicht zu, also wird das erste else durchlaufen, es wird auf kleiner 7 geprüft, was nicht zutrifft, also wird das zweite else durchlaufen. Es wird auf kleiner 10 geprüft, was zutrifft, also wird die Variable auf 3 gesetzt und anschließend springt das Programm hinter den Block. Die Untergrenze muss also nicht extra definiert sein,
Anders sieht es aus, wenn die Regeln nicht aufsteigend sortiert sind, dann klappt das natürlich nicht und man muss beide Grenzen aufführen.

Alternativ könnte man die Abfrage auch umkehren und auf das else verzichten. Es ginge also mit < 20 los.

Code: Alles auswählen

var test = 7
if(val < 20) {test = 6}
if(val < 18) {test = 5}
if(val < 14) {test = 4}
if(val < 10) {test = 3}
if(val <  7) {test = 2}
if(val <  5) {test = 1}
4 ist kleiner 20 -> test = 6. 4 ist auch kleiner 18, test = 5, usw., bis zur letzten Abfrage, 4 < 5, also test = 1
Wenn im Codeblock nur Variablen gesetzt werden (wie in Deinem Code) werden also die Variablen lediglich mehrfach mit einem Wert überschrieben und zuletzt steht der richtige Wert in der Variablen. Es sollte aber klar sein, dass das die erste Variante effizienter ist, da die Variable nur einmal pro Aufruf beschrieben wird, während die zweite Variante die Variable bis zu 7 mal beschreibt. Trotzdem kann es Gründe geben, diese Art zu verwenden, wenn je nach Stufe bestimmte Dinge zusätzlich passieren sollen.

Die "blöde Anwesenheitsrule": ;)

Du unterliegst einem Irrtum, auf den fast alle Anwender zunächst rein fallen, was evtl. an dem then als Schlüsselwort hängt. Das vorherige Schlüsselwort ist aber nicht if, sondern when.
Eine Rule besteht immer aus zwei Teilen, dem when-Teil und dem then-Teil. Im then-Teil ist der Code hinterlegt, der auszuführen ist. im when-Teil sind alle Trigger aufgeführt, die zur Ausführung des Codes führen. Das Wichtige dabei ist das Wort Trigger.
Ein Trigger ist ein Ereignis, es geht hier nicht um Zustände, sondern immer und ausschließlich um Zeitpunkte.
Eine Rule kann beliebig viele Trigger haben. Da es nur um Zeitpunkte geht, kann der Trigger verschiedene Ursachen haben, Time cron wäre ein fixer Zeitpunkt, System started wäre ein einmaliges Ereignis, aber es handelt sich um einen Zeitpunkt (eben sobald die Rule Engine und die Datei geladen wurden), changed ist der Zeitpunkt, wenn sich der Status des Items ändert usw.
Es gibt solche Trigger, die eingeschränkt werden können (triggere nur, wenn sich der Zustand von A nach B ändert usw.) Was aber nicht geht, ist eine Einschränkung durch andere Trigger.
Stattdessen muss diese Einschränkung, da sie sich nicht mit Zeitpunkten beschäftigt, sondern mit Zuständen, im auszuführenden Code verwendet werden.

Code: Alles auswählen

rule "Abwesend"
when 
    Item Handy_Gerhard changed from OPEN to CLOSED or
    Item Handy_Tanja changed from OPEN to CLOSED or 
    Item Handy_Gabriel changed from OPEN to CLOSED or
    Time cron "0 0 0 * * ?"// täglich 0 Uhr
then 
    if((Handy_Gerhard.state == CLOSED && Handy_Tanja.state == CLOSED && Handy_Gabriel.state == CLOSED) || now.getMinuteOfDay < 5 * 60 +28) {
        if(LEDstripe_EG_EsszimmerDH.state != OFF) LEDstripe_EG_EsszimmerDH.sendCommand(OFF)
        if(shelly1pm_LEDstripe_EZ_Power.state!= OFF) shelly1pm_LEDstripe_EZ_Power.sendCommand(OFF)
    }
end

Re: Hilfe bei Day rhythm Rule

Verfasst: 13. Aug 2020 20:24
von Backbe01
Ich lese ja öfters Deine Beiträge direkt, da findet man immer viele Info´s und Ideen! Beim lesen deiner Rules klingt immer alles so logisch, selber bringe ich das aber nur selten hin.

Die Rules laufen selbstverständlich 1A, Danke nochmals!

Das mit dem Astrobinding und dem Azimuth und der Elevation wird mir glaube ich zu kompliziert. Habe aber die Duration entdeckt. Damit könnte ich mir eine Rule für mich einfacher vorstellen und wäre für meine Anforderungen auch ausreichend. Wenn die Tage wieder kürzer werden, werde ich mich daran versuchen und ggf. diesem Thread nochmal aufgreifen.

Re: Hilfe bei Day rhythm Rule

Verfasst: 14. Aug 2020 10:12
von udo1toni
Ja, wenn wir ehrlich sind, ist ja Vieles, was man versucht umzusetzen, bei genauerer Betrachtung nur Spielerei... ;)