configs/sthome-ut3.yaml

752 lines
20 KiB
YAML

packages:
- !include common/wifi.yaml
- !include common/felicityinverter.yaml
substitutions:
name: sthome-ut3
friendly_name: "sthome-ut3"
esphome:
name: "${name}"
friendly_name: "${friendly_name}"
# on_boot:
# - priority: 600 # This is where most sensors are set up (higher number means higher priority)
# then:
# - uart.write:
# id: inv_uart1
# data: [0x0D, 0x0A]
# - uart.write:
# id: inv_uart2
# data: [0x0D, 0x0A]
#external_components:
# - source: github://pr#8103
# components: [uart]
# - source: github://pr#8032
# components: [modbus, modbus_controller] #, growatt_solar]
# refresh: 1h
globals:
- id: geyser_relay_status
type: bool
restore_value: yes
initial_value: 'false'
esp32:
board: nodemcu-32s #esp32dev
framework:
type: arduino #esp-idf
# Enable logging
logger:
level: VERY_VERBOSE
initial_level: DEBUG
logs:
uart: VERY_VERBOSE
modbus: VERBOSE
modbus_controller: VERBOSE
# Enable Home Assistant API
api:
encryption:
key: "AIoquKPjpcHa2pcJ0aKxvtpM3mwgZuZhpCPtdVitP2Q="
ota:
- platform: esphome
password: "879012af7180c8700cee65fbf18704d1"
wifi:
manual_ip:
static_ip: 10.0.2.3
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${name} Fallback Hotspot"
password: "cGXb2DqkwaOr"
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, ',');
# - id: inv_uart2
# rx_pin: GPIO25
# tx_pin: GPIO26
# 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: 1200ms #250ms
disable_crc: false
role: server
# - id: modbus2
# uart_id: inv_uart2
# #flow_control_pin: GPIO27
# send_wait_time: 1200ms #250ms
# disable_crc: false
# role: server
modbus_controller:
# - id: modbus_device1
# modbus_id: modbus1
# address: 0x01
# allow_duplicate_commands: False
# command_throttle: 0ms
# update_interval: 10s #30s
# offline_skip_updates: 2
# max_cmd_retries: 0
# setup_priority: -10
# - id: modbus_device2
# modbus_id: modbus2
# address: 0x01
# allow_duplicate_commands: False
# command_throttle: 0ms
# update_interval: 60s #30s
# offline_skip_updates: 2
# max_cmd_retries: 0
# setup_priority: -10
- modbus_id: modbus1
address: 0x1
server_registers:
- address: 0x1100
value_type: U_WORD
read_lambda: |-
return 0x01;
- address: 0x1101
value_type: U_WORD
read_lambda: |-
return 0x02; // b0=power-on mode/PowerOnMode 1=standby mode/StandbyMode 2=bypass mode/BypassMode 3=battery mode/BatteryMode 4=fault mode/FaultMode 5=mains mode/LineMode 6=charging mode/PVChargeMode 0=no
- address: 0x1102
value_type: U_WORD
read_lambda: |-
return 0x02; // No charge 1=Constant current charge/Bulk charge 2=Constant voltage charge/Absorption charge 3=Float charge/Float charge
- address: 0x1103 # Fault Code
value_type: U_WORD
read_lambda: |-
return 0x0;
- address: 0x1104 # PowerFlowMsg
value_type: U_WORD
read_lambda: |-
return 0x0;
- address: 0x1105 # dummy
value_type: U_WORD
read_lambda: |-
return 0x0;
- address: 0x1106 # dummy
value_type: U_DWORD
read_lambda: |-
return 0x0;
- address: 0x1108 # Battery voltage
value_type: U_WORD
read_lambda: |-
return 0x3A;
- address: 0x1109 # Battery current
value_type: S_WORD
read_lambda: |-
return 0xFFC4; // -60A
- address: 0x110A # Battery power
value_type: S_WORD
read_lambda: |-
return 0xED40; // -4800W
- address: 0x110B # dummy
value_type: U_QWORD
read_lambda: |-
return 0;
- address: 0x110F # dummy
value_type: U_DWORD
read_lambda: |-
return 0;
- address: 0x1111 # AC Output voltage
value_type: U_WORD
read_lambda: |-
return 0xE7; // 231V
- address: 0x1112 # dummy
value_type: U_QWORD
read_lambda: |-
return 0;
- address: 0x1116 # dummy
value_type: U_WORD
read_lambda: |-
return 0;
- address: 0x1117 # AC Input voltage
value_type: U_WORD
read_lambda: |-
return 0xE6; // 230V
- address: 0x1118 # dummy
value_type: U_WORD
read_lambda: |-
return 0;
- address: 0x1119 # AC Input frequency
value_type: U_WORD
read_lambda: |-
return 50; // 50Hz
- address: 0x111A # dummy
value_type: U_QWORD
read_lambda: |-
return 0;
- address: 0x111B # dummy
value_type: U_WORD
read_lambda: |-
return 0;
- address: 0x111C # dummy
value_type: U_DWORD
read_lambda: |-
return 0;
- address: 0x111E
value_type: S_WORD
read_lambda: |-
return 100; // 100W
- address: 0x111F
value_type: U_WORD
read_lambda: |-
return 120; // 120VA
- address: 0x1120
value_type: U_WORD
read_lambda: |-
return 50; // 50%
- address: 0x1121 # dummy
value_type: U_QWORD
read_lambda: |-
return 0;
- address: 0x1125 # dummy
value_type: U_WORD
read_lambda: |-
return 0;
- address: 0x1126
value_type: U_WORD
read_lambda: |-
return 450; // 450V
- address: 0x1127 # dummy
value_type: U_WORD
read_lambda: |-
return 0;
- address: 0x1128 # dummy
value_type: U_DWORD
read_lambda: |-
return 0;
- address: 0x112A
value_type: S_WORD
read_lambda: |-
return 4812; // 4812W
# - modbus_id: modbus2
# server_registers:
# - address: 0x1100
# value_type: U_WORD
# read_lambda: |-
# return 0x01;
# - address: 0x1101
# value_type: U_WORD
# read_lambda: |-
# return 0x02; // b0=power-on mode/PowerOnMode 1=standby mode/StandbyMode 2=bypass mode/BypassMode 3=battery mode/BatteryMode 4=fault mode/FaultMode 5=mains mode/LineMode 6=charging mode/PVChargeMode 0=no
# - address: 0x1102
# value_type: U_WORD
# read_lambda: |-
# return 0x02; // No charge 1=Constant current charge/Bulk charge 2=Constant voltage charge/Absorption charge 3=Float charge/Float charge
# - address: 0x1103 # Fault Code
# value_type: U_WORD
# read_lambda: |-
# return 0x0;
# - address: 0x1104 # PowerFlowMsg
# value_type: U_WORD
# read_lambda: |-
# return 0x0;
# - address: 0x1105 # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0x0;
# - address: 0x1106 # dummy
# value_type: U_DWORD
# read_lambda: |-
# return 0x0;
# - address: 0x1108 # Battery voltage
# value_type: U_WORD
# read_lambda: |-
# return 0x3A;
# - address: 0x1109 # Battery current
# value_type: S_WORD
# read_lambda: |-
# return 0xFFC4; // -60A
# - address: 0x110A # Battery power
# value_type: S_WORD
# read_lambda: |-
# return 0xED40; // -4800W
# - address: 0x110B # dummy
# value_type: U_QWORD
# read_lambda: |-
# return 0;
# - address: 0x110F # dummy
# value_type: U_DWORD
# read_lambda: |-
# return 0;
# - address: 0x1111 # AC Output voltage
# value_type: U_WORD
# read_lambda: |-
# return 0xE7; // 231V
# - address: 0x1112 # dummy
# value_type: U_QWORD
# read_lambda: |-
# return 0;
# - address: 0x1116 # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0;
# - address: 0x1117 # AC Input voltage
# value_type: U_WORD
# read_lambda: |-
# return 0xE6; // 230V
# - address: 0x1118 # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0;
# - address: 0x1119 # AC Input frequency
# value_type: U_WORD
# read_lambda: |-
# return 50; // 50Hz
# - address: 0x111A # dummy
# value_type: U_QWORD
# read_lambda: |-
# return 0;
# - address: 0x111B # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0;
# - address: 0x111C # dummy
# value_type: U_DWORD
# read_lambda: |-
# return 0;
# - address: 0x111E
# value_type: S_WORD
# read_lambda: |-
# return 100; // 100W
# - address: 0x111F
# value_type: U_WORD
# read_lambda: |-
# return 120; // 120VA
# - address: 0x1120
# value_type: U_WORD
# read_lambda: |-
# return 50; // 50%
# - address: 0x1121 # dummy
# value_type: U_QWORD
# read_lambda: |-
# return 0;
# - address: 0x1125 # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0;
# - address: 0x1126
# value_type: U_WORD
# read_lambda: |-
# return 450; // 450V
# - address: 0x1127 # dummy
# value_type: U_WORD
# read_lambda: |-
# return 0;
# - address: 0x1128 # dummy
# value_type: U_DWORD
# read_lambda: |-
# return 0;
# - address: 0x112A
# value_type: S_WORD
# read_lambda: |-
# return 4812; // 4812W
#text_sensor:
#- platform: modbus_controller
# modbus_controller_id: modbus_device1
# name: "Inverter1 SerialNo"
# register_type: holding
# address: ${Felicity_Inv_SerialNo} # 0xF804
# response_size: 7
# register_count: 7
# raw_encode: HEXBYTES
#
##- platform: modbus_controller
## modbus_controller_id: modbus_device2
## name: "Inverter2 SerialNo"
## register_type: holding
## address: ${Felicity_Inv_SerialNo} # 0xF804
## response_size: 7
## register_count: 7
## raw_encode: HEXBYTES
#
#sensor:
#- platform: modbus_controller
# modbus_controller_id: modbus_device1
# name: "Inverter1 Type"
# id: inverter1_type
# register_type: holding
# address: ${Felicity_Inv_Type} # 0xF800
# value_type: U_WORD
# 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_WORD
# 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_WORD
# 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_WORD
# register_count: 3
#- platform: modbus_controller
# modbus_controller_id: modbus_device1
# name: "Inverter1 SettingDataSn"
# register_type: holding
# address: ${Felicity_Inv_SettingDataSn} # 0x1100
# value_type: U_WORD
# register_count: 1
## lambda: |-
## if (!isnan(id(inverter1_type).state)) {
## return x; // Update the sensor's value if the condition is true
## } else {
## return NAN; // Return NaN to skip updating if the condition is false
## }
#
#- 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: S_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: S_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: S_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: S_WORD
# register_count: 1
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Type"
# register_type: holding
# address: ${Felicity_Inv_Type} # 0xF800
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Sub Type"
# register_type: holding
# address: ${Felicity_Inv_SubType} # 0xF801
# value_type: U_WORD
# register_count: 1
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Dummy"
# register_type: holding
# address: 0xF802
# value_type: U_WORD
# register_count: 2
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 CPU1 F/W Version"
# register_type: holding
# address: ${Felicity_Inv_CPU1_FW_Version} # 0xF80B
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 CPU2 F/W Version"
# register_type: holding
# address: ${Felicity_Inv_CPU2_FW_Version} # 0xF80C
# value_type: U_WORD
# register_count: 3
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 SettingDataSn"
# register_type: holding
# address: ${Felicity_Inv_SettingDataSn} # 0x1100
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Working Mode"
# register_type: holding
# address: ${Felicity_Inv_WorkingMode} # 0x1101
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Charge Mode"
# register_type: holding
# address: ${Felicity_Inv_BatteryChargingStage} # 0x1102
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Fault Code"
# register_type: holding
# address: ${Felicity_Inv_FaultCode} # 0x1103
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Power Flow"
# register_type: holding
# address: ${Felicity_Inv_PowerFlowMsg} # 0x1104
# value_type: U_WORD
# register_count: 4
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Battery Voltage"
# register_type: holding
# address: ${Felicity_Inv_BatteryVoltage} # 0x1108
# value_type: U_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 Battery Current"
# register_type: holding
# address: ${Felicity_Inv_BatteryCurrent} # 0x1109
# value_type: S_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 BatteryPower"
# register_type: holding
# address: ${Felicity_Inv_BatteryPower} # 0x110A
# value_type: S_WORD
# register_count: 7
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 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_device2
# name: "Inverter2 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_device2
# name: "Inverter2 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_device2
# name: "Inverter2 AC Output Active Power"
# register_type: holding
# address: ${Felicity_Inv_ACOutputActivePower} # 0x111E
# value_type: S_WORD
# register_count: 1
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 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_device2
# name: "Inverter2 Load Percentage"
# register_type: holding
# address: ${Felicity_Inv_LoadPercentage} # 0x1120
# value_type: U_WORD
# register_count: 6
#
#- platform: modbus_controller
# modbus_controller_id: modbus_device2
# name: "Inverter2 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_device2
# name: "Inverter2 PV Input Power"
# register_type: holding
# address: ${Felicity_Inv_PVInputPower} # 0x112A
# value_type: S_WORD
# register_count: 1