Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

Hallo zusammen,

ich hoffe die Feiertage sind bei euch auch gesund und munter verlaufen.

Ich habe zum Anschluss des PylonTech Akku an "Solaranzeige" sowohl hier im Forum als auch woanders leider widersprüchliche Angaben gefunden.
Ein PylonTech US2000Plus hat (neben dem CANbus und den Anschlüssen für die Kaskadierung) sowohl einen seriellen Anschluss nach RS232 Spezifikation an einer RJ11-Buchse als auch einen RS485-Anschluss an einer RJ45-Buchse. Der RS232 ist in der Doku als Console-Port deklariert.
Für beide Anschlüsse bräuchte man ja einen RSxxx-zu-USB-Adapter.
Gibt es eine verbindliche Aussage oder ein erprobtes Setup zur Verwendung des richtigen Anschlusses und somit des entsprechenden Adapters? Gibt es eine Empfehlung zu einem Adapter der in diesem Szenario mit "Solaranzeige" und einem PylonTech US2000Plus definitiv funktioniert?

mkummer
Beiträge: 10
Registriert: Mo 30. Nov 2020, 10:48
Hat sich bedankt: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von mkummer »

Jetzt ist ein WR (2)wieder mal ohne Daten.
Habe nichts geändert, nichts angefasst...

8.12. 14:07:01 MQT-Pipe exestiert nicht. Nur Info, kein Fehler...Exit.
28.12. 14:07:01 -Multi Regler Auslesen [Start].
28.12. 14:07:01 -Verarbeitung von: '1.user.config.php' Regler: 7
28.12. 14:07:01 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:07:03 -235.4 49.9 235.4 49.9 0070 0010 001 385 54.70 000 100 0024 0000 113.0 54.78 00000 00110101 00 00 00000 110 i: 52
28.12. 14:07:03 * -Daten zur lokalen InfluxDB [ WR1 ] gesendet.
28.12. 14:07:03 -Multi-Regler-Ausgang. 5
28.12. 14:07:08 -OK. Datenübertragung erfolgreich.
28.12. 14:07:08 -Solarleistung: 0 Watt - WattstundenGesamtHeute: 1551.47
28.12. 14:07:08 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:07:08 -Verarbeitung von: '2.user.config.php' Regler: 7
28.12. 14:07:08 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:07:09 -234.1 49.9 234.1 49.9 0187 0149 003 385 54.70 000 074 0021 0000 112.3 54.81 00000 00110110 00 00 00043 110 i: 51
28.12. 14:07:09 * -Daten zur lokalen InfluxDB [ WR2 ] gesendet.
28.12. 14:07:09 -Multi-Regler-Ausgang. 6
28.12. 14:07:15 -OK. Datenübertragung erfolgreich.
28.12. 14:07:15 -Solarleistung: 43 Watt - WattstundenGesamtHeute: 1319.3
28.12. 14:07:15 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:07:15 -Verarbeitung von: '3.user.config.php' Regler: 7
28.12. 14:07:15 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:07:17 -232.5 49.9 232.5 49.9 0302 0223 006 378 54.10 001 068 0022 0001 111.4 55.40 00000 00110111 00 00 00077 110 i: 52
28.12. 14:07:17 * -Daten zur lokalen InfluxDB [ WR3 ] gesendet.
28.12. 14:07:17 -Multi-Regler-Ausgang. 5
28.12. 14:07:22 -OK. Datenübertragung erfolgreich.
28.12. 14:07:22 -Solarleistung: 77 Watt - WattstundenGesamtHeute: 1546.17
28.12. 14:07:22 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:07:22 -Multi Regler Auslesen [Stop].

28.12. 14:08:01 MQT-Pipe exestiert nicht. Nur Info, kein Fehler...Exit.
28.12. 14:08:01 -Multi Regler Auslesen [Start].
28.12. 14:08:01 -Verarbeitung von: '1.user.config.php' Regler: 7
28.12. 14:08:01 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:08:02 -235.8 50.0 235.8 50.0 0070 0009 001 384 54.70 000 100 0024 0000 111.8 54.71 00000 00110111 00 00 00010 110 i: 51
28.12. 14:08:03 * -Daten zur lokalen InfluxDB [ WR1 ] gesendet.
28.12. 14:08:03 -Multi-Regler-Ausgang. 5
28.12. 14:08:08 -OK. Datenübertragung erfolgreich.
28.12. 14:08:08 -Solarleistung: 10 Watt - WattstundenGesamtHeute: 1551.63
28.12. 14:08:08 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:08:08 -Verarbeitung von: '2.user.config.php' Regler: 7
28.12. 14:08:08 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:08:08 XX -USB Port kann nicht geöffnet werden. [1]
28.12. 14:08:08 XX -Exit....
28.12. 14:08:08 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:08:08 -Verarbeitung von: '3.user.config.php' Regler: 7
28.12. 14:08:08 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:08:09 -232.2 50.0 232.2 50.0 0325 0230 006 383 54.60 001 100 0022 0001 110.7 54.71 00000 00110111 00 00 00087 110 i: 53
28.12. 14:08:09 * -Daten zur lokalen InfluxDB [ WR3 ] gesendet.
28.12. 14:08:09 -Multi-Regler-Ausgang. 6
28.12. 14:08:15 -OK. Datenübertragung erfolgreich.
28.12. 14:08:15 -Solarleistung: 87 Watt - WattstundenGesamtHeute: 1547.62
28.12. 14:08:15 |------------ Stop ax_wechselrichter.php ------------------
28.12. 14:08:15 -Multi Regler Auslesen [Stop].

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

mkummer hat geschrieben:
Mo 28. Dez 2020, 14:34
Jetzt ist ein WR (2)wieder mal ohne Daten.
Habe nichts geändert, nichts angefasst...

...
28.12. 14:08:08 -Verarbeitung von: '2.user.config.php' Regler: 7
28.12. 14:08:08 |-------------- Start ax_wechselrichter.php -----------------
28.12. 14:08:08 XX -USB Port kann nicht geöffnet werden. [1]
28.12. 14:08:08 XX -Exit....
28.12. 14:08:08 |------------ Stop ax_wechselrichter.php ------------------
...
Das könnte gelegentlich mal daran liegen dass sich der WR "verschluckt" hat.
War das jetzt eine einmalige Sache oder kommt das ständig vor?

Andere Frage:
Mit welchem Anschluss bzw. Adapter und welcher Einstellung warst du evtl. erfolgreich um das Pylontech-BMS auszulesen?
Ich habe jetzt einen USB-RS232-Adapter benutzt und den am Console-Port meines PylonTech US2000Plus angeschlossen. Der Adapter wird als /dev/ttyUSB0 erzeugt. Wenn ich mit miniterm den /dev/ttyUSB0 öffne und auf 1200bd 8/N/1 einstelle, dann empfange ich eine Zahlenkolonne wenn ich Enter drücke. D.h. grundsätzätzlich funktioniert die Kommunikation, ich kann senden und empfangen und 1200bd am Console-Port ist auch korrekt.
Wenn ich das aber in meine 4.user.config.php

Code: Alles auswählen

...
$Regler = "15";
...
$GeraeteNummer = "4";
...
$USBSpeed = "1200";  // "115200" nur bei US2000B ab 2019  Regler = "15"
...
$USBDevice = "/dev/ttyUSB0";
...
eintrage, dann bekomme ich immer

Code: Alles auswählen

28.12. 22:29:22    -Verarbeitung von: '4.user.config.php'   Regler: 15
28.12. 22:29:22 |---------------   Start  us2000_bms.php   -----------------
28.12. 22:29:38    -Keine Verbindung zum Pylontech Gerät vorhanden.
28.12. 22:29:38 |---------------   Stop   us2000_bms.php   -----------------
28.12. 22:29:38    -Multi Regler Auslesen [Stop].


