KACO Wechselrichter auslesen

Hallo Zusammen,

ich würde gerne meinen KACO 7.5 TL3 blueplanet WR auslesen und die aktuelle Leistung in Watt in eine Variable schreiben.Leider bin ich nicht so firm mit PHP um mir selbst ein Script schreiben zu können.

Mein WR gibt den aktuellen Wert über die Datei reltime.csv aus. Immer wenn ich 192.168.2.4/realtime.csv aufrufe wird eine CSV erstellt die zb so aussieht:

1468587021;14939;14159;9502;9495;9472;1157;1136;1184;1176;1573;4200;4

Wichtig für mich ist nur die 12te Zahl = 1573. Dieser Wert mit 100.000 multipliziert und dann durch 65535 geteilt ergibt die aktuelle Leistung in Watt. (1573x100000/65535).

kann mir jemand sagen wie das Script in einem Ereignis welches ich zb alle 3 Minuten ausführen lasse aussehen muss um den Wert als Watt Leistung in eine Variable zu schreiben?

Vielen Dank im Voraus,
Dirk

Niemand eine Idee oder Ansatz mit dem ich arbeiten könnte?

Ich habe einige Threads zu ähnlichen Themen gelesen aber die Ansätze kamen mir für mein Vorhaben sehr kompliziert vor.
Eigentlich dachte ich es lässt sich mit einer Zeile PHP Code das Ergebnis der 12ten Stelle aus der CSV mit der Berechnung in eine Variable schreiben…?

VG Dirk

Das hier sollte Dir weiterhelfen: PHP: str_getcsv - Manual

leider nicht wirklich. Meine Kenntnisse in PHP zu programmieren sind sehr begrenzt und gehen gegen „0“.

Ein bisschen lernen wirst Du leider müssen :).
such Dir mal Brocken zusammen: Zuerst die Datei öffnen und den Inhalt in eine Variable lesen. Diese dann mit der von mir geposteten Funktion in einen Array lesen. Dann das richtige Feld aus dem Array in eine andere Variable schreiben und diese wie von Dir genannt multiplizieren/ dividieren. das Ergebnis dann in eine IPS Var schreiben und das Skript alle x Minuten ausführen.
Kommst Du damit klar?

ich schreibe mal was ich mir bisher zusammen gesucht habe:-)

Datei einlesen:
$kwh = file_get_contents(„http://192.168.2.4/realtime.csv“);

hier müsste jetzt die Lösung mit str_getcsv rein (denke ich), ich weiss aber nicht wie ich die 12te Zahl hier einlesen muss oder wie du sagst: „Dann das richtige Feld aus dem Array in eine andere Variable schreiben“

Variable schreiben:
SetValueFloat(56745, $kwh);

Für die Berechnung würde ich dann ein neues Script machen und in die finale Variable schreiben, das kriege ich dann irgendwie hin, denke ich:-)

$array = str_getcsv ($kwh, $delimiter = „,“);

dann kannst Du mal ein print_r ($array); machen, da siehst Du dann, welcher Wert hinter welchem Array steht.
Da der Array bei null anfängt zu zählen würde ich denken:

$kwh-wert=$array[11];

Ggfls musst Du dann noch den $kwh-wert von einem String in einen float konvertieren, bevor Du weiterreichten kannst. Dafür gibt es Funktionen.
Der Rest ist einfach probieren, ist auch nur so aufs blaue, weil ich die Datei nicht habe (die csv).

Wenn ich mir die Bedienungsanleitung anschaue, dann hat der WR ja einen Webserver.

In diesem Fall würde ich versuchen, dies analog zum Kostal aufzubauen, in einer Minimalversion wo eben nur die Leistung ausgelesen wird.
Scriptbeispiel hier: WR Kostal PIKO 5.5 auslesen

Hallo,
das geht beim Kostal, aber beim KACO wohl nicht da die Daten anders eingelesen werden und der Quelltext des Webservers anders ist. Das Thema hatte schon jemand versucht:-(

Trotzdem Vielen Dank,
Dirk

Hier ist Dein Skript:


<?
// config---------------------------------------------------------
$url = 'http://192.168.2.4/realtime.csv';
//config Ende ----------------------------------------------------

$csv = @file_get_contents ($url); // csv einlesen
if ($csv === false){
       echo "Datei kann nicht gefunden werden"; 
       exit;
}
//print_r ($csv); // zum Testen
$array = str_getcsv ($csv, $delimiter = ";"); //Einzelne Felder in Array lesen
//print_r ($array); // zum Testen
$wert = floatval ($array[11]);// 12. Wert extrahieren und in eine Floatvar wandeln
$kwh = $wert * 100000 / 65535; //Berechnen um kwh zu erhalten
//SetValueFloat(56745, $kwh); //KWH in IPS Variable schreiben
echo $kwh; //zum Testen, sonst auskommentieren
?>

1000-Dank Wupperi!
Script funktioniert grundsätzlich, nur in meinem Fall nicht. Ich denke das Problem liegt daran, dass die csv Datei erstellt wird in dem Moment wo man die URL oder IP aufruft. Als Rückmeldung kommt jetzt „Datei nicht gefunden“. Lege ich die CSV manuell auf einen externen Server geht das Script. Ich überlege gerade wie ich das Problem umgehen kann. Ich schätze mal ich muss separat vorher die URL aufrufen lassen und irgendwo im bestimmten Zeitintervall ablegen…
Es sei denn jemand hat noch eine andere Idee…

Beste Grüße
Dirk

Hallo,

ist zwar schon ne Zeit her und weiß nicht ob du schon eine Lösung hast.
Steh gerade vor dem selbigen Problem und konnte das so lösen:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://172.20.30.110/realtime.csv",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "postman-token: 8f5ce894-545e-84aa-0ac8-c67725617e1a"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

$array = str_getcsv ($response, $delimiter = ";"); 
$wert = floatval ($array[11]);
$kwh = $wert * 100000 / 65535; 
SetValueFloat(51016, $kwh); 
echo $kwh; 
?>

Funktioniert bei mir und er schreibt den Wert in eine Variable

Wie bist du eigentlich auf die Umrechnungsformel gekommen? Hast du die für die anderen Werte vielleicht auch?

Danke
VG
Michael