removed source/solar as a sudmodule
This commit is contained in:
parent
c19a547f58
commit
29cb34de15
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
# This is an example and may include too much for your use-case.
|
||||
# You can modify this file to suit your needs.
|
||||
/.esphome/
|
||||
.esphome/external_components
|
||||
/secrets.yaml
|
||||
/.esphome.bak/
|
||||
/fonts/
|
||||
|
||||
752
backup/sthome-ut3-bak.yaml
Normal file
752
backup/sthome-ut3-bak.yaml
Normal file
@ -0,0 +1,752 @@
|
||||
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
|
||||
|
||||
|
||||
|
||||
830
sthome-ut3.yaml
830
sthome-ut3.yaml
@ -1,6 +1,5 @@
|
||||
packages:
|
||||
- !include common/wifi.yaml
|
||||
- !include common/felicityinverter.yaml
|
||||
|
||||
substitutions:
|
||||
name: sthome-ut3
|
||||
@ -9,22 +8,15 @@ substitutions:
|
||||
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
|
||||
includes:
|
||||
- source # copies folder with files to relevant to be included in esphome compile
|
||||
- <source/solar/cb_frame.h> # angle brackets ensure file is included above globals in main.cpp. Make sure to use include GUARDS in the file to prevent double inclusion
|
||||
- <source/solar/cbf_store.h>
|
||||
- <source/solar/cbf_pylon.h>
|
||||
- <source/solar/cbf_store_pylon.h>
|
||||
- <source/solar/cbf_sthome.h>
|
||||
- <source/solar/cbf_store_sthome.h>
|
||||
- <source/solar/cbf_cache.h>
|
||||
|
||||
globals:
|
||||
- id: geyser_relay_status
|
||||
@ -32,6 +24,8 @@ globals:
|
||||
restore_value: yes
|
||||
initial_value: 'false'
|
||||
|
||||
debug:
|
||||
update_interval: 10s
|
||||
|
||||
esp32:
|
||||
board: nodemcu-32s #esp32dev
|
||||
@ -67,34 +61,8 @@ wifi:
|
||||
|
||||
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, ' ');
|
||||
#preferences:
|
||||
# flash_write_interval: 30s
|
||||
|
||||
sun:
|
||||
id: sun_sensor
|
||||
@ -103,650 +71,154 @@ sun:
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: time_source
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
device:
|
||||
name: "Device Info"
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
|
||||
# human readable update text sensor from sensor:uptime
|
||||
- platform: template
|
||||
name: Uptime
|
||||
id: uptime_human
|
||||
icon: mdi:clock-start
|
||||
update_interval: 10s
|
||||
|
||||
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
|
||||
- platform: gpio
|
||||
pin:
|
||||
number: GPIO16
|
||||
inverted: true
|
||||
id: relay1
|
||||
name: "Floodlights Backyard"
|
||||
icon: "mdi:light-flood-down"
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
# the backyard floodlight auto turns off in 4min 14 sec. So we need to switch relay off just before or at this time
|
||||
# TODO: remove or extend auto turn off to >= 10min
|
||||
on_turn_on:
|
||||
- delay: 250s
|
||||
- switch.turn_off: relay1
|
||||
|
||||
# - id: modbus2
|
||||
# uart_id: inv_uart2
|
||||
# #flow_control_pin: GPIO27
|
||||
# send_wait_time: 1200ms #250ms
|
||||
# disable_crc: false
|
||||
# role: server
|
||||
- platform: gpio
|
||||
pin:
|
||||
number: GPIO17
|
||||
inverted: true
|
||||
id: relay2
|
||||
name: "Relay 2"
|
||||
icon: "mdi:run-fast"
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
on_turn_on:
|
||||
- delay: 1000ms
|
||||
- switch.turn_off: relay2
|
||||
|
||||
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
|
||||
- platform: gpio
|
||||
pin:
|
||||
number: GPIO18
|
||||
inverted: true
|
||||
id: relay3
|
||||
name: "Relay 3"
|
||||
icon: "mdi:run-fast"
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
on_turn_on:
|
||||
- delay: 1000ms
|
||||
- switch.turn_off: relay3
|
||||
|
||||
- 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: gpio
|
||||
pin:
|
||||
number: GPIO19
|
||||
inverted: true
|
||||
id: relay4
|
||||
name: "Alarm Zone 4"
|
||||
icon: "mdi:alarm-light-outline"
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
on_turn_on:
|
||||
- if:
|
||||
condition:
|
||||
- lambda: |-
|
||||
double sun_elevation = id(sun_sensor).elevation();
|
||||
return (sun_elevation <= -6); // -6° = civil twilight, -12° = nautical twilight, -18° = astronomical twilight
|
||||
#- sun.is_below_horizon:
|
||||
then:
|
||||
- switch.turn_on: relay1
|
||||
- if:
|
||||
condition:
|
||||
- binary_sensor.is_on: floodlight_test
|
||||
then:
|
||||
- switch.turn_on: relay1
|
||||
- delay: 30s
|
||||
- switch.turn_off: relay4
|
||||
|
||||
|
||||
#- 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
|
||||
|
||||
# define DIGITAL_D1 04
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
# device_class: light
|
||||
id: floodlight_test
|
||||
pin:
|
||||
number: GPIO04
|
||||
mode:
|
||||
input: true
|
||||
pullup: true
|
||||
filters:
|
||||
- delayed_off: 100ms
|
||||
name: "Floodlights Test Mode"
|
||||
icon: "mdi:lightbulb-on-outline"
|
||||
|
||||
sensor:
|
||||
- platform: adc
|
||||
pin: 35
|
||||
name: "Alarm Signal"
|
||||
id: alarm_signal
|
||||
update_interval: 2000ms
|
||||
attenuation: 12db
|
||||
sampling_mode: avg
|
||||
filters:
|
||||
- lambda:
|
||||
if (x >= 3.11) {
|
||||
return x * 1.60256;
|
||||
} else if (x <= 0.25) {
|
||||
return 0;
|
||||
} else {
|
||||
return x * 1.51;
|
||||
}
|
||||
on_value:
|
||||
then:
|
||||
# switch on floodlights
|
||||
lambda: |-
|
||||
if (id(alarm_signal).state > 1.5) {
|
||||
id(relay1).turn_on();
|
||||
}
|
||||
|
||||
# human readable uptime sensor output to the text sensor above
|
||||
- platform: uptime
|
||||
name: Uptime in Days
|
||||
id: uptime_sensor_days
|
||||
update_interval: 10s
|
||||
on_raw_value:
|
||||
then:
|
||||
- text_sensor.template.publish:
|
||||
id: uptime_human
|
||||
state: !lambda |-
|
||||
int seconds = round(id(uptime_sensor_days).raw_state);
|
||||
int days = seconds / (24 * 3600);
|
||||
seconds = seconds % (24 * 3600);
|
||||
int hours = seconds / 3600;
|
||||
seconds = seconds % 3600;
|
||||
int minutes = seconds / 60;
|
||||
seconds = seconds % 60;
|
||||
auto days_str = std::to_string(days);
|
||||
auto hours_str = std::to_string(hours);
|
||||
auto minutes_str = std::to_string(minutes);
|
||||
auto seconds_str = std::to_string(seconds);
|
||||
return (
|
||||
(days ? days_str + "d " : "") +
|
||||
(hours ? hours_str + "h " : "") +
|
||||
(minutes ? minutes_str + "m " : "") +
|
||||
(seconds_str + "s")
|
||||
).c_str();
|
||||
Loading…
Reference in New Issue
Block a user