Benachrichtigungen
Alles löschen

Home Assistant Einbindung vom Deye 12k und baugleiche (Sunsyk, solarman...)

310 Beiträge
60 Benutzer
82 Likes
31.5 K Ansichten
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

Ich nutze HA, aber die lesen tue ich Deye über Modbus (BMS-Buche) mit ESPHome auf ESP32. HA spricht dann mit ESPHome.

@amiko, aus deinem Screenshot lese ich folgendes aus: 

Deye hat Adresse 0x01

Du liest aus Holding-Register mit 0x03 functioncode

und Adresse 0x2474 => 10055

https://rapidscada.net/modbus/

 

Muss ich noch mal probieren. Es könnte sein, dass diese Register nur auf RS232 und nicht auf RS485 verfügbar sind.

Da du über den Solarman liest, nutzt er RS232 und nicht RS485...

 

Edit:

ich sende komplett gleiches Telegramm (sieht man bei uart_debug):

[13:40:32][D][uart_debug:114]: >>> 01:03:27:47:00:01:3E:AB
[13:40:32][W][modbus_controller:030]: Modbus device=1 set offline
[13:40:32][D][modbus_controller:043]: Modbus command to device=1 register=0x2747 countdown=0 no response received - removed from send queue
[13:40:38][W][modbus_controller:064]: Modbus device=1 back online

WR weigert sich aber. Somit gibt es die Daten wohl nicht auf MODBUS :/ 

 


   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168
 

Ich habe mehrere Register ausgelesen, unter anderen auch 10040 DEC (0x2738), der WR antwortet mit 0213 hex, was würde dann bedeuten 5,31 V (weil das Register in der Tabelle mit 2 Nachkommastellen eingegeben ist) 53,1 V würde besser passen. Mit dem Strom, das Register 10041 ist noch komplizierter, ich bekomme als die Antwort FFB1 hex, es sollte eine negative Zahl sein. Ich weiß noch nicht, wie ich die umrechnen soll.


   
AntwortZitat
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

Probier mal 65535 (0xFFFF) - 0xFFB1 ob dann der Strom passt. (oder so ähnlich und mal Faktor von 0.01 oder 0.1)


   
amiko reacted
AntwortZitat
(@linuxdep)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 2886
Themenstarter  

Na ja, bei den Werten über 10000 scheinen sich erst mal nur auf die Deye Akkus zu beziehen, diese senden scheinbar ihre Werte zum WR.
Habe die aktuelle Version vom Modbus Protokoll 104 wo diese Werte beschrieben sind. Seplos BMS sendet scheibar keine Daten zu den Packs mit oder man müsste mal ein anderes Protokoll testen BMS <--> WR

Victron MPPT Rechner
Leitungsrechner by polz
SolarRechner HTW-Berlin
Akkutester A40L zu verleihen
Anleitung Deye 12k Einrichtung mit Bildern


   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168
 

Veröffentlicht von: @linuxdep

Seplos BMS sendet scheibar keine Daten zu den Packs mit oder man müsste mal ein anderes Protokoll testen BMS <--> WR

mag ja sein, ich habe deye rw-m6.1


   
AntwortZitat
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

@amiko ich habe auch 3xDeye RW-M6.1

Ich vermute mit anderen Akkus kann Deye nicht so viel Anfangen. Die werden auch nicht in Solarman App angezeigt.

ich versuche mich da in das CAN Bus reinzuhacken...

Theoretisch, können die Akkus auch parallel über RS485 kommunizieren. Die Kontakte sind laut der Bedienungsanleitung ja da...

 


   
AntwortZitat
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

Veröffentlicht von: @amiko

Mit dem Strom, das Register 10041 ist noch komplizierter,

Ich habe gerade in dem Online Solarman probiert, da kann ich mit deinen Kommandos tatsächlich alles abfragen.

Checksum kann man hier schnell generieren CRC-16 (MODBUS) big endian:

https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/  

 

Ansonsten wird das Telegramm (0103273900015EB3) so aufgebaut:

0x01 Deye Adresse

0x03 lesen

0x2739 Register (=10041 in dec)

0x0001 einen Register lesen

0x5EB3 = Checksum

 

Als Antwort kommt dann 010302FFE3B83D zurück als Beispiel

https://rapidscada.net/modbus/ <(Response)

Strom ist in "2's complement" codiert und muss mit Faktor 0.1 multipliziert werden.

01 03 02 FFE3 B83D => -2.8A

01 03 02 0000 B844 => 0 A

01 03 02 0010 B988 => 1,6 A 

01 03 02 000D 7981 => 1,3 A


   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168
 

Veröffentlicht von: @linuxdep

deine Befehle, wie setzen sich die zusammen? Interessantes Format.

das sind nicht meine Befehle, das sind die Befehle die der WR versteht, HA nutzt auch diese Befehle. HA macht es Bedienerfreundlicher, aber im Hintergrund werden die gleiche Befehle generiert und die Antworten vom WR ausgewertet. Wie die Befehle zusammengesetzt werden hat @Eugenius bereits beschrieben. Man kann mit einem Befehl, soweit ich weiß, bis zu 256 Register auslesen. Z.B. mit dem Befehl 010327300026CEAB werden alle 38 Register vom Batterie Pack 1 ab Register 10032 ausgelesen.

 

noch eine kleine Ergänzung bei den Befehlen um die Register zu beschreiben, der Befehl ist um 3 Byte länger als der Lese-Befehl

function code: 10

 nach der Anzahl Register die gelesen oder geschrieben werden sollen (2 Byte, 4 Stellen) werden noch die 3 Byte angehängt

- Anzahl Bytes die geschrieben werden (1 Byte, 2 Stellen)

- Wert, auf den das Register geschrieben werden soll hex Kodiert (2 Byte, 4 Stellen)

Diese r Beitrag wurde geändert Vor 3 Monaten von amiko

   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168
 

Veröffentlicht von: @eugenius

Ich habe gerade in dem Online Solarman probiert, da kann ich mit deinen Kommandos tatsächlich alles abfragen.

also Fazit? Ist die Kommunikation das Problem? Die Daten von den Batterien sind ja da.

 

Veröffentlicht von: @eugenius

Checksum kann man hier schnell generieren CRC-16 (MODBUS) big endian:

ich berechne CRC direkt bei Solarman 

 

Veröffentlicht von: @eugenius

Strom ist in "2's complement" codiert und muss mit Faktor 0.1 multipliziert werden.

01 03 02 FFE3 B83D => -2.8A

Danke, jetzt weiß ich wie das geht.


   
AntwortZitat
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

Veröffentlicht von: @amiko

also Fazit?

Meine Vermutung, und das habe ich schon mal im Netz gelesen: RS232 (WLAN Stick) hat mehr Daten als RS485.

D.h. wenn ich an Akku daten ran will, entweder CAN hacken oder Solarman Schnittstelle nutzen...


   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168
 

Veröffentlicht von: @eugenius

Solarman Schnittstelle nutzen...

hast du schon eine Idee wie?

Manuell die Befehle eingeben und die Daten auswerten irgendwie auch nicht der Sinn der Sache.

Diese r Beitrag wurde geändert Vor 3 Monaten von amiko

   
AntwortZitat
(@eugenius)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 526
 

@amiko so ähnlich... aber kein Bock darauf. Die Daten kommen ja nur jede Minute...

Ich muss mal meine CAN Transceiver ausgraben und mich in die Batteriekommunikation als Zuhörer einklinken.

Das habe ich schon mal mit meinem Auto gemacht, schwer sollte es also nicht sein... nur die Zeit dafür brauche ich...

 


   
AntwortZitat
 DIWI
(@diwi)
Vorsichtiger Stromfühler
Beigetreten: Vor 6 Monaten
Beiträge: 13
 

@linuxdep Könntest du hier mal die aktuelle Version des Modbus Protokolls veröffentlichen? bzw. einen Link posten?


   
AntwortZitat
(@amiko)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 168

   
DIWI reacted
AntwortZitat
(@higgy)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Monaten
Beiträge: 103
 

Veröffentlicht von: @eugenius

Veröffentlicht von: @amiko

also Fazit?

Meine Vermutung, und das habe ich schon mal im Netz gelesen: RS232 (WLAN Stick) hat mehr Daten als RS485.

D.h. wenn ich an Akku daten ran will, entweder CAN hacken oder Solarman Schnittstelle nutzen...

Das sagte mir der SolarAssistant Support auch, ich habe mir nun auch RS232 Kabel bestellt,

über den Western Stecker kann man...wenn überhaupt... lt. Support nur sehr schwierig auch Daten SENDEN.
Empfang hie rkein Problem.

Über RS232 angeblich auch senden null problemo.

 

2 Stück 8 K Deye mit 22 kwp und 24 kwh Pylontech, Solarassistant auf RS232


   
AntwortZitat
Seite 19 / 21
Teilen: