so nun brauche ich mal euer Schwarmwissen. Habe 2 Axpert Max 8K an 2 verschiedenen Standorten. Dort läuft seit gut 8 Monaten eine eigene Math.php. Diese liest zusätzliche Daten des Wechselrichters aus. Seit 01/01 funktioniert aber 1 Befehl nicht mehr. Über ein Hyperterminal jedoch ohne Probleme. Kann da mal jemand drüberschauen?
Verbrauch funktioniert:
Code: Alles auswählen
// Monatsdaten Verbrauch ...................................................................................
$Wert = false;
$Antwort = "";
$rc = fgets($USB,4096); // Alte Daten löschen
$CRC = $funktionen->hex2str( dechex( $funktionen->CRC16Normal( "QLM".date('Ym'))));
fputs( $USB, "QLM");
usleep( $Timebase );
fputs( $USB, date('Ym').$CRC."\r" );
usleep( $Timebase ); // [normal 10000] Es dauert etwas, bis die ersten Daten kommen ...
$funktionen->log_schreiben( "Befehl: QLM\r", " ", 8 );
for ($k = 1; $k < 200; $k++) {
$rc = fgets( $USB, 4096 ); // 4096
usleep( $Timebase ); // Die Effekta Geraete sind so langsam...
$Antwort .= $rc;
if (empty($rc)) {
usleep( $Timebase + 20000 ); // Muss auf 10000 bleiben. 2.5.2022 Die Effekta Geraete sind so langsam...
continue;
}
$rc = "";
if (substr( trim($Antwort,"\0"), - 1 ) == "\r" and substr( $Antwort, 0, 1 ) == "(") {
if (substr( $Antwort, 1, 3 ) == "NAK") {
$Wert = false;
$Antwort = substr( $Antwort, 0, 4 ); // Den CRC abschneiden
}
else {
$Wert = true;
}
$rc = "";
break;
}
}
if (substr( $Antwort, 1, 3 ) == "NAK") {
$funktionen->log_schreiben( "QLM: ".substr( $Antwort, 1, 3 ), " ", 8 );
}
else {
$aktuelleDaten["AC_WattstundenMonat"] = substr($Antwort,1,8);
$funktionen->log_schreiben("QLM: ". substr( $Antwort, 1, - 3 )." i: ".$k, " ", 10 );
}
Code: Alles auswählen
// Monatsdaten PV ...................................................................................
$Wert = false;
$Antwort = "";
$rc = fgets($USB,4096); // Alte Daten löschen
$CRC = $funktionen->hex2str( dechex( $funktionen->CRC16Normal( "QEM".date('Ym'))));
fputs( $USB, "QEM");
usleep( $Timebase );
fputs( $USB, date('Ym').$CRC."\r" );
usleep( $Timebase ); // [normal 10000] Es dauert etwas, bis die ersten Daten kommen ...
$funktionen->log_schreiben( "Befehl: QEM\r", " ", 8 );
for ($k = 1; $k < 200; $k++) {
$rc = fgets( $USB, 4096 ); // 4096
usleep( $Timebase ); // Die Effekta Geraete sind so langsam...
$Antwort .= $rc;
if (empty($rc)) {
usleep( $Timebase + 20000 ); // Muss auf 10000 bleiben. 2.5.2022 Die Effekta Geraete sind so langsam...
continue;
}
$rc = "";
if (substr( trim($Antwort,"\0"), - 1 ) == "\r" and substr( $Antwort, 0, 1 ) == "(") {
if (substr( $Antwort, 1, 3 ) == "NAK") {
$Wert = false;
$Antwort = substr( $Antwort, 0, 4 ); // Den CRC abschneiden
}
else {
$Wert = true;
}
$rc = "";
break;
}
}
if (substr( $Antwort, 1, 3 ) == "NAK") {
$funktionen->log_schreiben( "QEM: ".substr( $Antwort, 1, 3 ), " ", 8 );
}
else {
$aktuelleDaten["PV_WattstundenMonat"] = substr($Antwort,1,8);
$funktionen->log_schreiben("QEM: ". substr( $Antwort, 1, - 3 )." i: ".$k, " ", 10 );
}
Gruß
Simon