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

      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 Reply Last reply Reply Quote 0
      • A
        alexmosel last edited by

        …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 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          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 ?

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

            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.

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

              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 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                Das wird wohl am Datenpunkt liegen. Poste bitte die Eigenschaften (raw) des Datenpunktes 'knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung'. Um zu sehen, ob das Skript ohne den Datenpunkt funktioniert, ersetze zum Testen in der Funktion knxText()

                    // setState(idAnz, txt);
                    log(txt.length + ' ' + txt);
                
                
                1 Reply Last reply Reply Quote 0
                • A
                  alexmosel last edited by

                  …binmir nicht sicher wo ich das ersetzen soll...

                  hier das raw

                  {
                    "common": {
                      "name": "",
                      "type": "number",
                      "role": "value",
                      "unit": "W",
                      "def": 0,
                      "read": true,
                      "write": false
                    },
                    "native": {
                      "regType": "inputRegs",
                      "type": "int32be",
                      "address": 30865,
                      "len": 2,
                      "offset": 0,
                      "factor": 1
                    },
                    "acl": {
                      "object": 1638,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator",
                      "state": 1638
                    },
                    "_id": "modbus.0.inputRegisters.30865_Netz-Bezug",
                    "type": "state"
                  }
                  
                  1 Reply Last reply Reply Quote 0
                  • A
                    alexmosel last edited by

                    Scheint wirklich am Datenpunkt zu liegen, der sollte eigentlich genau so sein wie der andere…

                    hier raw vom Datenpunkt Bezug/Einspeisung

                    ` > {

                    "_id": "knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung",

                    "type": "state",

                    "common": {

                    "name": "PV_Bezug_oder_Einspeisung",

                    "type": "string",

                    "role": "text.string",

                    "min": null,

                    "max": null,

                    "read": false,

                    "write": true

                    },

                    "native": {

                    "dpt": "",

                    "address": "0/7/1",

                    "addressRefId": "P-057F-0_GA-386",

                    "statusGARefId": "",

                    "actGARefId": ""

                    },

                    "acl": {

                    "object": 1638,

                    "owner": "system.user.admin",

                    "ownerGroup": "system.group.administrator",

                    "state": 1638

                    }

                    } `

                    und hier von dem PV , der funktioniert…
                    ` > {

                    "_id": "knx.0.Zentralbefehle_u_Visu.Visualisierung.Aktuelle_PV_Leistung",

                    "type": "state",

                    "common": {

                    "name": "Aktuelle_PV_Leistung",

                    "type": "string",

                    "read": false,

                    "write": true,

                    "role": "text.string",

                    "min": "",

                    "max": ""

                    },

                    "native": {

                    "dpt": "DPT16.000",

                    "address": "0/7/0",

                    "addressRefId": "P-057F-0_GA-385",

                    "statusGARefId": "",

                    "actGARefId": ""

                    },

                    "acl": {

                    "object": 1638,

                    "state": 1638

                    }

                    } `

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

                      Der DP "knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung" sieht soweit o.k. aus, außer dass native.dpt leer ist.

                      Ich würde

                      __"min": null,

                      "max": null,__

                      löschen, denn die machen bei einem String keinen Sinn.

                      EDIT: Die Werte null für "min" und "max" deuten darauf hin, dass die KNX-Quelle kein String ist, sondern ein Objekt; ebenfalls die unterste (1.) Fehlermeldung. Da hast Du wohl einen falschen Datenpunkt für die Anzeige gewählt ?

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

                        Moin,

                        scheint jetzt tatsächlich zu funktionieren…

                        Aus mir nicht verständlichen Gründen wurde das Objekt vollkommen falsch importiert und ließ sich auch nicht wirklich ändern.

                        Habe es dann gelöscht und neu importiert, das liess sich dann auch ändern... nach Neustart des Adapters scheint es zu laufen...ich beobachte noch

                        Vielen Vielen Dank erstmal

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

                          Gerade gesehen,

                          bei Nacht, also wenn der Wechselrichter abgeschaltet hat, gibt er als PV -Erzeugungswert -2147483648 W aus…

                          Kommt das Script damit auch klar ? Aktuell steht noch die 0 W Meldung da, aber wird auch nicht mehr aktualisiert...

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

                            @alexmosel:

                            bei Nacht, also wenn der Wechselrichter abgeschaltet hat, gibt er als PV -Erzeugungswert -2147483648 W aus…

                            Kommt das Script damit auch klar ? Aktuell steht noch die 0 W Meldung da, aber wird auch nicht mehr aktualisiert... `
                            Um sicher zu gehen, dass es auch bei Sonnenaufgang funktioniert, ändere

                               if(dp.state.val === 0) {
                            

                            in

                               if(dp.state.val <= 0) {
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • C
                              chibitz last edited by

                              Moin,
                              ist zwar schon 1,5 Jahre alt, aber mich würde deine aktuelle Konfiguration interessieren. Ich hätte auch gerne die Werte meiner 3 SMA-WR (über Modbus) auf dem KNX-Bus..

                              Wie sieht dein aktuelles Skript aus? Muss doch auch irgendwie mit Blockly gehen...

                              Danke
                              Gruß

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

                                Hallo, lange Zeit liefen meine Scripte jetzt völlig problemlos. Jetzt möchte ich gerne den Windows-Rechner der doch recht viel Energie verbraucht gegen einen Raspberry austauschen, habe dort IO Broker am laufen, alles eingerichtet.
                                Er zeigt mir bei den Objekten im KNX beim passenden Objekt auch die Werte aus Modbus an, also funktionieren die 2 Scripte noch.

                                Problem ist, er sendets nicht auf den KNX Bus, folgender Fehler steht im LOG

                                nx.0	2019-09-01 19:35:00.656	error	at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                                knx.0	2019-09-01 19:35:00.656	error	at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:332:8)
                                knx.0	2019-09-01 19:35:00.656	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                                knx.0	2019-09-01 19:35:00.656	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                                knx.0	2019-09-01 19:35:00.656	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:228:12)
                                knx.0	2019-09-01 19:35:00.656	error	at Socket.onevent (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:270:10)
                                knx.0	2019-09-01 19:35:00.656	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                                knx.0	2019-09-01 19:35:00.656	error	at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                                knx.0	2019-09-01 19:35:00.656	error	at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3705:37)
                                knx.0	2019-09-01 19:35:00.656	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.knx/knx.js:79:2901)
                                knx.0	2019-09-01 19:35:00.656	error	TypeError: Cannot read property 'write' of undefined
                                knx.0	2019-09-01 19:35:00.654	error	message knx.0.Zentralbefehle_u_Visu.Visualisierung.PV_Bezug_oder_Einspeisung [object Object] Cannot read property 'write' of undefined
                                

                                Verstehen tue ich das nicht wirklich.....kann mir jemand helfen ?

                                Besten Dank

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

                                  Problem scheint gelöst, habe ältere Adapterversion installiert und die Struktur aus der vorherigen Installation kopiert damit gings....

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  605
                                  Online

                                  31.8k
                                  Users

                                  79.9k
                                  Topics

                                  1.3m
                                  Posts

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