Modul PylonTech

Begonnen von satprofi, 06 Januar 2021, 11:49:11

Vorheriges Thema - Nächstes Thema

Wzut

ich lese folgende 5 Register vom Device 239 (Multiplus) :
attr Multiplus obj-h74-reading AC-In1_to_AC-out
attr Multiplus obj-h76-reading AC-In1_to_battery
attr Multiplus obj-h86-reading Battery_to_AC-In1
attr Multiplus obj-h90-reading Battery_to_AC-out
attr Multiplus obj-h92-reading AC-out_to_battery
Von welcher Device iD liest du ? Ich finde das von Victron saublöd gemacht mit denen vielen Ids in einem Gerät. Bei mir hat der MP2 die ID 239 und die Pylontechs 225.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hauwech

Bei mir sind Geräte-IDs:
- 40: com.victronenergy.grid und .pvinverter
- 225: .battery
- 227: .veBus
- 100: .hub4 und .system

Charged und Discharged sollten unter Battery auf 301 und 302 stehen, sind aber leer bzw. 0. Der MultiPlus hat bei mir keine eigene Modbus Geräte-ID. Muß man auf dem MP Modbus erst aktivieren? Ich dachte, der Cerbo kriegt vom MP alles über vebus,

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

Der MP steckt wohl hinter ID 227 vebus. Momentan lese ich folgende Register:
(Title und ModbusAddress)
<?xml version="1.0" encoding="utf-8"?>
<Modbus Title="Venus GX vebus" Comment="" HintText="" Channel="246">
<Info templateType="7" minVersion="14051207"/>
<ModbusCmd Title="Battery voltage" Comment="" HintText="" ModbusAddress="26" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v.2&gt; V" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="0.1"/>
<ModbusCmd Title="Input power 1" Comment="" HintText="" ModbusAddress="12" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt; W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Input power 2" Comment="" HintText="" ModbusAddress="13" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt; W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Input power 3" Comment="" HintText="" ModbusAddress="14" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt; W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Output power 1" Comment="" HintText="" ModbusAddress="23" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Output power 2" Comment="" HintText="" ModbusAddress="24" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Output power 3" Comment="" HintText="" ModbusAddress="25" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="100"/>
<ModbusCmd Title="Battery current" Comment="" HintText="" ModbusAddress="27" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v.1&gt;A" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="1"/>
<ModbusCmd Title="VE.Bus state of charge" Comment="" HintText="" ModbusAddress="30" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v.1&gt;%" Analog="true" Sensor="true" SourceValHigh="10" DestValHigh="1"/>
<ModbusCmd Title="Switch Position" Comment="" HintText="" ModbusAddress="33" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 1" Comment="" HintText="" ModbusAddress="37" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS disable charge flag phase" Comment="" HintText="" ModbusAddress="38" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS disable feedback flag phase" Comment="" HintText="" ModbusAddress="39" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 2" Comment="" HintText="" ModbusAddress="40" ModbusCmd="4" ModbusDataType="33" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 3" Comment="" HintText="" ModbusAddress="41" ModbusCmd="4" ModbusDataType="1" ModbusPollingCycle="5" Unit="&lt;v&gt;W" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="Disable PV inverter" Comment="" HintText="" ModbusAddress="56" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="VE.Bus BMS allows battery to be charged" Comment="" HintText="" ModbusAddress="57" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="VE.Bus BMS allows battery to be discharged" Comment="" HintText="" ModbusAddress="58" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="VE.Bus Reset" Comment="" HintText="" ModbusAddress="62" ModbusCmd="4" ModbusPollingCycle="5" Unit="&lt;v&gt;" Analog="true" Sensor="true" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="Maximum overvoltage feed-in power L3" Comment="" HintText="" ModbusAddress="68" ModbusCmd="6" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="1000" DestValHigh="10"/>
<ModbusCmd Title="Maximum overvoltage feed-in power L2" Comment="" HintText="" ModbusAddress="67" ModbusCmd="6" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="1000" DestValHigh="10"/>
<ModbusCmd Title="Maximum overvoltage feed-in power L1" Comment="" HintText="" ModbusAddress="66" ModbusCmd="6" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="1000" DestValHigh="10"/>
<ModbusCmd Title="Fee DC overvoltage into grid" Comment="" HintText="" ModbusAddress="65" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="VE.Bus Reset" Comment="" HintText="" ModbusAddress="62" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="Disable PV inverter" Comment="" HintText="" ModbusAddress="56" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 3" Comment="" HintText="" ModbusAddress="41" ModbusCmd="6" ModbusDataType="1" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 2" Comment="" HintText="" ModbusAddress="40" ModbusCmd="6" ModbusDataType="1" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase 1" Comment="" HintText="" ModbusAddress="37" ModbusCmd="6" ModbusDataType="1" Unit="&lt;v&gt;W" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS power setpoint phase" Comment="" HintText="" ModbusAddress="39" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="ESS disable charge flag phase" Comment="" HintText="" ModbusAddress="38" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="Switch Posistion" Comment="" HintText="" ModbusAddress="33" ModbusCmd="6" Unit="&lt;v&gt;" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
<ModbusCmd Title="VE.Bus state of charge" Comment="" HintText="" ModbusAddress="30" ModbusCmd="6" Unit="&lt;v&gt;%" Analog="true" Sensor="false" SourceValHigh="100" DestValHigh="100"/>
</Modbus>
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

