Benachrichtigungen
Alles löschen

GOBEL gp-sr1-pc200 via esphome RS485 Modbus in HomeAssistant auslesen/konfigurieren (esphome-pace-bms)

15 Beiträge
7 Benutzer
1 Likes
462 Ansichten
(@kalleknall)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
Themenstarter  

Hallo hier mein Weg/IrrWeg BMS HomeAssistant via ESPHome.

Ich wollte mein Gobel Power Akku mit Pace BMS (PC200) welches am DEYE 12 hängt in meinem HomeAssistant monitoren. Der DEYE hängt bereits via esphome über esp32 RS485/ModBus im HomeAssistant und ist voll auslesbar/konfigurierbar.

Das Projekt esphome-pace-bms bietet alles was man braucht, allerdings hatte ich Probleme dem BMS das PACE-Modbus Protokoll beizubringen. Mit etwas frickellei hats dann auch geklappt.

1. Hardware
ich habe einen ESP WROOM 32 verwendet, der hat bissel mehr Power als die D1Minis, das hilft dem Modbus Protokoll habe ich so das Gefühl. https://www.amazon.de/gp/product/B0BXZVB5XL/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1

An dem ESP hängt ein RS485 <> Modbus Platinchen 
https://www.amazon.de/gp/product/B083943T9J/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

Anleitung zum Anschluss gibts hier: https://github.com/syssi/esphome-pace-bms

An der Stelle: VIELEN DANK FÜR DAS PROJEKT !

Wichtig ! in der yaml des esp muss natürlich die BMS ID eingestellt werden, für gewöhnlich DIP1 auf on -> 0x01. Die GPIOS korrekt setzen, in meinem Fall mit diesem ESP32

tx_pin: GPIO3 (TX Pin)
rx_pin: GPIO1 (RX Pin)

Kabel dran (altes LAN Kabel abgeschnitten und am RS485 Board angelötet 
Pin 1 B- (orange/weiss)
Pin 2 A+ (orange)
Pin 3 GND (grün/weiss)

2. BMS Konfiguration
Um das BMS zu konfigurieren braucht man eine serielle Verbindung. Beim Gobel lag ein entsprechender USB<>RS232 (RJ11) Adapter bei.
Die Software bekommt man bei Gobel, ich habe die HS2.03 Version benutzt.

Hier mein Problem: bei meinem BMS, bzw. bei der originalen Software von Gobel fehlt das passende RS485 Protokoll "Pace_Modbus" was man immer wieder liest.
Man kann recht einfach der Software einen neue DropDown Eintrag hinzufügen und das funktioniert tatsächlich O_o !

InverterList.xml editieren (liegt im Config/xml Ordner der BmsTools Software)

Ich habe stumpf einen Eintrag mit Value 0 Pace_Modbus eingefügt. Man sieht auf diversen Screenshots, dass das Pace Protokoll auf value 0 liegt.

<Param type="485" value="0" name="PACE_MODBUS" />
<Param type="485" value="1" name="DEYE" />
<Param type="485" value="1" name="PYLON" />
<Param type="485" value="2" name="GROWATT" />
...

Software neu starten, verbinden und auf Tab "System Config" das Passwort eintragen (siehe im Software Ordner). Mein Akku hängt via CAN am DEYE 12K hier habe ich bei CAN Protocol "DEYE" eingetragen.

Immer vorher mit Read die Werte auslesen, sonst kann man nicht schreiben "Write" !

RS458 Protocol kann man jetzt "0. PACE_MODBUS" auswählen und mit Write speichern.

Und in diese Moment hat mein ESP Daten empfangen Smile

Auf die schnelle ins HomeAssistant Dashboard gepackt:

 

Der Thread ist schnell runtergetippt, wird noch schön gemacht 😉

 

Dieses Thema wurde geändert Vor 3 Monaten 5 mal von KalleKnall

   
takeiteasy reacted
Zitat
(@alpevau)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 7
 

@KalleKnall

Veröffentlicht von: @kalleknall

Hier mein Problem: bei meinem BMS, bzw. bei der originalen Software von Gobel fehlt das passende RS485 Protokoll "Pace_Modbus" was man immer wieder liest.
Man kann recht einfach der Software einen neue DropDown Eintrag hinzufügen und das funktioniert tatsächlich O_o !

Hab gerade mal in der Inverter List HS203 Backup geschaut: da ist der Eintrag für das Pace Protokoll schon drinnen. Noch mit dem Zusatz in der Originalsprache..

<Param type="485" value="0" name="PACE_MODBUS(沛城)"/>


   
AntwortZitat
(@kalleknall)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
Themenstarter  

Es scheint sehr viele Varianten zu geben, hab selbst einige rumfliegen. bei mir war der Eintrag in keiner Version drin. Mag auch an den verschiedenen Herstellern liegen.

Jedenfalls ist ein Versuch wert ;-). Viel einfacher kommt man fast nicht an ein BMS Überwachungssystem ran.


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

Moin,

Aktuell wird bei mir Unbekannt angezeigt im Sensor 

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

   
AntwortZitat
4711Austria
(@4711austria)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 59
 

@KalleKnall danke für deinen Thread, ich möchte meine PC200 auch auslesen, die HW ist bestellt.

der ESP ist für mich neu, welche SW braucht der? Danke!


   
AntwortZitat
(@eierbeifel)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 8
 

Hallo @KalleKnall, danke für deine Anleitung! Ich hänge mich hier mal rein und das ist auch schon genau das Stichwort. ICH HÄNGE!
Vorne weg: Ich hatte mit ESPHome noch keine Berührungspunkte, bin hier also völliger Noob.
Habe mir die die von dir genannten Komponenten gegönnt. Unterschied ich habe kein HomeAssistant laufen sondern einen iobroker. Soll hier aber nicht Thema sein, denn ich scheine schon deutlich vorher zu scheitern. Und mein GobelPack hängt an einem Victron-System via CAN.

Im github-Projekt ist ja beschrieben RX auf RX und TX auf TX. Ist ja eigentlich unüblich, passt das so?
Du benutzt am ESP32 die Pins auf einer Seite, richtig? habe sie im folgenden Screenshot mal markiert.

Du nutzt den RS485 Port direkt neben dem Can-Port?

Du hast die Adern für den RJ45-Stecker dem Screenshot entsprechend Pin1 = links beginnend aufgelegt?

Die Einstellungen auf dem BMS
<Param type="485" value="0" name="PACE_MODBUS" />
hab ich gemacht und natürlich gespeichert.

Wenn das alles passt, MUSS mein Problem softwareseitig liegen. Ich compile via ESPHome im iobroker und der schiebt das dann OTA per Wlan drauf. Als Logmode habe ich in der yaml "VERY_VERBOSE" eingestellt. Ich sehe dass er dort anfragt, aber keine Antwort erhält (so interpretiere ich das jedenfalls).

MQTT hatte ich auskommentiert und dafür den API-Teil reingenommen (aus meiner vorher compilten yaml).

was hast du denn unter esp32?

hier meins, wenn ich das hier so schreibe, könnte das vielleicht mein Fehler sein?
esp32:
  board: esp32dev
  framework:
    type: arduino
 
Da mein DIP-Switch wie deiner auf "1" steht, habe ich unter modbus_controller_address: 0x01, passt das?

modbus_controller:
  - id: bms0
  # Slave address 0x01
  address: 0x01
  modbus_id: modbus0
  command_throttle: 200ms
  update_interval: 10s

 

sry, konnte den Logauszug nicht als "Code" einfügen:
[18:05:17][V][mdns:121]: TXT: network = wifi
[18:05:17][V][mdns:121]: TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[18:05:17][V][mdns:121]: TXT: project_name = syssi.esphome-pace-bms
[18:05:17][V][mdns:121]: TXT: project_version = 1.0.0
[18:05:17][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x00 count 8
[18:05:17][VV][uart.arduino_esp32:180]: Flushing...
[18:05:18][V][modbus:199]: Modbus write: 01.03.00.00.00.08.44.0C (8)
[18:05:18][V][modbus_controller:509]: Command sent 3 0x0 8
[18:05:18][C][ota:097]: Over-The-Air Updates:
[18:05:18][C][ota:098]: Address: esphome-web-f31cb0.local:3232
[18:05:18][C][api:139]: API Server:
[18:05:18][C][api:140]: Address: esphome-web-f31cb0.local:6053
[18:05:18][C][api:142]: Using noise encryption: YES
[18:05:18][D][uart_debug:114]: >>> 01:03:00:00:00:08:44:0C
[18:05:18][D][modbus_controller:043]: Modbus command to device=1 register=0x00 countdown=0 no response received - removed from send queue
[18:05:18][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x09 count 4
[18:05:18][VV][uart.arduino_esp32:180]: Flushing...
[18:05:18][V][modbus:199]: Modbus write: 01.03.00.09.00.04.94.0B (8)
[18:05:18][V][modbus_controller:509]: Command sent 3 0x9 4
[18:05:18][D][uart_debug:114]: >>> 01:03:00:09:00:04:94:0B
[18:05:18][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x09 count 4
[18:05:18][VV][uart.arduino_esp32:180]: Flushing...
[18:05:18][V][modbus:199]: Modbus write: 01.03.00.09.00.04.94.0B (8)
[18:05:18][V][modbus_controller:509]: Command sent 3 0x9 4
[18:05:18][D][uart_debug:114]: >>> 01:03:00:09:00:04:94:0B
[18:05:18][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x09 count 4
[18:05:18][VV][uart.arduino_esp32:180]: Flushing...
[18:05:18][V][modbus:199]: Modbus write: 01.03.00.09.00.04.94.0B (8)
[18:05:18][V][modbus_controller:509]: Command sent 3 0x9 4
[18:05:18][D][uart_debug:114]: >>> 01:03:00:09:00:04:94:0B
[18:05:18][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x09 count 4
[18:05:18][VV][uart.arduino_esp32:180]: Flushing...
[18:05:18][V][modbus:199]: Modbus write: 01.03.00.09.00.04.94.0B (8)
[18:05:18][V][modbus_controller:509]: Command sent 3 0x9 4
[18:05:19][D][uart_debug:114]: >>> 01:03:00:09:00:04:94:0B
[18:05:19][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x09 count 4
[18:05:19][VV][uart.arduino_esp32:180]: Flushing...
[18:05:19][V][modbus:199]: Modbus write: 01.03.00.09.00.04.94.0B (8)
[18:05:19][V][modbus_controller:509]: Command sent 3 0x9 4
[18:05:19][D][uart_debug:114]: >>> 01:03:00:09:00:04:94:0B
[18:05:19][D][modbus_controller:043]: Modbus command to device=1 register=0x09 countdown=0 no response received - removed from send queue
[18:05:19][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x0F count 22
[18:05:19][VV][uart.arduino_esp32:180]: Flushing...
[18:05:19][V][modbus:199]: Modbus write: 01.03.00.0F.00.16.F4.07 (8)
[18:05:19][V][modbus_controller:509]: Command sent 3 0xF 22
[18:05:19][D][uart_debug:114]: >>> 01:03:00:0F:00:16:F4:07
[18:05:19][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x0F count 22
[18:05:19][VV][uart.arduino_esp32:180]: Flushing...
[18:05:19][V][modbus:199]: Modbus write: 01.03.00.0F.00.16.F4.07 (8)
[18:05:19][V][modbus_controller:509]: Command sent 3 0xF 22
[18:05:19][D][uart_debug:114]: >>> 01:03:00:0F:00:16:F4:07
[18:05:19][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x0F count 22
[18:05:19][VV][uart.arduino_esp32:180]: Flushing...
[18:05:19][V][modbus:199]: Modbus write: 01.03.00.0F.00.16.F4.07 (8)
[18:05:19][V][modbus_controller:509]: Command sent 3 0xF 22
[18:05:20][D][uart_debug:114]: >>> 01:03:00:0F:00:16:F4:07
[18:05:20][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x0F count 22
[18:05:20][VV][uart.arduino_esp32:180]: Flushing...
[18:05:20][V][modbus:199]: Modbus write: 01.03.00.0F.00.16.F4.07 (8)
[18:05:20][V][modbus_controller:509]: Command sent 3 0xF 22
[18:05:20][D][uart_debug:114]: >>> 01:03:00:0F:00:16:F4:07
[18:05:20][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x0F count 22
[18:05:20][VV][uart.arduino_esp32:180]: Flushing...
[18:05:20][V][modbus:199]: Modbus write: 01.03.00.0F.00.16.F4.07 (8)
[18:05:20][V][modbus_controller:509]: Command sent 3 0xF 22
[18:05:20][D][uart_debug:114]: >>> 01:03:00:0F:00:16:F4:07
[18:05:20][D][modbus_controller:043]: Modbus command to device=1 register=0x0F countdown=0 no response received - removed from send queue
[18:05:20][V][modbus_controller:047]: Sending next modbus command to device 1 register 0x3C count 55

das ist jetzt nur ein kurzer Ausschnitt. Es werden noch mehr Register durchgegangen und loopt dann. Was dann "hintenraus" zum iobroker passiert, sollte an der Stelle hier noch egal sein. Ich würde erwarten im Log irgendwas zu sehen, das nach empfangenen Werten aussieht.

Würdest du deine *.yaml (wlan und api secret natürlich ausgeixxt, wenn dus überhaupt drin hast) zur Verfügung stellen damit wir unwissenden vielleicht spicken können?

Gruß eierbeifel


   
AntwortZitat
(@eierbeifel)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 8
 

okay ich habs gefunden, war alles richtig, nur hat er beim Verbinden mit dem Akku nicht das PACE_MODBUS ordentlich gespeichert. Das ist mir aber erst heute aufgefallen, als ich es nochmal versuchen wollte. Und wie so oft: Kaum macht man es richtig, schon gehts!


   
AntwortZitat
4711Austria
(@4711austria)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 59
 

@eierbeifel bin gerade am verkabeln von dem ESP und RS485 board

hast du RS485 pin 1/8 und 2/7 beide angehängt?


   
AntwortZitat
(@eierbeifel)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 8
 

@4711austria nee nur 1 und 2


   
AntwortZitat
m1k3f15h
(@m1k3f15h)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 11
 

Hey Leute,

 

Kann mir bitte wer die Software zur Verfügung stellen. Smile Das wäre echt super Smile

 

danke

Mike

Schöne Grüße aus Niederösterreich 😀


   
AntwortZitat
4711Austria
(@4711austria)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 59
 

@eierbeifel ja, bei mir funktioniert es jetzt mit dein RS485/Lan Adapter wunderbar, bekomme die Daten in den ioBroker geliefert
möchte aber das mit dem ESP, wenn ich ihn schon gekauft habe, auch hinbekommen.

was ich nicht kapiere, wie programmiere ich den ESP

https://esphome.io/

die Arduino SW erkennt das Board nicht ? würdest du mich da bitte erleuchten, danke!


   
AntwortZitat
m1k3f15h
(@m1k3f15h)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 11
 

@4711austria 

Du musst dir eine ESP-Home config.yml machen/zusammenkopieren und dann eine Firmware kompilieren.

 

Grüße aus Niederösterreich

Mike

Schöne Grüße aus Niederösterreich 😀


   
AntwortZitat
4711Austria
(@4711austria)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 59
 

@m1k3f15h Hallo Mike, ok davon habe ich noch keine Ahnung. Ist dir ein YT Vid bekannt, das das mal von Grund auf zeigt, sonst muss ich das weit nach hinten schieben (Zeit)


   
AntwortZitat
(@mpeterson)
Newbie
Beigetreten: Vor 1 Monat
Beiträge: 2
 

Vielen Dank an alle fuer diese Loesung. hat auch be mir mit GOBEL 48V Batterie  (200A Pace BMS) sehr gut funktioniert. Nur aufpassen dass man TX mit TX verbinded, hat mich tatsaechlich ene Stunde suchen gekostet:) Freedom...


   
AntwortZitat
(@eierbeifel)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 8
 

@4711austria hat das bei dir nun geklappt oder brauchst du support?


   
AntwortZitat
Teilen: