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

 Ich wohne da wo Ihr Urlaub macht
  Ich wohne da wo Ihr Urlaub macht  