Fehlermeldung beim Auslesen Solar Solar WR
Moderator: Ulrich
-
Ruhz69
- Beiträge: 106
- Registriert: Fr 28. Jan 2022, 19:41
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Fehlermeldung beim Auslesen Solar Solar WR
Hallo Ulrich,
ich habe mal wieder ein Problem mit meinem Sofar Solar Wechselrichter. Ich will auf die 6.17 Version 64 bit gehen, da ich nach SD-Schrott jetzt auf eine SSD als Speicher gehen will. Letzte Version von vor ein paar Tagen runtergeladen.
Bei meinem Sofa solar WR bekomme ich folgende Fehlermeldung:
Solaranzeige Log
28:24 -Verarbeitung von: '2.user.config.php' Regler: 73
25.09. 11:28:24 |------------------------- Start sofarsolar_wr.php ---------------------
25.09. 11:28:24 -Timer Wert. [ normal = 400000 ]: 200000
25.09. 11:29:02 -Multi Regler Auslesen [Start].
25.09. 11:29:02 -Verarbeitung von: '1.user.config.php' Regler: 41
25.09. 11:29:02 |--------------- Start us3000_bms.php -----------------
Bricht also ab.
PHP log:
[25-Sep-2026 11:28:24 Europe/Berlin] PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /var/www/html/sofarsolar_wr.php:143
Stack trace:
#0 /var/www/html/multi_regler_auslesen.php(436): require()
#1 {main}
thrown in /var/www/html/sofarsolar_wr.php on line 143
die Zeile 143 ist bei mir etwas verschoben nicht wie im Standard und sieht so aus.
// Ab hier wird der Regler ausgelesen.
// Modell: x.x KTL-X
****************************************************************************/
$Befehl["DeviceID"] = $WR_ID;
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterAddress"] = str_pad( "2000", 4, "0", STR_PAD_LEFT );
$Befehl["RegisterCount"] = "0010";
Die $WR_ID wird weiter oben gesetzt.
/var/www~_wr.php [----] 57 L:[ 87+16 103/336] *(3734/15036b) 0010 0x00A [*][X]
default:
break;
}
if (empty($WR_Adresse)) {
$WR_ID = "01";
}
elseif (strlen( $WR_Adresse ) == 1) {
$WR_ID = str_pad( dechex( $WR_Adresse ), 2, "0", STR_PAD_LEFT );
}
elseif (strlen( $WR_Adresse ) == 2) {
$WR_ID = str_pad( dechex( substr( $WR_Adresse, - 2 )), 2, "0", STR_PAD_LEFT );
}
else {
$WR_ID = dechex( $WR_Adresse );
}
$funktionen->log_schreiben( "WR_ID: ".$WR_ID, "+ ", 8 );
Ich habe den Fehler gegoogelt.
https://www.woltlab.com/community/threa ... type-stri/
Ich habe auch mal den Regler 87 probiert, der macht den gleichen Fehler.
Gruss
Rüdiger
ich habe mal wieder ein Problem mit meinem Sofar Solar Wechselrichter. Ich will auf die 6.17 Version 64 bit gehen, da ich nach SD-Schrott jetzt auf eine SSD als Speicher gehen will. Letzte Version von vor ein paar Tagen runtergeladen.
Bei meinem Sofa solar WR bekomme ich folgende Fehlermeldung:
Solaranzeige Log
28:24 -Verarbeitung von: '2.user.config.php' Regler: 73
25.09. 11:28:24 |------------------------- Start sofarsolar_wr.php ---------------------
25.09. 11:28:24 -Timer Wert. [ normal = 400000 ]: 200000
25.09. 11:29:02 -Multi Regler Auslesen [Start].
25.09. 11:29:02 -Verarbeitung von: '1.user.config.php' Regler: 41
25.09. 11:29:02 |--------------- Start us3000_bms.php -----------------
Bricht also ab.
PHP log:
[25-Sep-2026 11:28:24 Europe/Berlin] PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /var/www/html/sofarsolar_wr.php:143
Stack trace:
#0 /var/www/html/multi_regler_auslesen.php(436): require()
#1 {main}
thrown in /var/www/html/sofarsolar_wr.php on line 143
die Zeile 143 ist bei mir etwas verschoben nicht wie im Standard und sieht so aus.
// Ab hier wird der Regler ausgelesen.
// Modell: x.x KTL-X
****************************************************************************/
$Befehl["DeviceID"] = $WR_ID;
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterAddress"] = str_pad( "2000", 4, "0", STR_PAD_LEFT );
$Befehl["RegisterCount"] = "0010";
Die $WR_ID wird weiter oben gesetzt.
/var/www~_wr.php [----] 57 L:[ 87+16 103/336] *(3734/15036b) 0010 0x00A [*][X]
default:
break;
}
if (empty($WR_Adresse)) {
$WR_ID = "01";
}
elseif (strlen( $WR_Adresse ) == 1) {
$WR_ID = str_pad( dechex( $WR_Adresse ), 2, "0", STR_PAD_LEFT );
}
elseif (strlen( $WR_Adresse ) == 2) {
$WR_ID = str_pad( dechex( substr( $WR_Adresse, - 2 )), 2, "0", STR_PAD_LEFT );
}
else {
$WR_ID = dechex( $WR_Adresse );
}
$funktionen->log_schreiben( "WR_ID: ".$WR_ID, "+ ", 8 );
Ich habe den Fehler gegoogelt.
https://www.woltlab.com/community/threa ... type-stri/
Ich habe auch mal den Regler 87 probiert, der macht den gleichen Fehler.
Gruss
Rüdiger
- Ulrich
- Administrator
- Beiträge: 5535
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 163 Mal
- Danksagung erhalten: 804 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Hallo Rüdiger,
hast du nach der Installation ein Update auf die Solaranzeige gemacht?
hast du nach der Installation ein Update auf die Solaranzeige gemacht?
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
-
Ruhz69
- Beiträge: 106
- Registriert: Fr 28. Jan 2022, 19:41
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Hallo Ulrich,
hatte ich nicht, habe es grade nachgeholt, der Fehler bleibt (Regler 73 und Regler 87, beide mit reboot).
Ich habe den allerersten Solar Solar, der hat schon öfter nach updates Ärger gemacht, wobei er dann auf Lesefehler läuft. 6.15 32 Bit ging, 6.17 32 Bit Lesefehler, 6.17 64 Bit die gezeigten Fehler.
Ist also wahrscheinlich nach dem Fehler nicht fertig.
viele Grüsse
Rüdiger
hatte ich nicht, habe es grade nachgeholt, der Fehler bleibt (Regler 73 und Regler 87, beide mit reboot).
Ich habe den allerersten Solar Solar, der hat schon öfter nach updates Ärger gemacht, wobei er dann auf Lesefehler läuft. 6.15 32 Bit ging, 6.17 32 Bit Lesefehler, 6.17 64 Bit die gezeigten Fehler.
Ist also wahrscheinlich nach dem Fehler nicht fertig.
viele Grüsse
Rüdiger
- Ulrich
- Administrator
- Beiträge: 5535
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 163 Mal
- Danksagung erhalten: 804 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Bitte melde dich einmal per eMail an support
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
-
Ruhz69
- Beiträge: 106
- Registriert: Fr 28. Jan 2022, 19:41
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Hallo Ulrich,
Hast du eigentlich mal reingeschaut?
Ich hab dir ein paar mails geschickt, die landen ja schon mal im Spam Ordner
Viele Grüße
Rüdiger
Hast du eigentlich mal reingeschaut?
Ich hab dir ein paar mails geschickt, die landen ja schon mal im Spam Ordner
Viele Grüße
Rüdiger
- Ulrich
- Administrator
- Beiträge: 5535
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 163 Mal
- Danksagung erhalten: 804 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Ich hatte dir auch eine eMail gesendet. Ich habe von dir keine erhalten. Auch im SPAM nicht.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
-
Ruhz69
- Beiträge: 106
- Registriert: Fr 28. Jan 2022, 19:41
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Hallo Ulrich,
du warst ja grade an meinem Pi und sagtest, dass keine Daten von meinem Sofar Solar WR kommen.
Ich habe noch eine SD Karte mit meiner alten Version der Solaranzeige. Leider zickt dort der Andere Wechselrichter samt Influx. Deswegen ja das update.
Wenn ich diese Karte einmache, wird der Solar Solar ausgelesen.
Zugriff via Terminal:
Solaranzeige log:
03.10. 10:54:00 -Multi Regler Auslesen [Start].
03.10. 10:54:00 -Verarbeitung von: '1.user.config.php' Regler: 73
03.10. 10:54:00 |------------------------- Start sofarsolar_wr.php ---------------------
03.10. 10:54:00 -Zentraler Timestamp: 1791017640
03.10. 10:54:00 o -Hardware Version: Raspberry Pi 4 Model B Rev 1.5
03.10. 10:54:00 + -WR_ID: 01
03.10. 10:54:00 + -Die Daten werden ausgelesen...
03.10. 10:54:00 -Timer Wert. [ normal = 400000 ]: 200000
03.10. 10:54:00 -senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ ]
03.10. 10:54:00 -senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ 010420000153463445533030354c3855303038563234305631303056323430563234302cd7 ]
03.10. 10:54:00 -Produkt: 1
03.10. 10:54:00 -Seriennummer: SF4ES005L8U008
03.10. 10:54:00 -senden > [ 01030000003045de ]
03.10. 10:54:01 -empfangen > [ ]
03.10. 10:54:01 -senden > [ 01030000003045de ]
03.10. 10:54:01 -empfangen > [ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316 ]
03.10. 10:54:01 -empfangen > [ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316003c00000001000004ae08fa0760000000000000000503e603e803e200000000ad02 ]
03.10. 10:54:01 -[ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316003c00000001000004ae08fa0760000000000000000503e603e803e200000000ad02 ]
03.10. 10:54:01 -Auslesen des Gerätes beendet.
03.10. 10:54:01 -Array
(
[zentralerTimestamp] => 1791017650
[KeineSonne] =>
[Produkt] => SofarSolar
[Seriennummer] => SF4ES005L8U008
[Firmware] => V240
[Hardware] => V100
[Status] => 2
[Fehler1] => 0
[Fehler2] => 0
[Fehler3] => 0
[Fehler4] => 0
[Fehler5] => 0
[PV1_Spannung] => 427.1
[PV1_Strom] => 2.01
[PV2_Spannung] => 79
[PV2_Strom] => 0
[PV1_Leistung] => 770
[PV2_Leistung] => 0
[AC_Frequenz] => 50.01
[AC_Spannung_R] => 232.8
[AC_Strom_R] => 1.44
[AC_Spannung_S] => 233.5
[AC_Strom_S] => 1.43
[AC_Spannung_T] => 233.8
[AC_Strom_T] => 1.42
[WattstundenGesamtHeute] => 1550
[Laufzeit_Heute] => 198
[Temperatur_Module] => 39
[Temperatur] => 53
[Energie_Total] => 19521000
[Laufzeit_Total] => 21052
[PV_Leistung] => 770
[Regler] => 73
[Objekt] =>
[Modell] => KTL-X
)
03.10. 10:54:01 -MQTT Daten zum [ localhost ] senden.
03.10. 10:54:01 -box1/zentralerTimestamp 1791017650 rc: 36
03.10. 10:54:01 -box1/KeineSonne rc: 18
03.10. 10:54:01 -box1/Produkt SofarSolar rc: 25
03.10. 10:54:01 -box1/Seriennummer SF4ES005L8U008 rc: 34
03.10. 10:54:01 -box1/Firmware V240 rc: 20
03.10. 10:54:01 -box1/Hardware V100 rc: 20
03.10. 10:54:01 -box1/Status 2 rc: 15
03.10. 10:54:01 -box1/Fehler1 0 rc: 16
03.10. 10:54:01 -box1/Fehler2 0 rc: 16
03.10. 10:54:01 -box1/Fehler3 0 rc: 16
03.10. 10:54:01 -box1/Fehler4 0 rc: 16
03.10. 10:54:01 -box1/Fehler5 0 rc: 16
03.10. 10:54:01 -box1/PV1_Spannung 427.1 rc: 25
03.10. 10:54:01 -box1/PV1_Strom 2.01 rc: 21
03.10. 10:54:01 -box1/PV2_Spannung 79 rc: 22
03.10. 10:54:01 -box1/PV2_Strom 0 rc: 18
03.10. 10:54:01 -box1/PV1_Leistung 770 rc: 23
03.10. 10:54:01 -box1/PV2_Leistung 0 rc: 21
03.10. 10:54:01 -box1/AC_Frequenz 50.01 rc: 24
03.10. 10:54:01 -box1/AC_Spannung_R 232.8 rc: 26
03.10. 10:54:01 -box1/AC_Strom_R 1.44 rc: 22
03.10. 10:54:01 -box1/AC_Spannung_S 233.5 rc: 26
03.10. 10:54:01 -box1/AC_Strom_S 1.43 rc: 22
03.10. 10:54:01 -box1/AC_Spannung_T 233.8 rc: 26
03.10. 10:54:01 -box1/AC_Strom_T 1.42 rc: 22
03.10. 10:54:01 -box1/WattstundenGesamtHeute 1550 rc: 34
03.10. 10:54:01 -box1/Laufzeit_Heute 198 rc: 25
03.10. 10:54:01 -box1/Temperatur_Module 39 rc: 27
03.10. 10:54:01 -box1/Temperatur 53 rc: 20
03.10. 10:54:01 -box1/Energie_Total 19521000 rc: 29
03.10. 10:54:01 -box1/Laufzeit_Total 21052 rc: 27
03.10. 10:54:01 -box1/PV_Leistung 770 rc: 22
03.10. 10:54:01 -box1/Regler 73 rc: 16
03.10. 10:54:01 -box1/Objekt rc: 14
03.10. 10:54:01 -box1/Modell KTL-X rc: 19
03.10. 10:54:01 -Aktuelle Daten:
Array
(
[zentralerTimestamp] => 1791017650
[KeineSonne] =>
[Produkt] => SofarSolar
[Seriennummer] => SF4ES005L8U008
[Firmware] => V240
[Hardware] => V100
[Status] => 2
[Fehler1] => 0
[Fehler2] => 0
[Fehler3] => 0
[Fehler4] => 0
[Fehler5] => 0
[PV1_Spannung] => 427.1
[PV1_Strom] => 2.01
[PV2_Spannung] => 79
[PV2_Strom] => 0
[PV1_Leistung] => 770
[PV2_Leistung] => 0
[AC_Frequenz] => 50.01
[AC_Spannung_R] => 232.8
[AC_Strom_R] => 1.44
[AC_Spannung_S] => 233.5
[AC_Strom_S] => 1.43
[AC_Spannung_T] => 233.8
[AC_Strom_T] => 1.42
[WattstundenGesamtHeute] => 1550
[Laufzeit_Heute] => 198
[Temperatur_Module] => 39
[Temperatur] => 53
[Energie_Total] => 19521000
[Laufzeit_Total] => 21052
[PV_Leistung] => 770
[Regler] => 73
[Objekt] =>
[Modell] => KTL-X
[Timestamp] => 1791017641
[Monat] => 10
[Woche] => 40
[Wochentag] => Samstag
[Datum] => 03.10.2026
[Uhrzeit] => 10:54:01
[InfluxAdresse] =>
[InfluxPort] => 8086
[InfluxUser] =>
[InfluxPassword] =>
[InfluxDBName] => solaranzeige
[InfluxDaylight] =>
[InfluxDBLokal] => solaranzeige2
[InfluxSSL] =>
[Demodaten] =>
)
03.10. 10:54:01 -Query:
AC Spannung_R=232.8,Spannung_S=233.5,Spannung_T=233.8,Frequenz=50.01,Strom_R=1.44,Strom_S=1.43,Strom_T=1.42,Leistung=770 1791017650
PV Spannung1=427.1,Spannung2=79,Strom1=2.01,Strom2=0,Leistung=770,Leistung1=770,Leistung2=0 1791017650
Service Temperatur=53,WR_Fehler=0,Modell="KTL-X",Status=2,Seriennummer="SF4ES005L8U008" 1791017650
Summen Wh_Heute=1550,Wh_Gesamt=19521000,Laufzeit_Heute=198 1791017650
03.10. 10:54:01 * -Daten zur lokalen InfluxDB [ solaranzeige2 ] gesendet.
03.10. 10:54:01 -Multi-Regler-Ausgang. 8
03.10. 10:54:09 -OK. Datenübertragung erfolgreich.
03.10. 10:54:09 |------------------------- Stop sofarsolar_wr.php ---------------------
Ich hänge mal die damalige sofarsolar_wr.php an. Da hat sich ein bisschen etwas geändert. Mit deiner Hilfe sind da ein paar Änderungen reingekommen. Die ist für Regler 73, der läuft bei mir aber immer noch auf den Fehler oben ($WR_ID)
Ich habe mir auch mal ein 32 bit Version 6.17 image geladen, da laufen Beide Regler auf "Lesefehler" auch mit der alten Sofarsolar_wr.php.
Meine Mails kommen übrigens auf meiner zweiten Mail Adresse an. Keine Ahnung, was da schief läuft.
trotzdem vielen Dank und viele Grüsse
Rüdiger
du warst ja grade an meinem Pi und sagtest, dass keine Daten von meinem Sofar Solar WR kommen.
Ich habe noch eine SD Karte mit meiner alten Version der Solaranzeige. Leider zickt dort der Andere Wechselrichter samt Influx. Deswegen ja das update.
Wenn ich diese Karte einmache, wird der Solar Solar ausgelesen.
Zugriff via Terminal:
Code: Alles auswählen
Linux solaranzeige 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64
Raspberry Version 6.1.5 [32Bit] Basis Mai 2025 (Bookworm)
Last login: Sun Sep 27 09:42:18 2026
CPU Temperatur 45 °C
Raspberry Pi 4 Model B Rev 1.5
03.10. 10:54:00 -Multi Regler Auslesen [Start].
03.10. 10:54:00 -Verarbeitung von: '1.user.config.php' Regler: 73
03.10. 10:54:00 |------------------------- Start sofarsolar_wr.php ---------------------
03.10. 10:54:00 -Zentraler Timestamp: 1791017640
03.10. 10:54:00 o -Hardware Version: Raspberry Pi 4 Model B Rev 1.5
03.10. 10:54:00 + -WR_ID: 01
03.10. 10:54:00 + -Die Daten werden ausgelesen...
03.10. 10:54:00 -Timer Wert. [ normal = 400000 ]: 200000
03.10. 10:54:00 -senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ ]
03.10. 10:54:00 -senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ 010420000153463445533030354c3855303038563234305631303056323430563234302cd7 ]
03.10. 10:54:00 -Produkt: 1
03.10. 10:54:00 -Seriennummer: SF4ES005L8U008
03.10. 10:54:00 -senden > [ 01030000003045de ]
03.10. 10:54:01 -empfangen > [ ]
03.10. 10:54:01 -senden > [ 01030000003045de ]
03.10. 10:54:01 -empfangen > [ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316 ]
03.10. 10:54:01 -empfangen > [ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316003c00000001000004ae08fa0760000000000000000503e603e803e200000000ad02 ]
03.10. 10:54:01 -[ 01036000020000000000000000000010af00c90316000000560000004dffc2138909180090091f008f0922008e00004c410000523c009b00c60027003518da10ab0316003c00000001000004ae08fa0760000000000000000503e603e803e200000000ad02 ]
03.10. 10:54:01 -Auslesen des Gerätes beendet.
03.10. 10:54:01 -Array
(
[zentralerTimestamp] => 1791017650
[KeineSonne] =>
[Produkt] => SofarSolar
[Seriennummer] => SF4ES005L8U008
[Firmware] => V240
[Hardware] => V100
[Status] => 2
[Fehler1] => 0
[Fehler2] => 0
[Fehler3] => 0
[Fehler4] => 0
[Fehler5] => 0
[PV1_Spannung] => 427.1
[PV1_Strom] => 2.01
[PV2_Spannung] => 79
[PV2_Strom] => 0
[PV1_Leistung] => 770
[PV2_Leistung] => 0
[AC_Frequenz] => 50.01
[AC_Spannung_R] => 232.8
[AC_Strom_R] => 1.44
[AC_Spannung_S] => 233.5
[AC_Strom_S] => 1.43
[AC_Spannung_T] => 233.8
[AC_Strom_T] => 1.42
[WattstundenGesamtHeute] => 1550
[Laufzeit_Heute] => 198
[Temperatur_Module] => 39
[Temperatur] => 53
[Energie_Total] => 19521000
[Laufzeit_Total] => 21052
[PV_Leistung] => 770
[Regler] => 73
[Objekt] =>
[Modell] => KTL-X
)
03.10. 10:54:01 -MQTT Daten zum [ localhost ] senden.
03.10. 10:54:01 -box1/zentralerTimestamp 1791017650 rc: 36
03.10. 10:54:01 -box1/KeineSonne rc: 18
03.10. 10:54:01 -box1/Produkt SofarSolar rc: 25
03.10. 10:54:01 -box1/Seriennummer SF4ES005L8U008 rc: 34
03.10. 10:54:01 -box1/Firmware V240 rc: 20
03.10. 10:54:01 -box1/Hardware V100 rc: 20
03.10. 10:54:01 -box1/Status 2 rc: 15
03.10. 10:54:01 -box1/Fehler1 0 rc: 16
03.10. 10:54:01 -box1/Fehler2 0 rc: 16
03.10. 10:54:01 -box1/Fehler3 0 rc: 16
03.10. 10:54:01 -box1/Fehler4 0 rc: 16
03.10. 10:54:01 -box1/Fehler5 0 rc: 16
03.10. 10:54:01 -box1/PV1_Spannung 427.1 rc: 25
03.10. 10:54:01 -box1/PV1_Strom 2.01 rc: 21
03.10. 10:54:01 -box1/PV2_Spannung 79 rc: 22
03.10. 10:54:01 -box1/PV2_Strom 0 rc: 18
03.10. 10:54:01 -box1/PV1_Leistung 770 rc: 23
03.10. 10:54:01 -box1/PV2_Leistung 0 rc: 21
03.10. 10:54:01 -box1/AC_Frequenz 50.01 rc: 24
03.10. 10:54:01 -box1/AC_Spannung_R 232.8 rc: 26
03.10. 10:54:01 -box1/AC_Strom_R 1.44 rc: 22
03.10. 10:54:01 -box1/AC_Spannung_S 233.5 rc: 26
03.10. 10:54:01 -box1/AC_Strom_S 1.43 rc: 22
03.10. 10:54:01 -box1/AC_Spannung_T 233.8 rc: 26
03.10. 10:54:01 -box1/AC_Strom_T 1.42 rc: 22
03.10. 10:54:01 -box1/WattstundenGesamtHeute 1550 rc: 34
03.10. 10:54:01 -box1/Laufzeit_Heute 198 rc: 25
03.10. 10:54:01 -box1/Temperatur_Module 39 rc: 27
03.10. 10:54:01 -box1/Temperatur 53 rc: 20
03.10. 10:54:01 -box1/Energie_Total 19521000 rc: 29
03.10. 10:54:01 -box1/Laufzeit_Total 21052 rc: 27
03.10. 10:54:01 -box1/PV_Leistung 770 rc: 22
03.10. 10:54:01 -box1/Regler 73 rc: 16
03.10. 10:54:01 -box1/Objekt rc: 14
03.10. 10:54:01 -box1/Modell KTL-X rc: 19
03.10. 10:54:01 -Aktuelle Daten:
Array
(
[zentralerTimestamp] => 1791017650
[KeineSonne] =>
[Produkt] => SofarSolar
[Seriennummer] => SF4ES005L8U008
[Firmware] => V240
[Hardware] => V100
[Status] => 2
[Fehler1] => 0
[Fehler2] => 0
[Fehler3] => 0
[Fehler4] => 0
[Fehler5] => 0
[PV1_Spannung] => 427.1
[PV1_Strom] => 2.01
[PV2_Spannung] => 79
[PV2_Strom] => 0
[PV1_Leistung] => 770
[PV2_Leistung] => 0
[AC_Frequenz] => 50.01
[AC_Spannung_R] => 232.8
[AC_Strom_R] => 1.44
[AC_Spannung_S] => 233.5
[AC_Strom_S] => 1.43
[AC_Spannung_T] => 233.8
[AC_Strom_T] => 1.42
[WattstundenGesamtHeute] => 1550
[Laufzeit_Heute] => 198
[Temperatur_Module] => 39
[Temperatur] => 53
[Energie_Total] => 19521000
[Laufzeit_Total] => 21052
[PV_Leistung] => 770
[Regler] => 73
[Objekt] =>
[Modell] => KTL-X
[Timestamp] => 1791017641
[Monat] => 10
[Woche] => 40
[Wochentag] => Samstag
[Datum] => 03.10.2026
[Uhrzeit] => 10:54:01
[InfluxAdresse] =>
[InfluxPort] => 8086
[InfluxUser] =>
[InfluxPassword] =>
[InfluxDBName] => solaranzeige
[InfluxDaylight] =>
[InfluxDBLokal] => solaranzeige2
[InfluxSSL] =>
[Demodaten] =>
)
03.10. 10:54:01 -Query:
AC Spannung_R=232.8,Spannung_S=233.5,Spannung_T=233.8,Frequenz=50.01,Strom_R=1.44,Strom_S=1.43,Strom_T=1.42,Leistung=770 1791017650
PV Spannung1=427.1,Spannung2=79,Strom1=2.01,Strom2=0,Leistung=770,Leistung1=770,Leistung2=0 1791017650
Service Temperatur=53,WR_Fehler=0,Modell="KTL-X",Status=2,Seriennummer="SF4ES005L8U008" 1791017650
Summen Wh_Heute=1550,Wh_Gesamt=19521000,Laufzeit_Heute=198 1791017650
03.10. 10:54:01 * -Daten zur lokalen InfluxDB [ solaranzeige2 ] gesendet.
03.10. 10:54:01 -Multi-Regler-Ausgang. 8
03.10. 10:54:09 -OK. Datenübertragung erfolgreich.
03.10. 10:54:09 |------------------------- Stop sofarsolar_wr.php ---------------------
Ich hänge mal die damalige sofarsolar_wr.php an. Da hat sich ein bisschen etwas geändert. Mit deiner Hilfe sind da ein paar Änderungen reingekommen. Die ist für Regler 73, der läuft bei mir aber immer noch auf den Fehler oben ($WR_ID)
Ich habe mir auch mal ein 32 bit Version 6.17 image geladen, da laufen Beide Regler auf "Lesefehler" auch mit der alten Sofarsolar_wr.php.
Code: Alles auswählen
!/usr/bin/php
<?php
/*****************************************************************************
// Solaranzeige Projekt Copyright (C) [2015-2020] [Ulrich Kunz]
//
// Dieses Programm ist freie Software. Sie können es unter den Bedingungen
// der GNU General Public License, wie von der Free Software Foundation
// veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß
// Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
//
// Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es
// Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne
// die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
// BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
//
// Ein original Exemplar der GNU General Public License finden Sie hier:
// http://www.gnu.org/licenses/
//
// Dies ist ein Programmteil des Programms "Solaranzeige"
//
// Es dient dem Auslesen des Wechselrichters SofarSolar über eine RS485
// Schnittstelle mit USB Adapter. Protokoll Version 2013-8-17
// Das Auslesen wird hier mit einer Schleife durchgeführt. Wie oft die Daten
// ausgelesen und gespeichert werden steht in der user.config.php
//
//
*****************************************************************************/
// Wartezeit für das Lesen der MODBUS Daten.
$Timer = 200000; // Kann in der config noch angepasst werden.
$path_parts = pathinfo( $argv[0] );
$Pfad = $path_parts['dirname'];
if (!is_file( $Pfad."/1.user.config.php" )) {
// Handelt es sich um ein Multi Regler System?
require ($Pfad."/user.config.php");
}
require_once ($Pfad."/phpinc/funktionen.inc.php");
if (!isset($funktionen)) {
$funktionen = new funktionen( );
}
// Im Fall, dass man die Device manuell eingeben muss
if (isset($USBDevice) and !empty($USBDevice)) {
$USBRegler = $USBDevice;
}
$Tracelevel = 7; // 1 bis 10 10 = Debug
$RemoteDaten = true;
$Start = time( ); // Timestamp festhalten
$funktionen->log_schreiben( "---------------------- Start sofarsolar_wr.php --------------------- ", "|--", 6 );
$funktionen->log_schreiben( "Zentraler Timestamp: ".$zentralerTimestamp, " ", 8 );
$aktuelleDaten = array();
$aktuelleDaten["zentralerTimestamp"] = $zentralerTimestamp;
$aktuelleDaten["KeineSonne"] = false;
setlocale( LC_TIME, "de_DE.utf8" );
if (!is_file( $Pfad."/1.user.config.php" )) {
if ((int) substr( trim( $FreierSpeicher ), 0, - 1 ) < 6) {
// Minimum von 6 GB freier speicher muss zur Verfügung stehen.
$funktionen->log_schreiben( substr( trim( $FreierSpeicher ), 0, - 1 )." GB freier Speicher steht auf der SD-Karte / USB Stick zur Verfügung.", "!! ", 2 );
$funktionen->log_schreiben( "Das ist zu wenig! Ist der gesamte Speicherplatz freigegeben? Bitte prüfen!", "!! ", 2 );
}
}
// Hardware Version ermitteln.
// $Platine = "Raspberry Pi Model B Plus Rev 1.2";
$Teile = explode( " ", $Platine );
if ($Teile[1] == "Pi") {
$funktionen->log_schreiben( "Hardware Version: ".$Platine, "o ", 8 );
$Version = trim( $Teile[2] );
if ($Teile[3] == "Model") {
$Version .= trim( $Teile[4] );
if ($Teile[5] == "Plus") {
$Version .= trim( $Teile[5] );
}
}
}
switch ($Version) {
case "2B":
break;
case "3B":
break;
case "3BPlus":
break;
case "4B":
break;
default:
break;
}
if (empty($WR_Adresse)) {
$WR_ID = "01";
}
elseif (strlen( $WR_Adresse ) == 1) {
$WR_ID = str_pad( dechex( $WR_Adresse ), 2, "0", STR_PAD_LEFT );
}
elseif (strlen( $WR_Adresse ) == 2) {
$WR_ID = str_pad( dechex( substr( $WR_Adresse, - 2 )), 2, "0", STR_PAD_LEFT );
}
else {
$WR_ID = dechex( $WR_Adresse );
}
$funktionen->log_schreiben( "WR_ID: ".$WR_ID, "+ ", 8 );
$USB1 = $funktionen->openUSB( $USBRegler );
if (!is_resource( $USB1 )) {
$funktionen->log_schreiben( "USB Port kann nicht geöffnet werden. [1]", "XX ", 7 );
$funktionen->log_schreiben( "Exit.... ", "XX ", 7 );
goto Ausgang;
}
/*************
Ausgang Nachts
*************/
if($funktionen->tageslicht("binzen") === false) {
$funktionen->log_schreiben("Nachts kein Auslesen","XX ",7);
goto Ausgang;
}
/*
$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5); // 5 = Timeout in Sekunden
if (!is_resource($COM1)) {
$funktionen->log_schreiben("Kein Kontakt zum Wechselrichter ".$WR_IP." Port: ".$WR_Port,"XX ",3);
$funktionen->log_schreiben("Exit.... ","XX ",9);
goto Ausgang;
}*/
$i = 1;
do {
$funktionen->log_schreiben( "Die Daten werden ausgelesen...", "+ ", 9 );
$funktionen->log_schreiben( "Timer Wert. [ normal = 400000 ]: ".$Timer, " ", 7 );
/****************************************************************************
// Ausgang Nachts
****************************************************************************/
/*/if (date("H") > "19" or date("H") < "04" ) {/
if($funktionen->tageslicht("binzen") === false) {
$funktionen->log_schreiben("Kein Auslesen nach Sonnenuntergang","XX ",7);
goto Ausgang;
}*/
/****************************************************************************
// Ab hier wird der Regler ausgelesen.
// Modell: x.x KTL-X
****************************************************************************/
$Befehl["DeviceID"] = $WR_ID;
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterAddress"] = str_pad( "2000", 4, "0", STR_PAD_LEFT );
$Befehl["RegisterCount"] = "0010";
//Ausgang bei wenig PV und falscher Daten
$rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl, $Timer );.
if ($rc == false) {
$funktionen->log_schreiben( "Das Gerät kann nicht ausgelesen werden.", " ", 7 );
goto Ausgang;
}
$aktuelleDaten["Produkt"] = hexdec( substr( $rc["data"], 0, 4 ));
$aktuelleDaten["Seriennummer"] = $funktionen->hex2string( substr( $rc["data"], 4, 28 ));
$aktuelleDaten["Firmware"] = $funktionen->hex2string( substr( $rc["data"], 32, 8 ));
$aktuelleDaten["Hardware"] = $funktionen->hex2string( substr( $rc["data"], 40, 8 ));
$funktionen->log_schreiben( "Produkt: ".$aktuelleDaten["Produkt"], " ", 7 );
$funktionen->log_schreiben( "Seriennummer: ".$aktuelleDaten["Seriennummer"], " ", 7 );
$Befehl["DeviceID"] = $WR_ID;
$Befehl["BefehlFunctionCode"] = "03";
$Befehl["RegisterAddress"] = str_pad( "0", 4, "0", STR_PAD_LEFT );
$Befehl["RegisterCount"] = "0030";
$rc = $funktionen->phocos_pv18_auslesen( $USB1, $Befehl, $Timer );
$aktuelleDaten["Status"] = hexdec( substr( $rc["data"], 0, 4 )); // 0
$aktuelleDaten["Fehler1"] = hexdec( substr( $rc["data"], 4, 4 )); // 1
$aktuelleDaten["Fehler2"] = hexdec( substr( $rc["data"], 8, 4 ));
$aktuelleDaten["Fehler3"] = hexdec( substr( $rc["data"], 12, 4 ));
$aktuelleDaten["Fehler4"] = hexdec( substr( $rc["data"], 16, 4 ));
$aktuelleDaten["Fehler5"] = hexdec( substr( $rc["data"], 20, 4 ));
$aktuelleDaten["PV1_Spannung"] = hexdec( substr( $rc["data"], 24, 4 )) / 10;
$aktuelleDaten["PV1_Strom"] = hexdec( substr( $rc["data"], 28, 4 )) / 100;
$aktuelleDaten["PV2_Spannung"] = hexdec( substr( $rc["data"], 32, 4 )) / 10;
$aktuelleDaten["PV2_Strom"] = hexdec( substr( $rc["data"], 36, 4 )) / 100;
$aktuelleDaten["PV1_Leistung"] = hexdec( substr( $rc["data"], 48, 4 )) * 10; // A
$aktuelleDaten["PV2_Leistung"] = hexdec( substr( $rc["data"], 52, 4 )) * 10; // B
$aktuelleDaten["AC_Frequenz"] = hexdec( substr( $rc["data"], 56, 4 )) / 100; // C Ab hier + 2 in der Dokumentation
$aktuelleDaten["AC_Spannung_R"] = hexdec( substr( $rc["data"], 60, 4 )) / 10; // D => F
$aktuelleDaten["AC_Strom_R"] = hexdec( substr( $rc["data"], 64, 4 )) / 100; // E => 10
$aktuelleDaten["AC_Spannung_S"] = hexdec( substr( $rc["data"], 68, 4 )) / 10; // F => 11
$aktuelleDaten["AC_Strom_S"] = hexdec( substr( $rc["data"], 72, 4 )) / 100; // 10 => 12
$aktuelleDaten["AC_Spannung_T"] = hexdec( substr( $rc["data"], 76, 4 )) / 10; // 11 => 13
$aktuelleDaten["AC_Strom_T"] = hexdec( substr( $rc["data"], 80, 4 )) / 100; // 12 => 14
$Energie_Total_H = (substr( $rc["data"], 84, 4 )); // 13 => 15
$Energie_Total_L = (substr( $rc["data"], 88, 4 )); // 14 => 16
$Laufzeit_Total_H = (substr( $rc["data"], 92, 4 )); // 15 => 17
$Laufzeit_Total_L = (substr( $rc["data"], 96, 4 )); // 16 => 18
$aktuelleDaten["WattstundenGesamtHeute"] = hexdec( substr( $rc["data"], 100, 4 )) * 10; // 17 => 19 Watt
$aktuelleDaten["Laufzeit_Heute"] = hexdec( substr( $rc["data"], 104, 4 )); // 18 => 1A Minuten
$aktuelleDaten["Temperatur_Module"] = hexdec( substr( $rc["data"], 108, 4 )); // 19 => 1B °C
$aktuelleDaten["Temperatur"] = hexdec( substr( $rc["data"], 112, 4 )); // 1A => 1C °C
$funktionen->log_schreiben( "Auslesen des Gerätes beendet.", " ", 8 );
/****************************************************************************
// ENDE REGLER AUSLESEN ENDE REGLER AUSLESEN ENDE REGLER AUSLESEN
****************************************************************************/
$aktuelleDaten["Energie_Total"] = (hexdec( $Energie_Total_H.$Energie_Total_L ) * 1000);
$aktuelleDaten["Laufzeit_Total"] = hexdec( $Laufzeit_Total_H.$Laufzeit_Total_L );
if ($aktuelleDaten["PV2_Strom"] > 0.1) {
$aktuelleDaten["PV_Leistung"] = ($aktuelleDaten["PV1_Leistung"] + $aktuelleDaten["PV2_Leistung"]);
}
else {
$aktuelleDaten["PV_Leistung"] = $aktuelleDaten["PV1_Leistung"];
$aktuelleDaten["PV2_Leistung"] = 0;
}
/**************************************************************************
// Falls ein ErrorCode vorliegt, wird er hier in einen lesbaren
// Text umgewandelt, sodass er als Fehlermeldung gesendet werden kann.
// Die Funktion ist noch nicht überall implementiert.
**************************************************************************/
$FehlermeldungText = "";
/****************************************************************************
// Die Daten werden für die Speicherung vorbereitet.
****************************************************************************/
$aktuelleDaten["Regler"] = $Regler;
$aktuelleDaten["Objekt"] = $Objekt;
$aktuelleDaten["Produkt"] = "SofarSolar";
$aktuelleDaten["Modell"] = "KTL-X";
$aktuelleDaten["zentralerTimestamp"] = ($aktuelleDaten["zentralerTimestamp"] + 10);
$funktionen->log_schreiben( print_r( $aktuelleDaten, 1 ), " ", 8 );
/****************************************************************************
// User PHP Script, falls gewünscht oder nötig
****************************************************************************/
if (file_exists( "/var/www/html/sofarsolar_wr_math.php" )) {
include 'sofarsolar_wr_math.php'; // Falls etwas neu berechnet werden muss.
}
/**************************************************************************
// Alle ausgelesenen Daten werden hier bei Bedarf als mqtt Messages
// an den mqtt-Broker Mosquitto gesendet.
// Achtung! Die Übertragung dauert ca. 30 Sekunden!
**************************************************************************/
if ($MQTT and strtoupper( $MQTTAuswahl ) != "OPENWB") {
$funktionen->log_schreiben( "MQTT Daten zum [ $MQTTBroker ] senden.", " ", 1 );
require ($Pfad."/mqtt_senden.php");
}
/****************************************************************************
// Zeit und Datum
****************************************************************************/
$aktuelleDaten["Timestamp"] = time( );
$aktuelleDaten["Monat"] = date( "n" );
$aktuelleDaten["Woche"] = date( "W" );
$aktuelleDaten["Wochentag"] = strftime( "%A", time( ));
$aktuelleDaten["Datum"] = date( "d.m.Y" );
$aktuelleDaten["Uhrzeit"] = date( "H:i:s" );
/****************************************************************************
// InfluxDB Zugangsdaten ...stehen in der user.config.php
// falls nicht, sind das hier die default Werte.
****************************************************************************/
$aktuelleDaten["InfluxAdresse"] = $InfluxAdresse;
$aktuelleDaten["InfluxPort"] = $InfluxPort;
$aktuelleDaten["InfluxUser"] = $InfluxUser;
$aktuelleDaten["InfluxPassword"] = $InfluxPassword;
$aktuelleDaten["InfluxDBName"] = $InfluxDBName;
$aktuelleDaten["InfluxDaylight"] = $InfluxDaylight;
$aktuelleDaten["InfluxDBLokal"] = $InfluxDBLokal;
$aktuelleDaten["InfluxSSL"] = $InfluxSSL;
$aktuelleDaten["Demodaten"] = false;
/*********************************************************************
// Daten werden in die Influx Datenbank gespeichert.
// Lokal und Remote bei Bedarf.
*********************************************************************/
if ($InfluxDB_remote) {
// Test ob die Remote Verbindung zur Verfügung steht.
if ($RemoteDaten) {
$rc = $funktionen->influx_remote_test( );
if ($rc) {
$rc = $funktionen->influx_remote( $aktuelleDaten );
if ($rc) {
$RemoteDaten = false;
}
}
else {
$RemoteDaten = false;
}
}
if ($InfluxDB_local) {
$rc = $funktionen->influx_local( $aktuelleDaten );
}
}
else {
$rc = $funktionen->influx_local( $aktuelleDaten );
}
if (is_file( $Pfad."/1.user.config.php" )) {
// Ausgang Multi-Regler-Version
$Zeitspanne = (9 - (time( ) - $Start));
$funktionen->log_schreiben( "Multi-Regler-Ausgang. ".$Zeitspanne, " ", 2 );
if ($Zeitspanne > 0) {
sleep( $Zeitspanne );
}
break;
}
else {
$funktionen->log_schreiben( "Schleife: ".($i)." Zeitspanne: ".(floor( (56 - (time( ) - $Start)) / ($Wiederholungen - $i + 1))), " ", 9 );
sleep( floor( (56 - (time( ) - $Start)) / ($Wiederholungen - $i + 1)));
}
if ($Wiederholungen <= $i or $i >= 6) {
$funktionen->log_schreiben( "Schleife ".$i." Ausgang...", " ", 8 );
break;
}
$i++;
} while (($Start + 54) > time( ));
if (isset($aktuelleDaten["Seriennummer"])) {
/*********************************************************************
// Jede Minute werden bei Bedarf einige Werte zur Homematic Zentrale
// übertragen.
*********************************************************************/
if (isset($Homematic) and $Homematic == true) {
$funktionen->log_schreiben( "Daten werden zur HomeMatic übertragen...", " ", 8 );
require ($Pfad."/homematic.php");
}
/*********************************************************************
// Sollen Nachrichten an einen Messenger gesendet werden?
// Bei einer Multi-Regler-Version sollte diese Funktion nur bei einem
// Gerät aktiviert sein.
*********************************************************************/
if (isset($Messenger) and $Messenger == true) {
$funktionen->log_schreiben( "Nachrichten versenden...", " ", 8 );
require ($Pfad."/meldungen_senden.php");
}
$funktionen->log_schreiben( "OK. Datenübertragung erfolgreich.", " ", 7 );
}
else {
$funktionen->log_schreiben( "Keine gültigen Daten empfangen.", "!! ", 6 );
}
Ausgang:$funktionen->log_schreiben( "---------------------- Stop sofarsolar_wr.php --------------------- ", "|--", 6 );
return;
?>trotzdem vielen Dank und viele Grüsse
Rüdiger
-
Ruhz69
- Beiträge: 106
- Registriert: Fr 28. Jan 2022, 19:41
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Fehlermeldung beim Auslesen Solar Solar WR
Was mir auffällt,
der alte log
-senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ 010420000153463445533030354c3855303038563234305631303056323430563234302cd7 ]
03.10. 10:54:00 -Produkt: 1
was bei mir unter Regler 87 im log steht
-senden > [ 010300440001c41f ]
03.10. 15:45:09 -empfangen > [ ]
03.10. 15:45:09 -senden > [ 010300440001c41f ]
03.10. 15:45:09 -empfangen > [ ]
03.10. 15:45:09 -senden > [ 010300440001c41f ]
müsste die "Sendung" nicht die gleiche sein?
der alte log
-senden > [ 010420000010fa06 ]
03.10. 10:54:00 -empfangen > [ 010420000153463445533030354c3855303038563234305631303056323430563234302cd7 ]
03.10. 10:54:00 -Produkt: 1
was bei mir unter Regler 87 im log steht
-senden > [ 010300440001c41f ]
03.10. 15:45:09 -empfangen > [ ]
03.10. 15:45:09 -senden > [ 010300440001c41f ]
03.10. 15:45:09 -empfangen > [ ]
03.10. 15:45:09 -senden > [ 010300440001c41f ]
müsste die "Sendung" nicht die gleiche sein?
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste