Hallo zusammen,
vielen Dank Herrmann für das Modul. Für alle die es interessiert folgendes zur Info: Mit der Auswahl „Piko 12“ funktioniert es bei meinem Piko 10 aus dem Jahr 2016 ganz hervorragend. Top!!!
Hier die FW-Version meines Piko 10:
UI06.11
FW05.35
HW0100
PAR02.49
Seriennummer xxxxxxxxxxxxxxxxxxxxxxxx
Artikelnummer10101168
LändereinstellungGermany NSR (30.11)
gibt’s den hier keinen der einen Piko 17 am laufen hat?
oder jemanden der weiß wie ich die 3 Strings auslesen kann?
wähle ich Piko 12 im Modul aus dann wird auch alles angezeigt bis auf String 3.
hier noch die WR-Daten:
UI: 06.53
FW: 06.17
HW: 0210
PAR: 03.50
Artikelnummer: 10508919
Ländereinstellung: VDE 4105 2018 (99.99)
Grüße
Ich habe den Piko 17 aber mir fehlen auch die Werte von String 3.
Die ID’s für den String sind:
ID_DC3Strom = 33555713; // in A
ID_DC3Leistung = 33555715; // in W
@Hermann kannst du das Modul ergänzen/ändern oder kann das jemand anderes der fit in den Modulen ist.
Danke für die schnelle Antwort, das hilft mir schon mal weiter
das Modul ergänzen wäre natürlich perfekt…
Ich habe das Auslesescript aus dem Originalthread erweitert. Als echo gibt es dann die Werte von String 3 und auch die Leistungswerte von String 1+2, die im Modul fehlen.
Jetzt fehlt nur noch jemand, der das ins Modul einpflegen kann.
<?
// Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
//Kommunikation
$IPAdresse = "192.168.1.XXX";
//Leistungswerte
$ID_DCEingangGesamt = 33556736; // in W
$ID_Ausgangsleistung = 67109120; // in W
$ID_Eigenverbrauch = 83888128; // in W
//Status
$ID_Status = 16780032; // 0:Off
//Statistik - Tag
$ID_Ertrag_d = 251658754; // in Wh
$ID_Hausverbrauch_d = 251659010; // in Wh
$ID_Eigenverbrauch_d = 251659266; // in Wh
$ID_Eigenverbrauchsquote_d = 251659278; // in %
$ID_Autarkiegrad_d = 251659279; // in %
//Statistik - Gesamt
$ID_Ertrag_G = 251658753; // in kWh
$ID_Hausverbrauch_G = 251659009; // in kWh
$ID_Eigenverbrauch_G = 251659265; // in kWh
$ID_Eigenverbrauchsquote_G = 251659280; // in %
$ID_Autarkiegrad_G = 251659281; // in %
$ID_Betriebszeit = 251658496; // in h
//Momentanwerte - PV Genertor
$ID_DC1Spannung = 33555202; // in V
$ID_DC1Strom = 33555201; // in A
$ID_DC1Leistung = 33555203; // in W
$ID_DC2Spannung = 33555458; // in V
$ID_DC2Strom = 33555457; // in A
$ID_DC2Leistung = 33555459; // in W
$ID_DC3Spannung = 33555714; // in V
$ID_DC3Strom = 33555713; // in A
$ID_DC3Leistung = 33555715; // in W
//Momentanwerte Haus
$ID_HausverbrauchSolar = 83886336; // in W
$ID_HausverbrauchBatterie = 83886592; // in W
$ID_HausverbrauchNetz = 83886848; // in W
$ID_HausverbrauchPhase1 = 83887106; // in W
$ID_HausverbrauchPhase2 = 83887362; // in W
$ID_HausverbrauchPhase3 = 83887618; // in W
//Netz Netzparameter
$ID_NetzAusgangLeistung = 67109120; // in W
$ID_NetzFrequenz = 67110400; // in Hz
$ID_NetzCosPhi = 67110656;
//Netz Phase 1
$ID_P1Spannung = 67109378; // in V
$ID_P1Strom = 67109377; // in A
$ID_P1Leistung = 67109379; // in W
//Netz Phase 2
$ID_P2Spannung = 67109634; // in V
$ID_P2Strom = 67109633; // in A
$ID_P2Leistung = 67109635; // in W
//Netz Phase 3
$ID_P3Spannung = 67109890; // in V
$ID_P3Strom = 67109889; // in A
$ID_P3Leistung = 67109891; // in W
$url = "http://".$IPAdresse."/api/dxs.json".
"?dxsEntries=".$ID_Ertrag_d.
"&dxsEntries=".$ID_Hausverbrauch_d.
"&dxsEntries=".$ID_Eigenverbrauch_d.
"&dxsEntries=".$ID_Eigenverbrauchsquote_d.
"&dxsEntries=".$ID_Autarkiegrad_d.
"&dxsEntries=".$ID_DC1Leistung.
"&dxsEntries=".$ID_DC2Leistung.
"&dxsEntries=".$ID_DC3Spannung.
"&dxsEntries=".$ID_DC3Strom.
"&dxsEntries=".$ID_DC3Leistung.
"&sessionId=3378188426";
$response = file_get_contents("$url", "r");
$dataObject = json_decode($response);
echo "Spannung_3= ".$dataObject->dxsEntries[7]->value."V".chr(13);
echo "Strom_3= ".$dataObject->dxsEntries[8]->value."A".chr(13);
echo "Leistung_3= ".$dataObject->dxsEntries[9]->value."W".chr(13);
echo "Leistung_1= ".$dataObject->dxsEntries[5]->value."W".chr(13);
echo "Leistung_2= ".$dataObject->dxsEntries[6]->value."W".chr(13);
findet sich hier keiner der das ins Modul einpflegen kann?
Ich würde es gerne machen, von mir aus auch ein Fork erstellen und die Änderungen einpflegen aber leider reichen meine Kenntnisse dafür nicht aus
Hallo Leute, anscheinend findet sich keiner der den Auslesescript ins Modul mal einpflegt.
Da ich mich mit Skripten und programmieren nicht auskenne, bin ich nun mal auf die fertigen Module und Vorlagen angewiesen.
Es wäre nicht schlecht wenn sich jemand finden würde der einen Skript erstellt in dem man über die IP Adresse von Wechselrichter nur die notwendigsten ID’s (z.B. Momentanwerte - PV Genertor) abrufen kann und die Werte in der dafür angelegten Variable schreibt.
Ist sowas überhaupt möglich?
Vielen Danke
Grüße mannoschi
Hallo zusammen,
ich hatte das gleiche Problem mit dem Modul und hab mir mit ChatGPT ein Script erstellen lassen zum Abruf. Hier eine Anleitung wie ihr das selbst machen könnte, ebenfalls von ChatGPT erstellt.
1. Skript erstellen
- Navigiert in IP-Symcon zu eurem gewünschten Bereich (z. B. ein Dummy-Modul für eure PV-Anlage).
- Erstellt ein neues PHP-Skript und fügt folgenden Code ein:
<?php
// IP-Adresse des Wechselrichters
$IPAdresse = "192.168.1.XXX";
// Definition der IDs, die abgefragt werden sollen
$dxsEntries = [
33556736, // DC Eingang Gesamtleistung
67109120, // Ausgangsleistung
83888128, // Eigenverbrauch
251658754, // Ertrag Tag
251659010, // Hausverbrauch Tag
251659266, // Eigenverbrauch Tag
251659278, // Eigenverbrauchsquote Tag
251659279, // Autarkiegrad Tag
33555203, // DC1 Leistung
33555459, // DC2 Leistung
33555715 // DC3 Leistung
];
// API-URL zusammenbauen
$url = "http://$IPAdresse/api/dxs.json?dxsEntries=" . implode("&dxsEntries=", $dxsEntries);
// Daten von der API abrufen
$response = @file_get_contents($url);
if ($response === FALSE) {
IPS_LogMessage("Wechselrichter", "Fehler beim Abrufen der Daten.");
return;
}
// JSON-Daten decodieren
$dataObject = json_decode($response);
// Daten auslesen und in Variablen schreiben
if (!empty($dataObject->dxsEntries)) {
foreach ($dataObject->dxsEntries as $index => $entry) {
$value = $entry->value;
// IP-Symcon-Variablen anlegen oder aktualisieren
switch ($dxsEntries[$index]) {
case 33556736:
SetValue(CreateVariableByName($_IPS['SELF'], "DC Eingang Gesamtleistung", 2), $value);
break;
case 67109120:
SetValue(CreateVariableByName($_IPS['SELF'], "Ausgangsleistung", 2), $value);
break;
case 83888128:
SetValue(CreateVariableByName($_IPS['SELF'], "Eigenverbrauch", 2), $value);
break;
case 251658754:
SetValue(CreateVariableByName($_IPS['SELF'], "Ertrag Tag", 2), $value);
break;
case 251659010:
SetValue(CreateVariableByName($_IPS['SELF'], "Hausverbrauch Tag", 2), $value);
break;
case 251659266:
SetValue(CreateVariableByName($_IPS['SELF'], "Eigenverbrauch Tag", 2), $value);
break;
case 251659278:
SetValue(CreateVariableByName($_IPS['SELF'], "Eigenverbrauchsquote Tag", 2), $value);
break;
case 251659279:
SetValue(CreateVariableByName($_IPS['SELF'], "Autarkiegrad Tag", 2), $value);
break;
case 33555203:
SetValue(CreateVariableByName($_IPS['SELF'], "DC1 Leistung", 2), $value);
break;
case 33555459:
SetValue(CreateVariableByName($_IPS['SELF'], "DC2 Leistung", 2), $value);
break;
case 33555715:
SetValue(CreateVariableByName($_IPS['SELF'], "DC3 Leistung", 2), $value);
break;
}
}
} else {
IPS_LogMessage("Wechselrichter", "Keine Daten empfangen.");
}
// Funktion zum Anlegen oder Abrufen einer Variablen
function CreateVariableByName($id, $name, $type) {
$vid = @IPS_GetVariableIDByName($name, $id);
if ($vid === false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
?>
-
IP-Adresse anpassen:
Ersetze192.168.1.XXX
durch die IP-Adresse deines Wechselrichters. -
Speichern und manuell testen:
Starte das Skript, um sicherzustellen, dass die Daten korrekt abgerufen und in IP-Symcon-Variablen geschrieben werden.
2. Automatisierung einrichten
Damit das Skript regelmäßig (z. B. alle 5 Sekunden) ausgeführt wird, kannst du ein zyklisches Ereignis hinzufügen:
- Rechtsklicke auf das Skript und wähle „Ereignis hinzufügen“ → „Zyklisches Ereignis“.
- Gib dem Ereignis einen passenden Namen (z. B. „Wechselrichter auslesen“).
- Im Tab Zyklisch:
- Täglich auswählen.
- Startzeit: „00:00:00“ (beliebig).
- Wiederholen alle: „5 Sekunden“.
- Speichern.
Das Ereignis ist jetzt mit dem Skript verknüpft und führt es alle 5 Sekunden aus.
Hinweise:
- Belastung: Überprüft, ob euer Wechselrichter und IP-Symcon eine so kurze Abfrageperiode stabil handhaben können. Falls nicht, könnt ihr das Intervall auf z. B. 10 oder 15 Sekunden erhöhen.
- Visualisierung: Die angelegten Variablen könnt ihr direkt in der Visualisierung verwenden, um eure PV-Daten live anzuzeigen.
Viel Erfolg bei der Integration!
Ich bin begeistert
funktioniert alles perfekt