Ankündigung

Einklappen
Keine Ankündigung bisher.

SmartVisu Switch mit getrenntem Status oder Denkfehler

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

    SmartVisu Switch mit getrenntem Status oder Denkfehler

    Hallo,
    hab hier mal ne vielleicht ganz dumme Anfängerfrage. Ich habe zwei Licht Items (bool). In KNX habe ich für Änderung (6/1/0) und Rückgabe (6/5/0) getrennte Gruppenadressen.
    In SmarthomeNG habe ich das über ein Subitem den Status abgebildet. In der SmartVISU habe die das Item (nicht das Status-Item) an einen basic.switch gekoppelt.

    Code:
    Decke1:
        name: Decke 1
        type: bool
        visu_acl: rw
        knx_dpt: 1
        knx_send: 6/1/0
        knx_listen: 6/5/0
        Status:
            name: Status
            type: bool
            knx_dpt: 1
            visu_acl: rw
            knx_send: 6/5/0
            knx_cache: 6/5/0
    ...
        basic.switch('item.Decke1', 'item.Decke1', 'light_light.svg', 'light_light.svg'
    Soweit erstmal alles super, weil der Status Wert (6/5/0) und der Wert des Hauptitems (6/1/0) eigentlich gekoppelt sind (ausser bei "Fehlern" im KNX System)

    Jetzt habe ich zwei von diesen Items (zusätzlich (6/5/1, 6/1/1) und möchte die gerne zu einem Gesamtitem (6/5/2, 6/1/2) verbinden.
    Das habe ich in KNX jetzt so gelöst, dass der Sendekanal (6/1/2) beide Schalter schaltet (6/1/0, 6/1/1). Die Rückgabewert (6/5/2) wird in KNX nicht verarbeitet, nur im Taster an den Status verbunden. Dafür habe ich eine Logik in SmarthomeNG, die (6/5/0) und (6/5/1) zu (6/5/2) ODER verknüpft (irgendein Licht ist an).

    Auf dem KNX Taster klappt das wie ich mir das vorstelle: Die Led zeig an, ob (irgendwas) an ist (6/5/2) und per Schalter (6/1/2) kann ich beide Ein- oder Ausschalten.
    Jetzt versuche ich das in der SmartVISU abzubilden, finde aber kein Widget, das getrennte "Aktion" und "Status" Items hat. Manuell kann man das jetzt zwar über zwei Buttons und Sichtbarkeit selbst bauen, aber da gibt es doch bestimmt was fertiges, oder wo ist mein Denkfehler?

    In der Logik kann ich ja nur das Status Item setzen, da ansonsten ein Einschalten eines Lichtes das Gesamte Licht einschalten würden? (6/1/0 => 6/1/2 => 6/1/0, 6/1/1)

    Hat jemand 'nen Tipp für mich?

    Danke und Gruß
    aldaris
    Zuletzt geändert von bmx; 13.03.2021, 16:46. Grund: Einrückung korrigiert

    #2
    Wenn ich die Aufgabe richtig verstanden habe:
    • es gibt einen Schaltkanal 6/1/2, über den die Visu die beiden Lichter immer gemeinsam ein- oder ausschalten soll
    • es gibt einen Statuskanal 6/5/2, der anzeigt, ob eines der beiden Lichter an ist
    Dann würde ich ein Hilfsitem bauen:
    Code:
    item:
        beide:
            type: bool
            knx_dpt: 1
            knx_send: 6/1/2
            knx_listen: 6/5/2
            visu_acl: rw
    und in der Visu das item "item.beide" schalten. Achtung: basic.switch gibt es nicht mehr. basic.stateswitch ist zu verwenden.
    Wenn beide Lichter aus sind, ist item.beide = 0 und die Visu schaltet dann beide an. Wenn mindestens ein Licht an ist, ist item.beide = 1 und die Visu schaltet beide aus.

    Gruß
    Wolfram

    P.S.: ich habe mit eval keine Erfahrung und will Dir hier keinen falschen Code reinschreiben. Aber Du kannst mit eval das item.beide direkt aus den beiden anderen befüllen. Dazu brauchst Du keine Logik.
    Zuletzt geändert von wvhn; 06.03.2021, 16:32.

    Kommentar


      #3
      Danke für die Antwort. Mit eval kann das gehen, ich würde aber für komplexere Anwendungen bei der flexiblere Logik bleiben. Wenn ich in der Logik das Hilfsmittel beide setze, würde die 6/1/2 ausgelöst und beide Lampen gehen an.

      Kommentar


        #4
        Hallo nochmal, ich gestehe, ich verstehe es nicht.
        Zur Sicherheit erstmal die relevante Items.yaml, um auch andere Fehlerquellen ausschließen zu können:
        Code:
        Licht:
            name: Licht
            sv_widget: "<table width=100%><tr><td align=left>{{ basic.switch('item.Decke1', 'item.Decke1', 'light_light.svg', 'light_light.svg') }}</td><td align=left>Decke 1</td></tr><tr><td align=left>{{ basic.switch('item.Decke2', 'item.Decke2', 'light_light.svg', 'light_light.svg') }}</td><td align=left>Decke 2</td></tr><tr><td align=left>{{ basic.switch('item.GesamtDecke', 'item.GesamtDecke', 'light_light.svg', 'light_light.svg') }}</td><td align=left>Gesamt Decke</td></tr></table>"
            Decke1:
                name: Decke 1
                type: bool
                visu_acl: rw
                knx_dpt: 1
                knx_send: 6/1/0
                knx_listen: 6/5/0
                Status:
                    name: Status
                    type: bool
                    knx_dpt: 1
                    visu_acl: rw
                    knx_send: 6/5/0
                    knx_cache: 6/5/0
            Decke2:
                name: Decke 2
                type: bool
                visu_acl: rw
                knx_dpt: 1
                knx_send: 6/1/3
                knx_listen: 6/5/2
                Status:
                    name: Status
                    type: bool
                    knx_dpt: 1
                    visu_acl: rw
                    knx_send: 6/5/2
                    knx_cache: 6/5/2
            GesamtDecke:
                name: Gesamt Decke
                type: bool
                visu_acl: rw
                knx_dpt: 1
                knx_send: 6/1/18
                knx_listen: 6/5/12
                Status:
                    name: Status
                    type: bool
                    knx_dpt: 1
                    visu_acl: rw
                    knx_send: 6/5/12
                    knx_cache: 6/5/12
        Dazu halt eine Logik : "GesamtDecke.Status = Decke1.Status | Decke2.Status"

        Starten wir damit, dass alle 6 Items auf "false" sind, alles aus. Jetzt schalte ich Decke1 in der Visu ein. Ich erwarte, dass
        1) Die Lampe angeht, da ich 6/1/0 sende
        2) Der Aktor mit 6/5/0 antwortet
        3) Die Logik auf 6/5/0 reagiert und 6/5/12 sendet
        4) GesamtDecke auf 6/5/12 reagiert und entsprechend auf true springt.
        5) In der Visu GesamtDecke "an" anzeigt

        Der Busmonitor (ETS) zeigt aber nur an:
        6/1/0 => true
        6/5/0 => true
        6/5/12 => true

        Ich interpretiere das so, dass bis Schritt 3 noch alles funktioniert, da die Logik die einzige Stelle ist, die 6/5/12 sendet (in der ETS ansonsten nicht angebunden). Der Wert des Items GesamtDecke.Status ist auch auf true gesetzt.
        Leider ändert sich aber der Wert des Items GesamtDecke nicht, ob wohl der darauf ein knx_listen hat. Das hätte ich erwartet. Insbesondere aber nicht 6/1/18 gesendet werden, weil sonst gehen ja beide Lampen an.

        Ich hoffe, es kann mir jemand helfen.

        Danke im vorraus,
        aldaris

        P.S.
        Das mit dem basic.switch ist mir klar, ich arbeite aber noch auf der "alten" Visu. Das werde ich bei Gelegenheit updaten, sollte ja aber nicht den Fehler verursachen.
        Zuletzt geändert von aldaris; 13.03.2021, 10:30.

        Kommentar


          #5
          Aus meiner Sicht brauchst Du weder Decke1.Status, noch Decke2.Status. Die beiden items Decke1 und Decke2 repräsentieren doch schon den jeweiligen Status. Zudem sendet ein item (soweit ich weiß) nicht, wenn es nur über knx_listen aktualisiert wird. Das könnte sonst zu Endlosschleifen führen.
          Du musst also explizit auf das item GesamtDecke schreiben. z.B. mit einer Logik „GesamtDecke = Decke1| Decke2“.

          Gruß
          Wolfram

          Kommentar


            #6
            Hallo,

            ich habe genau dein Szenario gerade mal probiert. Leider habe ich jetzt das gegenteilige Problem:
            Wie oben, alles aus und ich schalte Decke1 ein. Der Bus sagt:
            6/1/0 => true (schalte Decke 1 ein)
            6/5/0 => true (Rückmeldung Decke 1 eingeschaltet)
            6/1/18 => true (kommt aus der Logik, die Gesamt.Decke auf true setzt. Das schaltet auch die Decke2 ein in KNX)
            6/5/2 => true (Rückmeldung Decke 2 eingeschaltet)

            Dieses Szenario ist als auch keine Option.
            Gibt es noch andere Ideen?

            Danke und Gruß
            aldaris
            Zuletzt geändert von aldaris; 13.03.2021, 16:06.

            Kommentar


              #7
              Zitat von aldaris Beitrag anzeigen
              kommt aus der Logik, die Gesamt.Decke auf true setzt
              vermutlich sollte die Logik nicht Gesamt.Decke mit der GA = 6/1/18 sondern den Gesamt.Decke_Status mit der GA = 6/5/12 setzten.

              Kommentar


                #8
                Das war genau die Variante darüber, die auch nicht funktionierte. Kann es sein, dass keine zwei Items auf die gleiche Adresse Listen dürfen?

                Kommentar


                  #9
                  Wie habt Ihr denn Items wie ein Zentral Item Licht für eine Etage realisiert? Ich habe ein Beispiel für eine Anzeige (Symbol) oder gar Anzahl gefunden. Aber nicht, wie man die an gleicher Stelle schalten kann.

                  Kommentar


                    #10
                    Ich hatte die Items schon vor shng in KNX als Zentralitems definiert, insofern ist das (hier) einfach.

                    Du kannst aber teilweise auch mit eg.*.licht oder so arbeiten. Schau mal in die Doku, da steht bestimmt was dazu drin.

                    Kommentar


                      #11
                      Hallo, diese Zentralstelle habe ich ja auch in KNX. Daher habe ich ja auch die Gruppenadressen 6/1/18 und 6/5/12
                      Wenn ich jetzt kein shng habe, funktioniert das eigenständig, ausser das 6/5/12 nicht gesendet wird (=keine Rückmeldung für die TasterLED). Hast du das auch in KNX gelöst? Dann wäre ich ja auch fertig, weil ich Logik in shng brauche...

                      Kommentar


                        #12
                        Ein Status für Zentral ergibt für mich keinen Sinn. Den könnte man in KNX entweder nur über eine Aktorfunktion oder über einen Logikbaustein lösen, Aber ich wüsste nicht, was ich damit will. Soll der Status auch "angehen", wenn ich alle Lampen einzeln einschalte? Schaltet "Zentral" z.B. auch die Sperre von Präsenzmeldern? Was ist, wenn ich dann eine Lampe einzeln ausschalte? "Zentral" ist dann - logisch - immer noch gesetzt, aber es sind nicht mehr alle Lampen an. Welchen Status soll das geben?

                        Ich habe für den Zentral-Status keine GA definiert.

                        Kommentar


                          #13
                          Zitat von Morg Beitrag anzeigen
                          Ein Status für Zentral ergibt für mich keinen Sinn.
                          Wenn mehrere Personen Licht ein- und ausschalten, kenne ich diesen Wunsch: Auf einen Blick erkennen, ob irgendwo ein Licht an ist, ohne alle Räume "durchsuchen" zu müssen.

                          Kommentar


                            #14
                            Das ist aber was anderes als ein "Zentral"-Status. Das hängt mit einem "Zentral"-Schalter ja am Status eines Aktors in KNX.

                            Das, was du meinst, kannst du mit eg.*.licht problemlos in shng lösen, je nach Itemstruktur.

                            Kommentar


                              #15
                              Davon war in #4 und #5 schon die Rede; gibt es ein kleines Code-Beispiel für die Lösung mit zwei Leuchten?

                              Kommentar

                              Lädt...
                              X