Ankündigung

Einklappen
Keine Ankündigung bisher.

DPT für (Ofen) Auto/An/Aus

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

    DPT für (Ofen) Auto/An/Aus

    Hallo,

    meinen Ofen kann ich jetzt mit einem Wiregate-Plugin in die Modi "Auto/An/Aus" schalten.

    Momentan mache ich das über zwei GAs mit DPT1. Aber das ist ja so nicht gedacht....

    Schalten möchte ich das ganze von einem B.IQ Komfort (kurz toggelt an/aus, lang schaltet AUTO)aus und es soll auch am liebsten eine Status-LED leuchten ("Auto" signalisieren).

    Gibt's hier einen cleveren Weg, oder muss ich übel basteln?

    Ich habe schon angefangen zu basteln (https://knx-user-forum.de/wiregate/1...nen-etc-2.html, https://knx-user-forum.de/knx-eib-fo...-mit-b-iq.html), aber eigentlich muss das doch irgendwie vernünftig gehen, oder?



    Gruß,
    Hendrik

    #2
    komme gerade von Deinem Post mit der Logik-Software ...

    ... eigentlich ist das, was Du machen möchtest, nichts anderes, als das, was ich in Linknx mit Szenen realisiert habe ...

    also konkret: es gibt eine Szene, die mittels 8Bit ausgelöst wird ... z.B. an Adresse 0/0/1 ("0" wäre aus, "1" wäre an, "2" wäre Auto). Der Part auf die 8Bit zu "hören" würde in Deinem Fall wohl das Plugin übernehmen.

    Weil jetzt aber einige Schalter nicht so flexibel mit dem Senden von 8Bit-Werten sind, mache ich eine zweite Logik, die dann binäre Befehle in 8 bit umsetzt (z.B. Adresse 0/1/1, 0/1/2 und 0/1/3) ... wenn also eine "1" oder "0" z.B. auf 0/1/2 gesendet wird, schickt Linknx eine "1" auf 0/0/1 und der entsprechende Befehl wird ausgelöst...

    Ist so'n bischen Fleissarbeit, zumal so ein XML nicht gerade das Muster an Übersichtlichkeit ist, aber wenn man sich ein mal die Vorlage gemacht hat, heisst es dann nur noch "copy & paste" ... und linknx reagiert echt schnell auf so Geschichten.

    ... ich hoffe, das hilft Dir ein wenig weiter. Sonst muss ich mal ein paar tatsächliche Zeile schreiben.

    Viele Grüße,

    Stefan
    Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

    Kommentar


      #3
      Hi Hendrik (komme auch von der Logikengine-Seite),

      da ich leider keinen BI.Q habe, weiss ich nicht, was der senden kann - aber stell doch einfach Dein WG-Plugin hier rein, dann kann ich Dir sicherlich ein adäquates Beispiel in LinKNX machen. Oder beschreib genau den benötigten In- und Output, dann geht das auch. Hört sich für mich nicht nach viel Logik an...

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        Hallo Hendrik,

        die Antwort auf deinen Threadtitel lautet: DPT 201.104
        Ist aber wohl ein bisschen zu speziell.
        Quelle: http://www.knx.org/fileadmin/downloa...07.00%20AS.zip

        Ich werde in meinem Beispiel aber DPT 5 verwenden. (Das schicke ich später wenn die Kinder schlafen).

        Bis bald

        Marcus

        Kommentar


          #5
          Hallo und vielen Dank für eure Antworten!

          Zitat von lobo Beitrag anzeigen
          also konkret: es gibt eine Szene, die mittels 8Bit ausgelöst wird ... z.B. an Adresse 0/0/1 ("0" wäre aus, "1" wäre an, "2" wäre Auto). Der Part auf die 8Bit zu "hören" würde in Deinem Fall wohl das Plugin übernehmen.

          Weil jetzt aber einige Schalter nicht so flexibel mit dem Senden von 8Bit-Werten sind, mache ich eine zweite Logik, die dann binäre Befehle in 8 bit umsetzt (z.B. Adresse 0/1/1, 0/1/2 und 0/1/3) ... wenn also eine "1" oder "0" z.B. auf 0/1/2 gesendet wird, schickt Linknx eine "1" auf 0/0/1 und der entsprechende Befehl wird ausgelöst...
          Ja, es macht sicher Sinn, die zwei Aufgaben zu trennen.
          Einfach eine Szene zu nehemen.. Klar, das geht. Ich bin noch zu neu, die Vor und Nachteile einschätzen zu können.
          Zitat von mknx Beitrag anzeigen
          die Antwort auf deinen Threadtitel lautet: DPT 201.104
          Ist aber wohl ein bisschen zu speziell.
          Grins.. Ich erinnere mich daran, vor dem DPT/der PDF tatsächlich mal gesessen zu haben.
          Wie oben gesagt: Ich kann es nicht einschätzen.... Ich weiss auch nicht, welche Logikengine diesen DPT überhaupt unterstützt...

          Ich werde in meinem Beispiel aber DPT 5 verwenden. (Das schicke ich später wenn die Kinder schlafen).[/QUOTE]

          Ich denke, du meinst das https://knx-user-forum.de/265267-post17.html. Vielen Dank dafür.
          Ich antworte mal hier darauf, damit es nicht noch unübersichtlicher wird (mein Fehler!).

          Ich denke, das Beispiel verstehe ich weitgehend. Fragen tauchen dann sicher beim Umsetzen auf.

          Das Problem ist leider, dass der B.IQ kein Eingangsobjekt für die LED hat. Darüber hinaus kann er zwischen langem und kurzem Druck nur bei der Jalousie- und beider Dimmfunktion unterscheiden. Da die LED-Statusanzeige allerdings nur bei der Dimmfunktion vorhanden ist, denke ich, dass ich diese nutzen muss (hier die Beschreibung, aber ich bin recht sicher).

          Somit habe ich ein 4bit Objekt (die Dimmfunktion/langer Druck) und ein 1bit Objekt (die Schaltfunktion). Die LED ist an letzteres gekoppelt.

          Ich denke aber, das funktioniert soweit mit deinem Beispiel. Lediglich muss nach dem Setzen von Auto in der Logik der entsprechende Wert auch an das 1-bit Objekt gesendet werden *ohne dass* die Logik darauf reagiert (dieser Wert soll ja nur die LED schalten). Geht das?

          Das 1-bit Objekt würde -wenn vom Taster gesendet und nicht von der Logik- einfach An/Aus schalten.
          Macht das Sinn?
          Jetzt bleibt noch die Frage, ob man den Status noch in ein Objekt mit DPT5 bringt (z.B. für Logik). Ich denke, das macht Sinn, denn bei zwei Objekten (je DPT1) hat man ja ein Problem mit der Interpretation: An und Auto geht ja nicht gleichzeitig (was aber bei "1" auf beiden Objekten der Fall wäre).


          Zitat von mumpf Beitrag anzeigen
          da ich leider keinen BI.Q habe, weiss ich nicht, was der senden kann - aber stell doch einfach Dein WG-Plugin hier rein, dann kann ich Dir sicherlich ein adäquates Beispiel in LinKNX machen. Oder beschreib genau den benötigten In- und Output, dann geht das auch. Hört sich für mich nicht nach viel Logik an...
          Danke auch für dein Angebot.
          Ein WG-Plugin existiert bislang nicht. Ich wollte erst abwarten, was der Logikengine-Thread für mich ergibt ;-)

          Aber ich denke, ich sollte ein solches Plugin -Zwecks der Vergleichbarkeit- einfach mal erstellen. Dann kann man die Skripte gut nebeneinander stellen.

          Gruß,
          Hendrik

          Kommentar


            #6
            Zitat von henfri Beitrag anzeigen
            Das Problem ist leider, dass der B.IQ kein Eingangsobjekt für die LED hat. ...
            und ein 1bit Objekt (die Schaltfunktion). Die LED ist an letzteres gekoppelt.

            Ich denke aber, das funktioniert soweit mit deinem Beispiel. Lediglich muss nach dem Setzen von Auto in der Logik der entsprechende Wert auch an das 1-bit Objekt gesendet werden *ohne dass* die Logik darauf reagiert (dieser Wert soll ja nur die LED schalten). Geht das?
            Ich denke schon, bin mir aber nicht sicher ob ich Deine Frage richtig verstanden haben. Was in der Logik steht und auf was die reagiert, liegt ja in Deiner Hand.
            Man kann in einer Logik auch den Verursacher sehen (trigger['by']). Wenn Du aus einer Logic heraus ein Item änderst steht darin 'Logic'. Du kannst aber auch selber ein Keyword vergeben.

            Aber ich denke wenn der B.IQ kein Eingangsobjekt für die LED hat, wird es unmöglich Deine Vorstellung (Status-LED) mit nur einem Taster umzusetzen - egal mit welcher Logik Engine.

            Wenn Du den Status per LED wirklich willst, geht wohl kein Weg an zwei Tastern vorbei. Einer für Aus/Ein und einer für Auto Aus/Ein. Beide senden/empfangen DPT 1.
            Die Logik verknüpft die beiden dann und setzt die Webabfrage für den Ofen ab.

            Zitat von henfri Beitrag anzeigen
            Jetzt bleibt noch die Frage, ob man den Status noch in ein Objekt mit DPT5 bringt (z.B. für Logik). Ich denke, das macht Sinn, denn bei zwei Objekten (je DPT1) hat man ja ein Problem mit der Interpretation: An und Auto geht ja nicht gleichzeitig (was aber bei "1" auf beiden Objekten der Fall wäre).
            Ja, kann man. Die Verknüpfung muss aber durch eine Logik gemacht werden und die stellt dann auch sicher das nicht beide auf 1 stehen. Man kann aber auch noch ein drittes Item erzeugen, das hängt von Deiner Vorgehensweise ab ob das sinnvoll ist.

            Bis bald

            Marcus

            Kommentar


              #7
              Hi Marcus,

              Zitat von mknx Beitrag anzeigen
              Man kann in einer Logik auch den Verursacher sehen (trigger['by']). Wenn Du aus einer Logic heraus ein Item änderst steht darin 'Logic'. Du kannst aber auch selber ein Keyword vergeben.
              Gut, darauf müsste man dann prüfen.

              Aber ich denke wenn der B.IQ kein Eingangsobjekt für die LED hat, wird es unmöglich Deine Vorstellung (Status-LED) mit nur einem Taster umzusetzen - egal mit welcher Logik Engine.
              Doch, ich denke das geht. Denn ich kann die LED schalten, indem ich an die sendende GA eine 1 oder 0 sende. Das muss ja auch so sein, denn wenn ich an einem anderen Taster oder durch Logik das Licht anschalte, soll die LED ja an gehen.

              Allerdings -und hier wird's dann fies- reagiert die LED auf die GA des kurzen Tastendrucks (1bit/Schalten). "Auto" will ich aber mit einem langen Druck (4bit/Dimmen) schalten und "ein/aus" mit einem kurzen.

              Deshalb muss beim Auslösen von "Auto" von der Logik eine 1 an die GA vom 1bit Objekt des Tasters gesendet werden. Dieses darf aber dann eben von der Logik nicht als "ein/aus" interpretiert werden. Und das geht ja durch Trigger by, wenn ich das richtig verstanden habe.

              Ja, kann man. Die Verknüpfung muss aber durch eine Logik gemacht werden und die stellt dann auch sicher das nicht beide auf 1 stehen. Man kann aber auch noch ein drittes Item erzeugen, das hängt von Deiner Vorgehensweise ab ob das sinnvoll ist.
              Ja, da hast du Recht. Je nachdem, wo man die GAs dann verwendet kann das eine oder andere nützlich sein.

              Ich habe mal hier versucht:
              3/7/6 ist der kurze Druck (1bit) --> Ein/Aus (habe ich "trigger1" genannt)
              3/7/7 ist der lange Druck (4bit) --> Auto (habe ich "trigger2" genannt)
              Auf 3/7/8 reagiert das Plugin, das den Ofen schaltet (1=an, 2=aus, 3=auto)

              Code:
              # logics/ofen.py
              if trigger2 # Es wurde durch die 3/7/7ausgelöst
                 
                  # Code einfügen: Ofen auf Automatik
                 
                  sh.ofen(2) # Item setzen
                  sh.knx.groupwrite('3/7/6',1,'1') # (ga, data, dpt) LED_Auto ein
                  sh.knx.groupwrite('3/7/8',3,'1') # Ofen in Auto-Modus
              else: # es wurde durch 3/7/6 (ein/aus) getriggert
                if trigger['by']<> 'logic' #nicht auf sich selbst (LED schalten) reagieren
                  sh.knx.groupwrite('3/7/6',0,'1') # (ga, data, dpt) LED_Auto aus
                  if sh.ofen() == 1: # toggle off
              
                      # Code einfügen: Ofen aus
              
                      sh.ofen(0)
                      sh.knx.groupwrite('3/7/8',2,'1')
              
                  else: # toggle on bzw. default on  wenn auto deaktiviert wurde
              
                      # Code einfügen: Ofen ein
              
                      sh.ofen(1)
                      sh.knx.groupwrite('3/7/8',1,'1')
              Geht das mit den zwei Triggern?

              Gruß,
              Hendrik

              Kommentar


                #8
                Hallo Hendrik,

                Zitat von henfri Beitrag anzeigen
                Deshalb muss beim Auslösen von "Auto" von der Logik eine 1 an die GA vom 1bit Objekt des Tasters gesendet werden. Dieses darf aber dann eben von der Logik nicht als "ein/aus" interpretiert werden. Und das geht ja durch Trigger by, wenn ich das richtig verstanden habe.
                Das hast Du soweit richtig verstanden, nur macht da KNX/eibd nicht mit.
                Jedes Paket das man über den eibd versendet sieht die Logik auch als (Eingangs-) Paket und würde wenn man die GA als Trigger verwendet auch zu einem Aufruf der Logic führen. :-(
                Weiter bei der Antwort auf die nächste Frage.

                Zitat von henfri Beitrag anzeigen
                Geht das mit den zwei Triggern?
                Man kann auch mehrere GAs als Logic Trigger angeben, die müssen jedoch die selben DPT verwenden. Hier müsste man über separate Items gehen, die unterschiedliche DPT zugewiesen bekommen und die bei Änderung die Logik triggern. Dann würde aber auch jede Wertänderung auf dem Bus zu einer Änderung des Item führen und das wiederum zu einem erneuten Triggern der Logik.
                => Wenn Du von der Logic eine 1 auf die 1 Bit GA schickst (wegen Aufruf der 4 Bit GA), dann wird die Automatik sofort gestoppt und der Ofen auf manuell an umgestellt.

                Verständlich?

                Kommentar


                  #9
                  Hi Hendrik,

                  ich hab mal Deine Anforderung, so wie ich sie bisher verstehe, in LinKNX gegossen.

                  Code:
                    <objects>
                      <object id="AnAusZumOfen" gad="11/3/0" init="0" flags="crwtu">Ausgang: AnAus des Ofens</object>
                      <object id="AutoOfen" gad="11/3/1" init="0" flags="crwtu">Ausgang: Auto-Modus des Ofens</object>
                      <object id="AnAusVomSchalter" gad="11/3/2" init="0" flags="crwts">Eingang: AnAus vom Schalter</object>
                      <object id="DimmenVomSchalter" gad="11/3/3" type="3.007" init="0" flags="crwts">Eingang: Dimmen relativ</object>
                    </objects>
                  
                    <rules>
                      <rule id="rAnAusSchalten">
                        <!-- Annahme: Schalter hat die Phys. Adresse 1.0.22 -->
                        <condition type="object-src" src="1.0.22" id="AnAusVomSchalter" trigger="true"/>
                        <actionlist type="if-true">
                          <action type="set-value" id="AutoOfen" value="off"/> <!-- Auto-Modus aus -->
                          <action type="toggle-value" id="AnAusZumOfen"/> <!-- Ofen ein-/ausschalten -->
                          <action type="set-value" id="AnAusVomSchalter" value="off"/> <!-- Status-LED aus -->
                        </actionlist>
                      </rule>
                      
                      <rule id="rAutoSchalten">
                        <condition type="object" id="DimmenVomSchalter" op="ne" value="0" trigger="true"/>
                        <actionlist type="if-true">
                          <action type="set-value" id="AutoOfen" value="on"/> <!-- Auto-Modus an -->
                          <action type="set-value" id="AnAusVomSchalter" value="on"/> <!-- Status-LED an -->
                        </actionlist>
                      </rule>
                    </rules>
                  Das ist schon ziemlich speziell, da das Problem, das mknx beschrieben hat, hier natürlich auch existiert. Damit das Rücksenden der Status-LED nicht gleich zur erneuten Logikauswertung führt, habe ich bei der Regel noch die Physikalische Adresse des Schalters benutzt (angenommen: 1.0.22). Dann kann nur der Schalter triggern, nicht die Logik. Aber das Togglen muss dann auch von der Logik erledigt werden.

                  Leider kann ich das nicht ausprobieren, aber es sollte ungefähr so klappen.

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Hi,

                    an den Punkt von Waldemar habe ich nicht gedacht. Wenn man die PA auswertet (steht in trigger['source']) kann man die Logik auch mit SH.py realisieren.
                    @Hendrik: wenn Du magst kann Ich das gegen Abend in Code zusammenfassen.

                    Bis dann

                    Marcus

                    Kommentar


                      #11
                      Hallo,
                      Zitat von mumpf Beitrag anzeigen
                      ich hab mal Deine Anforderung, so wie ich sie bisher verstehe, in LinKNX gegossen.
                      Oh danke. Und das zu der Uhrzeit! Da hab ich aber ein schlechtes Gewissen!

                      Den code muss ich mir mal wenn ich frischer bin zu gemüte führen!

                      Das ist schon ziemlich speziell, da das Problem, das mknx beschrieben hat, hier natürlich auch existiert. Damit das Rücksenden der Status-LED nicht gleich zur erneuten Logikauswertung führt, habe ich bei der Regel noch die Physikalische Adresse des Schalters benutzt (angenommen: 1.0.22). Dann kann nur der Schalter triggern, nicht die Logik. Aber das Togglen muss dann auch von der Logik erledigt werden.
                      Tja, das ist schon ne Krücke mit den B.IQ. Und das sind schon die Besseren! (Komfort statt Standard).

                      Kann man auch nach PAs "negiert" filtern? Dann könnte man die PA der Logik-Engine rausfiltern. (sprich auf alle außer der eigenen PA reagieren).


                      Zitat von mknx Beitrag anzeigen
                      an den Punkt von Waldemar habe ich nicht gedacht. Wenn man die PA auswertet (steht in trigger['source']) kann man die Logik auch mit SH.py realisieren.
                      Hatte ich doch vorgeschlagen, oder? Oder ist das jetzt etwas anderes, als mein Vorschlag?
                      @Hendrik: wenn Du magst kann Ich das gegen Abend in Code zusammenfassen.
                      Interressant wäre das. V.a. den Vergleich zu der linknx-Variante. Aber ich hätte dann auch dirgegenüber ein schlechtes Gewissen!

                      Aber dann müsste ich das ganze auch nochmal als WG-Plugin versuchen. Das wäre schon interressant, die drei Varianten mal nebeneinander zu stellen...

                      Momentan mangelt es ein wenig an Zeit :-(

                      Gruß,
                      Hendrik

                      Kommentar


                        #12
                        Zitat von henfri Beitrag anzeigen
                        Kann man auch nach PAs "negiert" filtern? Dann könnte man die PA der Logik-Engine rausfiltern. (sprich auf alle außer der eigenen PA reagieren).
                        Hi,

                        ist ja ne Logic-Engine sollte wohl so gehen (hab ich nicht ausprobiert):

                        Code:
                              <condition type="and">
                                <condition type="object" id="AnAusVomSchalter" trigger="true"/>
                                <condition type="not">
                                  <!-- Angenommen, die PA der Logicengine ist 1.0.254 -->
                                  <condition type="object-src" src="1.0.254" id="AnAusVomSchalter"/>
                                </condition>
                              </condition>
                        Meint hier: Irgendein Wert von AnAusVomSchalter und nicht vom AnAusVomSchalter von der PA 1.0.254 => Also alles ausser einem Wert von der Logic-Engine.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar

                        Lädt...
                        X