Moin Allerseits, vielleicht übersehe ich es - aber in einer Reihe von Threads habe ich über die Register/Protokoll des Soyosource hier gelesen aber was ich nicht finde ist eine Zusammenstellung der Möglichkeiten die man hat um den Inverter auszulesen.
In meinem Fall habe ich einen Soyosource GTN1000 mit Display (ohne WiFi) Dongle (mir fehlt der komplette USB-Anschluß. Möchte aber gerne via Python den Inverter auslesen/einstellen. (genau so mache es auch schon mit meinem DalyBMS und meinem EPEVER Charger).
Gibt es eine Zusammenfassung aller Register und/oder eine Protokollbeschreibung für das Gerät ? Ich bin wohl zu bl--d das zu finden :-/
Leider steht der Sourcecode für den ESP von @bavarian supergut nicht zur Verfügung - zumindest nicht auf dem Github den ich kenne.
Kann mir vielleicht einer helfen?
Vielen Dank schon mal für die ein oder andere Hilfe
ui - da hoffe ich doch mal das mein Soyosource noch was ausgibt
Ich hab das Teil mal aufgemacht und auf dem Mainboard noch einen RS485 Anschluß gefunden - der liegt zu dem RS485 an dem der Limiter angeschlossen ist parallel. Den versuche ich mal "weiter zu verwenden" für mein Vorhaben - Mal schauen was dabei so rauskommt
Euch allen einen guten "Rutsch ins Neue Jahr" und viel Sonnenenergie für 2023
Die beste (kompakte) Beschreibung des Protokolls findest Du im Quellcode hier ab Zeile 62:
Meine Soyos reagieren aber auch nicht auf die Anfragen mit 0x23... Ich hatte die Vermutung, dass die RS-485 Adapterplatine schuld sein könnte. Die ältere Version ist nicht galvanisch getrennt, die aktuelle hat eine galvanische Trennung mit 2 Optokopplern und einem DCDC-Wandler. In meinem Soyo habe ich die Adapterplatine ganz raus geschmissen und einen D1 mini direkt verdrahtet (der Sockel hat gleich noch Spannungsversorgung mit dabei, der ESP (WLAN) ist damit die galvanische Trennung der Daten
Trotzdem geht bei mir (zur Zeit) nur die Leistungsvorgabe per MQTT. Immerhin etwas.
Der (seltsame) Checksummen-Algorithmus (264-Byte[4]-Byte[5] und if...) ist eine verkürzte Berechnung. Der Soyo erwartet 8 Bytes und liefert 8 Bytes. Das erste Byte [0] ist wohl eine Geräteadresse (vielleicht hat die sich in einer aktuelle FW-Version geändert?!?). Das letzte Byte [7] ist die Prüfsumme. In den Bytes [5] und [6] wird die gewünschte Leistung übertragen. Mein Checksummen-Algorithmus ist
Bei den Beispielen, die man im Netz findet, erfolgt die Abfrage des Soyo mit der Bytefolge {0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}. Mit "meiner" Berechnung müsste da eigentlich {0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF} rauskommen. Vielleicht reagiert die aktuelle Firmware nur allergisch auf Prüfsummenfehler??
Muss mal wieder an mein bestehendes Projekt ran gehen... vielleicht einfach mal in einer Schleife alle möglichen Checksummen übertragen (sind ja nur 256 Möglichkeiten) und sehen, ob eine Antwort kommt
@e-t0m - so ich hab hab gestern und heute mit meinem Inverter experimentiert - also wie befürchtet er ist stumm :-(.
Was aber putzig ist : der Inverter sendet 2x Sekunde mir die Wattzahl die aktuell anliegt (ausgegeben wird) über die RS485 zurück. Immerhin etwas und somit kann ich dann letztendlich das auch an mein ioBROKER weiter leiten.
Der Inverter ist derzeit im Schaltschrank verbaut - und um nun an andere interne Schnittstellen noch ranzukommen, müsste ich alles wieder zerlegen. Da weiß ich nicht nicht ob ich das mache. Mal sehen
@e-t0m Also:
wenn der Limiter angeschlossen ist - wie gesagt - dann sendet der limiter 2x Sekunden folgende Bytes Bei 0-Watt : 24 56 00 21 00 00 80 08
Bei 316-Watt: 24 56 00 2101 3C 80 CB
Bei 400-Watt: 24 56 00 2101 8F 80 78
CRC passt auch zu den 2-Bytes
Der Inverter antwortet generell nicht.
Im Display erscheint dann RS-485 (unten rechts)
Sende ich (ohne den Limiter) z.B. die gleiche Byte-Folge wie oben und ich es so 2-3 x pro Sekunde schaffe, dann erscheint auch RS-485 im Display. Mache ich es zu langsam passiert nix - keine Anzeige.
Auch hier antwortet der Inverter nicht.
Inverter:
FW: STC8-2022-801
Nachtrag:
Hab es sowohl mit der Einstellung GRID_LIMITER (oder wie das jetzt genau heißt ) Y und N ausprobiert. Macht keine Änderung
Nachtrag - uh - mist in meinem Post von 16:47 schrieb ich
Was aber putzig ist : der Inverter sendet 2x Sekunde mir die Wattzahl die aktuell anliegt (ausgegeben wird) über die RS485 zurück. Immerhin etwas und somit kann ich dann letztendlich das auch an mein ioBROKER weiter leiten.
QUATSCH: der LIMITER sendet 2x / Sekunde - ups sorry ein typischer Typo :-(
Hi Leute, ich bin neu hier und durch Zufall auf diesen Thread gestoßen. Vor einiger Zeit habe ich auf Basis eines STM32F4 Mikrocontrollers einen Modbus-Adapter für die Wechselrichter gebaut. Drei Stück habe ich seit einem halben Jahr ohne Probleme in Betrieb. Ich wollte eine solide, funkfreie und nach Modbusprotokoll arbeitende Anbindung an den Rest der PV Komponenten haben. Über die bereitgestellte Modbusregister können alle Werte ausgelesen werden. Zusätzlich kann die Einspeiseleistung vorgegeben werden.
Wenn Interesse besteht, stelle ich die Lösung zum Nachbau gerne zur Verfügung.
ja, jetzt habe ich das Problem. Habe nen Soyosource grid tie inverter mit Limiter und möchte das Gerät in meine Elektronik integrieren und dazu per uC mit dem Inverter "reden", also dem mitteilen, welche leistung benötigt wird. habe dazu die Kimmunikation zwischen dem Inverter und dem RS485-Gerät mit Stromsensor "mitgehört" und gesehen, dass da ne CRC am Ende eines datensatzes übertragen werden muss. ds ist wohl CRC8, aber wi berechne ich die? Bin da nicht so firm? hast du nen Link oder direkt nen CCode dafür?
// Der Arduino ist mit bit shifts am schnellsten
message[4] = (byte)((Power >> 8) & 0xff);
// hier schneiden wir einfach das höherwertige byte weg
message[5] = (byte)(Power & 0xff);