Wir haben eine Citrin Solar Anlage auf dem Dach und einen Regler von Citrin CS3.2 - das entspricht dem Resol Regler DeltaSol E.
Hab mir nun einen VBus/USB Adapter von Resol zugelegt (Preis ~ 50 Eur). Angeklemmt - kein Problem, überträgt die Daten auf den Rechner in die Resol Software.
Ich wollte natürlich die Daten lieber in IPS visualisieren: in IPS einen Serial Port angelegt und den Com Port der USB Verbindung angegeben und siehe da, die Daten kommen im Rohformat in IPS an. Hierauf habe ich dann eine Register Variable Instanz referenziert.
Da Resol die Protokoll-Spezifikationen veröffentlicht hat, kann man nun mit den entsprechenden Positionen die verschiedenen Daten auslesen. Hierzu habe ich folgendes Skript erstellt:
die Schnittstelle aktualisiert sich momentan ca. alle 4 Sekunden. Da ich ein paar Werte loggen will, sind das doch enorme Datenmengen. Allerdings habe ich noch nicht herausgefunden wie man das Register Variable Instanz für eine gewisse Zeitdauer pausieren kann.
das Skript funktioniert nur für den Regler DeltaSol E (bei anderen Reglern sind die Offsets unterschiedlich belegt - siehe Protokoll - kann bei Resol gedownloaded werden)
nur Protokoll Version 1 - d.h. nur Daten mitlessen (reicht für mich momentan aus)
Ich habe das Problem, dass ich ebenfalls meine Resol-Daten in IPS überführen möchte. Nun habe ich ab und an „komische Werte“. Das passiert wohl wenn gewisse Werte in ihrer reiner Zahlenmenge varieren. Also z.B.
der Wert „$data[9].$data[10].$data[11].$data[12]“ ist hier die Kollektortemperatur. Wenn dieser Wert unter 10 oder ohne Komma vorliegt, dann müsste ich eigentlich „$data[9].$data[10].$data[11]“ auswerten, da alles irgendwie „nach oben rutscht“. Die Wärmemenge (hier:
Notice: Undefined offset: 7 in C:\IP-Symcon\scripts\18733.ips.php on line 15
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 15
Notice: Undefined offset: 8 in C:\IP-Symcon\scripts\18733.ips.php on line 16
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 16
Notice: Undefined offset: 10 in C:\IP-Symcon\scripts\18733.ips.php on line 17
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 17
Notice: Undefined offset: 11 in C:\IP-Symcon\scripts\18733.ips.php on line 18
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 18
Notice: Undefined offset: 25 in C:\IP-Symcon\scripts\18733.ips.php on line 19
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 19
Notice: Undefined offset: 31 in C:\IP-Symcon\scripts\18733.ips.php on line 20
Warning: Could not convert variant of type (Null) into type (Double) in C:\IP-Symcon\scripts\18733.ips.php on line 20
Das 18733 ist in diesem Fall das Datenholscript, also das Script das diesen Fehler produziert selbst.
Im zweiten (Deinem) Post auf Seite 3, in einem ersten Entwurf, steht es mit $data und auch „$data = str_split($data[1]);“ … das hat mir von Beginn an als Grundlage gedient. Später dann lief alles mit $resoldata und das ist dann wohl irgendwie an mir vorbei. :o
Jetzt läuft es wie es soll. Vielen Dank für die Unterstützung.
Ich habe ein Problem mit einem bestimmten Wert …
Ich weiß jetzt nur nicht, ob es Sinn macht es hier reinzuschreiben, oder besser einen separaten Thread aufzumachen.
<?
$file = file("Y:\RESOL\TextData_" . date("Ymd") . ".log");
$lastentry = $file[count($file)-1]; // letzte Zeile extrahieren , eventuel -1 einsetzen
$resoldata = explode(" ", $lastentry); // Daten in ein Array schreiben
$Datum = $resoldata[0];
$data = str_split($resoldata[1]);
print_r($resoldata);
SetValueString(39589 /*[Scripte\Resol\DatumResol]*/, $Datum); // ID anpassen
SetValue(12014 /*[Scripte\Resol\Volumenstrom in m³/h]*/, $resoldata[9]); // Volumenstrom
SetValue(55154 /*[Scripte\Resol\Wärmemenge in W/h]*/, $resoldata[31]); // Wärmemenge
?>
liest den Wert des Volumenstroms (in m³/h) und die Wärmemenge (in W/h) aus. Ich will nun diese Wert umrechnen lassen. Volumenstrom soll in Liter/h und die Wärmemenge in kW/h abgelegt werden. Ich habe also zwei weiter Variablen angelegt und das Script von oben um
SetValue(49469 /*[Scripte\Resol\Volumenstrom in l/h]*/ , $resoldata[9]*1000); // Volumenstrom in Liter
SetValue(21925 /*[Scripte\Resol\Wärmemenge in kW/h]*/,$resoldata[31]/1000); // Wärmemenge in kW
erweitert. Die Watt pro Stunde werden nun von z.B. 123456 in 123,456 umgerechnet. Prima!
Die m³ pro Stunde werden jedoch von z.B. 0,12 in 0 umgerechnet.
Ich habe versucht dem Phänomen mal mal auf den Grund zu gehen und habe unten ein