Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisproblem: Szene oder Logik?

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

    Verständnisproblem: Szene oder Logik?

    Hallo zusammen,

    ich habe ein Verständnisproblem. Wenn ich bei meiner Automatisierung über die SmartVisu mit einem Knopfdruck alle Rollos herunterfahren lassen will und zugleich alle Lichter ausmachen möchte, ist das eine Szene oder eine Logik?
    Im knx-Bus selbst sind keine Szenen hinterlegt, lediglich die Gruppenadressen der Aktoren.

    Vielen Dank fürs Aufschlauen!

    BG
    Michael

    #2
    Hi Michael,

    also wenn Du mich fragst, würde ich das Ganze ohne shNG lösen: Dein Taster schaltet eine GA, die mit allen Rollos verbunden ist, auf 1, dann fahren die alle runter. Dann invertierst Du diese GA, bekommst dann eine 0 auf einer weiteren GA, die Du mit allen Lichtern verbindest.

    Das wars...

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hallo Waldemar,

      danke für den Hinweis! Ich würde jedoch gerne ein wenig mehr Flexibilität in der Gestaltung der Szenen haben, denn nichts ist so beständig wie der Wandel. Wahrscheinlich will dann irgendjemand, dass der eine Rollo nicht zu geht, der andere nur halb, dann wieder anders... Ich glaube, dass ich über die Programmierung in SmartHomeNG und der Visualisierung über SmartVISU mir viel Aufwand im knx-Bus spare.

      Meine Frage zielte darauf ab, ob es sich dabei um eine Szene oder eine Logik im Bereich der shNG handelt. Ich habe nämlich versucht nach Anleitung eine Szene umzusetzten, erhalte aber in der Visu nur einen leeren Bildschirm.

      Dazu habe ich eine yaml als Item geschrieben:
      Code:
      config:
          szenen:
              name: Szenen
              sv_page: category
              haus:
                  name: SzenenHaus
                  type: scene
      Und eine yaml im Bereich "Szenen Konfiguration" mit der Bezeichnung "config.szenen.haus.yaml". Zum Testen enthält die nur ein Licht:
      Code:
      0:
          name: Aus
          actions:
           - {item: EG.Kueche.Licht.Wallwasher.schalten, value: 0}
      In der Visu sehe ich unter Kategorien die Kachel Szenen. Bei draufklicken ist die Seite aber leer. Die Frage die ich mir daher stelle ist, ob eine Szene überhaupt der richtige Ansatz ist.

      Danke für eure Rückmeldungen!

      BG
      Michael

      Kommentar


        #4
        Das Du in der Visu nichts siehst, ist klar. Du hast nur eine Seite namens "Szenen" in der "Category"-Navigation angelegt. Du hast aber nichts definiert, was auf dieser Seite dargestellt werden soll. Du musst schon mit sv_widget festlegen, was Du darstellen möchtest.

        Die Szene ist aus Sicht der Visu ein Item, welches einen numerischen Wert enthält. In der Visu ist es nur sinnvoll Szenen anzusteuern Sie eignet sich (wie Szenen generell) nicht zur Status Anzeige, weil Szenen keine Info enthalten, ob alle zugehörigen Aktoren/Items noch den Status der Szene haben.

        Ich habe z.B. Szenen folgendermaßen genutzt:


        Code:
        wohnung:
            buero:
                sv_page: room
                name: Büro
                sv_img: scene_office.svg
        
                visu:
                    szenen_beleuchtung:
                        name: Szenen Beleuchtung
        
                        sv_widget: 'Szenen abrufen:
                            <span data-role="controlgroup" data-type="horizontal">
                            {{ basic.button(''szenen_buero0'', ''wohnung.buero.szenen_knx'', ''Aus'', icon0~"control_standby.svg", ''0'', ''midi'') }}
                            {{ basic.button(''szenen_buero1'', ''wohnung.buero.szenen_knx'', ''Ambiente'', icon0~"light_light_dim_00.svg", ''1'', ''midi'') }}
                            {{ basic.button(''szenen_buero2'', ''wohnung.buero.szenen_knx'', ''Hell'', icon0~"light_ceiling_light.svg", ''2'', ''midi'') }}
                            {{ basic.button(''szenen_buero3'', ''wohnung.buero.szenen_knx'', ''Putzen'', icon0~"scene_cleaning.svg", ''3'', ''midi'') }}
                            {{ basic.button(''szenen_buero6'', ''wohnung.buero.szenen_knx'', ''Party'', icon0~"light_party.svg", ''4'', ''midi'') }}
                            </span><br>
                            <div style="line-height:30%;">
                                &nbsp;<br>
                            </div>
                            <div>Szenen speichern:<br>
                            <span data-role="controlgroup" data-type="horizontal">
                            {{ basic.button(''szenen_bueroS0'', ''wohnung.buero.szenen_knx'', ''Aus'', icon0~''control_standby.svg'', ''128'', ''midi'', ''#4176a9'') }}
                            {{ basic.button(''szenen_bueroS1'', ''wohnung.buero.szenen_knx'', ''Ambiente'', icon0~"light_light_dim_00.svg", ''129'', ''midi'', ''#4176a9'') }}
                            {{ basic.button(''szenen_bueroS2'', ''wohnung.buero.szenen_knx'', ''Hell'', icon0~''light_ceiling_light.svg'', ''130'', ''midi'', ''#4176a9'') }}
                            {{ basic.button(''szenen_bueroS3'', ''wohnung.buero.szenen_knx'', ''Putzen'', icon0~''scene_cleaning.svg'', ''131'', ''midi'', ''#4176a9'') }}
                            {{ basic.button(''szenen_bueroS6'', ''wohnung.buero.szenen_knx'', ''Party'', icon0~''light_party.svg'', ''132'', ''midi'', ''#4176a9'') }}
                            </span></div>'
        Das erzeugt:
        • eine Seite "Büro" in der normalen Raum-Navigation.
        • auf dieser Seite einen Block mit dem Namen 'Szenen Beleuchtung'
        • in diesem Block erzeuge ich zwei Button Reihen zur Szenen Steuerung: Der obere Block zum Abruf der Szenen, der untere Block zum Speichern von Szenen
        Das sieht dann so aus:
        Capto_Capture 2020-05-24_01-10-57_PM.jpg

        Die Szene selbst ist als Item folgendermaßen definiert:

        Code:
        wohnung:
            buero:
                szenen_knx:
                    comment: 0=aus, 1=Ambiente, 2=normal, 3=Putzen
                    name: Beleuchtungsszenen Büro
                    type: scene
                    enforce_updates: 'on'
                    knx_dpt: 5
                    knx_send: 1/0/16
                    knx_init: 1/0/16
        Falls nur KNX Devices angesteuert werden sollen, kannman szenen_knx als num definieren. Wenn Du auch Items ansteuern möchtest, musst Du nur den type auf scene setzen, damit die Definitionen aus dem ../scenes Verzeichnis ausgewertet werden. Außerdem musst Du eine entsprechende Szenen Definition im Verzeichnis ../scenes anlegen. Für das Obige Beispiel müsste die Datei wohnung.buero.szenen_knx.yaml heiße:

        Code:
        0:
            name: Aus
            # Leuchte Dreieckschrank ausschalten, falls die Schreibtischleuchte nicht eingeschaltet ist, sonst level 126 setzen
            actions:
                - {item: wohnung.buero.dreieckschrank.level, value: 0 if (sh.wohnung.buero.schreibtischleuchte.status() < 2) else 126}
                - {item: wohnung.buero.dreieckschrank.ct, value: 345, learn: false}
                - {item: wohnung.buero.dreieckschrank.onoff, value: False if (sh.wohnung.buero.schreibtischleuchte.status() < 2) else True}
        
        1:
            name: Ambiente
            actions:
                - {item: wohnung.buero.dreieckschrank.level, value: sh...dreieckschrank.ambiente_level()+3, learn: false}
                - {item: wohnung.buero.dreieckschrank.ct, value: 345, learn: true}
                - {item: wohnung.buero.dreieckschrank.onoff, value: True, learn: true}
        
        2:
            name: Hell
            actions:
                - {item: wohnung.buero.dreieckschrank.level, value: 126, learn: true}
                - {item: wohnung.buero.dreieckschrank.ct, value: 345, learn: true}
        
        3:
            name: Putzen
            actions:
                - {item: wohnung.buero.dreieckschrank.onoff, value: True, learn: false}
                - {item: wohnung.buero.dreieckschrank.level, value: 255, learn: false, delay: 5}
                - {item: wohnung.buero.dreieckschrank.ct, value: 345, learn: false}
        
        4:
            name: Party
            actions:
                - {item: wohnung.buero.dreieckschrank.level, value: 200, learn: false}
                - {item: wohnung.buero.dreieckschrank.hue, value: 59635, learn: false}
                - {item: wohnung.buero.dreieckschrank.sat, value: 230, learn: false}
                - {item: wohnung.buero.dreieckschrank.onoff, value: True, learn: false}
        Hier ist nur die Leuchte dreieckschrank definiert, da diese kein KNX Device ist, sondern eine Hue Leuchte, die über das hue Plugin angesteuert wird.
        Zuletzt geändert von Msinn; 25.05.2020, 14:22.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Hallo Msinn,

          vielen Dank für die ausführliche und zieführende Beschreibung! Hat super geklappt! Dass ich in den Items neben dem Visu-Code noch die Szene selbst definieren muss (dein zweiter Code-Block), darauf wäre ich nicht gekommen.

          Ich habe bei meiner Realisierung auch die knx-Items über die Szenen.yaml angesprochen, funktioniert auch super.

          ZWEI abschließende FRAGEN hätte ich noch:
          1) Ich habe versucht alle Lichter auszumachen und dafür * als Wildcard genutzt "EG.*.Licht.*.schalten". Das wollte aber nicht klappen. In der Anleitung stand, dass es für Logiken geht, für Szenen nicht?
          2) Wie funktioniert dein "Szenen speichern"? Beschreibst du direkt die Gruppenadresse des knx-Bus mit der aktuellen Situation? Wie kannst du hier spezifische Aktoren auswählen?

          BG
          Michael

          Kommentar


            #6
            Zitat von MSz Beitrag anzeigen
            1) Ich habe versucht alle Lichter auszumachen und dafür * als Wildcard genutzt "EG.*.Licht.*.schalten". Das wollte aber nicht klappen. In der Anleitung stand, dass es für Logiken geht, für Szenen nicht?
            Stimmt, für Szenen funktioniert das nicht. Szenen sind nach dem Vorbild von KNX Szenen implementiert und nur um einiger Features erweitert worden.

            Zitat von MSz Beitrag anzeigen
            2) Wie funktioniert dein "Szenen speichern"? Beschreibst du direkt die Gruppenadresse des knx-Bus mit der aktuellen Situation? Wie kannst du hier spezifische Aktoren auswählen?
            Das funktioniert wie bei KNX Szenen: Aufruf über Szene setzen (Szenennummer+128). Damit merken sich die mit der Szene verbundenen KNX Aktoren, welchen Wert sie bei Aufruf der Szene einnehmen sollen (falls das in der Konfiguration des Aktors erlaubt wurde). Für die Items erfolgt dass analog (falls das Item in der Szene mit learn: True definiert ist). Zum tiefergehenden Verständnis empfehle ich Dir die entsprechende Dokumentation der KNX Association.

            Der Ablauf beim speichern einer Szene sieht folgendermaßen aus: Du stellst manuell mit der Szene verbundenen KNX-Aktoren bzw. SmartHomeNG-Items auf den Zustand ein, den sie in der entsprechenden Szene einnehmen sollen und löst anschließend "Szene speichern" aus, indem Du das Szenen-Item auf den Wert Szenennummer+128 setzt.
            Zuletzt geändert von Msinn; 25.05.2020, 10:28.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Msinn Danke für die Erläuterung und die geduldige Beantwortung der Fragen. Da steh ich offensichtlich noch am Anfang einer langen Lernreise... ;-)
              Ich werde mich gerne in die Doku einlesen.

              Kommentar


                #8
                Ich habe die Fragen mal zum Anlass genommen und auf Basis dieses Threads einen Blog Artikel zur Szenen Nutzung in SmartHomeNG verfasst: https://www.smarthomeng.de/nutzung-v...in-smarthomeng. Der Artikel geht auch noch etwas mehr auf die Funktionsweise von KNX-Szenen ein. Vieleicht hilft Dir das im Verständnis schon weiter.
                Viele Grüße
                Martin

                There is no cloud. It's only someone else's computer.

                Kommentar


                  #9
                  Ich finde die Szenen-Funktion super, auch wenn ich die jetzt erst beginne zu verwenden. Sie macht aus meiner Sicht mehr Sinn, als rein in KNX, weil Logiken in KNX weniger komplex sein können. Das freut mich und es ist zudem noch schön, da es sehr übersichtlich ist.

                  Ich hätte auch gleich mal einen Vorschlag.

                  Code:
                  0:
                      name: Aus
                      actions:
                          - item: EG.Wohnen.Rollladen.move
                            value: False if not sh.Zentral.Wetter.Wetterstation.Daemmerung_Rolllaeden() else None
                  
                  1:
                      name: Fernseher an
                      actions:
                          - item: EG.Wohnen.Rollladen.move
                            value: True if sh.EG.Wohnen.Wetter.Helligkeit() > 800 else None​
                  Das ist eine Szene, die die gesetzt wird, wenn der TV angeschaltet wird. Wenn es hell ist blendet das Außenlicht und die Rollläden sollen dann runtergefahren werden. Was aber ein kleiner Wermutstropfen ist - die Helligkeit ist mir noch nicht ganz klar, deshalb wäre ein "learn" hier sinnvoll. Deshalb die Idee:

                  Könnte man da nicht eine Bedingungen setzen und der Wert dann einlernen, den man vergleicht. z.B. so:

                  Code:
                  1:
                      name: Fernseher an
                      actions:
                          - item: EG.Wohnen.Rollladen.move
                            value: True if sh.EG.Wohnen.Wetter.Helligkeit() > learnvalue else None
                            learn: yes
                            learn_value: 800

                  Kommentar


                    #10
                    Das würde die Kompatibilität zu den KNX Szenen brechen. Der Witz an dem Learn Mode ist, dass ich in einer "gemischten Szene", die in KNX und in SmartHomeNG eingerichtet, ein "Speichern" der Szene (also Szenennummer >63) die aktuellen Werte der KNX Aktoren für die Szene speichert (in den Aktoren) und analog die für Items der Szene die aktuellen Werte in SmartHomeNG speichert.

                    Damit kann ich die aktuell eingestellten Werte aller Aktoren (ob KNX oder andere über SmartHomeNG) mit "Szenen speichern" eines KNX Aktors oder z.B. mit einem Button der smartVISU für die Szene speichern.
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      #11
                      hi,
                      Ich würde das über eine Szene Realisieren.
                      Da du für die 2 Gewerke( Licht und Rollo) verschieden werte der GA brauchst also das eine eine 1 und das ander eine 0 ist es wirklich am einfachsten dies über eine Szene zu realisieren.
                      Der Taster sendet die Szene ja auch nur einmal. somit ist danach wieder für jeden anderen Benutzer ( Schalter) alle anderen Funktionen möglich.
                      Logik bedeutet im Prinzip was?: Du erstellst durch die logik eigentlich nur das mit einem Eingangswert 2 verschiedene Ausgangswerte entstehen.
                      Es wird warscheinlich leichter über Logik sein weil du mit der Zentral funktion der Aktoren arbeiten kannst.
                      Ich finde mit Szene ist es genau für solche Zentralbefehle besser da du ja auch sagen könntest der und der Rollo soll vllt nur auf 75% fahren oder das licht Soll nicht mit aus gehn und und da du jedem Aktor kanal sagen kannst welche genau Tätigkeit er beim Eingang der Szene machen soll.
                      Ich habe mittlerweile viele Szenen verarbeitet für verschiedenste Gruppenaktionen in verschiedensten Bereichen im Haus.
                      Z.B Im Wohnen/Essen/Küche ( ein großer Raum) habe ich an den Glastastern2 von MDT Patchfunktion kurz szene alle Hauptlichter AUS, Alle Indirekten Lichter EIN und alle Rolläden runter.
                      Patch Funktion lang Alle Haupt und Indirekten Lichter Aus und Rolläden hoch. Haupt und indirekten Lichter natürlich nur für die Räume Wohnen/Essen/Küche .

                      Wenn du eine Logik dafür machen möchtest geht das auch eher nur über ein externes Logikmodul und nicht mit den integrierten Logiken der Bautteile .
                      Mit Szene geht es ohne Zusatzbauteil.


                      Gruß0 Timo

                      Kommentar

                      Lädt...
                      X