Den USB-Port kann er ja ansprechen, sonst würde eine andere Fehlermeldung kommen.
Ich habe auch schon $USBSpeed = "115200"; ausprobiert, aber das geht genau so wenig. Mit 115200bd bekomme ich im miniterm auch keine Kommunikation, d.h. die Baudrate scheint schon zu passen. Irgendwie scheint solaranzeige aber mit dem BMS keinen Dialog führen zu können.

@Ulrich: kann man den Loglevel noch erhöhen um zu sehen welche Commands ans BMS gesendet werden und welche Responses zurück kommen?

@mkummer: funktioniert es denn bei dir am RS485-Port? Oder hast du irgendwo einen Forenbeitrag gefunden wo jemand schreibt dass das damit definitiv funktioniert?

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

Guten Morgen Ulrich,

ich will den Thread nicht kapern, aber mein Setup und meine Problemstellung ist ja in etwa die gleiche wie beim Thread Starter.

Ich habe mich ein wenig mit dem Quellcode beschäftigt.
Für das Auslesen des PylonTech-Akkus (Regler 15) ist ja das us2000_bms.php zuständig.
Zunächst wird ja bei etwa Zeile 85 der USB-Port zugewiesen und geöffnet. Das funktioniert bei mir auch soweit.
In dem Abschnitt wo die Packs ermittelt werden sollen, etwa bei Zeile 190, da gibt es aber scheinbar ein Problem, nämlich der Aufruf der Funktion us2000_auslesen liefert immer einen leeren Wert zurück (bzw. false).
Dann habe ich mir diese Funktion in funktionen.inc.php angesehen. Hier ist es so dass etwa bei Zeile 3290 die Variable $Antwort immer leer ist, d.h. mit fgets($USB,1024) kommen einfach keine Daten, also nicht falsche oder zuwenig Zeichen, sondern garnichts.
Das verstehe ich nicht und weiß auch im Moment nicht wie ich das mit PHP weiter debuggen kann.

Um ein grundsätzliches Hardware- oder Verbindungsproblem auszuschließen habe ich direkt auf dem selben RPi mit miniterm getestet. Ich kann damit problemlos /dev/ttyUSB0 öffnen und auf 1200bd einstellen. Wenn ich dann den Code ~200146900000FDAA<CR> absetze, also genau das was us2000_bms.php als erstes macht, dann bekomme ich auch eine entsprechende Antwort zurück mit der richtigen Anzahl der Packs (in meinem Fall 8).
Selbstverständlich hatte ich miniterm normalerweise nicht laufen und auch kein anderes Tool was den USB-Port für die PHP-Programme hätte blockieren können.

Wie kann ich eigentlich herausfinden mit welcher Baudrate der USB-Port von Solaranzeige eingestellt wird, abgesehen von der Einstellung in x.user.config.php? Ich habe die Stelle wo $USBSpeed benutzt wird noch nicht gefunden.

Hast Du noch irgendwelche Tipps?

Danke und Gruß
Roman

Benutzeravatar
Ulrich
Administrator
Beiträge: 1855
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von Ulrich »

Hallo Roman,

die Baudrate wird in der Datei usb_init.php bzw. multi_usb_init.php eingestellt. Dieser Script wird jedoch nur bei einem Neustart durchlaufen. Wenn Du also das USB Kabel entfernst und wieder ansteckst musst Du einen Neustart vom Raspberry machen oder manuell die Datei einmal durchlaufen. Wenn die Variable $Antwort keine Daten enthält heißst das in der Regel, dass die Geschindigkeit auf der seriellen Schnittstelle nicht richtig eingestellt ist. Gerade der US2000B wird vielfach mit der Solaranzeige ohne Probleme benutzt. Alle Schwierigkeiten lagen immer an dem Adapter oder der falschen Baudrate. Die Console Schnittstelle kann in der US2000B Konfiguration geändert werden. (Ich glaube mit DIP Switchen) Du musst darauf achten dass die Baudrate auf dem default Wert von 1200 Baud steht.
--------------------------------------
Ulrich [Admin]

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

