Kostal Piko Web & CCU2

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Kostal Piko Web & CCU2

Beitrag von Blubbel » 16.01.2016, 17:48

Hallo Ihr,

ich mache zzt folgendes, über einen WebServer zu Hause und PHP-Skripte:
Alle 30 Sekunden frage ich meinen PIKO Wechselrichter nach dem aktuellen Leistungswert vom Dach, das geht relativ einfach, das der PIKO Wechselrichter ja eine Web-Gui hat, das Ganze über PHP0, je nach Leistung schalte über PHP wieder diverse Verbraucher über Funksteckdosen, von Brennenstuhl gibt's da so ein Kasterl, das kann das.

Mein Frage nun: ich habe eine CCU2 zur Verfügung. Gibt's das über Skripte oder ähnliches die Möglichkeit den aktuellen Leistungswert (vom PIKO) auszulesen um dann entsprechend mit der Homematic Aktoren zu schalten? Zut Zeit schalte ich einen Elektrischen Zusatzheizkörper, und andere Dinge.
Den S0 Ausgang am Piko möchte ich nicht verwenden, den brauche ich für was Anderes. Habe auch bei meiner Recherche gesehen, dass es von Homematic keinerlei Hardware gibt, um die Pulse auszuwerten, obwohl oftmals dabach gefragt wurde.

Wenn alles fertig ist, möchte ich am Stromzähler dann beide LED's "messen" um so Rückspeisung und Stromzukauf protokollieren, mir quasi auch eine Energieampel bauen.

Die PHP Sache läuft super, nur muss dazu eben immer ein PC laufen, der das PHP alle 30sek im Chrome Browser aufruft. Da ich bald eine CCU2 bekomme wäre das natürlich das Highlight!
-----------------
So lese ich vom Piko aus, der Teil aus dem PHP Skript:

Code: Alles auswählen

$url = "http://pvserver:pvwr@192.168.0.71/index.fhtml";  // Hier die Webseite vom Websever eintragen

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

  //AC-Leistung_Aktuell

   $pos1 = strpos($Ausgabe,"aktuell</td>");
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+65),$pos2-$pos1-65);
   $data1 = (float) $data;

In $data1 steht dann der aktuelle Leistungswert, den hätte ich gerne für die CCU2 zur Verfügung. :)

Danke für Hilfe, Denkanstöße, Ideen..

LG, Andi :)

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Kostal Piko Web & CCU2

Beitrag von Martin_BY » 17.01.2016, 06:18

Da ich auch so ein Ding im Keller habe, würde mich das auch interessieren.

Gehen muss es, da man mit entsprechenden Scripts auch andere Daten auslesen und in Systemvariablen schreiben kann. Z.B. das Benzinpreisscript, Netatmo oder Wunderground.
Meine Kenntnisse bzgl. TCL-Scripting sind leider so gering, daß ich beim "wie" nicht viel helfen kann.

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

Re: Kostal Piko Web & CCU2

Beitrag von Blubbel » 17.01.2016, 12:11

Hier ist das Skript für den PIKO Wechselrichter, ist aber nicht von mir, hab's vor längerer Zeit mal im Netz gefunden und dann für meine Zwecke komplett umprogrammiert.

Code: Alles auswählen

<?
<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : PV_WR.ips.php
Trigger  : 
Interval : 
           Kostal piko 5.5


*/

   $url = "http://pvserver:pvwr@192.168.4.170";  // Hier die Webseite vom Websever eintragen pvserver = user und pvwr = Password

 // Varialen anlegen
