substitutions: device_name: "powmr-inverter" node_name: "PowMr Inverter" esphome: name: "powmr-inverter" friendly_name: "PowMr Inverter" platformio_options: board_build.flash_mode: dio esp32: board: esp32-c3-devkitm-1 framework: type: arduino api: encryption: key: "apikey was here" ota: - platform: esphome password: "password was here" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Powmr-Inverter Fallback Hotspot" password: "wifi password was here" captive_portal: logger: level: DEBUG baud_rate: 0 uart: - id: uart_inverter baud_rate: 9600 tx_pin: YOUR TX PIN HERE rx_pin: YOUR RX PIN HERE modbus: - id: modbus_inverter uart_id: uart_inverter modbus_controller: - id: smg_inverter address: 0x01 modbus_id: modbus_inverter setup_priority: -10 offline_skip_updates: 60 update_interval: 2s text_sensor: - platform: modbus_controller modbus_controller_id: smg_inverter name: "Working Mode" id: Working_Mode address: 201 entity_category: diagnostic register_type: holding response_size: 1 raw_encode: HEXBYTES lambda: |- uint16_t value = modbus_controller::word_from_hex_str(x, 0); switch (value) { case 0: return std::string("Power On Mode"); case 1: return std::string("Standby mode"); case 2: return std::string("Mains mode"); case 3: return std::string("Off-Grid mode"); case 4: return std::string("Bypass mode"); case 5: return std::string("Charging mode"); case 6: return std::string("Fault mode"); default: return std::string(x); } return x; sensor: - platform: uptime name: "Uptime" entity_category: "diagnostic" device_class: duration update_interval: 60s - platform: wifi_signal name: "RSSI" id: wifi_rssi entity_category: "diagnostic" update_interval: 60s - platform: modbus_controller modbus_controller_id: smg_inverter name: "Effective mains voltage" id: Effective_mains_voltage address: 202 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "V" device_class: voltage accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Mains Frequency" id: Mains_Frequency address: 203 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "Hz" accuracy_decimals: 0 filters: - multiply: 0.01 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Average mains power" id: Average_mains_power address: 204 register_type: holding value_type: S_WORD state_class: measurement device_class: power unit_of_measurement: "W" - platform: modbus_controller modbus_controller_id: smg_inverter name: "Affective inverter voltage" id: Affective_inverter_voltage address: 205 register_type: holding value_type: U_WORD device_class: voltage state_class: measurement unit_of_measurement: "V" accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Affective inverter current" id: Affective_inverter_current address: 206 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "A" device_class: current register_count: 2 accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Average inverter power" id: Average_inverter_power address: 208 register_type: holding value_type: S_WORD state_class: measurement unit_of_measurement: "W" device_class: power accuracy_decimals: 0 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Inverter charging power" id: Inverter_charging_power address: 209 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "W" device_class: power register_count: 4 accuracy_decimals: 1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Output active power" id: Output_active_power address: 213 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "W" device_class: power register_count: 2 accuracy_decimals: 1 filters: - multiply: 1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Battery average voltage" id: Battery_average_voltage address: 215 register_type: holding value_type: U_WORD device_class: voltage state_class: measurement unit_of_measurement: "V" accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Battery average Current" id: Battery_average_Current address: 216 register_type: holding value_type: S_WORD state_class: measurement unit_of_measurement: "A" device_class: current accuracy_decimals: 1 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Battery average power" id: Battery_average_power address: 217 register_type: holding value_type: S_WORD state_class: measurement unit_of_measurement: "W" device_class: power accuracy_decimals: 1 register_count: 2 - platform: modbus_controller modbus_controller_id: smg_inverter name: "PV average voltage" id: PV_average_voltage address: 219 register_type: holding value_type: U_WORD state_class: measurement device_class: voltage unit_of_measurement: "V" accuracy_decimals: 0 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "PV average Current" id: PV_average_Current address: 220 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "A" device_class: current accuracy_decimals: 1 register_count: 3 filters: - multiply: 0.1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "PV average power" id: PV_average_power address: 223 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "W" device_class: power accuracy_decimals: 0 - platform: modbus_controller modbus_controller_id: smg_inverter name: "PV charging average power" id: PV_charging_average_power address: 224 register_type: holding value_type: S_WORD state_class: measurement unit_of_measurement: "W" device_class: power accuracy_decimals: 1 register_count: 3 - platform: modbus_controller modbus_controller_id: smg_inverter name: "DC-DC Temperature" id: DCDC_Temperature address: 226 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "°C" accuracy_decimals: 1 register_count: 1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Inverter Temperature" id: Inverter_Temperature address: 227 register_type: holding value_type: U_WORD state_class: measurement unit_of_measurement: "°C" accuracy_decimals: 1 register_count: 1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Battery percentage" id: Battery_percentage address: 229 register_type: holding value_type: U_WORD state_class: measurement device_class: battery unit_of_measurement: "%" accuracy_decimals: 0 select: - platform: modbus_controller modbus_controller_id: smg_inverter name: "Output priority" entity_category: config address: 301 value_type: U_WORD use_write_multiple: true optionsmap: "Utility-PV-Battery": 0 "PV-Utility-Battery": 1 "PV-Battery-Utility": 2 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Fault code" entity_category: config address: 100 register_count: 2 use_write_multiple: true value_type: U_DWORD optionsmap: "None": 0 "Over temperature of inverter module": 1 "Over temperature of DCDC module": 2 "Battery over voltage": 3 "Over temperature of PV module": 4 "Output short circuited": 5 "Over Inverter voltage": 6 "Output over load": 7 "Bus over voltage": 8 "Bus soft start times out": 9 "PV over current": 10 "PV over voltage": 11 "Battery over current": 12 "Inverter over current": 13 "Bus low voltage": 14 "Reserve": 15 "Inverter DC component is too high": 16 "Reserve2": 17 "The zero bias of Output current is too large": 18 "The zero bias of inverter current is too large": 19 "The zero bias of battery current is too large": 20 "The zero bias of PV current is too large": 21 "Inverter low voltage": 22 "Inverter negative power protection": 23 "The host in the parallel system is lost": 24 "Synchronization signal abnormal in the parallel system": 25 "The battery type is incompatible": 26 "Parallel versions are incompatible": 27 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Input voltage range " entity_category: config address: 302 value_type: U_WORD use_write_multiple: true optionsmap: "Wide range": 0 "Narrow range": 1 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Buzzer mode" entity_category: config address: 303 value_type: U_WORD use_write_multiple: true optionsmap: "Mute all": 0 "Beep source": 1 "Beep warning": 2 "Beep fault": 3 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Battery charging priority" entity_category: config address: 331 value_type: U_WORD use_write_multiple: true optionsmap: "Utility priority": 0 "PV priority": 1 "PV and Utility": 2 "Only PV charging": 3 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Turn on mode" entity_category: config address: 406 value_type: U_WORD use_write_multiple: true optionsmap: "locally or remotely": 0 "Only local": 1 "Only remote": 2 number: - platform: modbus_controller modbus_controller_id: smg_inverter name: "Maximum charging current" entity_category: config use_write_multiple: true unit_of_measurement: "A" device_class: current address: 332 value_type: U_WORD min_value: 0 max_value: 80 step: 1 multiply: 10 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Maximum mains charging current" entity_category: config unit_of_measurement: "A" device_class: current use_write_multiple: true address: 333 value_type: U_WORD step: 1 min_value: 0 max_value: 50 multiply: 10 switch: - platform: modbus_controller modbus_controller_id: smg_inverter name: "Remote switch" use_write_multiple: true address: 420 register_type: holding entity_category: config icon: "mdi:toggle-switch" - platform: modbus_controller modbus_controller_id: smg_inverter name: "LCD backlight" register_type: holding entity_category: config address: 305 use_write_multiple: true - platform: modbus_controller modbus_controller_id: smg_inverter name: "LCD return" use_write_multiple: true register_type: holding entity_category: config address: 306 - platform: modbus_controller modbus_controller_id: smg_inverter name: "Energy-saving mode" use_write_multiple: true register_type: holding entity_category: config address: 307