Ankündigung

Einklappen
Keine Ankündigung bisher.

Tageszeitabhängige Szenen. Wie macht ihr's?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Tageszeitabhängige Szenen. Wie macht ihr's?

    Hallo,

    ich überlege gerade, wie ich meinen Komfort morgens steigere. Ein Gedanke ist automatisch das Squeezebox-Radio zu starten, wenn ich in der Küche das Licht einschalte (später eben, wenn der BM das Licht einschaltet).

    Das ganze soll aber nur morgens passieren. Wenn ich abends das Licht anschalte, soll das Radio nicht unbedingt an gehen.

    Außerdem frage ich mich, wie ich die Logik übersteuern kann.
    Wenn ich z.B. dann das Radio leise drehe (oder aus schalte), könnte ich die Musik-Automatik für die nächste Stunde deaktivieren (ich stelle mir es nervig vor, wenn man das Radio dann immer wieder ausschalten muss, wenn das Licht wieder angeht). Wie macht ihr das, einerseits hinsichtlich des Ablaufes, andererseits aber auch die Ausführung in sh.py?

    Gruß,
    Hendrik

    #2
    Hm, grade heraus:

    Logic, watch_item = <automatikschalter-licht>

    if trigger['source'].endswith('lichtschalter') and trigger['value'] and (im zeitfenster) and sh.squeezebox.power.age() > "irgend-ne-zeit, die verhindert dass ich das radio gerade erst ausgeschaltet habe":
    sh.squeezebox.power(1)
    sh.squeezebox.power.timer(120, 0) # nach 2h wieder aus wenn nix passiert


    wahlweise garnieren mit verlassen des Hauses etc um vorzeitig aus zu schalten.

    Grüße
    Robert

    Kommentar


      #3
      Hallo,

      danke für die Idee.

      Ich hab's etwas angepasst:
      Code:
      [Kuechenradio]
          filename=kuechenradio.py
          watch_item=eg.kueche.licht
          crontab=00 07 * * =1 |00 09 * * =0
      Über crontab soll die Logik (mit dem Hilfs-Item sh.
      Szenen.kuechenautomatik) an und aus geschaltet werden. So habe ich alle Zeiteinstllungen in einer Datei.

      Code:
      if trigger['source'].endswith('licht') and trigger['value'] and sh.Szenen.kuechenautomatik and sh.Squeezebox.Power.age()
       > 1*60*60 #"irgend-ne-zeit, die verhindert dass ich das radio gerade erst ausgeschaltet habe"
          sh.Squeezebox.Power(1)
          sh.Squeezebox.Play(1)
          sh.Squeezebox.Power.timer(120, 0) # nach 2h wieder aus wenn nix passiert
      else
          sh.Szenen.kuechenautomatik=trigger['value']
      So müsste es funktionieren, oder?
      Edit:
      Nein, das else funktioniert so erstmal noch nicht. Beim else muss ich noch checken, ob der Trigger der crontab war. Wie geht das?
      Da fehlt mir etwas Doku:
      trigger is a runtime enviroment for the logic, which provides some information about the event that triggered the logic.

      It is a dictonary which can be used by: trigger['by'], trigger['source'], trigger['dest'] and trigger['value'].
      Der Unterschied zwischen by und source ist mir nicht klar (und was dest ist erst recht nicht).
      Und: Welche Werte können source / by annehmen?



      Gruß,
      Hendrik

      Kommentar


        #4
        Ne, das else wird ja jetzt auch von allen anderen Fällen erreicht. Das musste noch weiter aufdröseln.

        Kommentar


          #5
          Ich glaub, da haben wir uns überschnitten, sorry, ich hatte meinen Post editiert.

          Gruß,
          Hendrik

          Kommentar

          Lädt...
          X