packages: - !include common/wifi.yaml - !include common/felicityinverter.yaml substitutions: name: sthome-ut2 friendly_name: "sthome-ut2" esphome: name: "${name}" friendly_name: "${friendly_name}" external_components: - source: github://pr#8103 components: [uart] - source: github://pr#8032 components: [modbus, modbus_controller, growatt_solar] refresh: 1h esp32: board: esp32dev framework: type: esp-idf # Enable logging logger: level: VERY_VERBOSE initial_level: INFO logs: uart: VERY_VERBOSE modbus: DEBUG modbus_controller: DEBUG # Enable Home Assistant API api: encryption: key: "o+fgr4qh0rTegCxXE3jbfJ/0si8+W9wxgnnYX9Xucqw=" ota: - platform: esphome password: "cb8a82d04c2f4dcf9bd273f903c7c378" wifi: manual_ip: static_ip: 10.0.2.2 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "${name} Fallback Hotspot" password: "geuZrJgQo7cg" captive_portal: uart: - id: inv_uart1 rx_pin: GPIO16 tx_pin: GPIO17 baud_rate: 2400 stop_bits: 1 parity: NONE debug: direction: BOTH dummy_receiver: false after: delimiter: "\r" sequence: - lambda: UARTDebug::log_hex(direction, bytes, ','); sun: id: sun_sensor latitude: !secret latitude longitude: !secret longitude time: - platform: homeassistant id: time_source switch: - platform: restart name: "${name} Restart" id: "restart_switch" modbus: - id: modbus1 uart_id: inv_uart1 flow_control_pin: GPIO4 send_wait_time: 1000ms #250ms disable_crc: false role: server modbus_controller: - id: modbus_device1 modbus_id: modbus1 address: 0x1 allow_duplicate_commands: False command_throttle: 0ms update_interval: 4s #30s offline_skip_updates: 2 max_cmd_retries: 04 setup_priority: -10 server_registers: - address: ${Felicity_Inv_WorkingMode} # 0x1101 value_type: U_WORD read_lambda: |- return 0x0001; - address: ${Felicity_Inv_BatteryChargingStage} # 0x1102 value_type: U_WORD read_lambda: |- return 0x0002; - address: ${Felicity_Inv_FaultCode} # 0x1103 value_type: U_WORD read_lambda: |- return 0x0003; - address: ${Felicity_Inv_PowerFlowMsg} # 0x1104 value_type: U_DWORD_R read_lambda: |- return 0x0004; - address: 0x1106 value_type: U_DWORD_R read_lambda: |- return 0; - address: ${Felicity_Inv_BatteryVoltage} # 0x1108 value_type: U_WORD read_lambda: |- return 0x0005; - address: ${Felicity_Inv_BatteryCurrent} # 0x1109 value_type: U_WORD read_lambda: |- return 0x0006; - address: ${Felicity_Inv_BatteryPower} # 0x110A value_type: U_DWORD_R read_lambda: |- return 0x0007; - address: 0x110C value_type: U_QWORD_R read_lambda: |- return 0; - address: 0x1110 value_type: U_WORD read_lambda: |- return 0; - address: ${Felicity_Inv_ACOutputVoltage} # 0x1111 value_type: U_QWORD_R read_lambda: |- return 0x0008; - address: 0x1115 value_type: U_DWORD_R read_lambda: |- return 0; - address: ${Felicity_Inv_ACInputVoltage} # 0x1117 value_type: U_DWORD_R read_lambda: |- return 0x0009; - address: ${Felicity_Inv_ACInputFrequency} # 0x1119 value_type: U_QWORD_R read_lambda: |- return 0x000A; - address: 0x111D value_type: U_WORD read_lambda: |- return 0; - address: ${Felicity_Inv_ACOutputActivePower} # 0x111E value_type: U_WORD read_lambda: |- return 0x000B; - address: ${Felicity_Inv_ACOutputApparentPower} # 0x111F value_type: U_WORD read_lambda: |- return 0x000C; - address: ${Felicity_Inv_LoadPercentage} # 0x1120 value_type: U_QWORD_R read_lambda: |- return 0x000D; - address: 0x1124 value_type: U_DWORD_R read_lambda: |- return 0; - address: ${Felicity_Inv_PVInputVoltage} # 0x1126 value_type: U_QWORD_R read_lambda: |- return 0x000E; - address: ${Felicity_Inv_PVInputPower} # 0x112A value_type: U_WORD read_lambda: |- return 0x0010; - address: 0x112C value_type: U_WORD read_lambda: |- return 0; - address: 0xF800 value_type: S_DWORD_R read_lambda: |- return 0x400D; - address: 0xF802 value_type: S_DWORD_R read_lambda: |- return 0x500E; - address: 0xF804 value_type: S_DWORD_R read_lambda: |- return 0x4142; - address: 0xF806 value_type: S_DWORD_R read_lambda: |- return 0x4344; - address: 0xF808 value_type: S_DWORD_R read_lambda: |- return 0x4546; - address: 0xF80A value_type: S_DWORD_R read_lambda: |- return 0x4748; - address: 0xF80C value_type: S_DWORD_R read_lambda: |- return 0x494A; - address: 0xF80E value_type: S_DWORD_R read_lambda: |- return 0x4B4C; - address: 0xF810 value_type: S_DWORD_R read_lambda: |- return 0; #modbus: # - id: modbus1 # uart_id: inv_uart1 # flow_control_pin: GPIO4 # send_wait_time: 1000ms #250ms # disable_crc: false # role: client # #modbus_controller: # - id: modbus_device1 # modbus_id: modbus1 # address: 0x01 # allow_duplicate_commands: False # command_throttle: 0ms # update_interval: 4s #30s # offline_skip_updates: 2 # max_cmd_retries: 0 # setup_priority: -10 # #sensor: #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Type" # register_type: holding # address: ${Felicity_Inv_Type} # 0xF800 # value_type: U_DWORD # register_count: 1 #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Sub Type" # register_type: holding # address: ${Felicity_Inv_SubType} # 0xF801 # value_type: U_DWORD # register_count: 3 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 CPU1 F/W Version" # register_type: holding # address: ${Felicity_Inv_CPU1_FW_Version} # 0xF80B # value_type: U_DWORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 CPU2 F/W Version" # register_type: holding # address: ${Felicity_Inv_CPU2_FW_Version} # 0xF80C # value_type: U_DWORD # register_count: 3 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Working Mode" # register_type: holding # address: ${Felicity_Inv_WorkingMode} # 0x1101 # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Charge Mode" # register_type: holding # address: ${Felicity_Inv_BatteryChargingStage} # 0x1102 # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Fault Code" # register_type: holding # address: ${Felicity_Inv_FaultCode} # 0x1103 # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Power Flow" # register_type: holding # address: ${Felicity_Inv_PowerFlowMsg} # 0x1104 # value_type: U_WORD # register_count: 4 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Battery Voltage" # register_type: holding # address: ${Felicity_Inv_BatteryVoltage} # 0x1108 # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Battery Current" # register_type: holding # address: ${Felicity_Inv_BatteryCurrent} # 0x1109 # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 BatteryPower" # register_type: holding # address: ${Felicity_Inv_BatteryPower} # 0x110A # value_type: U_WORD # register_count: 7 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 AC Output Voltage" # register_type: holding # address: ${Felicity_Inv_ACOutputVoltage} # 0x1111 # value_type: U_WORD # register_count: 6 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 AC Input Voltage" # register_type: holding # address: ${Felicity_Inv_ACInputVoltage} # 0x1117 # value_type: U_WORD # register_count: 2 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 AC Input Frequency" # register_type: holding # address: ${Felicity_Inv_ACInputFrequency} # 0x1119 # value_type: U_WORD # register_count: 5 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 AC Output Active Power" # register_type: holding # address: ${Felicity_Inv_ACOutputActivePower} # 0x111E # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 AC Output Apparent Power" # register_type: holding # address: ${Felicity_Inv_ACOutputApparentPower} # 0x111F # value_type: U_WORD # register_count: 1 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 Load Percentage" # register_type: holding # address: ${Felicity_Inv_LoadPercentage} # 0x1120 # value_type: U_WORD # register_count: 6 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 PV Input Voltage" # register_type: holding # address: ${Felicity_Inv_PVInputVoltage} # 0x1126 # value_type: U_WORD # register_count: 4 # #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 PV Input Power" # register_type: holding # address: ${Felicity_Inv_PVInputPower} # 0x112A # value_type: U_WORD # register_count: 1 # #text_sensor: #- platform: modbus_controller # modbus_controller_id: modbus_device1 # name: "Inverter1 SerialNo" # register_type: holding # address: ${Felicity_Inv_SerialNo} # 0xF804 # response_size: 14 # register_count: 7 # raw_encode: HEXBYTES #