Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jörg 5
      Jörg 5 last edited by

      Hallo!

      Ich bin mit ioBroker erst einige Monate am Start. Leider ist Blocky für mich völlig unverständlich und für Javascript bin ich noch zu unwissend um das allein geregelt zu bekommen. Daher meine Frage hier, ob mir jemand helfen kann.

      Ich habe wie oben beschrieben einen Kaco Wechselrichter, der mir über den Aufruf einer IP/Link (http://192.168.10.214:8484/getdevdata.cgi?device=2&sn=10.0NX3**********) einen JSON Antwort gibt

      	
      flg	1
      tim	"20240210112416"
      tmp	381
      fac	5002
      pac	1377
      sac	1377
      qac	0
      eto	495
      etd	22
      hto	110
      pf	100
      wan	0
      err	0
      vac	
      0	2341
      1	2343
      2	2343
      iac	
      0	20
      1	20
      2	20
      vpv	
      0	6085
      1	3628
      ipv	
      0	155
      1	134
      str	[]
      

      In ROHDATEN sieht das so aus:

      {"flg":1,"tim":"20240210112416","tmp":381,"fac":5002,"pac":1377,"sac":1377,"qac":0,"eto":495,"etd":22,"hto":110,"pf":100,"wan":0,"err":0,"vac":[2341,2343,2343],"iac":[20,20,20],"vpv":[6085,3628],"ipv":[155,134],"str":[]}
      

      Mein Ansatz war jetzt gedanklich folgender, ich möchte die Werte jeweils in einen eigenen Datenpunkt ablegen (alle X Sekunden) um dann in ioBroker diese auszuwerten wie bspw PV Produktion Ja/Nein und wie viel produziert wird.

      Wie könnte man das am besten realisieren? Bevorzugt würde ich javascript nutzen, da es sich für mich plausibler beim lernen verstehen lässt. Wie müsste so ein Script aussehen, was diesen Link/IP alle X Sekunden aufruft, die JSON Daten abgreift und in einen jeweiligen, eigenen Datenpunkt schreibt?

      Ich habe hier schon mal ein ähnliches Script gesehen, welches aber auf MQTT setzte. Da war ich mir unsicher ob das für mich anwendbar ist.

      Die weitere Verarbeitung der einzelnen Daten würde dann per ioBroker und/oder CCU3 erfolgen. Also mir geht es rein um das abholen der Daten und diese in eine art Datenbank zu schrieben.

      Vielen Dank schon mal an euch für eure Hilfe.

      Grüße Jörg

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Jörg 5 last edited by

        @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

        Wie könnte man das am besten realisieren?

        du könntest es über ein Blockly über den Block "Attribut xxx von rohdaten" (zb. Attribut pac würde dir die AC Leistung liefern) in eigene Datenpunkte schreiben, oder über Aliase lösen.

        Jörg 5 1 Reply Last reply Reply Quote 2
        • Jörg 5
          Jörg 5 @Homoran last edited by

          Hi @homoran
          Vielen Dank für deine Antwort.
          Blocky schnalle ich absolut nicht. Bei Javascript verstehe ich wenigstens teilweise was passiert.
          Bin blutiger Anfänger, aber ich kann zumindest in Scripten nachvollziehen was passiert.

          Kennst Du dich mit Blocky gut aus und kannst mir evtl das hier zeigen wie sich das zusammen setzt?

          Viele Grüße

          Jörg

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Jörg 5 last edited by Homoran

            @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

            Blocky schnalle ich absolut nicht. Bei Javascript verstehe ich wenigstens teilweise was passiert.

            geht mir weitestgehend genauso, nur umgekehrt.

            Bei JS muss dir jemand anderes helfen.

            @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

            Kennst Du dich mit Blocky gut aus und kannst mir evtl das hier zeigen wie sich das zusammen setzt?

            I'll try my very best!

            landet das JSON in einem Datenpunkt?

            EDIT:
            Hier einmal das Grundgerüst
            Screenshot_20240210-132204_Firefox.jpg

            Statt Datenpunkt habe ich den result in eine Variable geschrieben, und anstelle in den eigenen Datenpunkt nur als debug ausgegeben

            EDIT2:
            Hier
            Screenshot_20240210-132805_Firefox.jpg

            musst du

            • ggf. den Cron anpassen
            • den URL vervollständigen
            • die Variable result händisch erstellen
            • einen DP für Power AC erstellt haben
              • und diesen hier eintragen

            EDIT3:
            Dieses wäre der JS Code

            var result;
            
            
            schedule("* * * * *", async function () {
              try {
                require("request")('http://192.168.10.214:8484/getdevdata.cgi?device=2&sn=10.0NX3**********', async function (error, response, result) {
                  setState("Object ID", getAttr(result, 'pac'), true);
                }).on("error", function (e) {console.error(e);});
              } catch (e) { console.error(e); }
            });
            
            paul53 Jörg 5 2 Replies Last reply Reply Quote 1
            • paul53
              paul53 @Homoran last edited by paul53

              @homoran sagte: Dieses wäre der JS Code

              Etwa so ohne Blockly:

              schedule('*/10 * * * * *', function() {
                  request('http://192.168.10.214:8484/getdevdata.cgi?device=2&sn=10.0NX3**********', function(error, response, result) {
                      if(!error && result) {
                          const obj = JSON.parse(result);
                          setState('hm-rega.0.35000', obj.pac); // SV vom Typ "Zahl"
                      }
                  });
              });
              
              Jörg 5 2 Replies Last reply Reply Quote 2
              • Jörg 5
                Jörg 5 @Homoran last edited by

                @homoran habs mal probiert, er haut mir aber die Log voll mit Fehlern und die Systemvariable PV Erzeigung "Zahl" wird nicht gefüllt...

                Das scheint kein Ansatz zu sein, der den Wert "pac" in eine Systemvariable in der CCU3 schreibt.

                In der Log sieht das dann so aus:

                javascript.0
                	2024-02-10 13:54:00.180	info	State value to set for "hm-rega.0.35000" has to be type "string" but received type "number"
                javascript.0
                	2024-02-10 13:54:00.163	warn	at processTicksAndRejections (node:internal/process/task_queues:82:21)
                javascript.0
                	2024-02-10 13:54:00.163	warn	at endReadableNT (node:internal/streams/readable:1400:12)
                javascript.0
                	2024-02-10 13:54:00.162	warn	at IncomingMessage.emit (node:domain:489:12)
                javascript.0
                	2024-02-10 13:54:00.162	warn	at IncomingMessage.emit (node:events:529:35)
                javascript.0
                	2024-02-10 13:54:00.162	warn	at Object.onceWrapper (node:events:631:28)
                javascript.0
                	2024-02-10 13:54:00.162	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1076:12)
                javascript.0
                	2024-02-10 13:54:00.162	warn	at Request.emit (node:domain:489:12)
                javascript.0
                	2024-02-10 13:54:00.161	warn	at Request.emit (node:events:517:28)
                javascript.0
                	2024-02-10 13:54:00.161	warn	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1154:10)
                javascript.0
                	2024-02-10 13:54:00.161	warn	at Request.emit (node:domain:489:12)
                javascript.0
                	2024-02-10 13:54:00.161	warn	at Request.emit (node:events:517:28)
                javascript.0
                	2024-02-10 13:54:00.160	warn	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                javascript.0
                	2024-02-10 13:54:00.160	warn	at Request._callback (/opt/iobroker/node_modules/iobroker.javascript/lib/request.js:27:17)
                javascript.0
                	2024-02-10 13:54:00.160	warn	at script.js.PV.Erzeugung:7:7
                javascript.0
                	2024-02-10 13:54:00.159	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1740:20)
                javascript.0
                	2024-02-10 13:54:00.156	warn	You are assigning a number to the state "hm-rega.0.35000" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become an error in future versions.
                
                paul53 Homoran 3 Replies Last reply Reply Quote 0
                • Jörg 5
                  Jörg 5 @paul53 last edited by

                  @paul53 said in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                  schedule('*/10 * * * * *', function() {

                  Ich probiere deine Variante mal aus. Die vom @Homoran (Blocky Variante) erzeugte nur Warnungen und füllte mir nicht die Systemvariable in der CCU3.

                  Ich probiere deine Option mal.

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Jörg 5 last edited by paul53

                    @jörg-5 sagte: Systemvariable in der CCU3 schreibt

                    Die SV muss vom Typ "Zahl" sein. Habe es oben angepasst für eine SV, die unbestätigt geschrieben werden muss, damit sie an die CCU gesendet wird.

                    1 Reply Last reply Reply Quote 1
                    • Homoran
                      Homoran Global Moderator Administrators @Jörg 5 last edited by

                      @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                      er haut mir aber die Log voll mit Fehlern und die Systemvariable PV Erzeigung "Zahl" wird nicht gefüllt...

                      dann hat die SysVar nicht den korrekten Typ

                      1 Reply Last reply Reply Quote 1
                      • Homoran
                        Homoran Global Moderator Administrators @Jörg 5 last edited by

                        @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                        You are assigning a number to the state "hm-rega.0.35000" which expects a string. Please fix your code to use a string or change the state type to number.

                        1 Reply Last reply Reply Quote 1
                        • Jörg 5
                          Jörg 5 @paul53 last edited by Jörg 5

                          @paul53 said in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                          @homoran sagte: Dieses wäre der JS Code

                          Etwa so ohne Blockly:

                          schedule('*/10 * * * * *', function() {
                              request('http://192.168.10.214:8484/getdevdata.cgi?device=2&sn=10.0NX3**********', function(error, response, result) {
                                  if(!error && result) {
                                      const obj = JSON.parse(result);
                                      setState('hm-rega.0.35000', obj.pac); // SV vom Typ "Zahl"
                                  }
                              });
                          });
                          

                          Danke @paul53 dieser Ansatz hat top funktioniert!
                          Danke auch an Dich @Homoran für deinen vorherigen Ansatz mit Blocky.

                          Jetzt kann ich bspw in der CCU3 und dem Zählermodul die Erzeugung gegene den Verbrauch stellen und dann zusätzliche Verbraucher wie bspw einen Heizstab ansteuern oder die Steckdose die den eBike Akku lädt.

                          Super lieben Dank an euch beide!

                          Eine Frage habe ich aber noch dazu, die Systemvariable ist die "hm-rega.0.35000" richtig? Wenn ich jetzt bspw einen weiteren Wert auslesen will, dann könnte ich den ggf anpassen und die 35000 gegen die neue Systemvariable austauschen?

                          Viele Grüße

                          Jörg

                          PS: Kleiner Einschub noch...
                          Ich erhalte immer noch die Fehler dazu:

                          javascript.0
                          	2024-02-10 14:08:10.076	info	State value to set for "hm-rega.0.35000" has to be type "string" but received type "number"
                          javascript.0
                          	2024-02-10 14:08:10.067	warn	at processTicksAndRejections (node:internal/process/task_queues:82:21)
                          javascript.0
                          	2024-02-10 14:08:10.067	warn	at endReadableNT (node:internal/streams/readable:1400:12)
                          javascript.0
                          	2024-02-10 14:08:10.067	warn	at IncomingMessage.emit (node:domain:489:12)
                          javascript.0
                          	2024-02-10 14:08:10.067	warn	at IncomingMessage.emit (node:events:529:35)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at Object.onceWrapper (node:events:631:28)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1076:12)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at Request.emit (node:domain:489:12)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at Request.emit (node:events:517:28)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1154:10)
                          javascript.0
                          	2024-02-10 14:08:10.066	warn	at Request.emit (node:domain:489:12)
                          javascript.0
                          	2024-02-10 14:08:10.065	warn	at Request.emit (node:events:517:28)
                          javascript.0
                          	2024-02-10 14:08:10.065	warn	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                          javascript.0
                          	2024-02-10 14:08:10.065	warn	at Request._callback (/opt/iobroker/node_modules/iobroker.javascript/lib/request.js:27:17)
                          javascript.0
                          	2024-02-10 14:08:10.065	warn	at script.js.PV.Erzeugung_JavaScript:9:13
                          javascript.0
                          	2024-02-10 14:08:10.064	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1740:20)
                          javascript.0
                          	2024-02-10 14:08:10.062	warn	You are assigning a number to the state "hm-rega.0.35000" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become an error in future versions.
                          
                          Homoran paul53 2 Replies Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @Jörg 5 last edited by Homoran

                            @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                            die Systemvariable ist die "hm-rega.0.35000" richtig?

                            wie meinst du das?
                            die kommt doch aus driner CCU, was soll da falsch oder richtig sein?
                            auf jeden Fall war sie nicht

                            @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                            die Systemvariable PV Erzeigung "Zahl" wird nicht gefüllt...

                            sondern Zeichenkette/String.

                            @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                            dann könnte ich den ggf anpassen und die 35000 gegen die neue Systemvariable austauschen?

                            wenn du die dafür in der CCU angelegt hast, ja

                            aber warum brauchst du alles in der CCU?

                            Jörg 5 1 Reply Last reply Reply Quote 0
                            • Jörg 5
                              Jörg 5 @Homoran last edited by

                              @homoran Ich habe mich evtl falsch ausgedrückt. Ich meinte damit ob die beschriebene Systemvariable diesen Namen hat und wenn ich bspw einen anderen Wert noch gern in der CCU hätte, ich dann bspw diesen Namen anpassen muss. War für mich eher eine Verständnisfrage dazu.

                              Zeichenkette, okay. Ich hatte das als Zahl angenommen, da man die vergleichen kann. Habe es jetzt auf Zeichenkette umgestellt.

                              Warum ich die Werte in der CCU haben möchte liegt daran, das ich in der CCU per Program mehrere Zustände abfrage von Aktoren und dem Stromzähler und daraus inkl Wetter und Helligkeit errechne wie viel Strom nach Verbrauch im Haus noch über sein könnte um entsprechend die Verbraucher zuschalten zu können, die nur bei ausreichender PV Erzeugung geschaltet sein sollen.

                              Im ioBroker werde ich den Wert vermutlich weiter nutzen, aber in der CCU läuft der eigentliche Prozess. Also mit Abfrage des aktuellen Stromverbrauch aus dem Stromzähler.

                              Evtl. noch interessant für euch zu wissen, das ich noch einen zweiten Wechselrichter habe, der sich aber nich auslesen lässt. ich muss daher den Wert den ich erhalte umrechnen auf die Fläsche der PV um einen kompletten Ertrag kummulieren zu können.

                              Ob das am Ende funktioniert, weiss ich noch nicht. Da arbeite ich noch dran. 😄

                              Homoran 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Jörg 5 last edited by paul53

                                @jörg-5 sagte: Ich erhalte immer noch die Fehler dazu:

                                Wenn es ein String sein soll, dann hänge die Maßeinheit dran:

                                            setState('hm-rega.0.35000', obj.pac + ' W'); 
                                            setState('hm-rega.0.35001', obj.fac / 100 + ' Hz'); 
                                

                                Damit kann man aber nicht rechnen. Ändere es besser in der CCU in Typ "Zahl" und starte anschließend die Instanz neu.

                                Jörg 5 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @Jörg 5 last edited by

                                  @jörg-5 bevor wir hier alle aneinander vorbeireden

                                  Der Name einer SysVar ist eigentlich irrelevant, sollte aber den Inhalt immer klar definieren
                                  Der Typ muss jedoch Zahl sein, wenn du damit rechnen willst.

                                  Für jeden Wert mit dem du rechnen willst, btürauchst du eine SysVar vom Typ Zahl auf der CCU.

                                  zeig doch mal die Einstellungen davon

                                  1 Reply Last reply Reply Quote 0
                                  • Jörg 5
                                    Jörg 5 @paul53 last edited by

                                    @paul53 said in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                                    @jörg-5 sagte: Ich erhalte immer noch die Fehler dazu:

                                    Wenn es ein String sein soll, dann hänge die Maßeinheit dran:

                                                setState('hm-rega.0.35000', obj.pac + ' W'); 
                                                setState('hm-rega.0.35001', obj.fac + ' W'); 
                                    

                                    Damit kann man aber nicht rechnen. Ändere es besser in der CCU in Typ "Zahl" und starte anschließend die Instanz neu.

                                    Da hat sich ein Fehler eingeschlichen. fac it die Spannung. 499 Volt. Und die Strings sind in pac/sac zusammen gefasst.
                                    Der andere Wechselrichter hat ähnliche Werte aktuell.

                                    Homoran paul53 2 Replies Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @Jörg 5 last edited by

                                      @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                                      fac it die Spannung. 499 Volt.

                                      eher nicht, wahrscheinlich die frequency mit 49.9Hz

                                      Jörg 5 1 Reply Last reply Reply Quote 1
                                      • paul53
                                        paul53 @Jörg 5 last edited by

                                        @jörg-5 sagte: fac it die Spannung

                                        Ich habe keine Ahnung, was die Kürzel bedeuten. Sollte nur als Beispiel dienen.

                                        Jörg 5 Homoran 2 Replies Last reply Reply Quote 2
                                        • Jörg 5
                                          Jörg 5 @Homoran last edited by

                                          @homoran said in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                                          @jörg-5 sagte in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                                          fac it die Spannung. 499 Volt.

                                          eher nicht, wahrscheinlich die frequency mit 49.9Hz

                                          Ja, stimmt! Vor lauter Zahlen nicht erkannt...

                                          1 Reply Last reply Reply Quote 0
                                          • Jörg 5
                                            Jörg 5 @paul53 last edited by Jörg 5

                                            @paul53 said in Kaco Blueplanet NX3 10.0 Wechselrichter auslesen (JSON):

                                            @jörg-5 sagte: fac it die Spannung

                                            Ich habe keine Ahnung, was die Kürzel bedeuten. Sollte nur als Beispiel dienen.

                                            Ich hatte kurz überlegt noch einen anderen Wert auszulesen, aber so wie es ursprünglich war, funktioniert es bis auf die vielen Warnungen ganz hervorragend!

                                            So sieht das übrigens in der App des Herstellers aus:
                                            IMG_20240210_143410.jpg

                                            Nur um euch mal einen Einblick zu geben... Ist ja evtl interessant das zu wissen.

                                            paul53 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            879
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            47
                                            1963
                                            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