CCU(2) plus PIKO Wechselrichter Leistung abfragen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
Blubbel
Beiträge: 80
Registriert: 16.01.2016, 17:38
System: CCU
Hat sich bedankt: 3 Mal

CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von Blubbel » 15.05.2016, 16:39

Halli Ihr,

ich habe einen Weg gefunden, zwar über einen kleinen Umweg, aber doch, die Leistungswerte meines Piko Solar (4.2) Wechselrichters auszulesen. Bezogen auf diese Werte kann ich nun unter Anderem meine Poolpumpe oder auch im Winter eine elektrische Zusatzheizung ansteuern um den Eigenverbrauch der Anlage zu steigern.

Man braucht dazu:

- XML API auf der CCU2 installiert
- Einen Server, in meinem Fall mein Media PC, auf welchem ein Webserver, der auch PHP kann, zum Beispiel XAMPP (https://www.apachefriends.org/de/index.html), ich bin mir sicher, dass es auch ein Raspi tut, leider kenne ich mich da überhaupt nicht aus.
- Ein PHP Skript, welches die Werte vom Wechselrichter ausliest und als Beispiel alle 2min ausgeführt wird, zum Beispiel als CROWN Job. Bei mir wird es mit Chrome und dem AddOn "Auto Reload Plus" jede Minute ausgeführt. Als Zusatz schreibt das Skript noch für jeden Tag ein eigenes File, in dem die Leistungswerte eingetragen werden und noch ein zweites, in dem alle Werte permanent angehängt werden. Das kann man aber weglassen. Ich frage auch ab, ob der Piko und die CCU online sind.

Code: Alles auswählen

<?php

error_reporting(0);
//----------------TEST PIKO

   $url = "http://pvserver:xyzabc@192.168.0.21/index.fhtml";  // Hier die Webseite vom Websever eintragen pvserver = user und pvwr = Password

   $Ausgabe = file_get_contents("$url", "r");

    //AC-Leistung_Aktuell
	$pikozeit = date("H:i", time());
   if ($pikozeit == "23:59"){
   SetValueFloat('Energie_Gesamtertrag_Tag', 0);
   }
	
   $pos1 = strpos($Ausgabe,"aktuell</td>");
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+65),$pos2-$pos1-65);
   $data1 = (float) $data;
  

//PIKO ON/OFFLINE
$Con_ip = "192.168.0.21";
$Con_port = "80";
if (!@$fp = fsockopen($Con_ip, $Con_port, $errno, $errstr, 1)){
echo "PIKO Offline             <br />";


} else {
echo "PIKO Online             <br />";
}   
  
//HOMEMATIC ON/OFFLINE  
$Con_ip = "192.168.0.22";
$Con_port = "80";
if (!@$fp = fsockopen($Con_ip, $Con_port, $errno, $errstr, 1)){
echo "Homematic Offline             <br />";


} else {
echo "Homematic Online             <br />";
} 
//////////////////////////////////////////////

  
if ($data1 > -1) //erst wenn > 0W, dann tu was
{
//----------------TEST PIKO


	if ($data1 >= 1500)
	{
		//HOMEMMATIC!!!!
		//Poolpumpe direkt
		//$result = file_get_contents('http://192.168.0.22/addons/xmlapi/statechange.cgi?ise_id=5611&new_value=true');
		
		//Programm setzt Systemvariable an CCU
		$result = file_get_contents('http://192.168.0.22/addons/xmlapi/runprogram.cgi?program_id=6715&new_value=false');
		
		$Schaltzustand_A = "EIN";
	}
	
	if ($data1 <= 1500)
	{	
		//HOMEMMATIC!!!!
		//Poolpumpe direkt
		//$result = file_get_contents('http://192.168.0.22/addons/xmlapi/statechange.cgi?ise_id=5611&new_value=false');
		
		//Programm setzt Systemvariable an CCU
		$result = file_get_contents('http://192.168.0.22/addons/xmlapi/runprogram.cgi?program_id=6724&new_value=false');
		$Schaltzustand_A = "AUS";
		
	}
	
}
	if ($data1 < 900)
	{
		$Schaltzustand_A = "AUS";
		$Schaltzustand_B = "AUS";
	}	
	/////////////// IN FILE SCHREIBEN/////////////////////////////////////////
 //von ganz oben
	
if ($data1 > 0)
{
	$nurdatum = date("d.m.y");
	$datum = date("d.m.y H:i:s");
	$uhrzeit = date("His");
	$stunde = date("H");
	
	//Umrechung in 100er und 01 02 usw bauen
	$minute = (string) intval(date("i") / 0.6);
	if (strlen($minute) < 2)
	{
		$minute = "0".$minute;
	}
	
	$sekunde = (string) intval(date("s") / 0.6);
	if (strlen($sekunde) < 2)
	{
		$sekunde = "0".$sekunde;
	}
	
	$zeitstempel = $stunde . $minute . $sekunde;
	$neue_zeile = chr(13).chr(10);
	
	/////////////
	
	//Bekommt Zeitstempel in 100er
	$information = $datum."|".$Schaltzustand_A."|".$Schaltzustand_B."|".$data1;
	$information_nodate = $nurdatum."|".$zeitstempel."|".$uhrzeit."|".$Schaltzustand_A."|".$Schaltzustand_B."|".$data1;
	
	//// ZEITSTEMPEL Kopf schreiben
	if (file_exists(date("d.m.y")."_stempel.txt"))
	{
		$datei_handle_nodate=fopen(date("d.m.y")."_stempel.txt",a);
		echo "The file $filename exists<br />";
	}
	else
	{
		echo "The file $filename exists NOT";
		$datei_handle_nodate=fopen(date("d.m.y")."_stempel.txt",a);
		fwrite($datei_handle_nodate, "Datum|Zeitstempel|Uhrzeit|LuefterA|LuefterB|Leistung".$neue_zeile);
		fclose($datei_handle_nodate);	
	}
		
	//Schreibt einen Zeitstempel öffnet Datei zum Schreiben im Kopf!! --> $datei_handle_nodate=fopen(date("d.m.y")."_stempel.txt",a);
	fwrite($datei_handle_nodate, $information_nodate. $neue_zeile);
	fclose($datei_handle_nodate);
	
	//Schreibt alles hintereinander
	$datei_handle_all=fopen("Solarloginfo_gesamt.txt",a);
	fwrite($datei_handle_all, $information. $neue_zeile);
	fclose($datei_handle_all);	
	
}
	
echo ("Wechselrichter Leistung Aktuell: $data1<br />");
echo  "Zeitstempel: $zeitstempel<br />";
echo  "Schaltzustand an CCU2: $Schaltzustand_A<br />";

?>
Die Zeile schickt an die XML API den Befehl, auf der CCU ein Programm auszuführen, welches zum Beispiel eine Systemvariable setzt, in meinem Fall "Sonne_scheint", in meinem Fall bei einer Leistung > 1500 Watt

Code: Alles auswählen

$result = file_get_contents('http://192.168.0.150/addons/xmlapi/runprogram.cgi?program_id=6715&new_value=false');
Mit einem Zweiten Programm, ebenfalls selbiges, wenn die Leistung darunter fällt.

So kann man jedes beliebige Programm starten oder auch zum Beispiel direkt einen "Schalter umlegen".

Ich hoffe, mit dieser kleinen Anleitung dem Einen oder Anderen geholfen zu haben.

LG, Andi :)

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von Homoran » 15.05.2016, 16:49

Habe eine ähnliche Version für meinen Piko hier im Forum zusammen geklaubt.
Auf meinem Raspi/Cubie/Bananapi auf dem auch ioBroker läuft (kann im Prinzip auch auf dem laufen, auf dem der Container für lxccu läuft) läuft ein Crontab, der alle Minute das folgende Skript aufruft:

Code: Alles auswählen

