Ankündigung

Einklappen
Keine Ankündigung bisher.

Openknx Logikmodul - triggernd

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

    Openknx Logikmodul - triggernd

    Hallo,

    (Kanal 6) ich möchte wenn auf einer von zwei GAs (ODER) ein beliebiger Wert kommt, dass ein "AUS" Telegramm auf dem Ausgang gesendet wird. Das soll eine Rückfallzeit von 60min haben
    (Kanal 7) In einem zweiten Kanal möchte ich, dass wenn auf
    - eine GA ein AUS kommt
    - eine GA ein beliebiger Wert kommt
    ein "EIN" Telegramm auf dem Ausgang gesendet wird (beide Kanäle senden auf die gleiche GA).

    Hintergrund: Ich möchte die HCL Steuerung meines Dali-GW pausieren, wenn das Gateway einen Status des Farbkanals (Hue oder Saturation) sendet.
    Die HCL Steuerung soll wieder angeschaltet werden nach der Rückfallzeit, oder wenn das Licht abgeschaltet wird, oder wenn irgendein Farbtemperaturwert kommt.

    Ich dachte eigentlich, ich hätte das hinbekommen, aber das "AUS" kommt nicht zuverlässig (es kam aber einmal..)

    Das Diagnoseobjekt sagt:
    image.png

    Q1 ist der logische Zustand und nicht das Telegramm das kommt, oder?
    Der Kanal 6 hat ja einmal auf 1 geschaltet und ein Aus Telegramm gesendet. Es scheint mir nur, als würden keine Wiederholungen gesendet. Der Wert wirdt ja NIE wieder 0, da der Wertebereich für den Eingangsfilter den gesamten möglichen Bereich abdeckt.

    Was übersehe ich?


    Kanal 6 sieht so aus:
    OpenKNX,cv1,0xA040:0x16/LOG:-/6
    f~Name=HCL%20Template%20ausschalten
    f~Logic=2
    f~E1=1
    f~E1Dpt=3
    f~E1DefaultEEPROM=1
    f~E2=1
    f~E2Dpt=3
    f~E1LowDpt5001:1=0
    f~E2LowDpt5001:1=0
    f~I1=1
    f~OStairtimeBase=1
    f~OStairtimeTime=60
    f~OStair=1
    f~OOnDpt1=0
    f~OOffBuzzer=0
    f~OOffAll=0
    f~NameInput1=Farbton
    f~NameInput2=S%C3%A4ttigung
    f~NameOutput=HCL%20abschalten
    ;OpenKNX​
    Kanal 7 sieht so aus:
    OpenKNX,cv1,0xA040:0x16/LOG:-/7
    f~Name=HCL%20Template%20anschalten
    f~Logic=2
    f~E1=2
    f~E2=1
    f~E2Dpt=5
    f~E2LowDpt7:1=0
    f~OOffBuzzer=0
    f~OOffAll=0
    f~NameInput1=Status%20An%2FAus
    f~NameInput2=Farbtemperatur
    f~NameOutput=HCL%20anschalten
    ;OpenKNX​
    (anbei auch als Screenshots)


    Gruß,
    Hendrik​
    Angehängte Dateien

    #2
    Hi Hendrik,

    auf Kanal 6 hast Du den Internen Eingang mit Kanal 6 verbunden. Dadurch hast Du eine Endlosschleife gebaut. Das deaktiviert den Kanal, damit sich das Logikmodul nicht aufhängt. Ist das ein Versehen oder hast Du Dir dabei etwas gedacht? Rückkopplungen sind immer mit größter Vorsicht zu genießen, das muss man wirklich intensiv testen - und wirklich prüfen, dass die Rückkopplung auch eine Abbruchbedingung hat.

    Zitat von henfri Beitrag anzeigen
    Q1 ist der logische Zustand und nicht das Telegramm das kommt, oder?
    Ja, ist der Ausgang der Logik, in Deinem Fall also des OR. Ich hätte aber auch C1 erwartet...
    Den eigentlichen Ausgang kannst Du ja abfragen, indem Du das KO liest.

    Zitat von henfri Beitrag anzeigen
    Der Kanal 6 hat ja einmal auf 1 geschaltet und ein Aus Telegramm gesendet.
    Genau, der Kanal funktioniert genau einmal, denn er ruft sich bei der ersten 1 intern mehr als 50 mal pro Sekunde auf und ist von da an inaktiv (den Kanal kann nichts mehr triggern). Die Ausgangspipeline funktioniert aber noch, das AUS nach 60m kommt also noch.

    Zitat von henfri Beitrag anzeigen
    Der Wert wird ja NIE wieder 0, da der Wertebereich für den Eingangsfilter den gesamten möglichen Bereich abdeckt.
    Das ist schon OK, da Du ja "bei jedem Eingangstelegramm" gesagt hast. Damit triggert jede 1. Da Dein Treppenlicht nachtriggerbar ist ("kann verlängert werden"), werden die 60m immer neu gestartet. Da aber E1 seinen Wert speichert und nach dem Neustart neu lädt, startest Du das Treppenlicht auch nach jedem Neustart des Logikmoduls.

    Wenn ich Dir recht verstehe, ist Kanal 7 ok.

    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #3
      Hallo Waldemar,

      vielen Dank für deine Antwort!
      Ich kann mir nicht erklären, warum der Kanal mit sich selbst verknüpft war. Vielleicht von einer vorherigen Nutzung des Kanals. Aber bewusst habe ich das auch zuvor nicht gemacht.
      Wie auch immer: Das habe ich jetzt behoben:
      Code:
      OpenKNX,cv1,0xA040:0x16/LOG:-/6
      f~Name=HCL%20Template%20ausschalten
      f~Logic=2
      f~E1=1
      f~E1Dpt=3
      f~E2=1
      f~E2Dpt=3
      f~E1LowDpt5001:1=0
      f~E2LowDpt5001:1=0
      f~OStairtimeBase=1
      f~OStairtimeTime=60
      f~OStair=1
      f~OOnDpt1=0
      f~OOffBuzzer=0
      f~OOffAll=0
      f~NameInput1=Farbton
      f~NameInput2=S%C3%A4ttigung
      f~NameOutput=HCL%20abschalten
      ;OpenKNX​
      Nach dem Parametrieren habe ich das Modul zur Sicherheit neu gestartet, da du sagtest, der Kanal würde deaktiviert.
      Wieder kam das Aus Signal aber nur einmal.
      Leider ist es noch das alte (SAMD) Logikmodul, so dass die Schleifenerkennung nicht über das Diagnoseobjekt verfügbar ist.
      Ich könnte aber auch auf ein neues LM umstellen, falls das hilft.

      Hast du noch eine Idee?

      Gruß,
      Hendrik

      Kommentar


        #4
        Hm, jetzt bin ich verwirrt.
        Den Ausgang hab ich in HA beobachtet:
        image.png

        Im Busmonitor kam aber mehr als einmal die 0:
        image.png

        meti hast du eine Idee, wie das kommen kann? Das Telegram um 23:13:24 fehlt
        Gesendet wurden beide Telegramme von 1.0.1 (einem Logikmodul und keinem Router; ich habe hier nur eine IP und eine TP Linie mit einem IP-IF und einem KNXD).

        Ändert aber nix. Die 0 hätte seitdem > 10 mal kommen müssen.
        Edit: Es scheint nach einem Neustart des LM genau einmal zu funktionieren.

        Gruß,
        Hendrik
        Zuletzt geändert von henfri; 08.02.2025, 23:40.

        Kommentar


          #5
          Ok, im alten Logikmodul gibt es keine Schleifenerkennung.

          Zitat von henfri Beitrag anzeigen
          Nach dem Parametrieren habe ich das Modul zur Sicherheit neu gestartet, da du sagtest, der Kanal würde deaktiviert.
          Nicht notwendig. Eine Neuprogrammierung macht immer einen Neustart, der erstmal alle Kanäle wieder aktiviert - bis erneut eine Schleife erkannt wird.

          Ich würde Dich schon bitten, das auf einem halbwegs aktuellen Logikmodul zu versuchen. Immerhin sind da fast 2 Jahre Korrekturen eingeflossen, da kann ich nicht einfach so sagen, ob sich da was geändert hat bzw. gefixt wurde.

          E1 Kanal 7 ist aber nicht mit dem Ausgang von Kanal 6 verbunden, oder?

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Hallo Waldemar,

            ich bin jetzt auf ein aktuelleres LM umgestiegen (Wire-Logic-PM V3.15).
            Leider ist es weiter so: Es funktioniert kurz und dann nicht mehr.
            Zur Sicherheit hier die Config-Strings:
            Kanal 3 (der, der Aus senden soll (es aber nicht tut)
            Code:
            OpenKNX,cv1,0xA012:0x3F/LOG:0x34/3§f~Name=HCL%20Template%20ausschalten§f~Logic=2§f~NameInput1=Farbton§f~E1=1§f~E1Dpt=3§f~E1LowDpt5001:1=0§f~NameInput2=S%C3%A4ttigung§f~E2=1§f~E2Dpt=3§f~E2LowDpt5001:1=0§f~NameOutput=HCL%20abschalten§f~OStairtimeBase=1§f~OStairtimeTime=60§f~OStair=1§f~OOnDpt1=0§;OpenKNX
            
            
            OpenKNX,cv1,0xA012:0x3F/LOG:0x34/3
            f~Name=HCL%20Template%20ausschalten
            f~Logic=2
            f~NameInput1=Farbton
            f~E1=1
            f~E1Dpt=3
            f~E1LowDpt5001:1=0
            f~NameInput2=S%C3%A4ttigung
            f~E2=1
            f~E2Dpt=3
            f~E2LowDpt5001:1=0
            f~NameOutput=HCL%20abschalten
            f~OStairtimeBase=1
            f~OStairtimeTime=60
            f~OStair=1
            f~OOnDpt1=0
            ;OpenKNX​
            Kanal 4:
            Code:
            OpenKNX,cv1,0xA012:0x3F/LOG:0x34/4§f~Name=HCL%20Template%20anschalten§f~Logic=2§f~NameInput1=Status%20An%2FAus§f~E1=2§f~NameInput2=Farbtemperatur§f~E2=1§f~E2Dpt=5§f~E2LowDpt7:1=0§f~NameOutput=HCL%20anschalten§;OpenKNX
            
            OpenKNX,cv1,0xA012:0x3F/LOG:0x34/4
            f~Name=HCL%20Template%20anschalten
            f~Logic=2
            f~NameInput1=Status%20An%2FAus
            f~E1=2
            f~NameInput2=Farbtemperatur
            f~E2=1
            f~E2Dpt=5
            f~E2LowDpt7:1=0
            f~NameOutput=HCL%20anschalten
            ;OpenKNX​
            Laut Diagnoseobjekt ist der Kanal nicht in einer Schleife: "Dis test: no"

            Hier ein Auszug aus dem Busmonitor:
            Code:
            grep -E "1/2/173;|1/2/168|1/2/172|1/2/178|1/2/82"
            2025-02-09;09:47:34;;1.0.52;1/2/178;True;     E1: Ein/Aus (Kanal4)
            2025-02-09;09:47:34;;1.0.25;1/2/173;0           Ausgang (Kanal3, Kanal4)
            2025-02-09;09:47:40;;1.0.52;1/2/178;False;   E1: Ein/Aus (Kanal4)
            2025-02-09;09:47:40;;1.0.25;1/2/173;01;        Ausgang (Kanal3, Kanal4)
            2025-02-09;09:47:55;;1.0.52;1/2/178;True;     E1: Ein/Aus (Kanal4)
            2025-02-09;09:47:55;;1.0.25;1/2/173;01;        Ausgang (Kanal3, Kanal4)
            2025-02-09;09:48:02;;1.0.25;1/2/173;01;        Ausgang (Kanal3, Kanal4)
            2025-02-09;09:48:06;;1.0.52;1/2/168;60.8;     E1 (%) (Kanal3)
            2025-02-09;09:48:06;;1.0.52;1/2/172;50.2;     E2 (%) (Kanal3)
            2025-02-09;09:48:13;;1.0.52;1/2/168;2.4;       E1 (%) (Kanal3)
            2025-02-09;09:48:13;;1.0.52;1/2/172;67.1;     E2 (%) (Kanal3)
            Ist es normal, dass ein False nur eine 0 ist, während ein True eine 01 ist?

            image.png

            Hast du noch eine Idee?

            Gruß,
            Hendrik

            Kommentar


              #7
              Hi Hendrik,

              ich schau mir das morgen nochmal an, hatte heute keine Zeit.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #8
                Danke, keine Eile

                Kommentar


                  #9
                  Ich schau mir das jetzt an. Aber 2 Anmerkungen (weil ich das immer vergesse):
                  1. Als Config-Strings brauche ich nur den normalen einzeiligen Export, nicht den "menschenlesbaren" mehrzeiligen.
                  2. Wie der knxd True oder False ausgibt, hat nichts mit dem Wert auf dem Bus zu tun. Warum 01 ausgegeben wird, kann ich nicht sagen.
                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Den einzeiligen String hatte ich in die erste Zeile gepackt.

                    Kommentar


                      #11
                      Anmerkungen:

                      Kanal 3 sendet auch bei logisch EIN ein AUS. Warum?
                      Zitat von henfri Beitrag anzeigen
                      2025-02-09;09:47:55;;1.0.25;1/2/173;01; Ausgang (Kanal3, Kanal4)
                      Die Zeile verstehe ich nicht. Kann nur passieren, wenn vorher auf die 1/2/182 ein Wert gesendet worden ist. Warum steht das nicht im Log? Ist blöd, was zu analysieren, wenn die alle Einflüsse sichtbar sind. Das gleiche gilt für die Zeile danach.
                      Deswegen vermute ich auch, dass Dein fehlendes AUS dadurch kommt, dass weitere Werte auf die 1/2/168 bzw. 1/2/172 gesendet werden. Damit setzt Du ja das Treppenlicht wieder auf 60 Minuten zurück.
                      Und tue mir bitte den Gefallen, dass Du Deine Logiken im Gruppenmonitor testest. Und schau Dir eine nicht funktionierende Logik genau an, welche Parameter da gesetzt sind. Du kannst ja alle relevanten Zeiten passend verkürzen, dass man auch schnell testen kann (ich hab statt 60min auf 60s gestellt). Aber Du musst alle möglichen Kombinationen durchtesten.

                      Das Verhalten von dem, was Du mir geschickt hast, ist absolut korrekt, das Treppenlicht sendet beliebig oft ein AUS.

                      Gruß, Waldemar

                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Danke für deine Analyse, Waldemar!
                        Zitat von mumpf Beitrag anzeigen
                        Anmerkungen:

                        Kanal 3 sendet auch bei logisch EIN ein AUS. Warum?
                        Das ist ja die Aufgabe von Kanal 3: Wenn einer der zwei Dimmwerte kommt, soll er ein AUS senden. Und nach der Wartezeit ein EIN. Vermutlich kann das die Treppenlichtfunktion nicht.

                        Die Zeile verstehe ich nicht. Kann nur passieren, wenn vorher auf die 1/2/182 ein Wert gesendet worden ist. Warum steht das nicht im Log? Ist blöd, was zu analysieren, wenn die alle Einflüsse sichtbar sind. Das gleiche gilt für die Zeile danach.
                        Alle mit den beiden Kanälen verknüpften GAs sind im "grep" enthalten.

                        Und tue mir bitte den Gefallen, dass Du Deine Logiken im Gruppenmonitor testest. Und schau Dir eine nicht funktionierende Logik genau an, welche Parameter da gesetzt sind.
                        Aber wie?
                        Der blöde Gruppenmonitor kann doch immer nur nach einem filtern. Wonach soll ich denn filtern? Oder kenne ich da eine Funktion nicht?
                        Das ist ja der Grund, warum ich in Linux mit grep filtere.

                        Gruß,
                        Hendrik

                        Kommentar


                          #13
                          Zitat von henfri Beitrag anzeigen
                          Der blöde Gruppenmonitor kann doch immer nur nach einem filtern. Wonach soll ich denn filtern? Oder kenne ich da eine Funktion nicht?
                          Am einfachsten belegst Du Deine Logik mit Test GAs z.B. aus der Hauptgruppe 31.
                          Dann kannst Du im Gruppenmonitor nach 31/ filtern und die Logiken schrittweise durchtesten.
                          Zuletzt geändert von willisurf; 10.02.2025, 22:15.
                          Gruß Bernhard

                          Kommentar


                            #14
                            Zitat von henfri Beitrag anzeigen
                            Das ist ja die Aufgabe von Kanal 3: Wenn einer der zwei Dimmwerte kommt, soll er ein AUS senden. Und nach der Wartezeit ein EIN. Vermutlich kann das die Treppenlichtfunktion nicht.
                            Natürlich kann es das. Nur musst Du das parametrieren. Du hast eingestellt, dass er sofort ein AUS sendet und nach einer Stunde ein AUS. Aber jetzt verstehe ich erst, was Du willst. Du willst bei jedem Eingangssignal ein AUS gesendet haben. Und nach einer Stunde soll ein EIN gesendet werden, wenn kein Eingangssignal zwischendurch gesendet wurde.
                            Und das AUS, dass Du vermisst, ist das AUS sofort nach einem Eingangssignal und nicht das AUS nach Ablauf des Treppenlichts.

                            Oh mann, irgendwie müssen wir daran arbeiten, dass Deine Fragestellungen exakter werden. Ich habe leider aus:
                            Zitat von henfri Beitrag anzeigen
                            (Kanal 6) ich möchte wenn auf einer von zwei GAs (ODER) ein beliebiger Wert kommt, dass ein "AUS" Telegramm auf dem Ausgang gesendet wird. Das soll eine Rückfallzeit von 60min haben
                            in Verbindung mit Deinem ersten Beispiel, dass AUS bei logisch AUS gesendet hat, dass Du nur nach 60 Min ein AUS haben willst und dieses nicht gesendet wird.
                            Und daraufhin hab ich alles gechecked, Beispiele nachgebaut (importiert), die hier programmiert, mit GAs verbunden usw. Und jedesmal wurde natürlich ein AUS gesendet... Ein AUS, dass Du gar nicht wolltest.

                            Verstehe mich nicht falsch... Du bereitest Deine Fragen aufwändig auf und versiehst sie mit vielen Informationen, das ist schon sehr positiv - nur war das diesmal sowohl für Dich wie auch für mich für die Katz, und das ist irgendwie frustrierend. Für Dich und für mich. Ich weiß auch noch keine Lösung, mir ist diesmal nur aufgefallen, dass wir komplett aneinander vorbeigeredet haben. Die Fragestellung, die Du eigentlich hattest, lässt sich ganz einfach beantworten:
                            Du kannst nicht in einem Kanal mehrfache AUS- oder EIN-Signale haben und Verzögerungen. Das ist alles binär, es gibt ein EIN, ein AUS und man kann sagen, wie viel Zeit zwischen EIN und AUS bzw. AUS und EIN vergehen soll.

                            Zum Hintergrund:
                            Wie schon in der Applikationsbeschreibung zum Logikmodul beschrieben, gibt es nach der Logik eine Ausgangs-Pipeline, die das Ausgangssignal beeinflussen kann, bevor es den Ausgangskonverter erreicht und es seinen endgültigen Wert bekommt. Wenn aber ein Signal in der Ausgangs-Pipeline verwendet wird, kann es natürlich keine weiteren Funktionen auslösen. Wenn also logisch EIN zum (Nach-)Triggern des Treppenlichts genutzt wird, dann gelangt dieses logisch EIN nicht zum Ausgang.

                            Du willst ein AUS-Signal generieren aus jedem der beiden Dimmwerte, jedesmal wenn sich einer der Dimmwerte ändert. Das machst Du mit einem Logikkanal, indem Du Kanal 3 aus dem letzten Beispiel nimmst, das Treppenlicht rausnimmst und bei logisch EIN ein AUS-Telegramm senden lässt, bei logisch AUS sendest Du gar nichts.
                            Damit realisierst Du, dass jede Dimmwertänderung ein AUS sendet.

                            Mit einem weiteren Kanal machst Du das Treppenlicht, so wie es jetzt bei Kanal 3 im Beispiel ist, nur dass Du dort bei logisch EIN nichts sendest und bei logisch AUS ein EIN-Telegramm.
                            Damit bekommst Du nach einer Stunde ohne Dimmwert ein EIN.

                            Gruß, Waldemar






                            OpenKNX www.openknx.de

                            Kommentar


                              #15
                              Hallo Waldemar,

                              vielen Dank. Ich denke, ich verstehe. Aber da muss ich nochmal mit frischerem Verstand dran. Melde mich aber dann.

                              Gruß,
                              Hendrik

                              Kommentar

                              Lädt...
                              X