Last active
December 10, 2025 09:16
-
-
Save vladyspavlov/5ac21cb58923482eff8e7bbb2d0854b3 to your computer and use it in GitHub Desktop.
Must inverter ESPHome configuration for ESP32. More info and the latest version of the config are now in the repo: https://github.com/vladyspavlov/esphome-must-inverter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # More info and the latest version of the config are now in the repo: https://github.com/vladyspavlov/esphome-must-inverter | |
| substitutions: | |
| inverter_id: inverter | |
| updates: 5s | |
| api_key: xxx | |
| ota_password: xxx | |
| esphome: | |
| name: inverter-monitor | |
| comment: "Inverter monitor" | |
| esp32: | |
| board: esp32dev | |
| framework: | |
| type: esp-idf | |
| wifi: | |
| ssid: !secret wifi_ssid | |
| password: !secret wifi_password | |
| captive_portal: | |
| logger: | |
| level: DEBUG | |
| api: | |
| encryption: | |
| key: ${api_key} | |
| ota: | |
| password: ${ota_password} | |
| uart: | |
| - id: uart_inverter | |
| baud_rate: 19200 | |
| tx_pin: GPIO19 | |
| rx_pin: GPIO18 | |
| stop_bits: 1 | |
| parity: NONE | |
| data_bits: 8 | |
| debug: | |
| direction: BOTH | |
| dummy_receiver: false | |
| modbus: | |
| - id: modbus_inverter | |
| uart_id: uart_inverter | |
| send_wait_time: 200ms | |
| modbus_controller: | |
| - id: must_inverter | |
| address: 0x04 | |
| modbus_id: modbus_inverter | |
| command_throttle: 200ms | |
| setup_priority: -10 | |
| update_interval: ${updates} | |
| sensor: | |
| # charger sensors | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15201 | |
| name: "PV Charger Workstate" | |
| register_type: holding | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15202 | |
| name: "PV Charger MPPT state" | |
| register_type: holding | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15203 | |
| name: "PV Charger Charging state" | |
| register_type: holding | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15205 | |
| name: "PV Charger Voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15206 | |
| name: "PV Charger Battery voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15207 | |
| name: "PV Charger Current" | |
| register_type: holding | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-dc | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15208 | |
| register_type: holding | |
| name: "PV Charger power" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15209 | |
| register_type: holding | |
| name: "PV Charger Radiator temp" | |
| unit_of_measurement: "°C" | |
| accuracy_decimals: 1 | |
| icon: mdi:temperature-celsius | |
| # - platform: modbus_controller | |
| # modbus_controller_id: must_inverter | |
| # address: 15210 | |
| # register_type: holding | |
| # name: "PV Charger External temp" | |
| # unit_of_measurement: "°C" | |
| # accuracy_decimals: 1 | |
| # icon: mdi:temperature-celsius | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15212 | |
| register_type: holding | |
| name: "PV Relay" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15217 | |
| register_type: holding | |
| id: charger_total_mwh | |
| internal: true | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15218 | |
| register_type: holding | |
| id: charger_total_kwh | |
| internal: true | |
| filters: | |
| multiply: 0.1 | |
| - platform: template | |
| name: "PV Charger Accumulated charger power" | |
| unit_of_measurement: kWh | |
| lambda: !lambda 'return (id(charger_total_mwh).state * 1000.0 + id(charger_total_kwh).state );' | |
| accuracy_decimals: 1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15219 | |
| register_type: holding | |
| name: "PV Charger Accumulated day" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15220 | |
| register_type: holding | |
| name: "PV Charger Accumulated hour" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 15221 | |
| register_type: holding | |
| name: "PV Charger Accumulated minute" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| # inverter sensors | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25201 | |
| register_type: holding | |
| name: "Inverter Work state" | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25205 | |
| name: "Inverter Battery Voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25206 | |
| name: "Inverter Voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25207 | |
| name: "Inverter Grid voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25207 | |
| name: "Inverter Grid voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25208 | |
| name: "Inverter BUS Voltage" | |
| register_type: holding | |
| unit_of_measurement: "V" | |
| accuracy_decimals: 1 | |
| icon: mdi:sine-wave | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25209 | |
| name: "Inverter Control current" | |
| register_type: holding | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-dc | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25210 | |
| name: "Inverter Current" | |
| register_type: holding | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-dc | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25211 | |
| name: "Inverter Grid current" | |
| register_type: holding | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-ac | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25212 | |
| name: "Inverter Load current" | |
| register_type: holding | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-ac | |
| filters: | |
| multiply: 0.1 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25213 | |
| name: "Inverter Power" | |
| register_type: holding | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25214 | |
| name: "Inverter Grid power" | |
| register_type: holding | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| value_type: S_WORD | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25215 | |
| name: "Inverter Load power" | |
| register_type: holding | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25216 | |
| name: "Inverter System load" | |
| register_type: holding | |
| unit_of_measurement: "%" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| # MOST INFO | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25233 | |
| register_type: holding | |
| name: "Inverter AC radiator temp" | |
| accuracy_decimals: 1 | |
| unit_of_measurement: "°C" | |
| icon: mdi:temperature-celsius | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25234 | |
| register_type: holding | |
| name: "Inverter Transformer temp" | |
| unit_of_measurement: "°C" | |
| accuracy_decimals: 1 | |
| icon: mdi:temperature-celsius | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25235 | |
| register_type: holding | |
| name: "Inverter DC Radiator temp" | |
| unit_of_measurement: "°C" | |
| accuracy_decimals: 1 | |
| icon: mdi:temperature-celsius | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25237 | |
| register_type: holding | |
| name: "Inverter Relay state" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25238 | |
| register_type: holding | |
| name: "Inverter Relay state Grid" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25239 | |
| register_type: holding | |
| name: "Inverter Relay state Load" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25240 | |
| register_type: holding | |
| name: "Inverter Relay state NLine" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25241 | |
| register_type: holding | |
| name: "Inverter Relay state DC" | |
| icon: mdi:electric-switch | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25242 | |
| register_type: holding | |
| name: "Inverter Relay state Earth" | |
| icon: mdi:electric-switch | |
| # Inverter Accumulated discharge power | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25247 | |
| register_type: holding | |
| id: discharger_total_mwh | |
| internal: true | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25248 | |
| register_type: holding | |
| id: discharger_total_kwh | |
| internal: true | |
| filters: | |
| multiply: 0.1 | |
| - platform: template | |
| name: "Accumulated discharger power" | |
| unit_of_measurement: kWh | |
| accuracy_decimals: 1 | |
| lambda: !lambda 'return (id(discharger_total_mwh).state * 1000.0 + id(discharger_total_kwh).state);' | |
| # Inverter Accumulated buy power | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25249 | |
| register_type: holding | |
| id: buy_mwh | |
| internal: true | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25250 | |
| register_type: holding | |
| id: buy_kwh | |
| internal: true | |
| filters: | |
| multiply: 0.1 | |
| - platform: template | |
| name: "Accumulated buy power" | |
| unit_of_measurement: kWh | |
| lambda: |- | |
| return (id(buy_mwh).state * 1000.0 + id(buy_kwh).state); | |
| accuracy_decimals: 1 | |
| # Inverter Accumulated sell power | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25251 | |
| register_type: holding | |
| id: sell_mwh | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25252 | |
| register_type: holding | |
| id: sell_kwh | |
| filters: | |
| multiply: 0.1 | |
| - platform: template | |
| name: "Accumulated sell power" | |
| unit_of_measurement: kWh | |
| accuracy_decimals: 1 | |
| lambda: !lambda return (id(sell_mwh).state * 1000.0 + id(sell_kwh).state); | |
| # Inverter Accumulated load power | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25253 | |
| register_type: holding | |
| id: load_mwh | |
| internal: True | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25254 | |
| register_type: holding | |
| id: load_kwh | |
| internal: True | |
| filters: | |
| multiply: 0.1 | |
| - platform: template | |
| name: "Accumulated load power" | |
| unit_of_measurement: kWh | |
| accuracy_decimals: 1 | |
| lambda: !lambda return (id(load_mwh).state * 1000.0 + id(load_kwh).state); | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25273 | |
| register_type: holding | |
| value_type: S_WORD | |
| name: "Inverter Battery power" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25274 | |
| register_type: holding | |
| value_type: S_WORD | |
| name: "Inverter Battery current" | |
| unit_of_measurement: "A" | |
| accuracy_decimals: 1 | |
| icon: mdi:current-dc | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25275 | |
| register_type: holding | |
| value_type: S_WORD | |
| name: "Inverter Battery grade" | |
| unit_of_measurement: "V" | |
| icon: mdi:alpha-V | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 25277 | |
| register_type: holding | |
| name: "Inverter Rated power" | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 1 | |
| icon: mdi:flash | |
| select: | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| id: energy_use_mode | |
| name: "Inverter Energy use mode (parameter 00)" | |
| address: 20109 | |
| optionsmap: | |
| "SBU (Solar/battery/utility)": 1 | |
| "SUB (Solar/utility/battery)": 2 | |
| "UTI (Utility only)": 3 | |
| "SOL (Solar only)": 4 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| id: charger_source_priority | |
| name: "Inverter Charger source priority (parameter 10)" | |
| address: 20143 | |
| optionsmap: | |
| "CSO (Solar first)": 0 | |
| "SNU (Solar and utility)": 2 | |
| "OSO (Solar only)": 3 | |
| - platform: modbus_controller | |
| modbus_controller_id: must_inverter | |
| address: 20111 | |
| id: inverter_ac_input_voltage_range | |
| name: "Inverter AC input voltage range (02)" | |
| optionsmap: | |
| "VDE (184-253VAC)": 0 | |
| "UPS (170-280VAC)": 1 | |
| "APL (90-280VAC)": 2 | |
| "GEN (Generator)": 3 | |
| number: | |
| - platform: modbus_controller | |
| id: batt_float_voltage | |
| name: "PV Charger Float voltage" | |
| unit_of_measurement: "V" | |
| address: 10103 | |
| value_type: U_WORD | |
| multiply: 10 | |
| - platform: modbus_controller | |
| id: batt_absorb_voltage | |
| name: "PV Charger Absorb voltage" | |
| unit_of_measurement: "V" | |
| address: 10104 | |
| value_type: U_WORD | |
| multiply: 10 | |
| - platform: modbus_controller | |
| id: batt_stop_dischg | |
| name: "Inverter Battery stop discharging voltage" | |
| unit_of_measurement: "V" | |
| address: 20118 | |
| value_type: U_WORD | |
| lambda: "return x * 0.1; " | |
| write_lambda: |- | |
| return x * 10 ; | |
| - platform: modbus_controller | |
| id: batt_stop_chg | |
| name: "Inverter Battery stop charging voltage" | |
| unit_of_measurement: "V" | |
| address: 20119 | |
| value_type: U_WORD | |
| multiply: 10 | |
| - platform: modbus_controller | |
| id: batt_low_voltage | |
| name: "Inverter Battery low voltage" | |
| unit_of_measurement: "V" | |
| address: 20127 | |
| value_type: U_WORD | |
| multiply: 10 | |
| - platform: modbus_controller | |
| id: batt_high_voltage | |
| name: "Inverter Battery high voltage" | |
| unit_of_measurement: "V" | |
| address: 20128 | |
| value_type: U_WORD | |
| multiply: 10 | |
| - platform: modbus_controller | |
| id: solar_charger_current | |
| name: "Inverter Charger current" | |
| unit_of_measurement: "A" | |
| address: 20132 | |
| value_type: U_WORD | |
| multiply: 10 |
"solar ch current set"
address: 20132
"Grid ch current set
address: 20125
вт, 9 груд. 2025 р. о 20:12 Igor Kochubynskyi ***@***.***>
пише:
… ***@***.**** commented on this gist.
------------------------------
Дякую за купу корисної інформації. Зібрав собі донгл - все працює, все
моніториться. Але є певен параметр який не змінюється:
Міняю в інтеріейсі - все ок, перевіряю через меню інвертора - там старе
значення. У мене PV18-3224VPM II.
number:
- platform: modbus_controller
modbus_controller_id: must_inverter
address: 10108
name: "Max Charger Current"
unit_of_measurement: "A"
icon: mdi:current-dc
value_type: U_WORD
min_value: 1
max_value: 60
step: 1
multiply: 10
—
Reply to this email directly, view it on GitHub
<https://gist.github.com/vladyspavlov/5ac21cb58923482eff8e7bbb2d0854b3#gistcomment-5898406>
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BE6YAVNQCRHS6ETJW2KZJVL4A4GJ3BFHORZGSZ3HMVZKMY3SMVQXIZNMON2WE2TFMN2F65DZOBS2WR3JON2EG33NNVSW45FGORXXA2LDOOIYFJDUPFYGLJDHNFZXJJLWMFWHKZNJGEZDKMZWGUYDSONKMF2HI4TJMJ2XIZLTSOBKK5TBNR2WLKBTGU4DAMBRHA32I3TBNVS2QYLDORXXEX3JMSBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DF>
.
You are receiving this email because you commented on the thread.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>
.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Зробив таку смеху точно, але чомусь сенсори не читає з інвертора, немає данних ніяких. В Чому проблема може бути ?