:
#
#   define common parameters for wget
#
COMMONWGETARGS="-q -O - --timeout=10"
:
wget $COMMONWGETARGS --http-user=pvserver --http-password=pvwr "http://<IPdesPiko>/index.fhtml" | sed -e "s/nbsp/nbsp;/g" | sed -e "s/nbsp;;/nbsp;/g" | sed -e "s/\&nbsp;//g" | html2text | tr -s " \t\r\n" | sed -e "s/^ //" | sed -e "s/x x x/0/g" >/tmp/power-inverter1.values
PHOTOVOLTAICS_DC1U=$( cat /tmp/power-inverter1.values | grep Spannung | head -1 | cut -f2 -d" " )
PHOTOVOLTAICS_DC2U=$( cat /tmp/power-inverter1.values | grep Spannung | head -2 | tail -1 | cut -f2 -d" " )
PHOTOVOLTAICS_DC1I=$( cat /tmp/power-inverter1.values | grep Strom | head -1 | cut -f2 -d" " | awk '{printf "%d\n",$1*1000}' )
PHOTOVOLTAICS_DC2I=$( cat /tmp/power-inverter1.values | grep Strom | head -2 | tail -1 | cut -f2 -d" " | awk '{printf "%d\n",$1*1000}' )
PHOTOVOLTAICS_DC1P=$(( $PHOTOVOLTAICS_DC1U * $PHOTOVOLTAICS_DC1I / 1000 ))
PHOTOVOLTAICS_DC2P=$(( $PHOTOVOLTAICS_DC2U * $PHOTOVOLTAICS_DC2I / 1000 ))

PHOTOVOLTAICS_ACCURP=$( cat /tmp/power-inverter1.values | grep aktuell | cut -f2 -d" " )
PHOTOVOLTAICS_ACTOTP=$( cat /tmp/power-inverter1.values | grep Gesamtenergie | cut -f5 -d" " )
PHOTOVOLTAICS_DAILYP=$( cat /tmp/power-inverter1.values | grep Tagesenergie | cut -f2 -d" " )
:
#
#   update the system variables in the HomeMatic
#
wget $COMMONWGETARGS "http://<IPderCCU>/addons/db/state.cgi?item=PV.DC1&value=$PHOTOVOLTAICS_DC1P"
wget $COMMONWGETARGS "http://<IPderCCU>/addons/db/state.cgi?item=PV.DC2&value=$PHOTOVOLTAICS_DC2P"
wget $COMMONWGETARGS "http://<IPderCCU>/addons/db/state.cgi?item=PV.DAILYP&value=$PHOTOVOLTAICS_DAILYP"
wget $COMMONWGETARGS "http://<IPderCCU>/addons/db/state.cgi?item=PV.AC&value=$PHOTOVOLTAICS_ACCURP"
wget $COMMONWGETARGS "http://<IPderCCU>/addons/db/state.cgi?item=PV.TOTP&value=$PHOTOVOLTAICS_ACTOTP"
Das script benötigt das Paket html2text auf dem RasPi und das Addon DB-Access auf der CCU
Außerdem müssen die Systemvariablen PV.DC1, PV.DC2, PV.AC, PV.DAILYP, und PV.TOTP auf der CCU angelegt werden.

Geht bestimmt noch anders - läuft aber bei mir seit Jahren.

Mit den gefüllten Variablen kann man dann direkt auf der CCU alles machen, was man will.

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

CH-HMaticer
Beiträge: 18
Registriert: 20.08.2015, 08:24

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von CH-HMaticer » 05.06.2018, 14:15

Hallo Rainer

.... lange ist es her.... ich versuche es trotzdem einmal.

Ich habe es soweit hinbekommen und in ioBroker werden mir auch die Werte in der RegEx angezeigt. Jedoch keine Werte in Objekt bzw. es werden auch keine Werte auf die CCU unter den Variablen geschrieben. Diese werden nur mit "0" angezeigt.

Hast Du mir ev. ein Rat?

Danke und Gruss
CH-HMaticer
HomeMatic: 1x Zentrale CCU2, 4x Funk-Zwischenstecker HM-LC-Sw1-Pl-DN-R5; 1x Funk-Schaltaktor mis Leistungsmessun HM-ES-PMSw1-Pl; 1x Funk-Schaltaktor 8-fach Kanal Relais Modul 230Volt mit Taster

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von Homoran » 05.06.2018, 15:29

Nee,
weder hier noch dort ;-)

Mein Elektriker hat meinen Kostal gehimmelt und mein neuer hat die neue Firmware, daher kann ich es nicht mehr testen.

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

CH-HMaticer
Beiträge: 18
Registriert: 20.08.2015, 08:24

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von CH-HMaticer » 05.06.2018, 16:13

Danke Rainer

Das tut mir Leid...aber so bist Du zu einem Neuen gekommen :D

Wie gesagt, eigentlich funktioniert es ja soweit mit der Datenabfrage im ioBroker nur werden die Werte dort nicht unter Objekte abgefüllt bzw auch nicht "weitergeleitet" an meine CCU.

Wie holst Du Dir denn jetzt die Daten von der Photovoltaik, um sie z.B. im ioBroker zu visualisieren oder machst Du das gar nicht? Ausserdem kuppelst Du auch keine Daten bzw. Programme in der Homematic CCU mit diesen Werden?

Sorry, dass ich solche Fragen stelle... aber - man sucht halt Hilfe, wo man sie bekommen kann.

Danke Dir.
HomeMatic: 1x Zentrale CCU2, 4x Funk-Zwischenstecker HM-LC-Sw1-Pl-DN-R5; 1x Funk-Schaltaktor mis Leistungsmessun HM-ES-PMSw1-Pl; 1x Funk-Schaltaktor 8-fach Kanal Relais Modul 230Volt mit Taster

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von Homoran » 05.06.2018, 20:32

CH-HMaticer hat geschrieben:aber so bist Du zu einem Neuen gekommen
Hat aber mit allem was noch kaputt war 4000€ gekostet
CH-HMaticer hat geschrieben:Wie gesagt, eigentlich funktioniert es ja soweit mit der Datenabfrage im ioBroker
Woher weißt du das, wenn
CH-HMaticer hat geschrieben:die Werte dort nicht unter Objekte abgefüllt
werden.
CH-HMaticer hat geschrieben:auch nicht "weitergeleitet" an meine CCU.
Das ist ja nun ein ganz anderes Thema.

CH-HMaticer hat geschrieben:Wie holst Du Dir denn jetzt die Daten von der Photovoltaik, um sie z.B. im ioBroker zu visualisieren
Da das neue Interface auf java basiert kann man es nicht mehr parsen.
im ioBroker-Forum gab es mal ein Skript dazu bestimmte ausgelesene Codes umzusetzen.
CH-HMaticer hat geschrieben:im ioBroker zu visualisieren oder machst Du das gar nicht?
Doch:
Kostal_Solar.png
CH-HMaticer hat geschrieben:Ausserdem kuppelst Du auch keine Daten bzw. Programme in der Homematic CCU mit diesen Werden?
Nein, die Programme laufen im ioBroker.

Bitte im ioBroker-Forum weitermachen.


Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

Waldo
Beiträge: 2
Registriert: 29.10.2017, 21:28

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von Waldo » 18.09.2018, 13:18

Hallo zusammen,

ich bin recht neu hier und stosse mit sehr großem Interesse auf Eure Diskussion.

Leider kann ich es in meinem Fall nicht umsetzten, weil ich nicht wirklich weiss, wo ich anfangen soll, und womit.

Könnte vielleicht jemand von Euch die Zeit opfern, und eine Kleine Anleitung für Dummies daraus machen?
Es würde mich sehr freuen!

Falls notwendig hier meine Hard- und Software Kombination, mit der ich gerne einerseitz eine schöne WebVisualisierung wie hier gezeigt realisieren möchte, und anderer seits die Werte in die homematic einlesen, um dann Aktionen daraus zu starten:

- PIKO 10
- raspmatic
- iobroker

postit
Beiträge: 20
Registriert: 23.02.2016, 09:02

Re: CCU(2) plus PIKO Wechselrichter Leistung abfragen

Beitrag von postit » 17.03.2019, 20:31

Dem einen oder anderen könnte eine direkte Übernahme der Leistungswerte vom Kostal Piko Wchselrichter auf die CCU (ohne Visualisierung) genügen. Dies ist mit einem einfachen TCL Script möglich, siehe hier:

viewtopic.php?f=26&t=28978&p=498636&hilit=piko#p498636

Anfänger wie Waldo können im Netz nachlesen, wie man ein TCL Script auf die CCU kopiert und wie man ein solches Script von der CCU aus aufruft.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“