Skip to content

Instantly share code, notes, and snippets.

@e-bits
Last active May 21, 2024 06:01
Show Gist options
  • Save e-bits/96a130ebb52efe5b9b5041326568f9e0 to your computer and use it in GitHub Desktop.
Save e-bits/96a130ebb52efe5b9b5041326568f9e0 to your computer and use it in GitHub Desktop.
Home-Assistant Template to discover MQTT entities for SolarFlow HUB 1200.
sensor:
- name: "Hub State"
unique_id: "<deviceID>hubState"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.hubState | int }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Solar Input Power"
unique_id: "<deviceID>solarInputPower"
state_topic: "/73bkTV/<deviceID>/properties/report"
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value_json.properties.solarInputPower | int(0) }}"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Pack Input Power"
unique_id: "<deviceID>packInputPower"
state_topic: "/73bkTV/<deviceID>/properties/report"
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value_json.properties.packInputPower | int(0) }}"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Output Pack Power"
unique_id: "<deviceID>outputPackPower"
state_topic: "/73bkTV/<deviceID>/properties/report"
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value_json.properties.outputPackPower | int(0) }}"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Output Home Power"
unique_id: "<deviceID>outputHomePower"
state_topic: "/73bkTV/<deviceID>/properties/report"
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value_json.properties.outputHomePower | int(0) }}"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Input Limit"
unique_id: "<deviceID>inputLimit"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.inputLimit | int }}"
unit_of_measurement: "W"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Remain Out Time"
unique_id: "<deviceID>remainOutTime"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.remainOutTime | int }}"
device_class: "duration"
unit_of_measurement: "min"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Remain Input Time"
unique_id: "<deviceID>remainInputTime"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.remainInputTime | int }}"
device_class: "duration"
unit_of_measurement: "min"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Pack State"
unique_id: "<deviceID>packState"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.packState | int }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Pack Num"
unique_id: "<deviceID>packNum"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.packNum | int }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Electric Level"
unique_id: "<deviceID>electricLevel"
state_topic: "/73bkTV/<deviceID>/properties/report"
unit_of_measurement: "%"
device_class: "battery"
value_template: "{{ value_json.properties.electricLevel | int }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "WiFi State"
unique_id: "<deviceID>wifiState"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.wifiState | bool('') }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Solar Power 1"
unique_id: "<deviceID>solarPower1"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.solarPower1 | int(0) }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Solar Power 2"
unique_id: "<deviceID>solarPower2"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.solarPower2 | int(0) }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Pass Mode"
unique_id: "<deviceID>passMode"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: "{{ value_json.properties.passMode | int }}"
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- name: "Max Cell Temp"
unique_id: "<deviceID>Battery01maxTemp"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ (i.maxTemp | float /10 - 273.15) | round(2) }}
{% endif %}
{% endfor %}
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Max Cell Voltage"
unique_id: "<deviceID>Battery01maxVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.maxVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Min Cell Voltage"
unique_id: "<deviceID>Battery01minVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.minVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Total Voltage"
unique_id: "<deviceID>Battery01totalVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.totalVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Battery Level"
unique_id: "<deviceID>Battery01socLevel"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.socLevel | int }}
{% endif %}
{% endfor %}
unit_of_measurement: "%"
device_class: "battery"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Max Cell Temp"
unique_id: "<deviceID>Battery02maxTemp"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ (i.maxTemp | float /10 - 273.15) | round(2) }}
{% endif %}
{% endfor %}
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Max Cell Voltage"
unique_id: "<deviceID>Battery02maxVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.maxVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Min Cell Voltage"
unique_id: "<deviceID>Battery02minVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.minVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Total Voltage"
unique_id: "<deviceID>Battery02totalVol"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.totalVol | float / 100 }}
{% endif %}
{% endfor %}
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
- name: "Battery Level"
unique_id: "<deviceID>Battery02socLevel"
state_topic: "/73bkTV/<deviceID>/properties/report"
value_template: >
{% for i in value_json.packData %}
{% if i.sn == "<YourBatterySeriennummer>" %}
{{ i.socLevel | int }}
{% endif %}
{% endfor %}
unit_of_measurement: "%"
device_class: "battery"
device:
name: "<BatteryNumber> - AB1000"
identifiers: "<YourBatterySeriennummer>"
manufacturer: "Zendure"
model: "AB1000"
via_device: "<YourSolarFlowSerialNumber>"
switch:
- unique_id: "<deviceID>buzzerSwitch"
name: "Buzzer"
state_topic: "/73bkTV/<deviceID>/properties/report"
state_off: 0
state_on: 1
command_topic: "iot/73bkTV/<deviceID>/properties/write"
device_class: "switch"
value_template: "{{ value_json.properties.buzzerSwitch | int }}"
payload_on: '{"properties":{"buzzerSwitch":1}}'
payload_off: '{"properties":{"buzzerSwitch":0}}'
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- unique_id: "<deviceID>masterSwitch"
name: "Master"
state_topic: "/73bkTV/<deviceID>/properties/report"
state_off: 0
state_on: 1
command_topic: "iot/73bkTV/<deviceID>/properties/write"
device_class: "switch"
value_template: "{{ value_json.properties.masterSwitch | int }}"
payload_on: '{"properties":{"masterSwitch":1}}'
payload_off: '{"properties":{"masterSwitch":0}}'
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- unique_id: "<deviceID>autoRecover"
name: "Auto Recover"
state_topic: "/73bkTV/<deviceID>/properties/report"
state_off: 0
state_on: 1
command_topic: "iot/73bkTV/<deviceID>/properties/write"
device_class: "switch"
value_template: "{{ value_json.properties.autoRecover | int }}"
payload_on: '{"properties":{"autoRecover":1}}'
payload_off: '{"properties":{"autoRecover":0}}'
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
number:
- unique_id: "<deviceID>socSet"
name: "Charge Limit"
state_topic: "/73bkTV/<deviceID>/properties/report"
command_topic: "iot/73bkTV/<deviceID>/properties/write"
command_template: '{"properties":{"socSet":{{ value * 10}}}}'
unit_of_measurement: "%"
value_template: "{{ value_json.properties.socSet | int / 10 }}"
min: 1
max: 100
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- unique_id: "<deviceID>minSoc"
name: "Discharge Limit"
state_topic: "/73bkTV/<deviceID>/properties/report"
command_topic: "iot/73bkTV/<deviceID>/properties/write"
command_template: '{"properties":{"minSoc":{{ value * 10}}}}'
unit_of_measurement: "%"
value_template: "{{ value_json.properties.minSoc | int / 10 }}"
min: 1
max: 100
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- unique_id: "<deviceID>inverseMaxPower"
name: "Inverter Input Limit"
state_topic: "/73bkTV/<deviceID>/properties/report"
command_topic: "iot/73bkTV/<deviceID>/properties/write"
command_template: '{"properties":{"inverseMaxPower":{{ value }}}}'
unit_of_measurement: "W"
value_template: "{{ value_json.properties.inverseMaxPower | int }}"
min: 100
max: 800
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
- unique_id: "<deviceID>outputLimit"
name: "Output Limit"
state_topic: "/73bkTV/<deviceID>/properties/report"
command_topic: "iot/73bkTV/<deviceID>/properties/write"
command_template: '{"properties":{"outputLimit":{{ value }}}}'
unit_of_measurement: "W"
value_template: "{{ value_json.properties.outputLimit | int }}"
min: 0
max: 600
device:
name: "SolarFlow"
identifiers: "<YourSolarFlowSerialNumber>"
manufacturer: "Zendure"
model: "SolarFlow Hub 1200"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment