Skip to content
cerise21 edited this page Jun 17, 2024 · 15 revisions

MQTT Topics

Only OpenDTU-OnBattery specific topics are documented here. Refer to the upstream documentation for documentation of topics that are part of the upstream OpenDTU project and therefore are also part of OpenDTU-OnBattery.

Victron MPPT topics

General

Topic R / W Description Value / Unit
victron/[serial]/PID R Product description text
victron/[serial]/SER R Serial number text
victron/[serial]/FW R Firmware number int
victron/[serial]/LOAD R Load output state ON / OFF
victron/[serial]/CS R State of operation text e. g. "Bulk"
victron/[serial]/ERR R Error code text e. g. "No error"
victron/[serial]/OR R Off reasen text e. g. "Not off"
victron/[serial]/MPPT R Tracker operation mode text e. g. "MPP Tracker active"
victron/[serial]/HSDS R Day sequence number (0...364) int in days

Battery output

Topic R / W Description Value / Unit
victron/[serial]/V R Voltage Volt (V)
victron/[serial]/I R Current Ampere (A)

Solar input

Topic R / W Description Value / Unit
victron/[serial]/VPV R Voltage Volt (V)
victron/[serial]/PPV R Power Watt (W)
victron/[serial]/H19 R Yield total (user resettable counter) Kilo watt hours (kWh)
victron/[serial]/H20 R Yield today Kilo watt hours (kWh)
victron/[serial]/H21 R Maximum power today Watt (W)
victron/[serial]/H22 R Yield yesterday Kilo watt hours (kWh)
victron/[serial]/H23 R Maximum power yesterday Watt (W)

Pylontech battery topics

Topic R / W Description Value / Unit
battery/settings/chargeVoltage R Voltage Volt (V)
battery/settings/chargeCurrentLimitation R BMS requested max. charge current Ampere (A)
battery/settings/dischargeCurrentLimitation R BMS requested max. discharge current Ampere (A)
battery/stateOfCharge R State of Health %
battery/stateOfHealth R State of Charge %
battery/dataAge R How old the data is Seconds
battery/voltage R Actual voltage Volt (V)
battery/current R Actual current Ampere (A)
battery/temperature" R Actual temperature °C
battery/alarm/overCurrentDischarge R Alarm: High discharge current 0 / 1
battery/alarm/underTemperature R Alarm: Low temperature 0 / 1
battery/alarm/overTemperature R Alarm: High temperature 0 / 1
battery/alarm/underVoltage R Alarm: Low voltage 0 / 1
battery/alarm/overVoltage R Alarm: High voltage 0 / 1
battery/alarm/bmsInternal R Alarm: BMS internal 0 / 1
battery/alarm/overCurrentCharge R
battery/warning/highCurrentDischarge R Warning: High discharge current 0 / 1
battery/warning/lowTemperature R Warning: Low temperature 0 / 1
battery/warning/highTemperature R Warning: High temperature 0 / 1
battery/warning/lowVoltage R Warning: Low voltage 0 / 1
battery/warning/highVoltage R Warning: High voltage 0 / 1
battery/warning/bmsInternal R Warning: BMS internal 0 / 1
battery/manufacturer R Manufacturer String
battery/charging/chargeEnabled R Charge enabled flag 0 / 1
battery/charging/dischargeEnabled R Discharge enabled flag 0 / 1
battery/charging/chargeImmediately R Charge immediately flag 0 / 1

Huawei AC charger topics

