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 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