Danke für die Antwort, Ulrich.

Ich hab's nochmal probiert, aber auch nach einem Neustart geht es trotzdem nicht.
- Baudrate am Console-Port ist 1200, kann auch nicht mit DIP Switch verstellt werden, der DIP-Switch ist nur für den RS485-Port
- RPi neu gestartet, /dev/ttyUSB0 ist noch das richtige Device
- 4.user.config.php nochmal kontrolliert, alles passt.
- Meldungen im Logfile wie in meinem Post vom 28.12.2020 23:22
- Öffnen des USB-Device funktioniert
- Funktion us2000_auslesen liefert keine Antwort
- Dann mit miniterm getestet, /dev/ttyUSB0 1200bd 8N1, da gibt es die richtigen Antworten

Gibt es noch etwas was ich untersuchen könnte?

mkummer
Beiträge: 10
Registriert: Mo 30. Nov 2020, 10:48
Hat sich bedankt: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von mkummer »

teutocat hat geschrieben:
Mo 28. Dez 2020, 23:22

Den USB-Port kann er ja ansprechen, sonst würde eine andere Fehlermeldung kommen.
Ich habe auch schon $USBSpeed = "115200"; ausprobiert, aber das geht genau so wenig. Mit 115200bd bekomme ich im miniterm auch keine Kommunikation, d.h. die Baudrate scheint schon zu passen. Irgendwie scheint solaranzeige aber mit dem BMS keinen Dialog führen zu können.

@Ulrich: kann man den Loglevel noch erhöhen um zu sehen welche Commands ans BMS gesendet werden und welche Responses zurück kommen?

@mkummer: funktioniert es denn bei dir am RS485-Port? Oder hast du irgendwo einen Forenbeitrag gefunden wo jemand schreibt dass das damit definitiv funktioniert?
Hi,

der Fehler, dass USB Anschluss nicht geöffnet werden kann, kommt meist vor wenn ich meinen USB Hub für Tasta/Maus anschließe bzw. den RS485 Adapter angesteckt habe - vereinzelt auch, als "Stromausfall" war und der Raspi nicht ordentlich ausgemacht werden konnte/wurde.

Aktuell bin ich froh das es läuft und ich nicht wieder Stunden im Keller sitze - entsprechend war ich noch nicht erfolgreich.
Vielleicht traue ich mich morgen noch mal runter - in der Hoffnung nicht alles zu zerschiessen...

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

Ulrich hat geschrieben:
Di 29. Dez 2020, 08:59
die Baudrate wird in der Datei usb_init.php bzw. multi_usb_init.php eingestellt.
Hallo Ulrich,

ich habe mir die multi_usb_init.php angesehen. Für mich sieht das so aus als ob dort die Baudrate 1200 hardcoded ist, ich finde zumindest nicht den Bezug zu $USBSpeed in der x.user.config.php. Demzufolge ist die Einstellung in der x.user.config.php irrelevant, richtig?

Ich habe die multi_usb_init.php dann nochmal aufgerufen. Im Log erscheint aber

Code: Alles auswählen

29.12. 20:14:40    -Die seriellen Schnittstellen werden initialisiert.
29.12. 20:14:40    -Device: /dev/hidraw3 > Hidraw Schnittstelle.
29.12. 20:14:40    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 160   $GeraeteNummer = "1";

29.12. 20:14:40    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 546   $Platine = "Raspberry Pi 4 Model B Rev 1.1";

29.12. 20:14:40    -Device: /dev/hidraw4 > Hidraw Schnittstelle.
29.12. 20:14:40    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 160   $GeraeteNummer = "2";

29.12. 20:14:40    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 547   $Platine = "Raspberry Pi 4 Model B Rev 1.1";

29.12. 20:14:40    -Device: /dev/hidraw5 > Hidraw Schnittstelle.
29.12. 20:14:40    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 160   $GeraeteNummer = "3";

29.12. 20:14:40    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 546   $Platine = "Raspberry Pi 4 Model B Rev 1.1";

29.12. 20:14:43    -Device: /dev/ttyUSB0 Geschwindigkeit: 9600
29.12. 20:14:43    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 160   $GeraeteNummer = "4";

29.12. 20:14:43    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 546   $Platine = "Raspberry Pi 4 Model B Rev 1.1";

Man beachte die 9600 beim Gerät 4, was als Regler 15 eingestellt ist.

Tatsächlich liefert $rc = exec("stty -F ".$USBDevice." raw speed 1200 cs8 ... auch 9600 zurück.
Ich habe mir dann nochmal die manpage zu stty angesehen. Ich verstehe das so das der parameter "speed" nur dafür zuständig ist die Baudrate auszulesen ( speed print the terminal speed), zum Setzen der Baudrate verwendet man ispeed und ospeed, oder verstehe ich das falsch?

Edit:
Ich hab's nochmal gelesen: Zum Setzen der Baudrate mit stty gibt man nur die Zahl als Parameter an, ohne ein Schlüsselwort.

teutocat
Beiträge: 22
Registriert: Fr 18. Dez 2020, 20:51
Danksagung erhalten: 1 Mal

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von teutocat »

So langsam beiße ich mich durch ...

ich habe etwas mit setserial herum experimentiert, plötzlich bekomme ich auch mit solaranzeige Daten vom Akku, und zwar ohne dass ich den RPi neu gebootet habe. Das bedeutet dass irgendwas mit der Initialisierung meines /dev/ttyUSB0 beim Start nicht richtig funktioniert. Vielleicht liegt es an meinem USB-RS232-Adapter (mit einem Prolific Chip) und ich müsste mal einen anderen testen (mit FTDI Chip) oder ich muss mir hier noch eine Krücke mit einer eigenen Initialisierung bauen... Ich habe aber auch gelesen dass Linux angeblich das serial device wieder auf default-Werte resettet wenn es geschlossen wird und kein Prozess mehr damit verbunden ist. Default ist scheinbar 9600bd.

Nachdem der Datenabruf vom Akku nun grundsätzlich funktioniert stehe ich an der nächsten Stolperschwelle.
Das Auslesen der Akkupacks dauert geschlagene 36 Sekunden. Das bedeutet dass das Abrufen der Daten aller Regler länger als eine Minute dauert und somit der nächste cronjob starten würde obwohl der vorhergehende noch nicht abgearbeitet ist.
Es ist klar dass 1200 Baud ein Schneckentempo ist, aber werden über 3kB Daten jedes mal aus dem Akku ausgelesen oder gibt es da vielleicht unnötige Wartezeiten oder timeouts?
Unter diesen Umständen ist es wohl doch sinnvoll den Datenabruf über die RS485 zu machen, da kann man 115200bd einstellen.

Benutzeravatar
Ulrich
Administrator
Beiträge: 1855
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Steca Solarix PLI 5000-48 - 3 Phasen + US2000

Beitrag von Ulrich »

Hört sich ja gut an, wenn du einen Schritt weiter bist. Kannst Du denn die serielle Geschwindigkeit des Console-Ports erhöhen? Die Geschwindigkeit im Raspberry kannst Du in der (multi-)usb-init.php ja angeben. Ich meine mich erinnern zu können das ein Mitglied einmal gesagt hat, dass man die Geschwindigkeit des Console Port auf 9600 erhöhen kann.

Die 1200 Baud sind ja nur genommenworden, weil das der default Wert des US2000B ist.

Der Wert $USBSpeed in der user.config.php ist für die Zukunft gedacht und wird bis jetzt noch nicht verwendet.
--------------------------------------
Ulrich [Admin]

Antworten