Topic R / W Description Value / Unit
huawei/cmd/limit_online_voltage W Online voltage (i.e. CAN bus connected) Volt (V)
huawei/cmd/limit_online_current W Online current (i.e. CAN bus connected) Ampere (A)
huawei/cmd/limit_offline_voltage W Offline voltage (i.e. CAN bus not connected) Volt (V)
huawei/cmd/limit_offline_current W Offline current (i.e. CAN bus not connected) Ampere (A)
huawei/cmd/mode W Controls GPIO output pin to switch slot detect 0 (off) / 1 (on) / 2 (set automatically depending on online_current value) / 3 (set automatically based on Power Meter reading )
huawei/mode R Currently set charging mode see above
huawei/data_age R How old the data is Seconds
huawei/input_voltage R Input voltage Volt (V)
huawei/input_current R Input current Ampere (A)
huawei/input_power R Input power Watt (W)
huawei/output_voltage R Output voltage Volt (V)
huawei/output_current R Output current Ampere (A)
huawei/max_output_current R Maximum output current (set using the online limit) Ampere (A)
huawei/output_power R Output power Watt (W)
huawei/input_temp R Input air temperature °C
huawei/output_temp R Output air temperature °C
huawei/efficiency R Efficiency Percentage

Power Limiter topics

Battery Thresholds

If the inverter is solar-powered, none of the thresholds are published and publishing to the respective cmd topic has no effect.

Note that, depending on your settings, some of the thresholds might have no effect. Refer to the DPL documentation to understand the thresholds.

Topic Limitation
powerlimiter/status/threshold/voltage/start
powerlimiter/status/threshold/voltage/stop
powerlimiter/status/threshold/voltage/full_solar_passthrough_start Not published if VE.Direct not enabled
powerlimiter/status/threshold/voltage/full_solar_passthrough_stop Not published if VE.Direct not enabled
powerlimiter/status/threshold/soc/start Not published if no battery interface configured or SoC is set to be ignored
powerlimiter/status/threshold/soc/stop Not published if no battery interface configured or SoC is set to be ignored
powerlimiter/status/threshold/soc/full_solar_passthrough Not published if no battery interface configured or SoC is set to be ignored or VE.Direct not enabled

All thresholds have respective cmd topics (replace status with cmd), which allow to override the threshold. The overrides are non-persistent, unless the Web API/UI is used to save the DPL settings (the DPL settings will show the override values).

Example: Use topic "powerlimiter/cmd/threshold/voltage/start" to override the battery discharge cycle start voltage threshold.

Mode

Topic R / W Description Value
powerlimiter/cmd/mode W Power Limiter operation mode see below
powerlimiter/status/mode R Get Power Limiter operation mode see below

Setting any a mode through MQTT has no effect if the Power Limiter is disabled by configuration in the web application. The Power Limiter will stay off in that case.

When using the web application to change DPL settings, the DPL mode will be reset to normal operation.

Three modes are implemented:

  • 0 - Normal operation: The Power Limiter works as configured through the web application.
  • 1 - Fully disable with inverter shut down: The inverter is shut down and afterwards the Power Limiter stops operating, as if it was disabled in the web application. Note that this means that the inverter can start producing power if the web application or an MQTT topic is used to control it.
  • 2 - Unconditional Full Solar-Passthrough: The power limit is set such that all available solar power is fed into the home, irrespective of grid consumption. Essentially, the inverter mimics the behavior of a traditional, non-smart inverter. Depending on your configuration, the inverter's limit is set to the following:
    1. Inverter is powered by a battery: The inverter's limit is set to the solar power output (VE.Direct interface), adjusted for efficiency, such that no energy from the battery is consumed. Note that if VE.Direct is disabled or the data is outdated, the inverter is shut down instead. This mode can be particularly useful in scenarios where solar power is better stored elsewhere, such as in an electric car.
    2. Inverter is powered by solar modules: The inverter's limit is set to the upper limit configured in the DPL settings (starting from releases 2024.04.xx).

Timeout Counter (starting from releases 2024.04.xx)

The DPL counts the amount of times an attempt to configure the inverter to a particular state times out. This counter is used to decide to sent an inverter restart command, hoping to "revive" the inverter. If the counter keeps increasing even after multiple restart commands have been issued, the ESP restarts as a last resort. The thresholds to perform these actions are hard coded to 10 and 20 timeouts, respectively.

Topic powerlimiter/status/inverter_update_timeouts can be monitored to be alerted by these timeouts.

Inverter

| Topic | R / W | Description | Value | | powerlimiter/status/upper_power_limit | R | set maximum power limit of inverter | 0..P_max_inverter [W] |

Clone this wiki locally