Smarte Schlafzimmerbeleuchtung Ideen und Tipps Zur Umsetzung gesucht

  • Teilerfolg !! :)

    Mit
    Switch sonoff26 "BlaBla" {channel="mqtt:topic:embedded-mqtt-broker:sonoff26:sonoff26",expire="60s,command=OFF"}

    schaltet der schalter zumindest schon mal Softwareseitig

    Code
    2021-01-07 20:35:30.031 [ome.event.ItemCommandEvent] - Item 'sonoff26' received command ON
    2021-01-07 20:35:30.046 [nt.ItemStatePredictedEvent] - sonoff26 predicted to become ON
    2021-01-07 20:35:30.074 [vent.ItemStateChangedEvent] - sonoff26 changed from OFF to ON
    2021-01-07 20:36:30.748 [ome.event.ItemCommandEvent] - Item 'sonoff26' received command OFF
    2021-01-07 20:36:30.755 [nt.ItemStatePredictedEvent] - sonoff26 predicted to become OFF
    2021-01-07 20:36:30.802 [vent.ItemStateChangedEvent] - sonoff26 changed from ON to OFF

    Aber irgendwas stimmt mit meiner Hardware nicht.
    Irgendwie will das WLAN zur Zeit nicht so richtig. Keine Ahnung ob es am Laptop oder an der Fritzbox liegt. Jedenfalls erreiche in das WebIF der Sonoff Steckdose nicht.....

    Ich mache für heute erstmal Schluß

  • der expire schalter soll extra angelegt werden wie ich in meinem beitrag geschrieben hab. ansonsten würde sich dein sonoff immer wieder allein ausschalten und könnte nie dauerhaft oder unterschiedlich lang an bleiben.

    Code
    Switch sonoff26        "BlaBla"          {channel="mqtt:topic:embedded-mqtt-broker:sonoff26:sonoff26"}
    Switch Timer_sonoff26  "Timer Lampe"     {expire="60s,command=OFF" }

    und dazu die synchronisationsrule zwischen dem timer und deinem sonoff

    in deinen schaltrules sprichst du nun nicht mehr den sonoff direkt an sondern das expire item Timer_sonoff26
    so kannst du mehrere expireitems anlegen die ja nichts anderes als timer sind.

  • Ich GLAUBE, daß ich die Idee dahinter verstehe.

    Ich mache mir also für jeden expire Zeiraum ein item

    Timer 1 5Minuten
    Timer 2 3 Stunden

    und dann für jede Kombi eines Aktions items mit einem Timer eine entsprechende Synchron. rule??
    in welche items Datei ich die expire schreibe, ist egal?

  • Ich mache mir also für jeden expire Zeiraum ein item

    Timer 1 5Minuten
    Timer 2 3 Stunden

    richtig. nenne es einfach ein timer item. diese items kannst du mit einem switch verknüpfen durch so eine synchronisierungsrule wie oben geschrieben. du kannst natürlich mehrere timer mit einem gerät verknüpfen. brauchst dann aber natürlich auch wieder die synchronisierung.

    Nee doch nicht verstanden. Woher weiß das expire für wlches item es gilt??

    durch die synchronisierungsrule funktioniert das. da sieht man doch drin, dass dein sonoff durch den timer geschaltet wird. du sprichst irgendwo anders das timer item an. das timeritem schaltet dann bspw den sonoff.

    beispiel 2 timer

    Code
    Switch sonoff26        "BlaBla"          {channel="mqtt:topic:embedded-mqtt-broker:sonoff26:sonoff26"}
    Switch Timer1_sonoff26  "Timer1 Lampe"     {expire="60s,command=OFF" }
    Switch Timer2_sonoff26  "Timer2 Lampe"     {expire="5m,command=OFF" }

    daher auch 2 benötigte synchronisierungen

    jetzt hast du 2 unterschiedliche timer die deinen sonoff schalten. für deine aktivierungsrule in der du bspw deinen aqara bewegungsmelder nutzt, sendest du dann nur noch zu deinem gewünschten timer ein send command on. durch die synchronisierungsrules schaltet dein sonoff dann nach der gewünschten zeit ab.

    in welche items Datei ich die expire schreibe, ist egal?

    ich nutze für mein gesamtes system (und das ist nicht gerade klein) eine einzige items datei.

  • Das zeigt mir mal wieder, warum ich lieber Timer benutze, als Expire-Items. ;)
    Die Timer-Items machen die Rule zwar kürzer, aber dafür nicht unbedingt übersichtlicher. Im Endeffekt wird mehr Code benötigt, da ja eine eigene Timer-Abgelaufen-Rule benötigt wird.

    Und wenn man anfängt und die "Timer-Items" mehrfach, für unterschiedliche Dinge, benutzen möchte, brauchts in der Expire-Rule ja eine weitere Variable, anhand derer erkannt werden kann, was jetzt nach Ablauf passieren soll.

    Nichts desto trotz werde ich demnächst bei mir zwei/drei Items mal umstellen auf Expire-Items. Dann aber tatsächlich das Item, was über ein Channel verbunden ist.
    Der Trigger für mein Garagentor oder der Türöffner sind so etwas. Die sollen/dürfen nie lange eingeschaltet sein. Sicherheitshalber betreibe ich die jetzt schon mit Gürtel, Hosenträger und Fangnetz. Bedeutet neben OH schaltet die auch die CCU und sogar eine OnTime im Gerät selber wieder aus. Ich habe dabei quasi drei Stufen, die wirken, wenn die davor versagt hat.

  • ich finde expire ist gerade für anfänger extrem gut geeignet. kein timer reshedule o.ä. ist mehr notwendig. hier fehlt nur ein wenig das grundverständniss.
    im grunde braucht man ja nur expire items und eine copy/paste synchronisierungsrule dazu.
    auch bei komplexen rules (ich hab sowas im bad/klo/küche in verbindung mit rules) kann man da schon recht gut alles umsetzen.

  • Ich möchte Dir ja überhaupt nicht groß widersprechen. Es ist wie bei vielem im Leben, mehrere Wege führen nach Rom.
    Und ob es für Anfänger wirklich einfacher zu verstehen ist ... wenn ich das hier so lese ...

    Und Timer sind ja auch keine Raketenwissenschaft. Ich Copy&Paste da meist immer. Mit allen Copy&Paste Fehlern die man so machen kann. [bj]

  • Ich kämpfe schon seit gestern mit dem expire für meinen Dummy schalter, der den Online Status meiner Kodi Box überwacht.
    Das wäre die item

    Switch TVstate
    Switch Timer_TVstate "Timer 30 Minuten" {expire="30m,command=OFF" } // Wetek aus jetzt 30 Minuten zum ins Bett gehen

    Ich habe jetzt zum Testen nur 1 Minute eingestellt

    TEST :Switch Timer_TVstate "Timer 30 Minuten" {expire="1m,command=OFF" } // Wetek aus jetzt 30 Minuten zum ins Bett gehen

    Mit dieser rule schaltet ein Network Device (zum Testen mein Handy "patrick" später die KodiBox "Wetek")

    Code
    rule "tvstate"
    
    
    when Item patrick changed to OFF
    
    
    then
       TVstate.sendCommand(ON)
    end


    Das funktioniert auch.

    Code
    2021-01-09 20:03:17.387 [vent.ItemStateChangedEvent] - patrick changed from ON to OFF
    2021-01-09 20:03:17.390 [ome.event.ItemCommandEvent] - Item 'TVstate' received command ON
    2021-01-09 20:03:17.405 [vent.ItemStateChangedEvent] - TVstate changed from OFF to ON

    Aber ich kriege es nicht hin, das TVstate nach x Minuten wieder auf OFF geht.


    Ich will diesen Dummy benutzen, damit ich nach TV aus 30 Minuten habe, in den ich dann den Bewegungsmelder beide LEDs hell schalten kann.

  • ich muss das Netzwerk Device den Timer_TVstate schalten lassen.

    Ja, oder alternativ beide Items ON schalten:

    Code
    rule "tvstate"
    when Item patrick changed to OFF
    then
       Timer_TVstate.sendCommand(ON)
       TVstate.sendCommand(ON)
    end

    Deine jetzige Rule "tvstate timer" hat den kleinen Nachteil, dass sie TVstate immer ausschaltet, wenn der Zustand auf OFF geht, egal welcher Zustand Timer_TVstate vorher hatte. Also z.B. auch, wenn sich der Zustand von UNDEF nach OFF ändert.

    Man sollte immer überlegen, was in diesen Fällen geschehen soll und entsprechend lieber zwei Rules schreiben (oder, wenn man Persistence eingerichtet hat, den Zustand vorher abfragen).

    Code
    rule "tvstate einschalten"
    when
      Item Timer_TVstate changed from OFF to ON
    then
        TVstate.sendCommand(ON)
    end
    Code
    rule "tvstate ausschalten"
    when
      Item Timer_TVstate changed from ON to OFF
    then
        TVstate.sendCommand(OFF)
    end
  • Ich glaube ich bin dank Eurer Hilfe auf einem ganz guten Weg.

    Aber ich habe schon jetzt festgestellt, daß die eine rule u.U. in die andere reinfunkt.

    Ich will erreichen, daß nachts nur das Orientierungslicht (ein Stripe auf z.B. 5%) angeht.

    Zum "ins Bett gehen" 2 Stripes relativ hell (20%).

    Das habe ich jetzt zumindest für Tests so gelöst, das das Orientierungslicht bei Bewegung und TVState off (also Fernseher "an" besser gesagt nicht in den letzten 30 minuten offline gegangen) angeht.

    Das helle Licht geht an bei Bewegung und "TVstate on (Fernseher aus oder besser wurde ausgeschaltet, weil TVstate ja dann nach 30 Minuten wieder auf off geht) Das haut dann ja auch wieder hin.

    Jetzt überlege ich, ob es möglich ist tagsüber das helle Licht zu Dekozwecken (WAF) anzuschalten. Der LUX Messer des Bewegungsmelder taugt nicht als Trigger, weil ich schon abends bei Kunstlicht im Wohnzimmer unter dem Tisch nur einstellige Werte habe. Was wird das dann erst unterm Bett ......

    Einfach über die Uhrzeit?? Aber wer geht schon jeden Tag um exakt die selbe Zeit ins Bett???

    Oder Astrobinding?

    Ich muss auf jeden Fall verhindern, daß nach dem ins bett gehen die "Deko / Bett-geh" Beleuchtung wieder angeht.

    Ich versuche meine Gedanken mal zu Sortieren.

    Wecken : Beide Stripes hell

    Danach quasi den ganzen Tag beide Stripes bei Bewegung zu Dekozwecken hell

    InsBett gehen : immer noch beide Streifen hell (die Zeit wäre variabel kann / wird über TV state getriggert.

    Nachts (bis wecken - was wäre am Wochenende wenn der Wecker aubleibt?) nur ein Stripe 5%.

    Versteht einer von Euch was ich vorhabe?? Ich tu mich gerade selber schwer.

    Wahrscheinlich ist das nicht machbar.

  • Wahrscheinlich ist das nicht machbar.

    Natürlich ist das machbar!
    So aus dem Stehgreif, und deinen Text nur überflogen, kann ich aber nicht direkt helfen.
    Wenn du Tagsüber das Licht, ohne sonstige Bedingungen an haben möchtest, wäre das Astro Binding sicherlich die einfachste Lösung. Dann leuchtet das Licht aber natürlich tagsüber auch, wenn die Rollladen herunter gelassen werden.
    Wenn das Tageslicht endet, kann ja der Bewegungsmelder ins Spiel kommen und das Licht nach deinen Bedingungen schalten. Je nach Uhrzeit und/oder Bettgehzeit.

  • ich nutze für mein gesamtes system (und das ist nicht gerade klein) eine einzige items datei.

    Aber die rules müssen immer einzeln in eine Datei??
    Oder kann ich den ganzen Wust an rules für die Bettbeleuchtung in eine rule packen?
    Oder könnte ich das so wie oben machen ?

  • Habe es selber gefunden:

    A rule file can contain multiple rules. All rules of a file share a common execution context, i.e. they can access and exchange variables with each other. It therefore makes sense to have different rule files for different use-cases or categories

  • Oder kann ich den ganzen Wust an rules für die Bettbeleuchtung in eine rule packen?

    Kannste machen, würde ich aber nicht unbedingt empfehlen, weil meiner Erfahrung nach kurze Dateien übersichtlicher sind.
    Ich gehe inzwischen eher dazu über, den Inhalt meiner *.rules nicht viel länger zu machen, als auf einen Bildschirm passt. Natürlich nur grob über den Daumen.

  • Ich hole den thread mal wieder vor.
    Ich versuche gerade verzweifelt zu verschiedenen Zeiten die LEDs verschieden hell zu schalten. Aber natürlich klappt das nicht.

    Also von 19 bis 6 Uhr (also über Nacht) Orientierungs Licht an
    Tagsüber helle Deko Beleuchtung.

  • Logikfehler drin. Größer als 19 und kleiner als 6 ist nicht möglich. Bspw 21 Uhr ist ja nicht <6.
    Du musst mit "oder" in diesem Teil der Rule arbeiten.
    Also

    Code
    (now.getHourOfDay() >= 19 || now.getHourOfDay() <=6)

    die beiden senkrechten Striche zwischen den Zeiten heißen "oder".
    Außerdem hast du eine Überschneidung der Zeiten zwischen den beiden Optionen da du mit = dort arbeitest. In Stunde 6 und Stunde 19 kollidieren die beiden Parts der Rule miteinander.
    Entweder du änderst das = ab oder die Zeiten...bspw

    > 18 || < 6 für Nachtlicht
    < 19 && > 5 für Taglicht

  • Es war mir klar, daß es an so etwas liegen muß.
    Ich habe im Bezug auf && und || schon wild rum gegoogled. Ich habe beides gesehen, aber nirgends explizit erklärt gesehen was das heißt.

    Das wird heute abend gleich ausprobiert.

    Es war so lange still weil wir so lange auf das Bett gewartet haben.
    Jetzt habe ich die LEDs installiert und weil es mit OH nicht gleich klappte erst einmal mit Alexa Rules gearbeitet.
    Da man mit den Alexa rules aber nicht ganz so viel abdecken kann, wieder zurück zu OH nativ.

    Ich habe gesehen, daß es auch möglich ist, Wochentage einzubauen.
    Damit man am Wochenende die Nacht automatisch verlängern kann.
    Mit meinem Squeezebox Wecker hatte ich das Problem nicht, da konnte ich den Wecker triggern lassen.
    Weil das Ding aber eine häßliche Bastellösung war ist mittlerweile ein EchoShow5 auf den Nachtschrank gezogen.
    Ich habe noch nichts gesehen, daß man die Wecker des Echos irgendwie in OH triggern lassen könnte - oder?

    Wie mache ich das dann am geschicktesten? irgendwie gleich mit in die getHourOfDay Abfrage mit && getDayOfWeek?

    Code
    (now.getHourOfDay() > 18 || now.getHourOfDay() =6  && getDayOfWeek <=5)
    
    
    Wenn die Werktage denn 1 bis 5 sind?

    Ich würde die "Deko" Beleuchtung gerne auch in der "Nacht" anschalten. Dafür habe ich über ein Netzwerk Item das Ausschalten meiner Mi Box als Expire Item angelegt.
    Soll heißen Kodi aus -> 30 Minuten Timer an -> in den 30 Minuten darf das Licht auch in der Nacht hell werden.
    Wie mache ich zwei "gleichberechtigte" if-Abfragen?


    Code
    when 
        Item Motion_Sensor1_Occupancy changed from 0 to 1 
    then
    if
        (now.getHourOfDay() >= 6 && now.getHourOfDay() <=20) OR
        Item TV_state == ON  // TV wurde innerhalb der letzten 30 Minuten ausgeschaltet.
        Timer_abinsbett.sendCommand(ON)
    end

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!