Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Wert aus Modbus lesen und bei änderung größer als…..auf KNX Objekt senden

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    11
    1
    81

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    554

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
61 Beiträge 4 Kommentatoren 9.5k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #32

    @alexmosel:

    …und leider Scrollt das Display immernoch die ganze Zeit, wenns das nicht tut wäre es perfekt... `
    Das widerspricht der Aussage in der Doku. Bei angehängten Leerzeichen dürfte es nicht scrollen, es sei denn, der Text (ohne die Leerzeichen) ist für das Display schon zu lang.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      alexmosel
      schrieb am zuletzt editiert von
      #33

      Super, habe das andere SCript schon genommen , klappt so, ne Idee wie ich das Scrollen noch los werde ?

      Wenn ich in der ETS Direkt Hallo sende, bleibt das ohen Scrollen einfach stehen, bis es nen neuen Wert bekommt…so sollte das auch sein

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        alexmosel
        schrieb am zuletzt editiert von
        #34

        tja….was ich nicht verstehe, ist dass ich mit der ETS kurzen Text senden kann, kein Quark angezeigt wird und es nicht scrollt.

        Das problem scheint ja also doch beim Iobroker zu liegen oder am script.

        Woher kommt denn der Müll, den er sonst anzeigt..?

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #35

          @alexmosel:

          was ich nicht verstehe, ist dass ich mit der ETS kurzen Text senden kann, kein Quark angezeigt wird und es nicht scrollt. `
          ETS ist intern.
          @alexmosel:

          Woher kommt denn der Müll, den er sonst anzeigt..? `
          Keine Ahnung. Wie Du per Handeingabe ermittelt hast, müssen mind. 14 Zeichen gesendet werden, damit kein Müll angezeigt wird. Optimal sollte dies schon der KNX-Adapter ergänzen (vielleicht in einer künftigen Version ?).

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            alexmosel
            schrieb am zuletzt editiert von
            #36

            hm…ich kann den Datentyp verändern, das Display würde woh auch 16.001 nehmen.

            Ich probier mal...

            Ein Problem sehe ich allerdigns noch beim Mittelwert...Nachts zeigt er dann immer noch den letzten wert an, der aber nicht mehr stimmt, oder ?

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #37

              @alexmosel:

              Ein Problem sehe ich allerdigns noch beim Mittelwert…Nachts zeigt er dann immer noch den letzten wert an, der aber nicht mehr stimmt, oder ? `
              Stimmt, denn wenn der Wert konstant auf 0 bleibt, wird nicht mehr getriggert. Wenn das vermieden werden soll, muss das Skript ergänzt werden.

              const idModbusDP = 'modbus.0.inputRegisters.30865_Netz-Bezug';
              const idKNXDP = 'knx.0.Zentralbefehle_u_Visu.Visualisierung.Synohr_Text';
              const werte = 10;  // Anzahl der Messwerte für Mittelwertbildung
              
              var cnt = 0;  // Zähler
              var sum = 0;  // Summe der Messwerte
              var timer = null;
              
              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(timer) clearTimeout(timer)
                 if(dp.state.val === 0) {
                    timer = setTimeout(function()  {
                        sum = 0;
                        cnt = 0;
                        knxText(idKNXDP, 'PV 0 W');
                     }, 15000);  // 15 s    
                 }
                 if(cnt >= werte) {
                    var power = sum / cnt;
                    knxText(idKNXDP, 'PV ' + power.toFixed() + ' W');
                    cnt = 0;
                    sum = 0;
                 }
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                alexmosel
                schrieb am zuletzt editiert von
                #38

                Du bist Super, Vielen Vielen Dank

                Mein Held :D

                1 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  alexmosel
                  schrieb am zuletzt editiert von
                  #39

                  Hallo nochmal,

                  habe mit Enertext Kontakt gehabt, die sagen folgendeS:

                  Das Format hat tatsächlich 14 Zeichen. Auch Leerzeichen werden dargestellt. Um den Text auf weniger als 14 Zeichen zu begrenzen, muss am gewünschten Textende mindestens ein Nullzeichen stehen, also ein Zeichen mit dem Wert "00". Z. B. im Gruppenmonitor der ETS können Sie einen Text an diese Gruppenadresse senden, der aus bis zu 14 Zeichen besteht. Wenn Sie weniger als 14 Zeichen eingeben, füllt die ETS den Rest automatisch mit Nullzeichen auf.

                  Davon abgesehen würde ich jetzt noch gerne an ein weiteres Objekt übermitteln ob ich Beziehe oder Einspeise.

                  Beide Werte gibts als Objekt in IO, jedoch ist immer nur eines Positiv.

                  Das was Positiv ist müsste dann mit dem entsprechenden Test davor an die GA, also z.b. Einspeisung 500 W oder eben Bezug 500 W.

                  Man könnte ja generell das Mittelwertscript verwenden, es müsste nur differenzieren was gerade ausgegeben wird…

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #40

                    @alexmosel:

                    Wenn Sie weniger als 14 Zeichen eingeben, füllt die ETS den Rest automatisch mit Nullzeichen auf. `
                    Dann ändere mal die Funktion knxText()

                    function knxText(id, text) {
                        var txt = text;
                        for(var i = 0; i < 14 - text.length; i++) {
                            txt = txt + String.fromCharCode(0);
                        }
                        setState(id, txt);;
                    }
                    
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #41

                      @alexmosel:

                      würde ich jetzt noch gerne an ein weiteres Objekt übermitteln ob ich Beziehe oder Einspeise. `
                      Was ist das für ein Objekt ?
                      @alexmosel:

                      Beide Werte gibts als Objekt in IO, jedoch ist immer nur eines Positiv. `
                      Für Bezug und Einspeisung gibt es jeweils einen Datenpunkt, deren Wert negativ werden kann ?

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        alexmosel
                        schrieb am zuletzt editiert von
                        #42

                        Es gibt jeweils einen Datenpunkt, allerdings nur Positive Werte oder eben 0

                        Einer hat somit immer 0

                        1 Antwort Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          alexmosel
                          schrieb am zuletzt editiert von
                          #43

                          Mit dem Display kann ich erst morgen wieder probieren, da jetzt nurnoch 0 ankommt und somit das Script nix mehr sendet…

                          1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #44

                            Dann vielleicht so ?

                            const idEinspeis = '...';
                            const idBezug = '...';
                            const idAnz = '...';  // Anzeige-DP
                            
                            function anzeige(dir, val) {
                               setState(idAnz, dir + ': ' + val.toFixed() + ' W');
                            }
                            
                            on({id: idEinspeis, valGt: 0}, function(dp) {
                               anzeige('Einspeisung', dp.state.val)
                            });
                            
                            on({id: idBezug, valGt: 0}, function(dp) {
                               anzeige('Bezug', dp.state.val)
                            });
                            
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #45

                              @alexmosel:

                              Mit dem Display kann ich erst morgen wieder probieren, da jetzt nurnoch 0 ankommt und somit das Script nix mehr sendet… `
                              Zum Testen kannst Du am Skriptende ergänzen

                              knxText(idKNXDP, 'PV 500 W');
                              

                              dann das Skript starten und nach dem Test die Zeile am Ende wieder löschen.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • A Offline
                                A Offline
                                alexmosel
                                schrieb am zuletzt editiert von
                                #46

                                @paul53:

                                @alexmosel:

                                Mit dem Display kann ich erst morgen wieder probieren, da jetzt nurnoch 0 ankommt und somit das Script nix mehr sendet… `
                                Zum Testen kannst Du am Skriptende ergänzen

                                knxText(idKNXDP, 'PV 500 W');
                                

                                dann das Skript starten und nach dem Test die Zeile am Ende wieder löschen. `

                                Super, jetzt scrollt es nciht mehr…den Rest probiere ich morgen...

                                1 Antwort Letzte Antwort
                                0
                                • A Offline
                                  A Offline
                                  alexmosel
                                  schrieb am zuletzt editiert von
                                  #47

                                  Hallo, das Script gibt leider nichts aus…

                                  auch das müsste dann ja entsprechend wie das andere formatiert sein. Habe ohne wirkliche Programmierkenntnisse mal was probiert, brachte aber auch nix...

                                  const idEinspeis = 'modbus.0.inputRegisters.30867_Netz-Einspeisung';
                                  const idBezug = 'modbus.0.inputRegisters.30865_Netz-Bezug';
                                  const idAnz = 'knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung';  // Anzeige-DP
                                  const werte = 10;  // Anzahl der Messwerte für Mittelwertbildung
                                  
                                  var cnt = 0;  // Zähler
                                  var sum = 0;  // Summe der Messwerte
                                  var timer = null;
                                  
                                  function anzeige(id, text) {
                                      var txt = text;
                                      for(var i = 0; i < 14 - text.length; i++) {
                                          txt = txt + ' ';
                                      }
                                      setState(id, txt);
                                  }
                                  
                                  function anzeige(dir, val) {
                                     setState(idAnz, dir + ': ' + val.toFixed() + ' W');
                                  }
                                  
                                  on({id: idEinspeis, valGt: 0}, function(dp) {
                                     anzeige('Einspeisung', dp.state.val)
                                  });
                                  
                                  on({id: idBezug, valGt: 0}, function(dp) {
                                     anzeige('Bezug', dp.state.val)
                                  });
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • A Offline
                                    A Offline
                                    alexmosel
                                    schrieb am zuletzt editiert von
                                    #48

                                    …ok habe auch gerade die Fehlermeldung dazu im LOG gesehen..

                                    knx.0 2017-11-10 08:58:58.405 error at module.exports.machina.Fsm.extend.states.sendTunnReq._onEnter (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\FSM.js:236:14)

                                    knx.0 2017-11-10 08:58:58.405 error at FSM.send (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\Connection.js:172:28)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.(anonymous function) [as KNXNetHeader] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:594:35)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.(anonymous function) [as CEMI] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:501:8)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.(anonymous function) [as APDU] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:415:14)

                                    knx.0 2017-11-10 08:58:58.405 error at CustomProtocolWriter.ProtocolWriter$raw [as raw] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:74:24)

                                    knx.0 2017-11-10 08:58:58.405 error at Function.Buffer.concat (buffer.js:290:9)

                                    knx.0 2017-11-10 08:58:58.405 error TypeError: buf.copy is not a function

                                    knx.0 2017-11-10 08:58:58.405 error message knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung [object Object] buf.copy is not a function

                                    1 Antwort Letzte Antwort
                                    0
                                    • paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb am zuletzt editiert von
                                      #49

                                      Die Anzeige soll auf dem KNX-Display erfolgen ? Dann soll sicherlich wieder eine Mittelwertbildung erfolgen.

                                      const idEinspeis = 'modbus.0.inputRegisters.30867_Netz-Einspeisung';
                                      const idBezug = 'modbus.0.inputRegisters.30865_Netz-Bezug';
                                      const idAnz = 'knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung';  // Anzeige-DP
                                      const werte = 10;  // Anzahl der Messwerte für Mittelwertbildung
                                      
                                      var cnt = 0;  // Zähler
                                      var sum = 0;  // Summe der Messwerte
                                      
                                      function knxText(text) {
                                          var txt = text;
                                          for(var i = 0; i < 14 - text.length; i++) {
                                              txt = txt + String.fromCharCode(0);
                                          }
                                          setState(idAnz, txt);
                                      }
                                      
                                      function anzeige(dir, val) {
                                          cnt++;
                                          sum = sum + val;
                                          if(cnt >= werte) {
                                              var power = sum / cnt;
                                              knxText(dir + power.toFixed() + ' W');
                                              cnt = 0;
                                              sum = 0;
                                         }
                                      }
                                      
                                      on({id: idEinspeis, valGt: 0}, function(dp) {
                                         if(dp.oldState.val === 0) {
                                            cnt = 0;
                                            sum = 0;
                                         }   
                                         anzeige('Einsp ', dp.state.val)
                                      });
                                      
                                      on({id: idBezug, valGt: 0}, function(dp) {
                                         if(dp.oldState.val === 0) {
                                            cnt = 0;
                                            sum = 0;
                                         }   
                                         anzeige('Bezug ', dp.state.val)
                                      });
                                      

                                      Passt so der Text in die Displayzeile ohne zu scrollen ?

                                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #50

                                        Anmerkung: Du hast 2 unterschiedliche Funktionen mit identischem Namen (anzeige()) deklariert !!

                                        Habe es gerade mal getestet: Der Parser meckert (leider) nicht. Es wird die zuletzt deklarierte Funktion aufgerufen.

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        1 Antwort Letzte Antwort
                                        0
                                        • A Offline
                                          A Offline
                                          alexmosel
                                          schrieb am zuletzt editiert von
                                          #51

                                          Habe das Script so getestet, es soll der Mittelwert gebildet werden, jedoch kommt am Bus garnix mehr an…

                                          Das Scrollende Display benutze ich im moment nicht dafür, da das Blöd von der Darstellung war, aber ich zeige es auf dem Display eines anderen Tasters an...

                                          Beim Starten des Scriptes stzeht im Log von IObroker und kein Script funktioniert mehr bis zum neustart des adapters

                                          ` > knx.0 2017-11-10 15:47:40.781 error at module.exports.machina.Fsm.extend.states.sendTunnReq._onEnter (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\FSM.js:236:14)

                                          knx.0 2017-11-10 15:47:40.781 error at FSM.send (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\Connection.js:172:28)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.(anonymous function) [as KNXNetHeader] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:594:35)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.(anonymous function) [as CEMI] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:501:8)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.(anonymous function) [as APDU] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:20:18)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.KnxProtocol.define.write (C:\ioBroker\node_modules\iobroker.knx\lib\knx-mod\src\KnxProtocol.js:415:14)

                                          knx.0 2017-11-10 15:47:40.781 error at CustomProtocolWriter.ProtocolWriter$raw [as raw] (C:\ioBroker\node_modules\iobroker.knx\node_modules\binary-protocol\lib\writer.js:74:24)

                                          knx.0 2017-11-10 15:47:40.781 error at Function.Buffer.concat (buffer.js:290:9)

                                          knx.0 2017-11-10 15:47:40.781 error TypeError: buf.copy is not a function

                                          knx.0 2017-11-10 15:47:40.779 error message knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung [object Object] buf.copy is not a function `

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          342

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe