Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. sebkru

    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

    S
    • Profile
    • Following 1
    • Followers 0
    • Topics 2
    • Posts 4
    • Best 0
    • Groups 1

    sebkru

    @sebkru

    0
    Reputation
    6
    Profile views
    4
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    sebkru Follow
    Starter

    Latest posts made by sebkru

    • RE: Kostal PikoMP xml Parsen

      @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.

      posted in Skripten / Logik
      S
      sebkru
    • RE: Kostal PikoMP xml Parsen

      @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'}]}}}}
      
      posted in Skripten / Logik
      S
      sebkru
    • Kostal PikoMP xml Parsen

      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!

      posted in Skripten / Logik
      S
      sebkru
    • Status Anzeige mit e-Paper Display

      Hallo Community,

      ich bastele in meinem aktuellen Projekt ein e-paper Display zusammen auf dem ich gerne auch Daten aus iOBroker anzeigen möchte.

      Mit ESPeasy klappt das nicht, da es keine richtige Unterstützung für e-paper Displays gibt, und ich mir gerne alle Möglichkeiten offen lassen möchte.

      Ich sollte wohl noch noch erwähnen, dass ich alles zusammenkopiert habe, da Arduino für mich eine neue Welt ist. (Kann php programmieren aber kein C) 8-)

      Ich bin auf die Möglichkeit mit simpleAPI gestossen und habe mich schon gefreut, dass ich die Lösung habe.. Pustekuchen.. :x

      Wenn ich die URL: "http://192.168.200.101:8087/getPlainVal … Temperatur" im Browser aufrufe bekomme ich genau was ich will "3.5".

      Jetzt muss die Temperatur nur noch in ein Variable aber genau da scheiter ich.

      Die Anleitung: https://glaskugelsehen.wordpress.com/20 … 66-teil-1/ hat mir leider nicht weiter geholfen, da ich keine Verbindung bekomme.

      Im Wlan ist der Wemos D1 Mini, denn die Uhrzeit frage ich bereits vom Zeitserver ab und schreibe diese auf das Display.

      Ich bin mir sicher das es für einen mit Erfahrung in Arduino ein Kinderspiel ist, aber nicht für mich, daher hoffe ich hier Hilfe zu bekommen, denn ein Status Display via e-Paper Display ist finde ich eine tolle Sache.

      Hier der Auszug aus dem Code:

      //Werte aus iobroker
      const char* host = "http://192.168.200.101:8087";
      // URL zum Auslesen http://192.168.200.101:8087/getPlainValue/javascript.0.Systeminfos.RaspberryPi.Stelzenhaus.Aussen_Temperatur  -- Ausgabe 19.25
      float tempaussen; 
      
      ....
      
      void loop() {
        Serial.print("connecting to ");
        Serial.println(host);
        // Use WiFiClient class to create TCP connections
        WiFiClient client;
        const int httpPort = 80;
        if (!client.connect(host, httpPort)) {
          Serial.println("connection failed");
          return;
        }
      
        // We now create a URI for the request
        String url = "/getPlainValue/javascript.0.Systeminfos.RaspberryPi.Stelzenhaus.Temperatur_Haus";
      
        Serial.print("Requesting URL: ");
        Serial.println(url);
      
        // This will send the request to the server
        client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                     "Host: " + host + "\r\n" + 
                     "Connection: close\r\n\r\n");
        // start waiting for the response             
        unsigned long lasttime = millis();
        while (!client.available() && millis() - lasttime < 1000) {delay(1);}   // wait max 1s for data
        // Read all the lines of the reply from server and print them to Serial
        while(client.available()){
          char readchar = client.read();
          Serial.print(readchar);
        }
        Serial.println();
        Serial.println("closing connection");
        delay(5000);
      
        // Anzeige aufbauen
      
      

      Anbei noch ein Bild von meinem Projekt:
      9844_img_7494.jpg

      Für einen Tipp wäre ich sehr dankbar!

      Gruß

      Sebastian

      posted in Praktische Anwendungen (Showcase)
      S
      sebkru
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo