Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

TeamO
Beiträge: 353
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 59 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von TeamO »

Hallo Thomas,

kann ja. Aber von der Solaranzeige wird er NUR über USB-RS485 ausgelesen. Entweder Du liest ihn darüber aus, oder halt nicht.
Du kannst Dich ja selber gerne daran setzen und eine entsprechende Programmierung machen. Da es schon ein Script für den Piko gibt, wird Ulrich sicher vorerst nicht extra noch eine machen, damit er auch über LAN ausgelesen werden kann. Da stehen vorher noch viele andere Geräte auf der Liste, welche noch nicht inkludiert sind.
Sei doch froh, das er überhaupt ausgelesen wird und Ulrich dieses Projekt im Alleingang stemmt.

thomas1000
Beiträge: 24
Registriert: Fr 19. Mär 2021, 16:26
Hat sich bedankt: 2 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von thomas1000 »

Hallo!

Ich habe ja schon mehrfach geschrieben, dass ich selbst eine entsprechende Anpassung programmieren werde (ich progammiere schließlich schon seit 20+ Jahren in PHP).

Bisher gebe ich die Daten nur im Log aus, was aber vielversprechend aussieht:

Code: Alles auswählen

27.03. 18:03:16 |----------------   Start  kostal_piko_mp.php    ---------------------
27.03. 18:03:16    -Zentraler Timestamp: 1616864581
27.03. 18:03:16 o  -Hardware Version: 4B
27.03. 18:03:16    -Als erstes lesen wir die XML-Datei vom Wechselrichter
27.03. 18:03:16    -Versuche XML-Datei zu laden: http://192.168.0.173/measurements.xml
27.03. 18:03:16    -XML-Datei erfolgreich geladen!
27.03. 18:03:16 +  -Die Daten werden ausgelesen...
27.03. 18:03:16    ->>>> Kopfdaten:
27.03. 18:03:16    -Name = "PIKO 3.6-2 MP plus"
27.03. 18:03:16    -Type = "Inverter"
27.03. 18:03:16    -Platform = "Net16"
27.03. 18:03:16    -HmiPlatform = "HMI17"
27.03. 18:03:16    -NominalPower = "3600"
27.03. 18:03:16    -UserPowerLimit = "nan"
27.03. 18:03:16    -CountryPowerLimit = "nan"
27.03. 18:03:16    -Serial = "766346FI007475680011"
27.03. 18:03:16    -OEMSerial = "10351316"
27.03. 18:03:16    -BusAddress = "1"
27.03. 18:03:16    -NetBiosName = "INV007475680011"
27.03. 18:03:16    -WebPortal = "PIKO Solar Portal"
27.03. 18:03:16    -ManufacturerURL = "kostal-solar-electric.com"
27.03. 18:03:16    -IpAddress = "192.168.0.173"
27.03. 18:03:16    -DateTime = "2021-03-27T17:01:50"
27.03. 18:03:16    -MilliSeconds = "960"
27.03. 18:03:16    ->>>> aktuelle Werte:
27.03. 18:03:16    -Demo: 2021-03-27T17:01:50
27.03. 18:03:16    -Value: 234.6 Unit: V Type: AC_Voltage
27.03. 18:03:16    -Value: 0.884 Unit: A Type: AC_Current
27.03. 18:03:16    -Value: 177.9 Unit: W Type: AC_Power
27.03. 18:03:16    -Value: 197.4 Unit: W Type: AC_Power_fast
27.03. 18:03:16    -Value: 50.029 Unit: Hz Type: AC_Frequency
27.03. 18:03:16    -Value: 148.5 Unit: V Type: DC_Voltage1
27.03. 18:03:16    -Value: 330.7 Unit: V Type: DC_Voltage2
27.03. 18:03:16    -Value: 0.460 Unit: A Type: DC_Current1
27.03. 18:03:16    -Value: 0.414 Unit: A Type: DC_Current2
27.03. 18:03:16    -Value: 343.0 Unit: V Type: LINK_Voltage
27.03. 18:03:16    -Value:  Unit: W Type: GridPower
27.03. 18:03:16    -Value:  Unit: W Type: GridConsumedPower
27.03. 18:03:16    -Value:  Unit: W Type: GridInjectedPower
27.03. 18:03:16    -Value:  Unit: W Type: OwnConsumedPower
27.03. 18:03:16    -Value: 100.0 Unit: % Type: Derating
27.03. 18:03:16 |----------------   Stop   kostal_piko.php     --------------------
Dafür braucht man lediglich die XML vom Pico abzuholen:

Code: Alles auswählen

  $xml = simplexml_load_file("http://" . $WR_IP . "/measurements.xml"); // wir laden die XML-Datei vom Pico
und dann auszugeben:

Code: Alles auswählen

 $funktionen->log_schreiben(">>>> Kopfdaten:");

foreach($xml->Device[0]->attributes() as $a => $b){
         $funktionen->log_schreiben( $a . ' = "' .  $b . '"');
        }

 $funktionen->log_schreiben(">>>> aktuelle Werte:");

 $funktionen->log_schreiben("Demo: " . $xml->Device[0]->attributes()->DateTime);

foreach($xml->Device[0]->Measurements->Measurement as $wert){
        $funktionen->log_schreiben( "Value: " . $wert->attributes()->Value . ' Unit: ' .  $wert->attributes()->Unit . ' Type: ' .$wert->attributes()->Type);
        }
Jetzt muss ich mich nur noch mit der Funktion anfreunden, um in die Influx-DB zu schreiben...

1000(s) Grüße

Thomas

TeamO
Beiträge: 353
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 59 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von TeamO »

Ich glaube wir haben uns beide auf dem falschen Fuß erwischt. ;)
Ich habe zwar kaum Ahnung von PHP, aber beim Schreiben in die Datenbank kann ich vielleicht doch helfen, da ich schon passenden Code hier für die Solaranzeige habe.
Ich würde mir deinen Code morgen mal am Rechner anschauen und versuchen daraus was zu bauen.
Arbeiten wir doch einfach zusammen statt gegen einander.

Gruß Timo

thomas1000
Beiträge: 24
Registriert: Fr 19. Mär 2021, 16:26
Hat sich bedankt: 2 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von thomas1000 »

Hallo Timo!

Ein guter Plan! Ich hatte mich schon über die barschen Ansagen gewundert...

Ich bin mit dem Datenmodell noch nicht im Detail vertraut und auch kein Elektromeister.

Über Feedback und Verbesserungsvorschläge würde ich mich daher freuen.

Selbstverständlich werde ich den Code dann der Allgemeinheit hier zur Verfügung stellen.

1000(s) Grüße

Thomas

TeamO
Beiträge: 353
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 59 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von TeamO »

Hallo Thomas,

könntest Du Dein Script bitte so anpassen, dass die einzelnen Werte jeweils in eine eigene Variable geschrieben werden? Damit kann ich besser arbeiten um die Daten in die DB zu bekommen.
Ich bin mir nicht sicher, ob mein "Versuch" die Werte in einzelne Variablen zu bekommen so funktioniert.
Testen kann ich es ja leider nicht.
Hier mal mein Versuch die Werte aus dem Array Measurement in einzelne Variablen zu schreiben. Beim "Device" bin ich mir noch nicht sicher wie ich dort die einzelnen Werte auch in separate Variablen bekomme:

Code: Alles auswählen

// wir laden die XML-Datei vom Piko
$xml = "http://" . $WR_IP . "/measurements.xml";
	$Response = @simplexml_load_file($xml) or
          die ("Fehler beim Laden der Datei: ".$xml."\n");
          print_r($Response);


$i = 1;
do {
  $funktionen->log_schreiben("Die Daten werden ausgelesen...","+  ",9);

  /****************************************************************************
  //  Ab hier wird die XML  ausgelesen.
  //
  //  Ergebniswerte:
  //
  ****************************************************************************/
  
  $i = count($Response->Measurements->Measurement);
  for ($ii = 0; $ii < $i; $ii++) {
	 $Werte = $Response->Measurements->Measurement[$ii]->attributes();
	 if (strpos($Werte["Type"], "AC_Voltage") !== false){
		 $aktuelleDaten["AC_Voltage"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "AC_Current") !== false){
		 $aktuelleDaten["AC_Current"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "AC_Power") !== false){
		 $aktuelleDaten["AC_Power"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "AC_Power_fast") !== false){
		 $aktuelleDaten["AC_Power_fast"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "AC_Frequency") !== false){
		 $aktuelleDaten["AC_Frequency"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "DC_Voltage1") !== false){
		 $aktuelleDaten["DC_Voltage1"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "DC_Voltage2") !== false){
		 $aktuelleDaten["DC_Voltage2"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "DC_Current1") !== false){
		 $aktuelleDaten["DC_Current1"] = $Werte["Value"];
	 }
	 elseif (strpos($Werte["Type"], "DC_Current2") !== false){
		 $aktuelleDaten["DC_Current2"] = $Werte["Value"];
	 }
	 else (strpos($Werte["Type"], "LINK_Voltage") !== false){
		 $aktuelleDaten["LINK_Voltage"] = $Werte["Value"];
	 }
  }
Eventuell sollten wir das erstmal per Mail untereinander besprechen und dann das Ergebnis hier liefern.

Gruß
Timo

thomas1000
Beiträge: 24
Registriert: Fr 19. Mär 2021, 16:26
Hat sich bedankt: 2 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von thomas1000 »

Zur Info für die geneigten Mitleser:

Mit tatkräftiger Unterstützung von Timo haben wir das Script für Kostal Piko überarbeitet, so dass je nach Bedarf und Vorlieben entweder per USB/RS485 oder LAN gelesen werden kann.

Das Script sollte bald offiziell released werden.

Wer schon mal einen Blick auf die Daten seines Kostal Piko werfen möchte, kann dies - vorausgesetzt er hängt im LAN - über seinen Browser tun:

http://<ip-adresse des piko>/all.xml

bzw.

http://<ip-adresse des piko>/measurements.xml

Darüber hinaus lassen sich auch die einzelnen Bereiche direkt aufrufen:

statistics.xml
yields.xml
events.xml
versions.xml
tasks.xml

usw.

Ich hoffe ich kann Euch damit so manche Sucherei ersparen...

1000(s) Grüße

Thomas Tausend

TeamO
Beiträge: 353
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 59 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von TeamO »

Ich habe es in einem anderen Thread schon geschrieben, aber hier auch noch mal.

Falls jemand von sich aus testen möchte hier mal die angepasste kostal_pico.php
Es wird innerhalb der Datei gefragt, ob die IP 0.0.0.0 ist und dann weiterhin über USB-RS485 ausgelesen.
Ist die IP vom Piko eingetragen, wird der Piko über LAN ausgelesen.
Es werden hierbei jedoch weniger Daten ausgelesen!

Alles auf eigene Gefahr und ohne Gewährleistung ;)
kostal_pico.php
(17.95 KiB) 88-mal heruntergeladen

hzpz
Beiträge: 3
Registriert: Di 6. Apr 2021, 15:23

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von hzpz »

Moin zusammen,

sehr spannendes Thema! Ich lege mir gerade einen Kostal Piko 20 zu und möchte diesen dann natürlich gerne mit der schönen Solaranzeige visualisieren 8-) Allerdings bin ich sehr unsicher, wie ich den Wechselrichter am Besten anschließe/auslese. Die mit Abstand einfachste Variante wäre der Anschluss über LAN. Dazu gleich zwei Fragen:

1) Haben Piko 12-20 und Piko MP die gleichen Schnittstellen? Piko IQ ist offenbar anders, denn den kann Solaranzeige über Modbus TCP auslesen.
2) Falls dem so ist, was bedeutet "Es werden hierbei jedoch weniger Daten ausgelesen!"? Welche Daten fehlen, wenn man den Wechselrichter per LAN abfragt.

Bei meiner Recherche bin ich auch auf einen Thread im Photovoltaikforum gestoßen, in dem es darum geht, die Daten von einem Piko IQ über eine JSON-Schnittstelle auszulesen.

3) Hat jemand mal probiert, ob die JSON-Schnittstelle beim Piko 12-20/MP auch funktioniert?

Vielen Dank schon mal für eure Antworten :)
Timo (nicht TeamO ;) )

Benutzeravatar
Ulrich
Administrator
Beiträge: 2734
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 32 Mal
Danksagung erhalten: 173 Mal
Kontaktdaten:

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von Ulrich »

Das Auslesen per LAN ist für den Pico schon implementiert.
Die Menge der Daten ist jedoch gegenüber der RS485 Anbindung stark begrenzt.
--------------------------------------
Ulrich [Admin]

mbastian
Beiträge: 25
Registriert: Di 28. Jul 2020, 21:04
Danksagung erhalten: 3 Mal

Re: Kombination KOSTAL Smart-Meter, Plenticore & Pico - nur die Hälfte in der Solaranzeige

Beitrag von mbastian »

Hallo, es gibt noch etwas zu beachten bei dem Piko 20 - den besitze ich auch und habe ihn auch mit Ulrichs Hilfe eingebunden. Am besten Du liest den Piko 20 über RS485 aus. Über LAN geht es nur, wenn Du kein KSEM angeschlossen hast, da das KSEM die LAN Verbindung zum Piko komplett blockiert und nur selbst nutzt. Auch wenn Du beim Piko 20 ein Firmwareupdate machen möchtest, musst Du das KSEM vorher vom Piko trennen bzw. vom Netzwerk trennen, sonst kannst Du nicht auf den Piko zugreifen. Am besten also das KSEM für die Solaranzeige per LAN auslesen und den Piko 20 per RS485 über einen FTDI USB Dongle - dann klappt alles. Gruß Michael

Antworten