Ankündigung

Einklappen
Keine Ankündigung bisher.

Szenen in SmarthomeNG über KNX Gruppenadresse aufrufen

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

    Szenen in SmarthomeNG über KNX Gruppenadresse aufrufen

    Mahlzeit

    Ich habe in SHNG folgende Szenen definiert:

    Code:
    # Wohnzimmer.Szenen.yaml
    0:
        name: Aus
        actions:
         - {item: Shelly.Stehleuchte_Couch.Command, value: False}
         - {item: Shelly.Highboard.Command, value: False}
         - {item: Shelly.Lowboard.Command, value: False}
         - {item: Shelly.TV_links.Command, value: False}
         - {item: Shelly.TV_rechts.Command, value: False}
    
    1:
        name: Ambiente
        actions:
         - {item: Shelly.Stehleuchte_Couch.Command, value: True}
         - {item: Shelly.Highboard.Command, value: True}
         - {item: Shelly.Lowboard.Command, value: True}
         - {item: Shelly.TV_links.Command, value: True}
         - {item: Shelly.TV_rechts.Command, value: True}
    Das zugehörige Item für die Szene ist

    Code:
    Wohnzimmer:
        Szenen:
            type: scene
    Die Geräte, die ich damit schalte, sind allesamt Shelly Steckdosen, die über mqtt angesteuert werden. Zum Beispiel

    Code:
    Shelly:
        Stehleuchte_Couch:
            Online:
                type: bool
                mqtt_topic_in: shellyplusplugs-80646fe3a29c/online
            Status:
                type: dict
                mqtt_topic_in: shellyplusplugs-80646fe3a29c/status/switch:0
                on_change:
                - Shelly.Stehleuchte_Couch.Status.Voltage = value['voltage']
                - Shelly.Stehleuchte_Couch.Status.Power = value['apower']
                - Shelly.Stehleuchte_Couch.Status.Current = value['current']
                - Shelly.Stehleuchte_Couch.Status.Output = value['output']
                Voltage:
                    type: num
                Power:
                    type: num
                Current:
                    type: num
                Output:
                    type: bool
            Events:
                type: dict
                mqtt_topic_in: shellyplusplugs-80646fe3a29c/events/rpc
            Command:
                type: bool
                mqtt_topic_out: shellyplusplugs-80646fe3a29c/command/switch:0
                mqtt_bool_values: ['off','on']
                knx_dpt: 1
                knx_send: 2/1/32
                knx_cache: 2/1/31
    In der SmartVISU sieht es dann so aus

    Code:
    {{ basic.select('', 'Wohnzimmer.Szenen', 'mini', [0,1], '', ['Aus','Ein'], 'icon0', '') }} Alle Ambienteleuchten
    Das funktioniert mit der Ansteuerung der Szenen über die Visu tadellos.

    Jetzt möchte ich die Ansteuerung aber auch von einem KNX Taster aus triggern und stehe da etwas auf dem Schlauch.
    Ich brauche eine KNX Gruppenadresse. Jetzt gibt es für das KNX Plugin die DPTs 17, 17001 bzw. 17.001 und 18001 bzw. 18.001.
    Der 17er kann Werte von 0 bis 63. Und nur der. Alle anderen 17xxx und 18xxx aber nur 1 bis 64.

    Mein Taster (ein MeTa² Premium) bietet die Wippenfunktion "Szenenebenstelle" und kann auch nur 1 bis 64 für die Szenennummern und laut ETS ist das ein 18.001.

    Also muss ich meine Szenen umdefinieren. Anstatt 0 und 1 also z.B. 1 und 2. Gilt auch für das Visu-Widget. Richtig?

    Dann brauche ich eine Gruppenadresse. Wie und wo muss das in SHNG definiert sein?

    Code:
    Wohnzimmer:
        Szenen:
            type: scene
            knx_dpt: 18001
            knx_cache: <Gruppenadresse, die mit der Szenen-Wippe des Tasters verbunden ist>


    Stimmt das so oder mache ich da grundsätzlich was falsch?

    Ich habe die Doku durchforstet und auch einige ältere Threads hier gefunden, aber wie man SHNG-interne Szenen über den KNX Bus ansteuert, habe ich nicht gefunden (oder übersehen).

    Danke

    Martin

    #2
    Laut KNX Definitinition haben Szenen immer einen Wert zwischen 1 und 64. Auf der KNX Seite kann man daher in der ETS für Szenen immer nur 1 bis 64 einstellen. Übertragen werden auf dem grünen Draht allerdings Werte zwischen 0 und 63.

    Meine Installation ist schon älter. Damals gab es die DPTs 17 und 18 noch nicht. Ich habe daher die Szenen Items in SmartHomeNG (wie früher üblich) mit knx_dpt: 5 konfiguriert. Das führt dann zu dem Versatz der Szenen Nummern um 1. Wenn ich also von SmartHomeNG aus Szene 3 ansteuern will, muss ich das Item auf den Wert 2 setzen. Genauso beim empfangen. Wenn auf KNX Seite die Szene 3 Angesteuert wird, wird das SmartHomeNG Item auf den Wert 2 gesetzt.

    Eine Szenen Definition sieht bei mir z.B. so aus:
    Code:
            szenen_knx:
                description: "KNX-Szenen für die Küchenbeleuchtung: \n0=aus, 1=normal, 2=Putzen, 3=DL Ambiente"
                name: Beleuchtungsszenen Küche
                type: num
                enforce_updates: True
                knx_dpt: 5
                knx_send: 1/0/10
                knx_cache: 1/0/10
    Die Szenen sind in den KNX Devices natürlich als 1 bis 4 definiert. Die Szenen können sowohl über KNX, als auch über SmartHomeNG angesteuert werden. Sie können anzusteuernde Leuchten sowhl auf KNX Seite, als auch auf SmartHomeNG Seite haben.

    Ich habe eben in das KNX Plugin geschaut. Ich glaube, DPT 17 ist dort falsch implementiert. DPT 17 müsste analog zu DPT 5 implementiert sein, enthält jedoch die selbe Implementierung wie DPT 18 (auf den von KNX empfangen Wert (0-63) wird 1 addiert (ergibt im Item 1-64).

    Viele Grüße
    Martin

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

    Kommentar


      #3
      Hast du somit den type: scene gar nicht erst verwendet?
      Das mit dem Versatz habe ich jetzt verstanden. Wie Szenen rein auf KNX Ebene funktionieren auch. Das Problem ist, dass ich keine KNX Aktoren (mit Szenen Feature) ansteuere, sondern Shelly Devices per MQTT. Daher die Frage, ob das Szenen Item in SHNG dann so

      Code:
      Wohnzimmer:
          Szenen:
              type: scene
              knx_dpt: 18001
              knx_cache: <Gruppenadresse, die mit der Szenen-Wippe des Tasters verbunden ist>


      ​aussehen muss (kann).
      Zuletzt geändert von Sipple; 26.08.2024, 12:39.

      Kommentar


        #4
        Wie gesagt, habe ich DPT 18 bisher nicht verwendet. Der SmartHomeNG Type scene ist auch neuer als meine Installation.

        Ich würde das Item analog zu meinem obigen Post konfigurieren. Nur knx_send brauchst Du nicht zu konfigurieren, wenn Du keine KNX Aktoren steuerst.

        Code:
        Wohnzimmer:
            Szenen:
                    type: num
                    enforce_updates: True
                    knx_dpt: 18
                    knx_cache: <Gruppenadresse, die mit der Szenen-Wippe des Tasters verbunden ist>
        Dann müsstest Du allerdings in Deiner SmartHomeNG Szenen Konfiguration die Szenen Nummern anpassen. Oder Du nimmst knx_dpt: 5 , dann kann die Datei so bleiben.

        Der einzige Unterschied zweischen type: num und type: scene ist, dass type: scene den Eintrag enforce_updates: True überflüssig macht.

        Ideal wäre
        Code:
        Wohnzimmer:
            Szenen:
                    type: scene
                    knx_dpt: 17
                    knx_cache: <Gruppenadresse, die mit der Szenen-Wippe des Tasters verbunden ist>

        aber durch die fehlerhafte Implementierung im knx Plugin funktioniert dpt 17 nicht analog zu dpt 5,
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Ok, danke, werde das mal versuchen.

          Kommentar


            #6
            So, läuft.

            Ich fasse das hier mal zusammen, auch für mich selbst. Vielleicht kann's ja jemand zumindest in Teilen brauchen.

            Ich habe im Wohnzimmer 5 Shelly PlusPlugS Geräte an denen diverse Ambienteleuchten hängen.
            Da Shellys eben keine KNX Aktoren sind, kennen sie natürlich auch keine KNX Szenen und keine klassische Rückmeldung.
            Angesteuert wird jede Shelly über SHNG mit MQTT. Beispiel für eine Shelly PlusPlugS in SHNG:

            Code:
            Shelly:
                Stehleuchte_Couch:
                    Online:
                        type: bool
                        mqtt_topic_in: shellyplusplugs-80646fe3a29c/online
                    Status:
                        type: dict
                        mqtt_topic_in: shellyplusplugs-80646fe3a29c/status/switch:0
                        on_change:
                        - Shelly.Stehleuchte_Couch.Status.Voltage = value['voltage']
                        - Shelly.Stehleuchte_Couch.Status.Power = value['apower']
                        - Shelly.Stehleuchte_Couch.Status.Current = value['current']
                        - Shelly.Stehleuchte_Couch.Status.Output = value['output']
                        Voltage:
                            type: num
                        Power:
                            type: num
                        Current:
                            type: num
                        Output:
                            type: bool
                    Events:
                        type: dict
                        mqtt_topic_in: shellyplusplugs-80646fe3a29c/events/rpc
                    Command:
                        type: bool
                        mqtt_topic_out: shellyplusplugs-80646fe3a29c/command/switch:0
                        mqtt_bool_values: ['off','on']
                        knx_dpt: 1
                        knx_status: 2/1/32
                        knx_cache: 2/1/31
            Geschaltet wird über das Item Shelly.Stehleuchte_Couch.Command, auch über KNX. Wichtig hier ist knx_status, damit bei Empfang eines Schaltbefehls über KNX auch eine saubere Rückmeldung kommt. Mein KNX Taster (Enertex MeTa²) braucht die in der Konfiguration zwingend.
            Alle anderen Shellys sind identisch konfiguriert.

            Um jetzt alle 5 Ambiente-Leuchten gleichzeitig schalten zu können habe ich eine Szene in SHNG eingerichtet (ja, es gäbe auch andere Möglichkeiten):

            Code:
            # Wohnzimmer.Szenen.yaml
            1:
                name: Aus
                actions:
                 - {item: Shelly.Stehleuchte_Couch.Command, value: False}
                 - {item: Shelly.Highboard.Command, value: False}
                 - {item: Shelly.Lowboard.Command, value: False}
                 - {item: Shelly.TV_links.Command, value: False}
                 - {item: Shelly.TV_rechts.Command, value: False}
            
            2:
                name: Ambiente
                actions:
                 - {item: Shelly.Stehleuchte_Couch.Command, value: True}
                 - {item: Shelly.Highboard.Command, value: True}
                 - {item: Shelly.Lowboard.Command, value: True}
                 - {item: Shelly.TV_links.Command, value: True}
                 - {item: Shelly.TV_rechts.Command, value: True}
            Zuerst hatte ich da eine Szene '0' für alles ausschalten und eine '1' für alles einschalten. Nur über die SmartVISU und SHNG angesteuert hat das auch wunderbar geklappt. Da Szenen in KNX aber von 1 bis 64 durchnummeriert werden (über den Bus aber 0 bis 63 gesendet wird), habe ich das wie oben geändert. Sonst hätte ich zuviel tricksen müssen, vor allem beim KNX Taster.

            Ein Item für Szenendefinition braucht man auch.

            Code:
            Wohnzimmer:    
                Szenen:
                    type: scene
                    knx_dpt: 18001
                    knx_cache: 2/1/41
            Item Typ ist 'scene' und der Item Name Wohnzimmer.Szenen verweist auf die Szenendefinitionsdatei Wohnzimmer.Szenen.yaml (siehe oben). Der knx_dpt ist 18.001, weil der DPT bei einem MeTa², wenn man eine Wippe als Szenennebenstelle definiert, standardmäßig 18.001 ist.

            Der MeTa² ist sehr mächtig und daher sehr komplex. Man muss erst einen 'Kanal' (die eigentliche Funktion) definieren. Hier ist das "Szenennebenstelle". Danach weist man die Kanalfunktion einer Wippe zu. Siehe Screenshots.

            Kanaldefinition.png Wippenzuordnung.png

            Die Wippe des MeTa² ist hier auch wirklich als Wippe definiert, nicht als Einzeltaster. In der Kanaldefinition findet man unten "Szenendefinition Taste rechts" und links. Die Nummern müssen natürlich mit der Szenendefinition in SHNG übereinstimmen. Alles weitere ist da mehr oder weniger nur Kosmetik, also z.B. was auf dem Display wie angezeigt wird.

            Hier noch ein Screenshot vom Gruppenmonitor. Da sieht man schön, was eigentlich tatsächlich gesendet und wie das dargestellt wird. Szene 1 ("Aktivieren 1") wird als Raw $00 gesendet, Szene 2 ("Aktivieren 2") als Raw $01.

            Gruppenmonitor.png
            Zuletzt geändert von Sipple; 27.08.2024, 10:37.

            Kommentar

            Lädt...
            X