Ankündigung

Einklappen
Keine Ankündigung bisher.

Vorstellung einer einfachen Szenensteuerung für SmartHome.py/smartVISU

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

    Vorstellung einer einfachen Szenensteuerung für SmartHome.py/smartVISU

    Hallo Forum,

    ich habe eine einfache Logik für Szenensteurung, die ich mit euch teilen möchte: In smartVISU können ein bis maximal zehn Szenentasten platziert werden, die nach Betätigung eine Sekunde lang mit alternativer Hintergrundfarbe dargestellt werden, wie z.B wie folgt (Abbildung beigefügt):

    Code:
    <span data-role="controlgroup" data-type="horizontal">
        {{ basic.dual('szene_schlafen_s1', 'og.schlafen.szenen.s1', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
        {{ basic.dual('szene_schlafen_s2', 'og.schlafen.szenen.s2', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
          {{ basic.dual('szene_schlafen_s3', 'og.schlafen.szenen.s3', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
        {{ basic.dual('szene_schlafen_s0', 'og.schlafen.szenen.s0', icon1~'audio_rec.png', icon0~'audio_rec.png', 1, 0, 'midi') }}
    </span>
    Die Funktion szenen.py ist wie folgt:

    Code:
    #!/usr/bin/env python                                                                                                                    
    
    szenen_item = sh.match_items(str(logic.watch_item[0])[:-2])[0]
    
    if trigger['value'] == True:
        szenen_item(int(trigger['source'][-1:]))
        for item in sh.match_items(str(logic.watch_item[0])):
            if str(item) != trigger['source']:
                item('Off')
            else:
                item.timer(1, 'Off')
    die Items müssen dem Muster *.sN folgen, wobei N eine Ziffer 0-9 darstellt, wie z.B.:

    Code:
    [og]
            [[bad]]
                    [[[szenen]]]
                    type = scene
                    enforce_updates = true
                         [[[[s0]]]]
                         type = bool
                         [[[[s1]]]]
                         type = bool
                         [[[[s2]]]]
                         type = bool
                         [[[[s3]]]]
                         type = bool
            [[schlafen]]
                    [[[szenen]]]
                    type = scene
                    enforce_updates = true
                         [[[[s0]]]]
                         type = bool
                         [[[[s1]]]]
                         type = bool
                         [[[[s2]]]]
                         type = bool
                         [[[[s3]]]]
                         type = bool
    und werden in logic.conf eingebunden:

    Code:
    [og_bad_szenen]
        filename = szenen.py
        watch_item = og.bad.szenen.*
    
    [og_schlafen_szenen]
        filename = szenen.py
        watch_item = og.schlafen.szenen.*
    die auszuführenden Befehlen können dann in den beiden folgenden Dateien geschrieben werden:

    Code:
    /usr/smarthome/scenes/og.bad.szenen.conf
    /usr/smarthome/scenes/og.schlafen.szenen.conf
    enforce_updates wird nur gebraucht, wenn die Szene 0 verwendet wird. Ein Kritikpunkt könnte sein, dass die Funktion nicht sehr robust implementiert ist, wodurch das Muster sehr genau wie gezeigt eingehalten werden muss. Sollte sich jemand damit beschäftigen und es eleganter implementieren, freue ich mich natürlich über eine Rückmeldung.

    Viele Grüße,

    Jan
    Angehängte Dateien

    #2
    Hi Jan,

    danke dafür. Es wäre schön wenn Du das ins Wiki auf github stelle könntest.
    Hier geht es sonst leicht unter.

    Bis bald

    Marcus

    Kommentar


      #3
      Hallo Marcus,

      es freut mich, dass Du es für lohnenswert findest es da einzutragen. Ich habe es erledigt.

      Viele Grüße,

      Jan

      Kommentar

      Lädt...
      X