/*
   IPS_CreateVariable("AC-Leistung_aktuell", "Float");
   IPS_CreateVariable("AC-Leistung_Status", "String");
   
   IPS_CreateVariable("Energie_Gesamtertrag", "Float");
   IPS_CreateVariable("Energie_Gesamtertrag_Tag", "Float");
   
   IPS_CreateVariable("PV-Generator_String1_Spannung", "Float");
   IPS_CreateVariable("PV-Generator_String1_Strom", "Float");
   IPS_CreateVariable("PV-Generator_String2_Spannung", "Float");
   IPS_CreateVariable("PV-Generator_String2_Strom", "Float");
   IPS_CreateVariable("PV-Generator_String3_Spannung", "Float");
   IPS_CreateVariable("PV-Generator_String3_Strom", "Float");
   
   IPS_CreateVariable("Ausgangsleistung_L1_Spannung", "Float");
   IPS_CreateVariable("Ausgangsleistung_L1_Leistung", "Float");
   IPS_CreateVariable("Ausgangsleistung_L2_Spannung", "Float");
   IPS_CreateVariable("Ausgangsleistung_L2_Leistung", "Float");
   IPS_CreateVariable("Ausgangsleistung_L3_Spannung", "Float");
   IPS_CreateVariable("Ausgangsleistung_L3_Leistung", "Float");
*/

   $zeit = date("H:i", time());

   if ($zeit == "23:59"){
   SetValueFloat('Energie_Gesamtertrag_Tag', 0);
   }


   $Ausgabe = file_get_contents("$url", "r");
   
   $pos1 = strpos($Ausgabe,"aktuell</td>");
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+65),$pos2-$pos1-65);
   $data1 = (float) $data;
   SetValueFloat('AC-Leistung_aktuell', $data1);
   echo "AC-Leistung_aktuell: ";
   echo $data1;
   echo "\n";
   
   //AC-Leistung_Status
   
   $pos1 = strpos($Ausgabe,"Status</td>");
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+33),$pos2-$pos1-33);
   //$data1 = (float) $data;
   SetValueString('AC-Leistung_Status', $data);
   echo "AC-Leistung_Status: ";
   echo $data;
   echo "\n";
   
   //Energie_Gesamtertrag

   $pos1 = strpos($Ausgabe,"Gesamtertrag</td>");
   $pos2 = strpos($Ausgabe,"</td>",$pos1+30);
   $data = substr($Ausgabe,($pos1+70),$pos2-$pos1-70);
   $data1 = (float) $data;
   SetValueFloat('Energie_Gesamtertrag', $data1);
   echo "Energie_Gesamtertrag: ";
   echo $data1;
   echo "\n";
   
   //PV-Generator_String1_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String1_Spannung', $data1);
   echo "PV-Generator_String1_Spannung: ";
   echo $data1;
   echo "\n";
   
   //Ausgangsleistung_L1_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L1_Spannung', $data1);
   echo "Ausgangsleistung_L1_Spannung: ";
   echo $data1;
   echo "\n";
   
   //PV-Generator_String1_Strom

   $pos1 = strpos($Ausgabe,"Strom</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+63),$pos2-$pos1-63);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String1_Strom', $data1);
   echo "PV-Generator_String1_Strom: ";
   echo $data1;
   echo "\n";

   //Ausgangsleistung_L1_Leistung

   $pos1 = strpos($Ausgabe,"Leistung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L1_Leistung', $data1);
   echo "Ausgangsleistung_L1_Leistung: ";
   echo $data1;
   echo "\n";
   
   //PV-Generator_String2_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String2_Spannung', $data1);
   echo "PV-Generator_String2_Spannung: ";
   echo $data1;
   echo "\n";

   //Ausgangsleistung_L2_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L2_Spannung', $data1);
   echo "Ausgangsleistung_L2_Spannung: ";
   echo $data1;
   echo "\n";

   //PV-Generator_String2_Strom

   $pos1 = strpos($Ausgabe,"Strom</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+63),$pos2-$pos1-63);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String2_Strom', $data1);
   echo "PV-Generator_String2_Strom: ";
   echo $data1;
   echo "\n";

   //Ausgangsleistung_L2_Leistung

   $pos1 = strpos($Ausgabe,"Leistung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L2_Leistung', $data1);
   echo "Ausgangsleistung_L2_Leistung: ";
   echo $data1;
   echo "\n";
   
   //PV-Generator_String3_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String3_Spannung', $data1);
   echo "PV-Generator_String3_Spannung: ";
   echo $data1;
   echo "\n";

   //Ausgangsleistung_L3_Spannung

   $pos1 = strpos($Ausgabe,"Spannung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L3_Spannung', $data1);
   echo "Ausgangsleistung_L3_Spannung: ";
   echo $data1;
   echo "\n";

   //PV-Generator_String3_Strom

   $pos1 = strpos($Ausgabe,"Strom</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+63),$pos2-$pos1-63);
   $data1 = (float) $data;
   SetValueFloat('PV-Generator_String3_Strom', $data1);
   echo "PV-Generator_String3_Strom: ";
   echo $data1;
   echo "\n";

   //Ausgangsleistung_L3_Leistung

   $pos1 = strpos($Ausgabe,"Leistung</td>",$pos2);
   $pos2 = strpos($Ausgabe,"</td>",$pos1+20);
   $data = substr($Ausgabe,($pos1+66),$pos2-$pos1-66);
   $data1 = (float) $data;
   SetValueFloat('Ausgangsleistung_L3_Leistung', $data1);
   echo "Ausgangsleistung_L3_Leistung: ";
   echo $data1;
   echo "\n";
   
   // Tagesertrag
   
   $aktull = GetValueFloat("AC-Leistung_aktuell");
   $Tag = GetValueFloat("Energie_Gesamtertrag_Tag");
   
   //$aktull = $aktull / 1000;
   
   $Tagneu = ($aktull / 60) + $Tag;
   
   SetValueFloat('Energie_Gesamtertrag_Tag', $Tagneu);
   
/*
Quelltext der Pv-Server Seite

<br />
<b>Warning</b>:  Unable to locate IPSVariable: AC-Leistung_Status in <b>C:\Programme\IP-Symcon\scripts\.currentscript</b> on line <b>54</b><br />
<!DOCtype HTML PUBLIC "-//W3C//Dtd HTML 4.0 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<meta name="Generator" CONTENT="ChrisB">
<title>PV Webserver</title>
</head>
<body nof="(MB=(DefaultMasterborder, 65, 60, 150, 10), L=(HomeLayout, 700, 600))" bgcolor="#EAF7F7" text="#000000" link="#0033CC" vlink="#990099" alink="#FF0000" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>
<form method="post" action="">

<table cellspacing="0" cellpadding="0" width="770" nof="ly">
<tr><td height="5"></td></tr>
<tr><td width="190" height="55"></td>
<td width="400">
  <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif" size="+3">
  PIKO 5.5
<br><font size="+1">
  Ziege_one_WR (1)
</font>
</font>
</td>
<td><img alt="Logo" height="42" width="130" src="KSE.gif"></td>
</tr>
</table>

<font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
<table Border="0" width="100%"><tr>
<td width="150"></td>
<td> <hr> </td>
</tr></table>
<table cellspacing="0" cellpadding="0" width="770">
<tr><td></td></tr>
<tr>
<td width="190"></td>
<td colspan="2">
  <b>AC-Leistung</b></td>
<td>&nbsp</td>
<td>
  <b>Energie</b></td></tr>
<tr><td height="10"></td></tr>

<tr>
<td width="190"></td>
<td width="100">
  aktuell</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  642</td>
<td width="140">&nbsp W</td>
<td width="100">
  Gesamtertrag</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  28</td>
<td width="50">&nbsp kWh</td>
<td>&nbsp</td></tr>
<tr height="5"><td></td></tr>
<tr>
<td width="190"></td>
<td width="100">
  Status</td>
<td colspan="4">
  Einspeisen MPP</td>
<td>&nbsp</td></tr>
<tr height="8"><td></td></tr>
<tr><td colspan="7">
<table align="top" width="100%"><tr>
<td width="182"></td>
<td><hr size="1"></font></td>
</tr><tr><td height="5"></td></tr></table>
</td></tr>

<tr>
<td width="190"></td>
<td colspan="2">
  <b>PV-Generator</b></td>
<td width="140">&nbsp</td>
<td colspan="2">
  <b>Ausgangsleistung</b></td>
<td width="30">&nbsp</td>
<td>&nbsp</td></tr>
<tr><td height="10"></td></tr>
<tr>
<td width="190"></td>
<td width="100">
  <u>String 1</u></td>
<td width="70">&nbsp</td>
<td width="140">&nbsp</td>
<td width="95">
  <u>L1</u></td>
<td width="70">&nbsp</td>
<td width="30">&nbsp</td>
<td>&nbsp</td></tr>
<tr>
<td width="190"></td>
<td width="100">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  344</td>
<td width="140">&nbsp V</td>
<td width="100">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  232</td>
<td width="30">&nbsp V</td>
<td>&nbsp</td></tr>
<tr height="2"><td></td></tr>
<tr valign="top" align="left">
<td width="190">&nbsp</td>
<td width="100">
  Strom</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  1.03</td>
<td width="140">&nbsp A</td>
<td width="100">
  Leistung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  208</td>
<td width="30">&nbsp W</td>
<td>&nbsp</td></tr>
<tr height="22"><td></td></tr>
<tr>
<td width="190"></td>
<td width="100">
  <u>String 2</u></td>
<td width="70">&nbsp</td>
<td width="140">&nbsp</td>
<td width="100">
  <u>L2</u></td>
<td width="70">&nbsp</td>
<td width="30">&nbsp</td>
<td>&nbsp</td></tr>
<tr>
<td width="190"></td>
<td width="100">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  348</td>
<td width="140">&nbsp V</td>
<td width="100">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  235</td>
<td width="30">&nbsp V</td>
<td>&nbsp</td></tr>
<tr height="2"><td></td></tr>
<tr valign="top" align="left">
<td width="190">&nbsp</td>
<td width="100">
  Strom</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  0.99</td>
<td width="140">&nbsp A</td>
<td width="100">
  Leistung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  219</td>
<td width="30">&nbsp W</td>
<td>&nbsp</td></tr>
<tr height="22"><td></td></tr>
<tr>
<td width="190"></td>
<td width="100">
  <u>String 3</u></td>
<td width="70">&nbsp</td>
<td width="140">&nbsp</td>
<td width="100">
  <u>L3</u></td>
<td width="70">&nbsp</td>
<td width="30">&nbsp</td>
<td>&nbsp</td></tr>
<tr>
<td width="190"></td>
<td width="100">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  0</td>
<td width="140">&nbsp
  V</td>
<td width="95">
  Spannung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  236</td>
<td width="30">&nbsp V</td>
<td>&nbsp</td></tr>
<tr height="2"><td></td></tr>
<tr valign="top" align="left">
<td width="190">&nbsp</td>
<td width="95">
  Strom</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  0.00</td>
<td width="140">&nbsp
A</td>
<td width="95">
  Leistung</td>
<td width="70" align="right" bgcolor="#FFFFFF">
  214</td>
<td width="30">&nbsp W</td>
<td>&nbsp</td></tr>

<tr><td height="15"></td></tr>
<tr><td colspan="7">
<table align="top" width="100%">
<tr><td width="182"></td>
<td><hr size="1"></font></td>
</tr><tr><td height="5"></td></tr></table>
</td></tr></table>
<table cellspacing="0" cellpadding="0" width="770">
<tr><td width="190"></td>
<td><font face="Arial,Helvetica,Geneva,Sans-serif">
<b>RS485 Kommunikation</b></td></tr>
<tr><td height="8"></td></tr>
<tr><td width="190"></td>
<td><font face="Arial,Helvetica,Geneva,Sans-serif">
Wechselrichter&nbsp
<input type="Text" name="edWrNr" value="1" size="3" maxlength="3">
<input type="submit" value="Anzeigen/Aktualisieren">
</td></tr><tr><td height="10"></td></tr>
</table>
</td></tr></table></font>

<hr>
<font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
<table cellspacing="0" cellpadding="0" width="770">
<tr><td height="5"></td></tr>
<tr><td width="190"></td>
<td width="330">
<a href="LogDaten.dat">Historie</a>
&nbsp &nbsp &nbsp
<a href="Info.fhtml">Infoseite</a></td>
<td align="right">
<a href="Solar2.fhtml">Einstellungen</a></td>
<td width="50"></td>
</tr></table></font>
</form>
</body>
</html>
*/


?>

dannielw9545
Beiträge: 10
Registriert: 29.09.2016, 19:50

Re: Kostal Piko Web & CCU2

Beitrag von dannielw9545 » 29.09.2016, 19:56

Hallo, ich bin neu auf diesem gebiet mit der Homematic, wollte aber auch gerne dieses Script mit meinem kostal wechselrichter ausprobieren. wo muss das skript denn eingefügt werden.

Würde mich sehr über eure hilfe freuen

Gluehwurm
Beiträge: 12433
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Kostal Piko Web & CCU2

Beitrag von Gluehwurm » 29.09.2016, 22:21

Das ist ein Skript für IP-Symcon, nicht für die CCU.

Gruß
Bruno

dannielw9545
Beiträge: 10
Registriert: 29.09.2016, 19:50

Re: Kostal Piko Web & CCU2

Beitrag von dannielw9545 » 30.09.2016, 05:51

Kann man soetwas auch für die ccu2 bekommen?? oder dieses umschreiben für die ccu2

hicomer
Beiträge: 12
Registriert: 05.01.2016, 15:58

Re: Kostal Piko Web & CCU2

Beitrag von hicomer » 30.09.2016, 06:56

Bitte zuvor auch beachten, ob die neue Firmware des Kostal WR vorhanden ist.
Siehe https://www.symcon.de/forum/showthread.php?p=293617

Grüße
Matthias

Gesendet von meinem PLK-L01 mit Tapatalk

dannielw9545
Beiträge: 10
Registriert: 29.09.2016, 19:50

Re: Kostal Piko Web & CCU2

Beitrag von dannielw9545 » 30.09.2016, 14:00

Hallo, der Wechselrichter hat die UI05.41 habe das script kopiert. aber wo muss ich es einfügen??
die IP adresse habe ich schon geändert.
Dateianhänge
Unbenannt 1.odt
(280.02 KiB) 101-mal heruntergeladen

hicomer
Beiträge: 12
Registriert: 05.01.2016, 15:58

Re: Kostal Piko Web & CCU2

Beitrag von hicomer » 30.09.2016, 14:23

Hallo,
Wie Glühwurm schon erwähnt hat, sind die Quellcodes für IP-Symcon. Für die ccu muss es umgeschrieben werden. So tief bin ich bei der ccu leider nicht

Gesendet von meinem PLK-L01 mit Tapatalk

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

Re: Kostal Piko Web & CCU2

Beitrag von postit » 17.03.2019, 13:21

Für die CCU habe ich ein tcl-Script am laufen. Ich habe den Kostal Piko 4.2 (ältere Version von 2014).

Code: Alles auswählen

#!/bin/tclsh

load tclrega.so

set url http://pvserver:deinPasswort@192.168.1.4 # hier dein Passwort eingeben und die IP anpassen
#set url http://192.168.1.4 ->so wäre es ohne Passwort, nur die IP muss angepasst werden

catch {exec wget -qO- $url} response
regexp "aktuell</td>
<td width=\"70\" align=\"right\" bgcolor=\"\#FFFFFF\">
  (.*?)</td>" $response dummy leistung

set rega_cmd ""
append rega_cmd "var leistung2 = dom.GetObject('LeistungPVA');" # Die Variable LeistungPVA muss auf der CCU als Zahl erstellt werden.
append rega_cmd "leistung2.State('$leistung');"
rega_script $rega_cmd
Das Script sollte nur tagsüber etwa alle vier Minuten ausgeführt werden. Nachts liefert der Wechselrichter den Wert X X X, da bleibt die Variable auf 0.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“