Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wert aus Modbus lesen und bei änderung größer als…..auf KNX Objekt senden

    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

    Wert aus Modbus lesen und bei änderung größer als…..auf KNX Objekt senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      alexmosel last edited by

      …vielen Dank, ich probiere das mit dem Java-Script mal....

      Ich dachte halt an Blockly, da ich für Java zu blöd bin und dachte Blockly sei auch für mich ggf. machbar

      1 Reply Last reply Reply Quote 0
      • A
        alexmosel last edited by

        Habe das Script eben mal versucht, auf der KNX Adresse kommt aber anstelle einer Wattzahl meines Wechselrichters nur wirres geschreibsel an….

        kann es sein dass das nicht richtig formatiert wird.. ?

        In IOBroker wird im Objekt schön die Wattzahl angezeigt...

        Komisch

        1 Reply Last reply Reply Quote 0
        • Dutchman
          Dutchman Developer Most Active Administrators last edited by

          @alexmosel:

          Habe das Script eben mal versucht, auf der KNX Adresse kommt aber anstelle einer Wattzahl meines Wechselrichters nur wirres geschreibsel an….

          kann es sein dass das nicht richtig formatiert wird.. ?

          In IOBroker wird im Objekt schön die Wattzahl angezeigt...

          Komisch `

          Poste Mal dein Script + Screenshot der objecte

          –-----------------------

          Send from mobile device

          1 Reply Last reply Reply Quote 0
          • A
            alexmosel last edited by

            Bitte sehr:

            const idModbusDP = 'modbus.0.inputRegisters.30865_Netz-Bezug';
            const idKNXDP = 'knx.0.Visu_Werte.Synohr.Display_Text';
            const delta = 10.0;  // Mindest-Änderung für KNX-Aktualisierung
            
            var lastKNX = getState(idKNXDP).val;
            
            on(idModbusDP, function(dp) {
               if(Math.abs(dp.state.val - lastKNX) >= delta) {
                  lastKNX = dp.state.val;
                  setState(idKNXDP, lastKNX);
               }
            });
            

            https://picload.org/view/drddgldw/1.png.html

            1 Reply Last reply Reply Quote 0
            • Dutchman
              Dutchman Developer Most Active Administrators last edited by

              Screenshot der objecte?

              –-----------------------

              Send from mobile device

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

                Ist der Datenpunkt "knx.0.Visu_Werte.Synohr.Display_Text" vom type "number" mit der unit "W" und enthält den richtigen Wert ?

                1 Reply Last reply Reply Quote 0
                • A
                  alexmosel last edited by

                  Zeit Dienst Flags Prio Quelladresse Quelle Zieladresse Ziel Rout Typ DPT Info

                  1433 2017-11-05 11:06:06.676 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 2B 02 F0 DF 00 00 00 00 90 2B E4 14 F7 07 | +ðß

                  Das ist sowas was ETS ausgibt…auf dem Display wird sinnloses Zeug angezeigt.

                  Das KNX Objekt gibt ASCII Zeichen aus, beim Modbus Objekt wird der korrekte Wert in IO Broker angezeigt.

                  Objektscreenshot hatte ich doch gepostet? Oder was sonst noch für einen Screenshot ?

                  Oh je.... 😞

                  Schönen Sonntag

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

                    @alexmosel:

                    Das KNX Objekt gibt ASCII Zeichen aus `
                    Dann muss der Wert in eine Zeichenkette gewandelt werden, also der letzte Befehl erweitert werden:

                          setState(idKNXDP, lastKNX.toFixed());
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • A
                      alexmosel last edited by

                      …das hat leider nix geändert...es gibt nur Quark aus....

                      Zeit Dienst Flags Prio Quelladresse Quelle Zieladresse Ziel Rout Typ DPT Info

                      19 2017-11-05 15:34:57.277 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 39 38 80 B8 FC 15 8C E6 E9 14 9F B8 F6 1F | 98€¸üŒæéŸ¸ö

                      20 2017-11-05 15:34:58.355 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 31 31 38 61 64 61 70 74 65 72 2E 6B 6E 78 | 118adapter.knx

                      21 2017-11-05 15:34:59.598 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 35 30 30 39 38 39 31 37 36 33 32 30 34 7D | 5009891763204}

                      22 2017-11-05 15:35:00.698 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 31 32 33 2E 44 61 74 65 6E 5F 57 65 74 74 | 123.Daten_Wett

                      23 2017-11-05 15:35:02.999 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 34 37 47 F3 E2 98 62 9F 34 32 5B 22 73 65 | 47Góâ˜bŸ42["se

                      24 2017-11-05 15:35:04.131 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 31 32 32 22 6C 63 22 3A 31 35 30 39 38 39 | 122"lc":150989

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

                        Es muss anscheinend ein Text mit 14 Zeichen Länge sein ? Dann klappt es vielleicht so:

                        const idModbusDP = 'modbus.0.inputRegisters.30865_Netz-Bezug';
                        const idKNXDP = 'knx.0.Visu_Werte.Synohr.Display_Text';
                        const delta = 10.0;  // Mindest-Änderung für KNX-Aktualisierung
                        
                        var lastKNX = getState(idKNXDP).val;
                        
                        on(idModbusDP, function(dp) {
                           if(Math.abs(dp.state.val - lastKNX) >= delta) {
                              lastKNX = dp.state.val;
                              var unit = ' W        ';  // 10 Zeichen Länge
                              var text;
                              if(lastKNX >= 1000) text = lastKNX.toFixed() + unit;
                              if(lastKNX < 1000) text = '0' + lastKNX.toFixed() + unit;
                              if(lastKNX < 100) text = '00' + lastKNX.toFixed() + unit;
                              if(lastKNX < 10) text = '000' + lastKNX.toFixed() + unit;
                              setState(idKNXDP, text);
                           }
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          Ein delta von 10 dürfte die Zahl der KNX-Ausgaben kaum verringern, wie das Log zeigt. Besser wäre eine Mittelwertbildung über mehrere Messwerte.

                          const idModbusDP = 'modbus.0.inputRegisters.30865_Netz-Bezug';
                          const idKNXDP = 'knx.0.Visu_Werte.Synohr.Display_Text';
                          const werte = 10;  // Anzahl der Messwerte für Mittelwertbildung
                          
                          var cnt = 0;  // Zähler
                          var sum = 0;  // Summe der Messwerte
                          
                          function knxText(id, text) {
                              var txt = text;
                              for(var i = 0; i < 14 - text.length; i++) {
                                  txt = txt + ' ';
                              }
                              setState(id, txt);;
                          }
                          
                          on(idModbusDP, function(dp) {
                             cnt++;
                             sum = sum + dp.state.val;
                             if(cnt >= werte) { 
                                var power = sum / cnt;
                                knxText(idKNXDP, power.toFixed() + ' W');
                                cnt = 0;
                                sum = 0;
                             }
                          });
                          
                          1 Reply Last reply Reply Quote 0
                          • A
                            alexmosel last edited by

                            Hmmmm..

                            ich weiß es ja auch nicht…jetzt sendet das Script garnix mehr, keines der beiden letzten.

                            07:05:09.208 [info] javascript.0 script.js.Modbus-WR_Werte_an_KNX_senden: registered 1 subscription and 0 schedules

                            07:05:09.894 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                            07:05:10.987 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                            07:05:12.065 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                            07:05:13.154 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                            07:05:14.233 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                            Ich vermute fast mal, dass die Formatierungen falsch sind, es wird ja nicht nur am Display falsch angezeigt sondern steht auch in er ETS (PRogrammiersoftware für KNX Systeme) falsch ausgegeben.

                            Wenn ich jetzt aber in der ETS den Wert Hallo sende, wird der am Display ohne wenn und aber angezeigt. Das sind ja auch keine 14 Zeichen.

                            Es muss KNX Datenpunkttyp 16.000 Zeichen sein, denke ich, was an der Gruppenadresse an und für sich auch so hinterlegt ist.

                            Der Modbus Wert in IObroker wird als Zahl ausgegeben

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

                              Da ich kein KNX habe, kann ich es auch nicht testen.
                              @alexmosel:

                              19 2017-11-05 15:34:57.277 vom Bus Low 15.15.15 - 0/7/0 Synohr Text 5 Schreiben 16.000 Zeichen (ASCII) 39 38 80 B8 FC 15 8C E6 E9 14 9F B8 F6 1F | 98€¸üŒæéŸ¸ö `
                              sieht danach aus, dass 14 Zeichen mit dem Inhalt 98€¸üŒæéŸ¸ö übertragen werden, wobei anscheinend die ersten zwei Zeichen den gewandelten Wert (98) enthalten und der Rest irgendwelchen zufälligen Speicherinhalt.

                              Was wird auf dem Display angezeigt, wenn Du den Text Hallo als Wert in den Datenpunkt "knx.0.Visu_Werte.Synohr.Display_Text" per Hand eingibst ?

                              1 Reply Last reply Reply Quote 0
                              • A
                                alexmosel last edited by

                                Hallo,

                                ich weiß nicht wo ich das eingeben soll ??

                                Was ich probiert hatte über die ETS was an die GA zu senden und da kommt es ganz normal an…

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

                                  @alexmosel:

                                  ich weiß nicht wo ich das eingeben soll ?? `
                                  Im Reiter "Objekte" in der Zeile des Datenpunktes "knx.0.Visu_Werte.Synohr.Display_Text" rechts in der Spalte "Werte" (Feld anklicken, Text eingeben und Enter).

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    alexmosel last edited by

                                    Hllo,

                                    gerade mal versucht, wenn ich schreibe Test, dann wird mist angezeigt..

                                    Wenn ich schreibe Das ist ein Test wird Das ist ein Te angezeigt .

                                    Problem ist nur dass das Display dann schon scrollt, eigentlich will ich eine ein Zeilige anzeige ohne Scrollen

                                    da sollte z.b. stehen PV 500 w und das würde in die 1 Zeile passen.

                                    über die ETS kann ich Hallo senden und das wird korrekt übertragen…komisch

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

                                      @alexmosel:

                                      Wenn ich schreibe Das ist ein Test wird Das ist ein Te angezeigt .

                                      Problem ist nur dass das Display dann schon scrollt, eigentlich will ich eine ein Zeilige anzeige ohne Scrollen `
                                      Das sind 14 Zeichen, die angezeigt werden - aber mit Scrollen. Dann bleibt nur probieren mit verschieden langen Texten:

                                      PV 1200 W (9 Zeichen)

                                      Dann den gleichen Text mit verschiedener Anzahl Leerzeichen hinten dran.

                                      Wird irgendwann der Text ohne Scrollen angezeigt ?

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        alexmosel last edited by

                                        Hallo, tatsache, immer 14 Zeichen, sonst wird Müll angezeigt…

                                        Wobei ich mich frage ob die ETS auch leerzeichen hinten anhängt...

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

                                          @alexmosel:

                                          immer 14 Zeichen, sonst wird Müll angezeigt… `
                                          Dann sollten die Skripte funktionieren.
                                          @alexmosel:

                                          Wobei ich mich frage ob die ETS auch leerzeichen hinten anhängt… `
                                          493_synohr_149.jpg

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            alexmosel last edited by

                                            hallo, die beiden letzten Scripte senden garnix ans knx…

                                            iobroker zeigt irgendwelcxhe warnungen an.

                                            Log

                                            13:01:12.674 [info] javascript.0 Stop script script.js.Modbus-WR_Werte_an_KNX_senden

                                            13:01:12.682 [info] javascript.0 Start javascript script.js.Modbus-WR_Werte_an_KNX_senden

                                            13:01:12.682 [warn] javascript.0 at script.js.Modbus-WR_Werte_an_KNX_senden:5:15

                                            13:01:12.682 [info] javascript.0 script.js.Modbus-WR_Werte_an_KNX_senden: registered 1 subscription and 0 schedules

                                            13:01:13.819 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:14.941 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:15.089 [info] javascript.0 Stop script script.js.Modbus-WR_Werte_an_KNX_senden

                                            13:01:16.176 [info] javascript.0 Start javascript script.js.Modbus-WR_Werte_an_KNX_senden

                                            13:01:16.177 [warn] javascript.0 at script.js.Modbus-WR_Werte_an_KNX_senden:5:15

                                            13:01:16.177 [info] javascript.0 script.js.Modbus-WR_Werte_an_KNX_senden: registered 1 subscription and 0 schedules

                                            13:01:17.295 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:18.386 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:19.513 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:20.650 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:21.832 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:22.943 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:24.070 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:25.225 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:26.355 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:27.445 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:28.590 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:29.775 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:30.910 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:31.998 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:33.080 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:34.325 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:35.447 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:36.557 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:37.690 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:38.844 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:39.967 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:41.080 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:42.215 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:43.375 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:44.528 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:45.663 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:46.794 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:47.945 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:49.087 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:50.227 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:51.363 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:52.505 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:53.632 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:54.764 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:55.892 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:57.067 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

                                            13:01:58.237 [warn] javascript.0 at Object. (script.js.Modbus-WR_Werte_an_KNX_senden:16:7)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            522
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            61
                                            6931
                                            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