diff --git a/packages/energy/energy.yaml b/packages/energy/energy.yaml index a28bdde..f819dab 100644 --- a/packages/energy/energy.yaml +++ b/packages/energy/energy.yaml @@ -10,4 +10,5 @@ sensor: unit_time: h # Include Sensors for Panels/Inverters (generated by generate_panel_sensors.py) -!include "panel_sensors.yaml" +sensor: !include "panel_average_sensor.yaml" +template: !include "panel_template_sensors.yaml" diff --git a/packages/energy/generate_panel_sensors.py b/packages/energy/generate_panel_sensors.py index 0d05223..bdeb4f1 100644 --- a/packages/energy/generate_panel_sensors.py +++ b/packages/energy/generate_panel_sensors.py @@ -28,34 +28,38 @@ INVERTER_SNS = [ 202147130290, ] -# Jinja2 Snippet for Panel Sensors -POWER_SHARE_SENSORS = '''--- +# Jinja2 Snippet for Panel Average Sensor +PANEL_AVERAGE_SENSOR = '''--- # ----------------------------------------------------------------------------- # 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 %} +- 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 %] ''' @@ -71,9 +75,14 @@ def main(): comment_end_string='#]', ) - tmpl = env.from_string(POWER_SHARE_SENSORS) + 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)) - sys.stdout.write(tmpl.render(serial_numbers=INVERTER_SNS)) if __name__ == '__main__': main() diff --git a/packages/energy/panel_average_sensor.yaml b/packages/energy/panel_average_sensor.yaml new file mode 100644 index 0000000..10e93d1 --- /dev/null +++ b/packages/energy/panel_average_sensor.yaml @@ -0,0 +1,25 @@ +--- +# ----------------------------------------------------------------------------- +# 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 \ No newline at end of file diff --git a/packages/energy/panel_sensors.yaml b/packages/energy/panel_sensors.yaml deleted file mode 100644 index ae93a6b..0000000 --- a/packages/energy/panel_sensors.yaml +++ /dev/null @@ -1,268 +0,0 @@ ---- -# ----------------------------------------------------------------------------- -# 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 %} - diff --git a/packages/energy/panel_template_sensors.yaml b/packages/energy/panel_template_sensors.yaml new file mode 100644 index 0000000..dc6e971 --- /dev/null +++ b/packages/energy/panel_template_sensors.yaml @@ -0,0 +1,259 @@ +--- +# ----------------------------------------------------------------------------- +# 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 %} +