Created
March 26, 2023 12:25
-
-
Save lwsrbrts/8d6a77b4306f284cd193635e5722ffcd to your computer and use it in GitHub Desktop.
Ecoflow Smart Home Panel YAML configuration for Home Assistant
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
sensor: | |
# These should be used in the energy dashboard. | |
- platform: integration | |
source: sensor.shp_circuit_1_power | |
name: SHP Circuit 1 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_2_power | |
name: SHP Circuit 2 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_3_power | |
name: SHP Circuit 3 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_4_power | |
name: SHP Circuit 4 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_5_power | |
name: SHP Circuit 5 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_6_power | |
name: SHP Circuit 6 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_7_power | |
name: SHP Circuit 7 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
method: left | |
- platform: integration | |
source: sensor.shp_circuit_8_power | |
name: SHP Circuit 8 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_9_power | |
name: SHP Circuit 9 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
- platform: integration | |
source: sensor.shp_circuit_10_power | |
name: SHP Circuit 10 Consumed Energy | |
unit_prefix: k | |
round: 3 | |
template: | |
- sensor: | |
- name: "ECOFLOW Smart Home Panel Combined Circuit Power" | |
unit_of_measurement: "kW" | |
device_class: power | |
state_class: measurement | |
state: >- | |
{{ ((states.sensor | |
| selectattr('entity_id', 'search', 'sensor.shp_') | |
| rejectattr('entity_id', 'search', 'delta_pro') | |
| selectattr('entity_id', 'search', '_power$') | |
| map(attribute='state') | map('float') | sum) / 1000) | round(2) | |
}} | |
- select: | |
- name: "SHP Circuit 1 Mode" | |
unique_id: shp_circuit_1_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_1_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_1_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_1_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 2 Mode" | |
unique_id: shp_circuit_2_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_2_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_2_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_2_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":1,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":1,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":1,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":1,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 3 Mode" | |
unique_id: shp_circuit_3_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_3_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_3_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_3_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":2,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":2,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":2,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":2,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 4 Mode" | |
unique_id: shp_circuit_4_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_4_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_4_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_4_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":3,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":3,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":3,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":3,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 5 Mode" | |
unique_id: shp_circuit_5_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_5_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_5_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_5_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":4,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":4,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":4,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":4,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 6 Mode" | |
unique_id: shp_circuit_6_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_6_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_6_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_6_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":5,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":5,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":5,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":5,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 7 Mode" | |
unique_id: shp_circuit_7_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_7_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_7_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_7_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":6,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":6,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":6,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":6,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 8 Mode" | |
unique_id: shp_circuit_8_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_8_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_8_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_8_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":7,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":7,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":7,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":7,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 9 Mode" | |
unique_id: shp_circuit_9_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_9_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_9_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_9_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":8,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":8,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":8,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":8,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- name: "SHP Circuit 10 Mode" | |
unique_id: shp_circuit_10_mode | |
state: >- | |
{% if is_state('binary_sensor.shp_circuit_10_auto','on') %}Auto | |
{% else %} | |
{% set i = int(states('sensor.shp_circuit_10_state')) %} | |
{% set o = {0:'Grid',1:'Battery',2:'Off'} %} | |
{{ o[i] if i in o.keys() }} | |
{% endif %} | |
options: "{{ ['Auto','Grid','Battery','Off'] }}" | |
icon: >- | |
{% set i = int(states('sensor.shp_circuit_10_state')) %} | |
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %} | |
{{ o[i] if i in o.keys() }} | |
select_option: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: >- | |
{% set i = option %} | |
{% set p = '{"from":"HA","id":"' %} | |
{% set s = '","moduleType":0,"operateType":"TCP","params":' %} | |
{% set id = 999900000+(range(10000,99999)|random) %} | |
{% set o = { | |
'Auto':'{"sta":0,"ctrlMode":0,"ch":9,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Grid':'{"sta":0,"ctrlMode":1,"ch":9,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Battery':'{"sta":1,"ctrlMode":1,"ch":9,"cmdSet":11,"id":16},"version":"1.0"}', | |
'Off':'{"sta":2,"ctrlMode":1,"ch":9,"cmdSet":11,"id":16},"version":"1.0"}' | |
} | |
%} | |
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} | |
- number: | |
- name: "SHP - Charge Limit" | |
unique_id: shp_charge_limit | |
state: "{{ states('sensor.shp_battery_charge_level') }}" | |
icon: mdi:battery-arrow-up | |
min: "50" | |
max: "100" | |
step: "1" | |
set_value: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"discLower":{{states("number.shp_discharge_limit")}},"forceChargeHigh":{{value}},"cmdSet":11,"id":29},"version":"1.0"}' | |
- name: "SHP - Discharge Limit" | |
unique_id: shp_discharge_limit | |
state: "{{ states('sensor.shp_battery_discharge_level') }}" | |
icon: mdi:battery-arrow-down-outline | |
min: "0" | |
max: "30" | |
step: "1" | |
set_value: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"discLower":{{value}},"forceChargeHigh":{{states("number.shp_charge_limit")}},"cmdSet":11,"id":29},"version":"1.0"}' | |
mqtt: | |
binary_sensor: | |
- name: SHP Grid Available | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: connectivity | |
payload_on: "1" | |
payload_off: "0" | |
value_template: "{{ value_json.params.gridSta if value_json['params']['id'] == 2 else states('sensor.shp_grid_available') }}" | |
- name: SHP Delta Pro 1 Connected | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: connectivity | |
payload_on: "1" | |
payload_off: "0" | |
value_template: "{{ value_json.params.energyInfos[0].stateBean.isConnect if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_1_connected') }}" | |
- name: SHP Delta Pro 1 Enabled | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: connectivity | |
payload_on: "1" | |
payload_off: "0" | |
value_template: "{{ value_json.params.energyInfos[0].stateBean.isEnable if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_1_enabled') }}" | |
- name: SHP Delta Pro 2 Connected | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: connectivity | |
payload_on: "1" | |
payload_off: "0" | |
value_template: "{{ value_json.params.energyInfos[1].stateBean.isConnect if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_2_connected') }}" | |
- name: SHP Delta Pro 2 Enabled | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: connectivity | |
payload_on: "1" | |
payload_off: "0" | |
value_template: "{{ value_json.params.energyInfos[1].stateBean.isEnable if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_2_enabled') }}" | |
- name: SHP AC1 Grid Charging | |
object_id: shp_ac1_grid_charging | |
unique_id: shp_ac1_grid_charging | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "1" | |
payload_off: "0" | |
qos: 0 | |
value_template: "{{ value_json.params.energyInfos[0].stateBean.isGridCharge if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP AC2 Grid Charging | |
object_id: shp_ac2_grid_charging | |
unique_id: shp_ac2_grid_charging | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "1" | |
payload_off: "0" | |
qos: 0 | |
value_template: "{{ value_json.params.energyInfos[1].stateBean.isGridCharge if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP EPS Enabled | |
object_id: shp_eps_enabled | |
unique_id: shp_eps_enabled | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "1" | |
payload_off: "0" | |
qos: 0 | |
value_template: "{{ value_json.params.eps if value_json['params']['id'] == 25 else this.state }}" | |
# Mode of the circuit/control | |
- name: SHP Circuit 1 Auto | |
object_id: shp_circuit_1_auto | |
unique_id: shp_circuit_1_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[0].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 2 Auto | |
object_id: shp_circuit_2_auto | |
unique_id: shp_circuit_2_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[1].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 3 Auto | |
object_id: shp_circuit_3_auto | |
unique_id: shp_circuit_3_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[2].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 4 Auto | |
object_id: shp_circuit_4_auto | |
unique_id: shp_circuit_4_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[3].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 5 Auto | |
object_id: shp_circuit_5_auto | |
unique_id: shp_circuit_5_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[4].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 6 Auto | |
object_id: shp_circuit_6_auto | |
unique_id: shp_circuit_6_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[5].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 7 Auto | |
object_id: shp_circuit_7_auto | |
unique_id: shp_circuit_7_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[6].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 8 Auto | |
object_id: shp_circuit_8_auto | |
unique_id: shp_circuit_8_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[7].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 9 Auto | |
object_id: shp_circuit_9_auto | |
unique_id: shp_circuit_9_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[8].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 10 Auto | |
object_id: shp_circuit_10_auto | |
unique_id: shp_circuit_10_auto | |
state_topic: "ecoflow/SHP/data" | |
payload_on: "0" | |
payload_off: "1" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[9].ctrlMode if value_json['params']['id'] == 2 else this.state }}" | |
sensor: | |
# Don't use these in the energy dashboard, irregular spikes cause inaccurate readings. | |
- name: SHP Circuit 1 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[0] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_1_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_1_energy', 'last_reset') }}" | |
- name: SHP Circuit 2 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[1] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_2_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_2_energy', 'last_reset') }}" | |
- name: SHP Circuit 3 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[2] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_3_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_3_energy', 'last_reset') }}" | |
- name: SHP Circuit 4 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[3] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_4_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_4_energy', 'last_reset') }}" | |
- name: SHP Circuit 5 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[4] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_5_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_5_energy', 'last_reset') }}" | |
- name: SHP Circuit 6 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[5] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_6_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_6_energy', 'last_reset') }}" | |
- name: SHP Circuit 7 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[6] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_7_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_7_energy', 'last_reset') }}" | |
- name: SHP Circuit 8 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[7] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_8_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_8_energy', 'last_reset') }}" | |
- name: SHP Circuit 9 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[8] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_9_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_9_energy', 'last_reset') }}" | |
- name: SHP Circuit 10 Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[9] | sum | round(0) if value_json['params']['id'] == 48 else states('sensor.shp_circuit_10_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 48 else state_attr('sensor.shp_circuit_10_energy', 'last_reset') }}" | |
# Smart Home Panel Power Demand | |
- name: SHP Circuit 1 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[0].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_1_power') }}" | |
#force_update: true | |
- name: SHP Circuit 2 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[1].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_2_power') }}" | |
#force_update: true | |
- name: SHP Circuit 3 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[2].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_3_power') }}" | |
#force_update: true | |
- name: SHP Circuit 4 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[3].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_4_power') }}" | |
#force_update: true | |
- name: SHP Circuit 5 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[4].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_5_power') }}" | |
#force_update: true | |
- name: SHP Circuit 6 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[5].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_6_power') }}" | |
#force_update: true | |
- name: SHP Circuit 7 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[6].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_7_power') }}" | |
#force_update: true | |
- name: SHP Circuit 8 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[7].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_8_power') }}" | |
#force_update: true | |
- name: SHP Circuit 9 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[8].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_9_power') }}" | |
#force_update: true | |
- name: SHP Circuit 10 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[9].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_circuit_10_power') }}" | |
#force_update: true | |
- name: SHP Delta Pro 1 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[10].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_delta_pro_1_power') }}" | |
json_attributes_topic: "ecoflow/SHP/data" | |
json_attributes_template: "{{ value_json.params.infoList[10] | tojson if value_json['params']['id'] == 96 else (states.sensor.shp_delta_pro_1_power.attributes | tojson) }}" | |
#force_update: true | |
- name: SHP Delta Pro 2 Power | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: power | |
unit_of_measurement: "W" | |
state_class: measurement | |
value_template: "{{ value_json.params.infoList[11].chWatt | round(0) if value_json['params']['id'] == 96 else states('sensor.shp_delta_pro_2_power') }}" | |
json_attributes_topic: "ecoflow/SHP/data" | |
json_attributes_template: "{{ value_json.params.infoList[11] | tojson if value_json['params']['id'] == 96 else (states.sensor.shp_delta_pro_2_power.attributes | tojson) }}" | |
#force_update: true | |
- name: SHP Circuit 1 State | |
object_id: shp_circuit_1_state | |
unique_id: shp_circuit_1_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[0].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 2 State | |
object_id: shp_circuit_2_state | |
unique_id: shp_circuit_2_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[1].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 3 State | |
object_id: shp_circuit_3_state | |
unique_id: shp_circuit_3_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[2].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 4 State | |
object_id: shp_circuit_4_state | |
unique_id: shp_circuit_4_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[3].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 5 State | |
object_id: shp_circuit_5_state | |
unique_id: shp_circuit_5_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[4].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 6 State | |
object_id: shp_circuit_6_state | |
unique_id: shp_circuit_6_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[5].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 7 State | |
object_id: shp_circuit_7_state | |
unique_id: shp_circuit_7_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[6].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 8 State | |
object_id: shp_circuit_8_state | |
unique_id: shp_circuit_8_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[7].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 9 State | |
object_id: shp_circuit_9_state | |
unique_id: shp_circuit_9_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[8].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP Circuit 10 State | |
object_id: shp_circuit_10_state | |
unique_id: shp_circuit_10_state | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
value_template: "{{ value_json.params.loadCmdChCtrlInfos[9].ctrlSta if value_json['params']['id'] == 2 else this.state }}" | |
- name: SHP AC1 Battery Percentage | |
state_topic: "ecoflow/SHP/data" | |
unique_id: shp_ac1_battery_percentage | |
qos: 0 | |
device_class: battery | |
unit_of_measurement: "%" | |
state_class: measurement | |
value_template: "{{ value_json.params.energyInfos[0].batteryPercentage | round(0) if value_json['params']['id'] == 2 else states('sensor.shp_ac1_battery_percentage') }}" | |
availability: | |
- topic: "ecoflow/SHP/data" | |
payload_available: "1" | |
payload_not_available: "0" | |
value_template: "{{ value_json.params.energyInfos[0].stateBean.isEnable if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_1_enabled') }}" | |
- name: SHP AC2 Battery Percentage | |
state_topic: "ecoflow/SHP/data" | |
unique_id: shp_ac2_battery_percentage | |
qos: 0 | |
device_class: battery | |
unit_of_measurement: "%" | |
state_class: measurement | |
value_template: "{{ value_json.params.energyInfos[1].batteryPercentage | round(0) if value_json['params']['id'] == 2 else states('sensor.shp_ac2_battery_percentage') }}" | |
availability: | |
- topic: "ecoflow/SHP/data" | |
payload_available: "1" | |
payload_not_available: "0" | |
value_template: "{{ value_json.params.energyInfos[1].stateBean.isEnable if value_json['params']['id'] == 2 else states('sensor.shp_delta_pro_2_enabled') }}" | |
- name: SHP Battery Charge Level | |
object_id: shp_battery_charge_level | |
unique_id: shp_battery_charge_level | |
unit_of_measurement: "%" | |
device_class: battery | |
state_class: measurement | |
state_topic: "ecoflow/SHP/data/limits" | |
qos: 0 | |
value_template: "{{ value_json.params.forceChargeHigh if value_json['params']['id'] == 30 else this.state }}" | |
- name: SHP Battery Discharge Level | |
object_id: shp_battery_discharge_level | |
unique_id: shp_battery_discharge_level | |
unit_of_measurement: "%" | |
device_class: battery | |
state_class: measurement | |
state_topic: "ecoflow/SHP/data/limits" | |
qos: 0 | |
value_template: "{{ value_json.params.discLower if value_json['params']['id'] == 30 else this.state }}" | |
- name: SHP Circuit 1 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[0] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_1_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_1_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 2 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[1] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_2_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_2_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 3 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[2] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_3_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_3_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 4 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[3] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_4_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_4_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 5 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[4] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_5_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_5_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 6 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[5] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_6_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_6_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 7 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[6] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_7_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_7_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 8 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[7] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_8_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_8_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 9 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[8] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_9_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_9_battery_energy', 'last_reset') }}" | |
- name: SHP Circuit 10 Battery Energy | |
state_topic: "ecoflow/SHP/data" | |
qos: 0 | |
device_class: energy | |
unit_of_measurement: "Wh" | |
state_class: total | |
value_template: "{{ value_json.params.watth[9] | sum | round(0) if value_json['params']['id'] == 49 else states('sensor.shp_circuit_10_battery_energy') }}" | |
last_reset_value_template: "{{ (as_timestamp(strptime(value_json.params.rtc, '%Y-%m-%d')) | as_datetime()).isoformat() if value_json['params']['id'] == 49 else state_attr('sensor.shp_circuit_10_battery_energy', 'last_reset') }}" | |
switch: | |
- platform: template | |
switches: | |
shp_eps: | |
friendly_name: "SHP EPS" | |
value_template: "{{ states('binary_sensor.shp_eps_enabled') }}" | |
turn_on: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"cmdSet":11,"id":24,"eps":1},"version":"1.0"}' | |
turn_off: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"cmdSet":11,"id":24,"eps":0},"version":"1.0"}' | |
icon_template: >- | |
{% if is_state('binary_sensor.shp_eps_enabled','on') %} | |
mdi:speedometer | |
{% else %} | |
mdi:speedometer-slow | |
{% endif %} | |
shp_pro1_recharge: | |
friendly_name: "SHP AC1 Recharge" | |
value_template: "{{ states('binary_sensor.shp_ac1_grid_charging') }}" | |
turn_on: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"sta":2,"ctrlMode":1,"ch":10,"cmdSet":11,"id":17},"version":"1.0"}' | |
turn_off: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"sta":0,"ctrlMode":0,"ch":10,"cmdSet":11,"id":17},"version":"1.0"}' | |
icon_template: >- | |
{% if is_state('binary_sensor.shp_ac1_grid_charging','on') %} | |
mdi:battery-charging | |
{% else %} | |
mdi:battery | |
{% endif %} | |
shp_pro2_recharge: | |
friendly_name: "SHP AC2 Recharge" | |
value_template: "{{ states('binary_sensor.shp_ac2_grid_charging') }}" | |
turn_on: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"sta":2,"ctrlMode":1,"ch":11,"cmdSet":11,"id":17},"version":"1.0"}' | |
turn_off: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/set | |
payload: '{"from":"HA","id":"{{999900000+(range(10000,99999)|random)}}","moduleType":0,"operateType":"TCP","params":{"sta":0,"ctrlMode":0,"ch":11,"cmdSet":11,"id":17},"version":"1.0"}' | |
icon_template: >- | |
{% if is_state('binary_sensor.shp_ac2_grid_charging','on') %} | |
mdi:battery-charging | |
{% else %} | |
mdi:battery | |
{% endif %} | |
automation: | |
- id: "EF_SHP_Limits" | |
alias: SHP - Limits | |
description: "Re-Publish SHP Charge/Discharge Limits to new Topic" | |
trigger: | |
- platform: mqtt | |
topic: ecoflow/SHP/data | |
payload: "30" | |
value_template: "{{ value_json.params['id'] }}" | |
condition: [] | |
action: | |
- service: mqtt.publish | |
data: | |
topic: ecoflow/SHP/data/limits | |
payload: "{{trigger.payload}}" | |
retain: true | |
mode: single |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cheers @lwsrbrts ! Just me being to hasty and after digging through the entities, I found them. I have an old school grid tied solar setup that's isolated from my Smart home panel setup and DP's. Now i can setup automation to charge the batteries through the ac1&2 ports when my Fronius inverter hits 1000w from the solar setup so in essence indirectly charging the batteries from solar :) Thank you very much for all the help and details provided and for a non developer, I could get this all sorted with some YouTube videos and multiple trial and error nights :)