Benachrichtigungen
Alles löschen

Soyosource GTN-1000/1200 - Register/Protokoll

21 Beiträge
9 Benutzer
1 Reactions
3,419 Ansichten
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

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 🙂

LunaX 


   
Zitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 791

   
AntwortZitat
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

@e-t0m : supi - Danke !

ui - da hoffe ich doch mal das mein Soyosource noch was ausgibt :-O 

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 🙂


   
AntwortZitat
E-Bär
(@e-baer)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 7
 

Die beste (kompakte) Beschreibung des Protokolls findest Du im Quellcode hier ab Zeile 62:

https://github.com/syssi/esphome-soyosource-gtn-virtual-meter/blob/main/components/soyosource_inverter/soyosource_inverter.cpp

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

Check = (0XFF - Byte[1] - Byte[2] - Byte[3] - Byte[4] - Byte[5] - Byte[6] ) % 256; 

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 😉


   
AntwortZitat
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

@e-baer : sehr gut - das hilft definitiv - ich werde mal sehen, was so bei mir aus dem Inverter rauskommt 🙂

Vielen Dank für die Hilfe !

Viele Grüße Luna


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 791
 

@joehuebner hat auch die serielle Schnittstelle hinter dem RS485 angezapft:

https://www.akkudoktor.net/forum/migrated-forums-balkonsolar/nulleinspeisung-diy-mit-balkonsolar

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

@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


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 791
 

Veröffentlicht von: @lunax

der Inverter sendet 2x Sekunde mir die Wattzahl die aktuell anliegt (ausgegeben wird) über die RS485 zurück.

Macht er das immer oder als Reaktion auf etwas?

Welche firmware hat dein soyo?

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

@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 21  01 3C 80 CB

Bei 400-Watt: 24 56 00 21  01 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


   
AntwortZitat
Lunax
(@lunax)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 36
Themenstarter  

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 🙁


   
E-t0m reacted
AntwortZitat
(@steinadler)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 3
 

@lunax 

hi

kannst du einem anfänger bitte helfen ??

folgender log

24 56 00 21 0000 80 08
24 56 00 21 0000 80 08
24 56 00 21 0000 80 08
24 56 00 21 0000 80 08
24 56 00 21 0000 80 08

24 56 00 21 003C 80 CC
24 56 00 21 003C 80 CC
24 56 00 21 011A 80 ED

24 56 00 21 021D 80 E9
24 56 00 21 021F 80 E7
24 56 00 21 021F 80 E7
24 56 00 21 021F 80 E7
24 56 00 21 026C 80 9A

24 56 00 21 03FC 80 09
24 56 00 21 03FC 80 09
24 56 00 21 03FC 80 09
24 56 00 21 03FC 80 09
24 56 00 21 03FC 80 09

24 56 00 21 031A 80 EB
24 56 00 21 031A 80 EB

24 56 00 21 021F 80 E7
24 56 00 21 021F 80 E7
24 56 00 21 021F 80 E7
24 56 00 21 01B7 80 50

24 56 00 21 003F 80 C9
24 56 00 21 0040 80 C8
24 56 00 21 0040 80 C8
24 56 00 21 003E 80 CA
24 56 00 21 003E 80 CA
24 56 00 21 003E 80 CA
24 56 00 21 003E 80 CA

die watt habe ich zusammengelassen

aber der rest ??

24 ?

56 ?

00 ?

21 ?

00 00 = watt

80 ?

CA

soyosource log

verschiedene verbraucher(aber siehst du ja selbst)

danke

achso, die daten kommen vom ac power meter

Diese r Beitrag wurde geändert Vor 12 Monaten von steinadler

   
AntwortZitat
(@hektor54)
Vorsichtiger Stromfühler
Beigetreten: Vor 7 Monaten
Beiträge: 10
 

Hier mal ein Beispiel, wie man die Daten der Soyo-Zähler-Unit mittels ESP32 auslesen kann.

 
// Zwischen Soyo-Zähler-Unit und ESP32 einen RS485-TTL-Converter einschleifen !!!
 
#define RX13 13  // Import vom digitalen Soyo-Zähler-Unit (AC Power Meter) 
#define TX14 14  // frei
 
void setup() {
  Serial.begin(115200);
 
// Über Serial1 wird der Zähler eingelesen, Zähler bringt alle 500ms neue Werte
  Serial1.begin(4800, SERIAL_8N1, RX13, TX14);  //13 vom Zähler; 14 frei
}
 
void loop() {
 
  // Import vom digitalen Soyo-Zähler-Unit (AC Power Meter) Rx13
  if (Serial1.available() >= 8) {
     // Warten, bis genügend Daten empfangen wurden (8 Bytes)
     byte data[8];
     for (int i = 0; i < 8; i++) {
      data[i] = Serial1.read();  // Daten einlesen
     }
 
     // Überprüfen, ob die ersten 4 Bytes gleich sind
     if (data[0] == 0x24 && data[1] == 0x56 && data[2] == 0x00 && data[3] == 0x21) {
 
      byte chk = (byte)(264 - data[1] - data[0]);
      // Leistung in Watt extrahieren
      uint16_t Power = (data[4] << 8) | data[5];  
  
  // Serieller Monitor
      Serial.print("Power: ");
      Serial.print(Power);
  
}
}
Diese r Beitrag wurde geändert Vor 7 Monaten von Hektor54

   
AntwortZitat
(@hektor54)
Vorsichtiger Stromfühler
Beigetreten: Vor 7 Monaten
Beiträge: 10
 

Und hier noch ein Beispiel wie man die Daten mittels ESP32 wieder in den Soyo einlesen kann.

//Zwischen Soyosource und ESP32 einen RS485-TTL-Converter einschleifen !!!

#define RX13 13 // frei
#define TX14 14 // Export zum RS485-TTL-Converter

int Power;

void setup() {
Serial.begin(115200);

// Über Serial1 werden die Daten an den RS485-TTL-Converter
Serial1.begin(4800, SERIAL_8N1, RX13, TX14); //13 ftei; 14 Export
}

void loop() {

Power = 666; // 666 Watt

// Daten für Wechselrichter Tx14
byte message[8] = { 36, 86, 0, 33, 0, 0, 128, 8 };

// 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);

// Prüfsumme berechnen
message[7] = (byte)(264 - message[4] - message[5]);

Serial1.write(message, 8); // Ausgabe über seriellen Port Tx14
}

Diese r Beitrag wurde geändert Vor 7 Monaten von Hektor54

   
AntwortZitat
 FL0
(@fl0)
Newbie
Beigetreten: Vor 6 Monaten
Beiträge: 2
 

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.


   
AntwortZitat
(@sgssn)
Newbie
Beigetreten: Vor 6 Monaten
Beiträge: 2
 

@fl0 

Hallo

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?

 

Danke und Gruß

Gerhard

Diese r Beitrag wurde geändert Vor 6 Monaten von sgssn

   
AntwortZitat
Seite 1 / 2
Teilen: