Update Energy Package

This commit is contained in:
2022-07-22 08:56:13 -07:00
parent b2f7786ff5
commit 205e5562fc
6 changed files with 368 additions and 375 deletions

View File

@@ -9,6 +9,286 @@ sensor:
unit_prefix: k
unit_time: h
# Include Sensors for Panels/Inverters (generated by generate_panel_sensors.py)
sensor: !include "panel_average_sensor.yaml"
template: !include "panel_template_sensors.yaml"
# -----------------------------------------------------------------------------
# Average Panel Power 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 %}

View File

@@ -0,0 +1,39 @@
# Energy Package
# -----------------------------------------------------------------------------
# Energy Integration Sensor
sensor:
- name: envoy_total_energy
platform: integration
source: sensor.envoy_202221032900_current_power_production
unit_prefix: k
unit_time: h
# -----------------------------------------------------------------------------
# Average Panel Power 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 %]

View File

@@ -1,88 +0,0 @@
#!/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 Average Sensor
PANEL_AVERAGE_SENSOR = '''---
# -----------------------------------------------------------------------------
# Panel/Inverter Monitor Sensors
- name: Envoy Inverter Average Power
platform: min_max
type: mean
entity_ids:[% for sn in serial_numbers %]
- sensor.envoy_202221032900_inverter_[[sn]]
[%- endfor %]
'''
# Jinja2 Snippet for Panel Power Share Sensors
PANEL_SHARE_SENSORS = '''---
# -----------------------------------------------------------------------------
# Panel/Inverter Monitor Template Sensors
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='#]',
)
with open('panel_average_sensor.yaml', 'w') as f:
tmpl = env.from_string(PANEL_AVERAGE_SENSOR)
f.write(tmpl.render(serial_numbers=INVERTER_SNS))
with open('panel_template_sensors.yaml', 'w') as f:
tmpl = env.from_string(PANEL_SHARE_SENSORS)
f.write(tmpl.render(serial_numbers=INVERTER_SNS))
if __name__ == '__main__':
main()

View File

@@ -0,0 +1,46 @@
#!/usr/bin/python3
# ---
# Script to generate the energy.yaml package file.
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,
]
def main():
"""Generate the YAML File."""
env = j2.Environment(
block_start_string='[%',
block_end_string='%]',
variable_start_string='[[',
variable_end_string=']]',
comment_start_string='[#',
comment_end_string='#]',
loader=j2.FileSystemLoader('.'),
)
with open('energy.yaml', 'w') as f:
tmpl = env.get_template('energy.yaml.j2')
f.write(tmpl.render(serial_numbers=INVERTER_SNS))
if __name__ == '__main__':
main()

View File

@@ -1,25 +0,0 @@
---
# -----------------------------------------------------------------------------
# Panel/Inverter Monitor Sensors
- 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

View File

@@ -1,259 +0,0 @@
---
# -----------------------------------------------------------------------------
# Panel/Inverter Monitor Template Sensors
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 %}