Wzut

.vebus ist bei mir halt 239
von .battery 225 lese ich 6 Register wobei nur 259, 261, 262 und 266 sinnvolle Werte enthalten.
301 & 302 liefern auch bei mir immer nur 0
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

jnewton957

Zitat von: Wzut am 27 November 2024, 12:11:24301 & 302 liefern auch bei mir immer nur 0

Bei mir auch. Das liegt wohl daran, dass die Pylontechs eben die Werte des Pylontech-BMS nicht an den Multiplus senden.

Es gibt einen workaround battery-energy-meter für pylontech. Das Vorgehen ist auf github beschrieben. Man muss eine battery-energy-meter.py auf dem Cerbo einspielen und dann laufen lassen. Nicht trivial und man muss sich vorher superuser Berechtigungen auf dem Victron einrichten!

Ich behelfe mir mittlerweile mit den AcIn1ToInverter und InverterToAcIn1 die ich aus dem Modbus bekomme.
Dazu ein device statistics angelegt und ich habe alle Werte mit Stunden, Tages, Monats und Jahresbasis.

Wenn man sich ansehen will, welche Werte von den einzelnen Geräten an Fhem übertragbar sind, empfehle ich den MQQT Explorer. Dort kann ich nicht nur die Bezeichnungen sehen, sondern auch die aktuellen Werte. Somit lassen sich auch die Readings umbauen zu writings (publish) und die victron steuern.
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

satprofi

Hallo.
Frage zum Modul, klappt damit US5000 auch?
lG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

DS_Starter

ZitatFrage zum Modul, klappt damit US5000 auch?
Ich selbst habe keine US5000, aber es wurde der erfolgreiche Einsatz mit US5000 berichtet, weswegen ich in der Hilfe zum Modul die Info aufgenommen habe:

Modul zur Einbindung von Niedervolt-Batterien mit Batteriemanagmentsystem (BMS) des Herstellers Pylontech über RS485 via RS485/Ethernet-Gateway. Die Kommunikation zum RS485-Gateway erfolgt ausschließlich über eine Ethernet-Verbindung.
Das Modul wurde bisher erfolgreich mit Pylontech Batterien folgender Typen eingesetzt:

    US2000
    US2000B Plus
    US2000C
    US2000 Plus
    US3000
    US3000C
    US5000

Weiterin sind im Code die Eigenheiten von Batterien dieser Leistungsklasse eingebaut, die in der mir vorliegenden Protokollspezifikation beschrieben sind (ist aber schon älter).
Sollte also funktionieren.

LG,
Heiko 
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

satprofi

US5000 klappt ! Nur der Ah Wert ist ganze Zahl, bei den 2000er aber mit Kommawerten.
BatteryView meldet aber kommawert
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

schon gesehen? man kann jetzt system mit mehreren Packs abfragen
V3.5
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

DS_Starter

Nein, die V3.5 kenne ich nicht. Kannst du die (oder einen Link) mir mal schicken?
Ich hatte bei Pylon wegen einer aktuellen API Doku mal angefragt, aber eine ablehnende Antwort bekommen.
Schön dass du sie gefunden hast.  :)
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Threekan

Hallo,

nutze FHEM mit einem Raspi und habe seit kurzem zwei Pylontech US3000C an einem HLK-WR02 Klon (DIEWU) hängen.

So sieht das Teil aus:
https://www.lri.com.br/comunicacao-de-dados/conectividade/conversor-serial-ethernet/servidor-serial-ethernetwifi-com-1-porta-rs-485-e-rs-232

define Pylontech3000C PylonLowVoltage 192.168.178.41:9000
attr Pylontech3000C icon batterie
attr Pylontech3000C room Solaranlage
attr Pylontech3000C timeout 20
attr Pylontech3000C verbose 5
attr Pylontech3000C waitTimeBetweenRS485Cmd 1.9
#   DEF        192.168.178.41:9000
#   FUUID      68c59b25-f33f-3ac7-ea34-7d0ddd09f2e8299d
#   FVERSION   70_PylonLowVoltage.pm:v1.2.1-s29459/2024-12-29
#   HOST       192.168.178.41
#   NAME       Pylontech3000C
#   NR         69
#   OPMODE     Automatic
#   PORT       9000
#   STATE      Timeout reading data from battery
#   TYPE       PylonLowVoltage
#   eventCount 27303
#   HELPER:
#     BATADDRESS 1
#     GROUP      0
#     PACKAGE    FHEM::PylonLowVoltage
#     VERSION    1.2.1
#     VERSION_API unused
#     VERSION_CTZ unused
#     VERSION_ErrCodes unused
#     VERSION_SMUtils 1.28.3
#   Helper:
#     DBLOG:
#       nextCycletime:
#         logdb:
#           TIME       1758650070.3664
#           VALUE      19:54:59
#       state:
#         logdb:
#           TIME       1758650070.3664
#           VALUE      Timeout reading data from battery
#   READINGS:
#     2025-09-23 19:54:30   nextCycletime   19:54:59
#     2025-09-23 19:54:30   state           Timeout reading data from battery
#
setstate Pylontech3000C Timeout reading data from battery
setstate Pylontech3000C 2025-09-23 19:54:30 nextCycletime 19:54:59
setstate Pylontech3000C 2025-09-23 19:54:30 state Timeout reading data from battery


Im FHEM-Log steht folgendes:

2025.09.23 19:54:50 4: Pylontech3000C - START request cycle to battery number >1<, group >0< at host:port 192.168.178.41:9000
2025.09.23 19:54:50 4: Pylontech3000C - Cycle started in main process with battery read timeout: >0.5<
2025.09.23 19:54:50 4: Pylontech3000C - used wait time between RS485 commands: 0 seconds
2025.09.23 19:54:50 5: Pylontech3000C - Addressing (HEX) - Bat: 02, Group: 00, effective Bat address: 02
2025.09.23 19:54:50 4: Pylontech3000C - retrieve battery info: serialNumber
2025.09.23 19:54:50 4: Pylontech3000C - request command (ASCII): ~20024693E00202FD2D
2025.09.23 19:54:50 5: Pylontech3000C - request command (HEX): 7e3230303234363933453030323032464432440d
2025.09.23 19:54:50 3: Pylontech3000C - Timeout reading battery
2025.09.23 19:54:50 4: Pylontech3000C - Socket/Connection to the RS485 gateway was closed

Irgendwelche Ideen zum weiteren Testen?

Danke und Gruß
Stefan

DS_Starter

Hallo Stefan,

die Batterie antwortet nicht. Warum, kann ich nur raten:

- ist das Kabel zur Batterie am richtigen Port der Batterie angeschlossen und auch richtig belegt?
  Es muß am RS485 Port der Master!! Batterie angeschlossen sein.
- ist die Baud-Rate zwischen dem Gateway und der Batterie übereinstimmend eingestellt?
- ist das Gateway Setup richtig?

Hier die Einstellung aus der Online Hilfe für einen Waveshare RS485 to Ethernet Converter:

- Baud Rate : entsprechend Einstellung der Batterie
- Data Size : 8 Bit
- Parity : None
- Stop Bits : 1
- Local Port Number : frei gewählt
- Work Mode : TCP Server
- Reset : nicht gesetzt
- Link : gesetzt
- Index : nicht gesetzt
- Similar RCF2217 : gesetzt

Einstellungen Expand Function
- Heartbeat Packet Type : None
- Register Packet Type : None
- Short Connection : nicht gesetzt
- TCP Server-kick off old connection : gesetzt
- Buffer Data before Connected : gesetzt
- UART Set Parameter : nicht gesetzt

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Threekan

Hallo Heiko,

danke für die schnelle Antwort.
Ich glaube das Problem ist mein selbst gemachtes Patchkabel (Cat 5e EIA-568B).
Das Kabel ist mit der weisenbraunen Ader bzw. braunen Ader am RS-485 Port auf A und B
inkl.100 Ohm Widerstand angeschlossen.
Gibt es hierzu eine Anleitung welcher Kabeltyp es sein soll oder kann man ein solches Kabel kaufen?

Die Baudrate an der Batterie und dem Gateway sind auf "115200,8,1,n" eingestellt.
Das Gateway läßt sich über ein Webinterface administrieren und die Kommunikation
mit dem Hausnetz und dem Rasberry klappt.

Der Zugriff auf die beiden Batterien mittels BatteryView ist ebenfalls gegeben.

Gruß

Stefan

DS_Starter

Im Beitrag #70 habe ich die Kabelbelegung beschrieben.
Kabeltyp ist auf kurze Entfernung nicht so kritisch. Ich habe ein Cat5e Kabel zerschnitten und die entsprechenden 2 Adern am Gateway aufgelegt.
Einen Widerstand braucht man nicht. Ist in der BAT bei der verlangeten Schalterstellung enthalten wenn ich mich nicht täusche. Ich habe jedenfalls keinen.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Threekan

#239
Hallo Heiko,

nachdem ich mein DIEWU Gateway zerkonfiguriert habe (kein WIFI mehr),
habe ich mir ein Waveshare RS485 to ETH bestellt und jetzt läuft es auf Anhieb.

define Pylontech3000C PylonLowVoltage 192.168.178.41:9000
attr Pylontech3000C icon batterie
attr Pylontech3000C room Solaranlage
attr Pylontech3000C verbose 0
#   DEF        192.168.178.41:9000
#   FUUID      68c59b25-f33f-3ac7-ea34-7d0ddd09f2e8299d
#   FVERSION   70_PylonLowVoltage.pm:v1.2.1-s29459/2024-12-29
#   HOST       192.168.178.41
#   NAME       Pylontech3000C
#   NR         69
#   OPMODE     Automatic
#   PORT       9000
#   STATE      connected
#   TYPE       PylonLowVoltage
#   eventCount 4921


Nochmals danke und Gruß

Stefan