Skip to content

[Tarifas] Goldenergy indexado venda / OMIE PT kwh #112

Description

@tiberius-code

Partilho aqui o template dos 2 sensores que criei para a venda de energia via Goldenergy Indexado.

Image
# templates.yaml
# Include from configuration.yaml with:
# template: !include templates.yaml

- sensor:
    - name: "OMIE PT spot kWh"
      unique_id: omie_pt_spot_kwh
      unit_of_measurement: "€/kWh"
      state_class: measurement
      state: >
        {{ (states('sensor.omie_spot_price_pt') | float(0) / 1000) | round(6) }}
      attributes:
        friendly_name: "OMIE PT spot kWh"
        OMIE_today_average: >
          {{ (state_attr('sensor.omie_spot_price_pt','OMIE_today_average') | float(0) / 1000) | round(6) }}
        today_provisional: >
          {{ state_attr('sensor.omie_spot_price_pt','today_provisional') }}
        today_average: >
          {{ (state_attr('sensor.omie_spot_price_pt','today_average') | float(0) / 1000) | round(6) }}
        OMIE_tomorrow_average: >
          {{ (state_attr('sensor.omie_spot_price_pt','OMIE_tomorrow_average') | float(0) / 1000) | round(6) }}
        tomorrow_provisional: >
          {{ state_attr('sensor.omie_spot_price_pt','tomorrow_provisional') }}
        tomorrow_average: >
          {{ (state_attr('sensor.omie_spot_price_pt','tomorrow_average') | float(0) / 1000) | round(6) }}
        yesterday_hours: >
          {% set raw = state_attr('sensor.omie_spot_price_pt','yesterday_hours') %}
          {% set d = raw if raw is mapping else {} %}
          {% set ns = namespace(hourly=[]) %}
          {% for k, v in d.items() %}
            {% set key = (k|string) %}
            {% set val = (v | float(default=None)) %}
            {% if val is none %}
              {% set out = None %}
            {% else %}
              {% set out = (val / 1000) | round(6) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, out)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        today_hours: >
          {% set raw = state_attr('sensor.omie_spot_price_pt','today_hours') %}
          {% set d = raw if raw is mapping else {} %}
          {% set ns = namespace(hourly=[]) %}
          {% for k, v in d.items() %}
            {% set key = (k|string) %}
            {% set val = (v | float(default=None)) %}
            {% if val is none %}
              {% set out = None %}
            {% else %}
              {% set out = (val / 1000) | round(6) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, out)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        tomorrow_hours: >
          {% set raw = state_attr('sensor.omie_spot_price_pt','tomorrow_hours') %}
          {% set d = raw if raw is mapping else {} %}
          {% set ns = namespace(hourly=[]) %}
          {% for k, v in d.items() %}
            {% set key = (k|string) %}
            {% set val = (v | float(default=None)) %}
            {% if val is none %}
              {% set out = None %}
            {% else %}
              {% set out = (val / 1000) | round(6) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, out)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        unit_of_measurement_source: "{{ state_attr('sensor.omie_spot_price_pt','unit_of_measurement') }}"
        icon: "{{ state_attr('sensor.omie_spot_price_pt','icon') or 'mdi:currency-eur' }}"

    # --- Goldenergy: single sensor (state + hours attributes) ---
    - name: "Goldenergy UPAC OMIE indexed sale (€/kWh)"
      unique_id: goldenergy_upac_omie_indexed_sale_eur_kwh
      unit_of_measurement: "€/kWh"
      state_class: measurement
      state: >
        {% set OMIE_PT_mWh = states('sensor.omie_spot_price_pt') | float(default=None) -%}
        {% set ProviderChargesCost_kWh = state_attr(this.entity_id, 'ProviderChargesCost_kWh') | float(0) -%}
        {% set ProviderMgmtCost = state_attr(this.entity_id, 'ProviderMgmtCost') | float(0) -%}
        
        {% if OMIE_PT_mWh is none %}
          {{ None }}
        {% else %}
          {% set OMIE_PT_kWh = (OMIE_PT_mWh / 1000) %}
          {% set result = (OMIE_PT_kWh - ProviderChargesCost_kWh) * ((100 - ProviderMgmtCost) / 100) %}
          {{ (0.0 if result <= 0 else (result | round(6))) }}
        {% endif %}
      attributes:
        friendly_name: "Goldenergy purchase of UPAC surplus (€/kWh)"
        formula: "(OMIE_PT_kWh - ProviderChargesCost_kWh) * (1 - ProviderMgmtCost/100), if > 0"
        ProviderChargesCost_MWh: "{{ 6.6 | float }}"
        ProviderChargesCost_kWh: "{{ (6.6 / 1000) | round(6) | float }}"
        ProviderMgmtCost: "{{ 15 | int }}"
        OMIE_PT_kWh: "{{ states('sensor.omie_pt_spot_kwh') | float(default=None) }}"
        yesterday_hours: >
          {% set ProviderChargesCost_kWh = state_attr(this.entity_id, 'ProviderChargesCost_kWh') | float(0) -%}
          {% set ProviderMgmtCost = state_attr(this.entity_id, 'ProviderMgmtCost') | float(0) -%}
          {% set src_raw = state_attr('sensor.omie_pt_spot_kwh','yesterday_hours') -%}
          {% set src = src_raw if src_raw is mapping else {} -%}
          {% set ns = namespace(hourly=[]) -%}
          
          {% for h, pm in src.items() %}
            {% set key = (h|string) %}
            {% set pm_val = pm | float(default=None) %}
            {% if pm_val is none %}
              {% set price = None %}
            {% else %}
              {% set price = (pm_val - ProviderChargesCost_kWh) * ((100 - ProviderMgmtCost) / 100) %}
              {% set price = (0.0 if price <= 0 else (price | round(6))) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, price)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        today_hours: >
          {% set ProviderChargesCost_kWh = state_attr(this.entity_id, 'ProviderChargesCost_kWh') | float(0) -%}
          {% set ProviderMgmtCost = state_attr(this.entity_id, 'ProviderMgmtCost') | float(0) -%}
          {% set src_raw = state_attr('sensor.omie_pt_spot_kwh','today_hours') -%}
          {% set src = src_raw if src_raw is mapping else {} -%}
          {% set ns = namespace(hourly=[]) -%}
          
          {% for h, pm in src.items() %}
            {% set key = (h|string) %}
            {% set pm_val = pm | float(default=None) %}
            {% if pm_val is none %}
              {% set price = None %}
            {% else %}
              {% set price = (pm_val - ProviderChargesCost_kWh) * ((100 - ProviderMgmtCost) / 100) %}
              {% set price = (0.0 if price <= 0 else (price | round(6))) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, price)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        tomorrow_hours: >
          {% set ProviderChargesCost_kWh = state_attr(this.entity_id, 'ProviderChargesCost_kWh') | float(0) -%}
          {% set ProviderMgmtCost = state_attr(this.entity_id, 'ProviderMgmtCost') | float(0) -%}
          {% set src_raw = state_attr('sensor.omie_pt_spot_kwh','tomorrow_hours') -%}
          {% set src = src_raw if src_raw is mapping else {} -%}
          {% set ns = namespace(hourly=[]) -%}
          
          {% for h, pm in src.items() %}
            {% set key = (h|string) %}
            {% set pm_val = pm | float(default=None) %}
            {% if pm_val is none %}
              {% set price = None %}
            {% else %}
              {% set price = (pm_val - ProviderChargesCost_kWh) * ((100 - ProviderMgmtCost) / 100) %}
              {% set price = (0.0 if price <= 0 else (price | round(6))) %}
            {% endif %}
            {% set ns.hourly = ns.hourly + [(key, price)] %}
          {% endfor %}
          {{ dict(ns.hourly) }}
        unit_of_measurement_source: "{{ state_attr('sensor.omie_spot_price_pt','unit_of_measurement') }}"
        icon: "{{ state_attr('sensor.omie_spot_price_pt','icon') or 'mdi:currency-eur' }}"

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions