Partilho aqui o template dos 2 sensores que criei para a venda de energia via Goldenergy Indexado.
# 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' }}"
Partilho aqui o template dos 2 sensores que criei para a venda de energia via Goldenergy Indexado.