Update Energy Package
This commit is contained in:
@@ -9,50 +9,5 @@ sensor:
|
|||||||
unit_prefix: k
|
unit_prefix: k
|
||||||
unit_time: h
|
unit_time: h
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# Include Sensors for Panels/Inverters (generated by generate_panel_sensors.py)
|
||||||
# Panel/Inverter Monitor Sensors
|
!include "panel_sensors.yaml"
|
||||||
sensor:
|
|
||||||
- name: Envoy Inverter Average Power
|
|
||||||
platform: min_max
|
|
||||||
type: mean
|
|
||||||
entity_ids:
|
|
||||||
- sensor.envoy_202221032900_inverter_202147113780
|
|
||||||
- sensor.envoy_202221032900_inverter_202147116830
|
|
||||||
- sensor.envoy_202221032900_inverter_202147117162
|
|
||||||
- sensor.envoy_202221032900_inverter_202147117631
|
|
||||||
- sensor.envoy_202221032900_inverter_202147122858
|
|
||||||
- sensor.envoy_202221032900_inverter_202147123517
|
|
||||||
- sensor.envoy_202221032900_inverter_202147125027
|
|
||||||
- sensor.envoy_202221032900_inverter_202147125590
|
|
||||||
- sensor.envoy_202221032900_inverter_202147125734
|
|
||||||
- sensor.envoy_202221032900_inverter_202147125902
|
|
||||||
- sensor.envoy_202221032900_inverter_202147126079
|
|
||||||
- sensor.envoy_202221032900_inverter_202147126357
|
|
||||||
- sensor.envoy_202221032900_inverter_202147126997
|
|
||||||
- sensor.envoy_202221032900_inverter_202147128369
|
|
||||||
- sensor.envoy_202221032900_inverter_202147129445
|
|
||||||
- sensor.envoy_202221032900_inverter_202147130152
|
|
||||||
- sensor.envoy_202221032900_inverter_202147130290
|
|
||||||
|
|
||||||
template:
|
|
||||||
sensor:
|
|
||||||
- name: Envoy 202221032900 Inverter 202147113780 Power Share
|
|
||||||
unit_of_measurement: "%"
|
|
||||||
|
|
||||||
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
|
||||||
state: >
|
|
||||||
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
|
||||||
undefined
|
|
||||||
{% else %}
|
|
||||||
{{ (100 *
|
|
||||||
states('sensor.envoy_202221032900_inverter_202147113780')|float
|
|
||||||
/ states('sensor.envoy_inverter_average_power')|float
|
|
||||||
) | round(1)
|
|
||||||
}}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
homeassistant:
|
|
||||||
customize:
|
|
||||||
sensor.envoy_total_energy:
|
|
||||||
device_class: energy
|
|
||||||
friendly_name: Envoy Total Energy Production
|
|
||||||
|
|||||||
79
packages/energy/generate_panel_sensors.py
Normal file
79
packages/energy/generate_panel_sensors.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# ---
|
||||||
|
# Script to generate Power Share and Panel OK sensors for the solar panels
|
||||||
|
# by serial number.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import jinja2 as j2
|
||||||
|
|
||||||
|
# Serial Numbers for Panel Inverters
|
||||||
|
INVERTER_SNS = [
|
||||||
|
202147113780,
|
||||||
|
202147116830,
|
||||||
|
202147117162,
|
||||||
|
202147117631,
|
||||||
|
202147122858,
|
||||||
|
202147123517,
|
||||||
|
202147125027,
|
||||||
|
202147125590,
|
||||||
|
202147125734,
|
||||||
|
202147125902,
|
||||||
|
202147126079,
|
||||||
|
202147126357,
|
||||||
|
202147126997,
|
||||||
|
202147128369,
|
||||||
|
202147129445,
|
||||||
|
202147130152,
|
||||||
|
202147130290,
|
||||||
|
]
|
||||||
|
|
||||||
|
# Jinja2 Snippet for Panel Sensors
|
||||||
|
POWER_SHARE_SENSORS = '''---
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Panel/Inverter Monitor Sensors
|
||||||
|
sensor:
|
||||||
|
- name: Envoy Inverter Average Power
|
||||||
|
platform: min_max
|
||||||
|
type: mean
|
||||||
|
entity_ids:
|
||||||
|
[% for sn in serial_numbers %] - sensor.envoy_202221032900_inverter_[[sn]]
|
||||||
|
[% endfor %]
|
||||||
|
|
||||||
|
# Panel/Inverter Power Share Sensors
|
||||||
|
template:
|
||||||
|
sensor:
|
||||||
|
[% for sn in serial_numbers %] - name: Envoy 202221032900 Inverter [[sn]] Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_[[sn]]')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[% endfor %]
|
||||||
|
'''
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Generate Power Share Sensor Section for the YAML File."""
|
||||||
|
env = j2.Environment(
|
||||||
|
block_start_string='[%',
|
||||||
|
block_end_string='%]',
|
||||||
|
variable_start_string='[[',
|
||||||
|
variable_end_string=']]',
|
||||||
|
comment_start_string='[#',
|
||||||
|
comment_end_string='#]',
|
||||||
|
)
|
||||||
|
|
||||||
|
tmpl = env.from_string(POWER_SHARE_SENSORS)
|
||||||
|
|
||||||
|
sys.stdout.write(tmpl.render(serial_numbers=INVERTER_SNS))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
268
packages/energy/panel_sensors.yaml
Normal file
268
packages/energy/panel_sensors.yaml
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
---
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Panel/Inverter Monitor Sensors
|
||||||
|
sensor:
|
||||||
|
- name: Envoy Inverter Average Power
|
||||||
|
platform: min_max
|
||||||
|
type: mean
|
||||||
|
entity_ids:
|
||||||
|
- sensor.envoy_202221032900_inverter_202147113780
|
||||||
|
- sensor.envoy_202221032900_inverter_202147116830
|
||||||
|
- sensor.envoy_202221032900_inverter_202147117162
|
||||||
|
- sensor.envoy_202221032900_inverter_202147117631
|
||||||
|
- sensor.envoy_202221032900_inverter_202147122858
|
||||||
|
- sensor.envoy_202221032900_inverter_202147123517
|
||||||
|
- sensor.envoy_202221032900_inverter_202147125027
|
||||||
|
- sensor.envoy_202221032900_inverter_202147125590
|
||||||
|
- sensor.envoy_202221032900_inverter_202147125734
|
||||||
|
- sensor.envoy_202221032900_inverter_202147125902
|
||||||
|
- sensor.envoy_202221032900_inverter_202147126079
|
||||||
|
- sensor.envoy_202221032900_inverter_202147126357
|
||||||
|
- sensor.envoy_202221032900_inverter_202147126997
|
||||||
|
- sensor.envoy_202221032900_inverter_202147128369
|
||||||
|
- sensor.envoy_202221032900_inverter_202147129445
|
||||||
|
- sensor.envoy_202221032900_inverter_202147130152
|
||||||
|
- sensor.envoy_202221032900_inverter_202147130290
|
||||||
|
|
||||||
|
|
||||||
|
# Panel/Inverter Power Share Sensors
|
||||||
|
template:
|
||||||
|
sensor:
|
||||||
|
- name: Envoy 202221032900 Inverter 202147113780 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147113780')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147116830 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147116830')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147117162 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147117162')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147117631 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147117631')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147122858 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147122858')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147123517 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147123517')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147125027 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147125027')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147125590 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147125590')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147125734 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147125734')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147125902 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147125902')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147126079 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147126079')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147126357 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147126357')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147126997 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147126997')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147128369 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147128369')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147129445 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147129445')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147130152 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147130152')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: Envoy 202221032900 Inverter 202147130290 Power Share
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
availability: "{{ states('sensor.envoy_inverter_average_power')|float > 5 }}"
|
||||||
|
state: >
|
||||||
|
{% if states('sensor.envoy_inverter_average_power')|float == 0 %}
|
||||||
|
undefined
|
||||||
|
{% else %}
|
||||||
|
{{ (100 *
|
||||||
|
states('sensor.envoy_202221032900_inverter_202147130290')|float
|
||||||
|
/ states('sensor.envoy_inverter_average_power')|float
|
||||||
|
) | round(1)
|
||||||
|
}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
Reference in New Issue
Block a user