Hallo Forum,
ich habe aktuell folgendes Projekt: Es soll ein Buck Converter DPM 8624 benutzt werden, um einem Laderegler für eine LiFePo4 Batterie eine gewisse Leistung zur Verfügung zu stellen. Konkret soll die Batterie geladen werden, wenn meine PV Anlage Energie ins Netz einspeist. Vor dem DPM8624 ist natürlich noch ein Netzteil geschalten.
Nun möchte ich mit einem ESP32 den DPM8624 mittels Modbus RTU und ESPHome innerhalb Home Assistant einen Stromwert vorgeben. Dazu müsste ich den Stromwert mittels MQTT übertragen, der ESP32 müsste ihn lesen und auf den DPM schreiben.
Ich habe es geschafft, die Register des DPM8624 mittels ESPHome auszulesen, jedoch bekomme ich es nicht hin dem DPM8624 einen Stromwert vorzugeben. Im DPM ist das "MODBUS Communication Protocol" aktiviert.
HA Version: 10.1
ESPHome Version: 2023.4.3
Communication Protocol DPM8624: Link entfernt
uart:
id: mod_bus
tx_pin: 17
rx_pin: 16
baud_rate: 9600
stop_bits: 1
parity: none
modbus:
id: modbus1
uart_id: mod_bus
modbus_controller:
- id: epever
address: 0x1
modbus_id: modbus1
command_throttle: 1000ms
update_interval: 10s
sensor:
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Set Voltage"
id: dpm_set_voltage
register_type: holding
address: 0x0000
unit_of_measurement: "V"
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Set Current"
id: dpm_set_current
register_type: holding
address: 0x0001
unit_of_measurement: "A"
accuracy_decimals: 2
filters:
- multiply: 0.001
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Output Voltage"
id: dpm_output_voltage
register_type: holding
address: 0x1001
unit_of_measurement: "V"
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Output Current"
id: dpm_output_current
register_type: holding
address: 0x1002
unit_of_measurement: "A"
accuracy_decimals: 2
filters:
- multiply: 0.001
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Temperature"
id: dpm_temperature
register_type: holding
address: 0x1003
unit_of_measurement: "°C"
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: epever
name: "DPM Out Switch"
id: dpm_out_switch
register_type: holding
address: 0x0002
number:
- platform: modbus_controller
modbus_controller_id: epever
id: dpm_set_output_voltage
name: "DPM Set Output Voltage"
address: 0x0000
lambda: "return ???; "
Laut meinem Verständnis muss ich eine "number" erstellen, die dem Register einen Wert schreibt. Function Code sollte 6 sein. Allerdings komme ich absolut nicht weiter, wie ich die MQTT Nachricht lesen und dann zum DPM übertragen soll...
Ich hoffe es kann mir jemand einen Schubser in die richtige Richtung geben. ich bin nicht besonders erfahren und wäre über jede Hilfe dankbar.
Falls noch weiter Infos zur Analyse notwendig sind, werde ich diese gerne nachliefern.
Beste Grüße und schonmal Danke im Voraus
Felix