Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Kostal PikoMP xml Parsen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Kostal PikoMP xml Parsen

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

      Hallo zusammen,

      ich verzweifle leider etwas mit meinem neuen PikoMP Wechselrichter.
      Um die Werte in den iobroker zu bekommen muss man eine URL aufrufen und erhält als Ergebnis eine XML zurück. So weit der für mich einfache Teil.
      Allerdings ist die XML etwas untypisch aufgebaut.
      Der z.B. interessante Wert PV Power wird durch Type="AC_Power" definiert. Dieses steht am Ende.
      Wie muss ich das JavaScript erstellen, dass er nach dem Type sucht und mir die Value davor als Datenpunkt ausgibt?

      Hier das Ergebnis das ich vom Wechselrichter erhalte:

      <root>
      <Device Name="PIKO 3.6-2 MP plus" Type="Inverter" Platform="Net16" HmiPlatform="HMI17" NominalPower="3600" UserPowerLimit="nan" CountryPowerLimit="nan" Serial="BLABLA" OEMSerial="BLABLA" BusAddress="3" NetBiosName="BLABLA" WebPortal="PIKO Solar Portal" ManufacturerURL="kostal-solar-electric.com" IpAddress="192.168.200.137" DateTime="2021-09-29T16:28:09" MilliSeconds="083">
      <Measurements>
      <Measurement Value="228.3" Unit="V" Type="AC_Voltage"/>
      <Measurement Value="1.509" Unit="A" Type="AC_Current"/>
      <Measurement Value="331.0" Unit="W" Type="AC_Power"/>
      <Measurement Value="356.8" Unit="W" Type="AC_Power_fast"/>
      <Measurement Value="50.008" Unit="Hz" Type="AC_Frequency"/>
      <Measurement Value="391.4" Unit="V" Type="DC_Voltage1"/>
      <Measurement Value="197.0" Unit="V" Type="DC_Voltage2"/>
      <Measurement Value="0.848" Unit="A" Type="DC_Current1"/>
      <Measurement Unit="A" Type="DC_Current2"/>
      <Measurement Value="389.3" Unit="V" Type="LINK_Voltage"/>
      <Measurement Unit="W" Type="GridPower"/>
      <Measurement Unit="W" Type="GridConsumedPower"/>
      <Measurement Unit="W" Type="GridInjectedPower"/>
      <Measurement Unit="W" Type="OwnConsumedPower"/>
      <Measurement Value="100.0" Unit="%" Type="Derating"/>
      </Measurements>
      </Device>
      </root>
      

      Ein Script das mir das ganze abholt habe ich soweit, darin fehlt allerdings der spannende Teil...

      var xml2js = require('xml2js');
      var options = {
          explicitArray: false,
          mergeAttrs: true
      };
      var parser = new xml2js.Parser(options);
      var request = require('request');
       
      request('http://192.168.200.137/measurements.xml', function (error, response, body) {
        if (!error && response.statusCode == 200) {
         log("Body: " + body);
         parser.parseString(body, function (err, result) {            
                  if (err) {
                      log("Fehler: "+err);
                  } else {
                      log("Result: "+result.root.itemName);
                  }
              });
        } else  {
            log(error);
        }
      });
      
       
      
      

      Anscheinend ist der Wechselrichter nicht so oft im Einsatz den gefunden habe ich nicht wirklich eine Anleitung.

      Wäre für ein bis zwei Tipps sehr dankbar!

      paul53 Doggi 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @sebkru last edited by paul53

        @sebkru
        Was ergibt bei Änderung von Zeile 16 im Log?

                        log(result);
        

        Funktioniert der Adapter nicht?

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

          @paul53

          Hallo den Adapter habe ich noch nicht getestet, da er ja für den BA ist, habe ihn mal hinzugefügt, Werte bekomme ich aktuell keine, ist ja auch dunkel. 😉

          Obwohl wenn ich das aus dem Log ansehe müsste ja zumindest die Netzspannung da sein, aber es ist alles null.
          Denke also nicht das der funktioniert, aber ein Versuch war es wert.

          Das Ergebnis im Log ist einwandfrei. Ich weiß nur nicht wie ich dem Skript beibringen soll, dass er nach dem Type suchen soll und mir das Value dazu ausgeben soll.

          Logbuch zeigt den kompletten Inhalt der XML an:

          script.js.common.Krutina.Solar.PikoMP: {'root':{'Device':{'Name':'PIKO 3.6-2 MP plus','Type':'Inverter','Platform':'Net16','HmiPlatform':'HMI17','NominalPower':'3600','UserPowerLimit':'nan','CountryPowerLimit':'nan','Serial':'BLA','OEMSerial':'BLA','BusAddress':'3','NetBiosName':'BLA','WebPortal':'PIKO Solar Portal','ManufacturerURL':'kostal-solar-electric.com','IpAddress':'192.168.200.137','DateTime':'2021-09-29T20:28:51','MilliSeconds':'928','Measurements':{'Measurement':[{'Value':'229.0','Unit':'V','Type':'AC_Voltage'},{'Unit':'A','Type':'AC_Current'},{'Unit':'W','Type':'AC_Power'},{'Unit':'W','Type':'AC_Power_fast'},{'Value':'50.010','Unit':'Hz','Type':'AC_Frequency'},{'Value':'3.8','Unit':'V','Type':'DC_Voltage1'},{'Value':'3.3','Unit':'V','Type':'DC_Voltage2'},{'Unit':'A','Type':'DC_Current1'},{'Unit':'A','Type':'DC_Current2'},{'Value':'0.9','Unit':'V','Type':'LINK_Voltage'},{'Unit':'W','Type':'GridPower'},{'Unit':'W','Type':'GridConsumedPower'},{'Unit':'W','Type':'GridInjectedPower'},{'Unit':'W','Type':'OwnConsumedPower'},{'Value':'100.0','Unit':'%','Type':'Derating'}]}}}}
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @sebkru last edited by

            @sebkru
            Ansatz:

            const werte = result.root.Device.Measurements.Measurement;
            for(let i = 0; i < werte.length; i++) {
                if(werte[i].Value != undefined) log(werte[i].Type + ': ' + werte[i].Value);
            }
            
            S 1 Reply Last reply Reply Quote 0
            • S
              sebkru @paul53 last edited by

              @paul53

              Hallo,
              vielen Dank für den Tipp, läuft einwandfrei!

              Für alle die auch einen Kostal Piko MP nutzen und auf der Suche nach der Lösung sind, ich veröffentliche das Skript wenn ich zu 100% damit zufrieden bin.

              ? 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @sebkru last edited by

                @sebkru
                Hallo, ich habe gerade meinen Kostal Wechselrichter in Betrieb genommen.
                Kannst du dein Script zur Verfügung stellen? 🙂

                Wäre prima.

                Danke

                Grüße
                Markus

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Guest last edited by

                  @markus-strobel sagte in Kostal PikoMP xml Parsen:

                  , ich habe gerade meinen Kostal Wechselrichter in Betrieb genommen.

                  welchen?

                  da gibt es verschiedene Systeme

                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @Homoran last edited by

                    @homoran

                    PIKO 3.0-2 MP plus

                    Grüße
                    Markus

                    1 Reply Last reply Reply Quote 0
                    • Doggi
                      Doggi Developer @sebkru last edited by Doggi

                      Hallo zusammen,

                      ich habe für einen Freund einen Adapter geschrieben, der genau für die Piko PV Anlage da ist und die Messwerte ausließt.

                      Hier der Link zum Test Beitrag: https://forum.iobroker.net/topic/55440/test-adapter-kostal-piko-mp-plus-v0-0-x-github-latest

                      Vielleicht hilft der ja und ihr könnt den mit testen.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      669
                      Online

                      31.7k
                      Users

                      79.6k
                      Topics

                      1.3m
                      Posts

                      5
                      9
                      573
                      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