Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter KNX v1.0.x

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Test Adapter KNX v1.0.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • Garfonso
      Garfonso Developer @tsero last edited by

      @tsero said in Test Adapter KNX v1.0.x:

      @Garfonso

      Danke für die Erklärung! Hatte mir schon sowas gedacht. Allerdings bin ich von der Adapter-Doku ausgegangen, und aufgrund von
      0bcc8ade-c2cd-4f24-bd8b-bf385a80e9b4-image.png habe ich mir gedacht, ein getState wäre ein Trigger für das GroupValueRead. Bin gerade erst dabei mich in ioBroker einzuarbeiten und da gibt es natürlich noch ein paar Startschwierigkeiten ...

      Gerne.
      Ja, das hab ich mir auch gedacht, "Trigger" ist da sicherlich nicht gut verständlich. Da ist man als ioBroker-Entwickler dann auch etwas betriebsblind, weil man weiß, dass ein getState beim Adapter nicht ankommt und es daher nur ein setState sein kann. 🙂 Also Trigger = setState

      Das mit dem Caching von getStates ist mir auch neu und eine Beschreibung dazu konnte ich auch noch nicht finden. Die Funktionsbeschreibung erwähnt das nämlich nicht.

      Das ist eine Vereinfachung, die der Javascript Adapter für die User macht, kann man in der Instanz einstellen. Sonst wäre getState immer asynchron, das heißt, du müsstest getState immer mit callbacks verarbeiten, also so z.B.:

      getState(id, (state) => {
         log("State " + id + " is " + state.val);
      });
      
      // <- hier kann ich auf "state" NICHT zugreifen -> alles muss jetzt in den callback mit rein. Bei mehreren states, die ich abrufen will, wird das schnell sehr unübersichtlich.
      

      Wie du schon schreibst, schön ist die Variante nicht. Ich kann den Messwert auch über eine eigene GA anfordern. Denke mal das wird dann die bessere Variante sein. Das würde ich dann ungefähr so machen

          setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
          setStateDelayed("javascript.0.scriptEnabled.Wetter.iMaxWind", getState("knx.0.0_Zentral.0_1_Messwerte.Messen_Wind_max_m_s").val*3.6,2000);
      

      Kann ich davon ausgehen, dass ich mit einer Verzögerung von 2s dann schon den neuen Wert mit getState bekomme (am Bus sehe ich den Response nach <0,1s). Oder bekomme ich dann noch den Wert aus dem Cache? Bzw. wie kann man den Cache umgehen?

      Das setStateDelayed verwendest du da falsch...? das getState würde so immer noch sofort ausgeführt und nur der Wert später gesetzt. Für das, was du erreichen willst, brauchst du setTimeout (javascript funktion):

      setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
      
      setTimeout(function () {
             const windGeschwindigkeit = getState("knx.0.0_Zentral.0_1_Messwerte.Messen_Wind_max_m_s").val*3.6; 
             setState("javascript.0.scriptEnabled.Wetter.iMaxWind", windGeschwindigkeit);
      },2000);
      

      Ich würde es so nicht machen, sondern tatsächlich den state abonieren, das heißt, die Funktion wird jedesmal aufgerufen, wenn sich der state ändert -> also sobald ioBroker das Update vom KNX Bus gelesen hat, wird deine Funktion auch aufgerufen. Oder willst du nur, das etwas passiert, wenn du vorher das setState machst?
      (Warum hast du scriptEnabled in deiner id, die du setzen willst?)

      Also:

      //log new measurement, ack: true -> only react to readings from bus!
      on({ id: 'knx.0.0_Zentral.0_1_Messwerte.Messen_Wind_max_m_s', ack: true}, (e) => {
          //diese Funktion wird jedesmal aufgerufen, wenn der State aktualisiert wird, also wenn was neues vom KNX Bus kommt
         log("max knx wind = "+e.state.val);
         setState("javascript.0.Wetter.scriptEnabled.iMaxWind", e.state.val * 3.6, true); //ich setze hier gerne ack=true, dann wird es in der Objektliste grün ;-)
      });
      
      //update erzeugen:
      setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
      
      //ggf. auch auf Knopfdruck? -> state erstellen und darauf reagieren
      on({ id: 'javascript.0.jetzt_mal_wind_auslesen', val: true, ack: false}, function (e) {
        setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
        setStateDelayed('javascript.0.jetzt_mal_wind_auslesen', false, true, 500); //nach 500ms wieder auf false setzen, nicht notwendig aber hübscher ;-)
      });
      

      Grundsätzlich in Skripten würde ich das immer so machen:
      wenn immer etwas passieren soll, wenn neue Information reinkommt, dann unbeding mit on() den state abonnieren.
      Wenn du das ganze nur für eine einmalige Berechnung brauchst, dann ist getState ok. In deinem speziellen Fall würde ich aber da bei on bleiben, das du nur einmal was machen willst, könnte man auch so erreichen:

      //update erzeugen:
      setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
      let doSomething = true; //ok, funktion darf einmal ausgeführt werden.
      
      //wird nur etwas tun, wenn doSomething = true
      on({ id: 'knx.0.0_Zentral.0_1_Messwerte.Messen_Wind_max_m_s', ack: true}, (e) => {
          //diese Funktion wird jedesmal aufgerufen, wenn der State aktualisiert wird, also wenn was neues vom KNX Bus kommt
         if (doSomething) {
             log("max knx wind = "+e.state.val);
             setState("javascript.0.Wetter.scriptEnabled.iMaxWind", e.state.val * 3.6, true); //ich setze hier gerne ack=true, dann wird es in der Objektliste grün ;-)
            doSomething = false;
         }
      });
      

      (ok, besser wäre noch das schedule wieder zu entfernen, geht auch mit unsubscribe, meine ich, müsste ich aber nachgucken).

      1 Reply Last reply Reply Quote 0
      • tsero
        tsero last edited by

        @Garfonso und nochmals danke ... habe wieder einiges gelernt. Ich denke jetzt passt es. Immer zur vollen Stunde frage ich den max-Windwert der letzten Stunde ab und setzte ihn danach zurück. Über die subscription lausche ich auf den neuen max-Werte und setzt ihn dann in meinen DP:

        schedule("0 * * * *", function () {
            setState('knx.0.0_Zentral.0_1_Messwerte.Abfrage_Wind_max',true);
            setStateDelayed("knx.0.0_Zentral.0_1_Messwerte.Reset_Wind_max",true,500);
        });
        
        on({ id: 'knx.0.0_Zentral.0_1_Messwerte.Messen_Wind_max_m_s', ack: true}, (e) => {
            //diese Funktion wird jedesmal aufgerufen, wenn der State aktualisiert wird, also wenn was neues vom KNX Bus kommt
           setState("javascript.0.Wetter.iMaxWind", e.state.val * 3.6, true); 
        });
        

        Bei deiner Frage Warum hast du scriptEnabled in deiner id, die du setzen willst? bin ich dann gleich mal ins Schwitzen geraten ... und wie befürchtet, habe ich wiedermal ins Schwarze getroffen. Beim initialen Herumspielen habe ich den Ordner scriptEnabled gesehen. Dachte mir, aha, klingt gut, da kommt alles was zu den aktivierten Scripts gehört rein. Also habe ich ohne viel nachzudenken alle DPs da drinnen anlegt.
        Nach deiner Frage, habe ich dann mal nach scriptEnabled gegooglt ... war wohl doch nicht so optimal.
        Naja, das war jetzt meine Nachmittagsbeschäftigung. Habe alle DPs da raus geholt .. eine schöne Arbeit. Aber jetzt isses sauber.

        Eine Verständnisfrage hätte ich dann doch noch zur zeitlichen Abfolge. Die Sinnhaftigkeit des Scripts bitte nicht beachten.
        Verstehe ich das richtig, dass der zeitliche Ablauf wie folgt ist:

        (2) wird sofort vom Cache gelesen, aber erst nach 2s in den DP (1) geschrieben.
        Das log Kommand (3) wird erst nach Ablauf der 2s ausgeführt, und der DP (4) wird auch erst nach 2s ausgelesen.
        Kommt das so hin?

        75b0a59b-ff8b-4946-b603-84513a077d63-image.png

        Garfonso 1 Reply Last reply Reply Quote 0
        • Garfonso
          Garfonso Developer @tsero last edited by

          @tsero said in Test Adapter KNX v1.0.x:

          (2) wird sofort vom Cache gelesen, aber erst nach 2s in den DP (1) geschrieben.
          Das log Kommand (3) wird erst nach Ablauf der 2s ausgeführt, und der DP (4) wird auch erst nach 2s ausgelesen.
          Kommt das so hin?

          Ja, alles korrekt. 🙂

          Wenn du jetzt nach }); noch etwas stehen hättest, das würde ebenfalls sofort ausgeführt. Das kann manchmal etwas kontraintuitiv sein.

          1 Reply Last reply Reply Quote 0
          • H
            Hansi1234 last edited by

            Hi Leute,

            jetzt muss ich doch nochmal fragen.
            Ich würde gerne ein Button in der Vis haben, der die Jalousie/n ganz runter fährt und dann die Lamellen auf "lichten" verstellt. Heißt, dass die Lamellen gerade sind.
            Eigentlich müsste das doch mit der absoluten Lamellenpositon realisierbar sein oder?
            Aber dann benötige ich doch eigentlich ein Script, weil ich die absolute Lamellenposition angeben muss und dann noch die Position. Oder stehe ich komplett auf dem Schlauch? Habt ihr das selber vielleicht schon umgesetzt?

            Garfonso K 2 Replies Last reply Reply Quote 0
            • Garfonso
              Garfonso Developer @Hansi1234 last edited by

              @Hansi1234
              Würde ich über ein Skript lösen, ja.

              1 Reply Last reply Reply Quote 0
              • K
                killroy2 @Hansi1234 last edited by

                @Hansi1234 Das sind konstante Positionen die nicht berechnet werden müssen. Mein Knx Aktor kennt dazu Szenen pro Schalktanal. Eine Szene besteht z.B. aus absoluter Höhenposition und Lamellenposition.

                H 1 Reply Last reply Reply Quote 1
                • H
                  Hansi1234 @killroy2 last edited by

                  @killroy2
                  Das hat funktioniert, danke dir 🙂

                  1 Reply Last reply Reply Quote 0
                  • S
                    Sali84 last edited by

                    Kann mir zufällig jemand sagen, wie ich im iobroker den rawDPvalue eines Datenpunktes anzeigen/nutzen kann?
                    Ich sehe jeweils nur den DecodedDPvalue...

                    Vielen Dank

                    Garfonso 1 Reply Last reply Reply Quote 0
                    • Garfonso
                      Garfonso Developer @Sali84 last edited by Garfonso

                      @Sali84
                      Ich glaube nicht, dass das vorgesehen ist. Warum brauchst du das denn? (Oder ich verstehe gerade nicht ganz, was der Decoded Value ist).

                      1 Reply Last reply Reply Quote 0
                      • S
                        Sali84 last edited by

                        Ich habe ein Gerät, dass dooferweise als Value für verschiedene Zustände den "gleichen" Wert. Allerdings bezieht sich das nur auf den Decoder Wert.
                        Somit hatte ich gehofft den RAW Wert im iobroker zu bekommen.
                        Aber ich habe nun einen anderen Weg gefunden es zu lösen.
                        Trotzdem gut zu wissen, dass man den Raw Wert nicht bekommt.

                        Danke Dir!

                        1 Reply Last reply Reply Quote 0
                        • G
                          Goldblaster last edited by

                          Hallo zusammen,

                          ich habe folgende Problem, am Montag habe ich ein Update des KNX Adapters auf Version 1.0.39 durchgeführt. Dann habe ich gestern mein geändertes KNX Projekt hochgeladen aus der ETS 7.1.39. Nun startet mein KNX Adapter nicht mehr, im Log steht ständig folgendes.:
                          1520b3ee-3521-41bd-b0cf-fe2842c2352a-image.png

                          Hat jemand eine Idee woran das liegt? Bis dato hat immer alles ohne Probleme funktioniert. Vielleicht kann mir jemand helfen.

                          Vielen Dank

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            Goldblaster @Goldblaster last edited by

                            @Goldblaster
                            Sorry ist natürlich ETS Version 5.7.4

                            1 Reply Last reply Reply Quote 0
                            • G
                              Goldblaster last edited by

                              Zur weiteren Information:
                              Ich kann den bestehenden Adpater KNX.0 auch nicht deinstallieren.

                              1 Reply Last reply Reply Quote 0
                              • P
                                pasee @Billiboy last edited by

                                @Billiboy
                                Konntest du das Problem mit dem GIRA IP Router lösen?
                                Ich habe das gleiche Problem.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  Snapergy @Snapergy last edited by

                                  @Snapergy said in Test Adapter KNX v1.0.x:

                                  Hallo zusammen,

                                  ich habe mal eine Frage, da ich bislang noch keine Antwort gefunden habe 😞

                                  Gibt es eine Möglichkeit die KNX-Telegramme zu via Iobroker sich ausgeben zu lassen? Wie es in der ETS im "Diagnose"-Modul möglich ist. So könnte ich jederzeit im Vis mir die letzten Bus-Mitteilungen anschauen, ohne immer auf die ETS zurückgreifen zu müssen.

                                  Gibt es hier vielleicht schon eine Neuerung oder ggfl. eine explizite Aussage dazu?

                                  Garfonso 1 Reply Last reply Reply Quote 0
                                  • S
                                    sourex last edited by

                                    Hi,
                                    wollte einmal das ganze System neu aufsetzen und habe mich nun gefragt ob anschließend die Datenstruktur vom KNX komplett wiederhergestellt wird OHNE das ich die Projekt Datei neu einspielen muss ??
                                    Leider hat der KNX Adapter auch nicht wie fast alle die Möglichkeit die Config zu speichern, wie macht ihr das ?
                                    Aktuell habe ich es ansonsten nur über den Backitup Adapter gesichert.

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      nowi03 last edited by

                                      Hallo zusammen,

                                      gibt es schon was Neues bzw. tut sich aktuell was mit dem KNX Adapter? 🙂

                                      Ich kämpfe aktuell auch mit dem issue #106 (1 Bit values are wrongly imported as "indicator" and readonly instead of "state" "value" writable).

                                      Die GAs habe ich ich schon in meinem Projekt angepasst, sollte also passen.

                                      Jetzt habe ich gelesen, dass manche als Workaround den "devices" Adapter benutzten um die Geräte anzulegen und zu verwalten.
                                      Lieder finde ich dazu kaum Dokumentation.
                                      Möchte gerne meine KNX Objekte vernünftig von Lovelace erkennen (Entities) lassen.

                                      Leider steig ich da noch nicht ganz durch 😵 , kann mich da bitte jemand abholen und mir auf die Sprünge helfen? 🤗

                                      Vielen Dank! 👍

                                      1 Reply Last reply Reply Quote 0
                                      • Garfonso
                                        Garfonso Developer @Snapergy last edited by

                                        @Snapergy said in Test Adapter KNX v1.0.x:

                                        Gibt es hier vielleicht schon eine Neuerung oder ggfl. eine explizite Aussage dazu?

                                        Bisher gibt es die Möglichkeit nicht, höchstens tief im Debug log.

                                        @sourex said in Test Adapter KNX v1.0.x:

                                        Hi,
                                        wollte einmal das ganze System neu aufsetzen und habe mich nun gefragt ob anschließend die Datenstruktur vom KNX komplett wiederhergestellt wird OHNE das ich die Projekt Datei neu einspielen muss ??
                                        Leider hat der KNX Adapter auch nicht wie fast alle die Möglichkeit die Config zu speichern, wie macht ihr das ?
                                        Aktuell habe ich es ansonsten nur über den Backitup Adapter gesichert.

                                        Also wenn du das Backup wiederherstellst werden die Objekte auch wieder erstellt und da steht alles notwendige drinnen, soweit ich sehe -> KNX wird damit dann wieder laufen.

                                        Was mienst du mit "Config speichern"? Die Konfiguration wird in einem Objekt gespeichert, wie bei allen anderen Adaptern auch... (also Instanzkonfiguration).

                                        @nowi03 said in Test Adapter KNX v1.0.x:

                                        gibt es schon was Neues bzw. tut sich aktuell was mit dem KNX Adapter? 🙂

                                        Habe jetzt Zugriff auf den Code, aber aktuell leider wenig Zeit (und wollte Lovelace noch ein latest release fertig machen und bin demnächst in Urlaub ... wird wohl eher August alles, mal sehen, wann ich mich in KNX einlese kann).

                                        Jetzt habe ich gelesen, dass manche als Workaround den "devices" Adapter benutzten um die Geräte anzulegen und zu verwalten.
                                        Lieder finde ich dazu kaum Dokumentation.
                                        Möchte gerne meine KNX Objekte vernünftig von Lovelace erkennen (Entities) lassen.

                                        Mit dem KNX Adapter wirst du den devices Adapter immer brauchen (außer du baust die Struktur, die ioBroker da erwartet / braucht im KNX Projekt nach... aber auch dann müsstest du die Rollen alle von Hand anpassen... -> nimm den devices Adapter).

                                        Zum anlegen musst du "nur" auf + Drücken. Dann Gerätetyp auswählen (die sind zum Teil etwas kryptisch, insbesondere bei Lampen. Da musst du die "maximale Funktionalität" nehmen, also z.B. RGB für Lampen mit Farbe und R,G,B als einzelne Objekte oder Farbtemperatur für Lampen mit Farbtemperatur). Dann kommt ein Dialog in dem du für die einzelnen Kontrollen die passenden States auswählen kannst, also im Grunde die Objekte passend zu den KNX GAs. Bei den "Power" States gibt es sogar support für Lesen / Schreiben in unterschiedlichen States (ACTUAL ist immer "nur lesen").

                                        Ich wollte das auch mal mit Bildern beim Lovelace Adapter dokumentieren... bin aber noch nicht dazu gekommen.

                                        S 1 Reply Last reply Reply Quote 0
                                        • B
                                          brumark last edited by

                                          Hallo zusammen,

                                          ich habe ein Problem mit einigen GAs meiner Wetterstation, welche beim Start des KNX Adapters zwar gemäss Log richtig gelesen, in den Objekten aber nur mit "null" angezeigt werden. Wird der Wert hingegen mit "GroupValueWrite" auf den Bus geschrieben, dann wird der Wert aktualisiert.

                                          Ich könnte mir vorstellen, dass es einen Zusammenhang zwischen "GroupValueResponse" und den für diese GAs gesetzten Flags gibt. Da auf diesen GAs einerseits ein neuer Wert gesetzt, aber auch der aktuelle Wert ausgelesen werden kann, sind in ETS alle Flags gesetzt: K, L, S, Ü, A und dementsprechend sind im Objekte auf ioBroker Read, Write und Update aktiv.
                                          Ist das eventuell ein Bug oder habe ich etwas übersehen.

                                          Für einen Tipp wäre ich euch sehr dankbar.

                                          Ansicht Objekte:
                                          Bildschirmfoto 2020-07-19 um 19.26.16.jpg

                                          Ausschnitt Log:

                                          2020-07-16 21:43:13.453 - info: knx.0 (16002) ( 3.3 ) Received TUNNEL_REQUEST (RESPONSE - send ACK) : 06 10 04 20 00 17 04 41 0f 00 29 00 bc e0 11 3e 22 4a 03 00 40 27 53 65
                                          2020-07-16 21:43:13.454 - info: knx.0 (16002) main.js: onGroupValue_Response from 4/2/74
                                          2020-07-16 21:43:13.456 - info: knx.0 (16002) RESPONSE : mappedName : Fasade NO Dämmersungschwelle dest : 4/2/74 val: 300 (DPT9.004) Fasade_NO_Dämmersungschwelle
                                          2020-07-16 21:43:13.457 - info: knx.0 (16002) RESPONSE single-array value : 300 auf knx.0.Sensorik.OG.Fasade_NO_Dämmersungschwelle
                                          2020-07-16 21:43:13.460 - info: knx.0 (16002) =====> STATE_TUNNELING_ACK
                                          

                                          Ausschnitt Dokumentation:
                                          Bildschirmfoto 2020-07-19 um 19.39.28.jpg

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            ple last edited by

                                            Hallo zusammen,
                                            ich bin gerade dabei mich in KNX einzulesen, da wir in 6 Monaten mit dem Umbau des Elternhauses anfangen.
                                            Erste Komponenten habe ich bereits bestellt fürs Testboard.
                                            Eine ETS Light ist auch soweit einsatzbereit und ich versuche erste Gehversuche.
                                            Woran ich jedoch scheitere und ich nicht alles später neu vergeben muss, möchte ich gerne kurz nachfragen wie ihr es lösen würdet mit den Gruppenadressen.
                                            In Meiner Wohnung habe ich aktuell diese Struktur im iobroker.
                                            Haus>Wohnzimmer>Beleuchtung
                                            Haus>Wohnzimmer>Beschattung
                                            Haus>Wohnzimmer>Programme
                                            Haus>Zentral>anwesenheit

                                            Zum Elternhaus:
                                            UG, EG, OG, Dach, Garten, Garage
                                            EG 9 Räume
                                            OG 9 Räume

                                            Jetzt hapert es bei mir an den Gruppenadressen und ich weiß einfach nicht was Sinn macht und was nicht.
                                            Gibt es da vielleicht Vorlagen für? Lässt man Reserve zwischen den Adressen, weil dann irgendwas einem einfällt oder erweitert wird?

                                            Andere Frage, wie komplex kann knx programmiert werden? Aktuell plane ich so, dass die Grundfunktionen über knx laufen und die komplexen Aufgaben über den Iobroker laufen.
                                            Kann man mit KNX sowas abbilden?
                                            Bodentiefes Fenster links. Im Sommer fahren die halb runter, damit der Raum sich nicht aufheizt. Nun öffne ich das Fenster (nicht Kipp) weil ich den Müll rausbringen will. Jalousie fahren hoch. Nach wiederkehr und Fenster zu oder kipp soll die Jalousie Position vom Fenster rechts wieder angefahren werden.

                                            Wäre vielleicht einer bereit mir ein paar Stolperfallen vom KNX aufzuzeigen oder was so alles Möglich ist?

                                            Gruß und Danke

                                            chefkoch009 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            837
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            knx adapter
                                            93
                                            719
                                            155035
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo