Numa altura em que muitos andam a tentar controlar os consumos deixo-vos aqui algumas variaveis que tenho criadas (eventualmente demasiadas para alguns) e que me permitem controlar o consumo na minha casa.
Gostaria de salientar que tenho um tarifario bi-horario semanal por isso tenho varios ciclos dependendo do dia da semana:
#A parte basica: variaveis com o valor das rates (idealmente a ir buscar a um site que até ja encontrei)
input_number:
edp_eco_rate:
name: EDPTarifa Vazio
initial: 0.0969
min: 0.0969
max: 0.0979
step: 0.001
mode: box
unit_of_measurement: '€'
icon: mdi:currency-eur
edp_full_rate:
name: EDP Tarifa Cheio
initial: 0.2029
min: 0.2029
max: 0.2039
step: 0.001
mode: box
unit_of_measurement: '€'
icon: mdi:currency-eur
#Variaveis com os multiplos horarios
input_datetime:
economico_semana_ligar:
name: Ligar Semana
has_date: false
has_time: true
initial: '00:00:00'
economico_semana_desligar:
name: Desligar Semana
has_date: false
has_time: true
initial: '06:59:00'
economico_sab_on_verao_00:
name: Ligar Sabado verão 01
has_date: false
has_time: true
initial: '00:00:00'
economico_sab_on_verao_01:
name: Ligar Sabado verão 02
has_date: false
has_time: true
initial: '14:00:00'
economico_sab_on_verao_02:
name: Ligar Sabado verão 03
has_date: false
has_time: true
initial: '22:00:00'
economico_sab_off_verao_00:
name: Desligar Sabado verão 01
has_date: false
has_time: true
initial: '09:00:00'
economico_sab_off_verao_01:
name: Desligar Sabado verão 02
has_date: false
has_time: true
initial: '20:00:00'
economico_sab_on_inverno_00:
name: Ligar Sabado Inverno 01
has_date: false
has_time: true
initial: '00:00:00'
economico_sab_on_inverno_01:
name: Ligar Sabado Inverno 02
has_date: false
has_time: true
initial: '13:00:00'
economico_sab_on_inverno_02:
name: Ligar Sabado Inverno 03
has_date: false
has_time: true
initial: '22:00:00'
economico_sab_off_inverno_00:
name: Desligar Sabado Inverno 01
has_date: false
has_time: true
initial: '09:30:00'
economico_sab_off_inverno_01:
name: Desligar Sabado Inverno 02
has_date: false
has_time: true
initial: '18:30:00'
#Só porque não gosto de mexer em codigo especialmente quando é algo recorrente:
input_select:
summer_time:
name: Summer Time
options:
- verao
- inverno
#Parte do codigo esparguete pois tenho tantas ideias para por em pratica que preocupo-me com as optimizações mais tarde, contudo peço a quem queira melhorar que não só o faça como partilhe:
#Estamos em horario económico?
binary_sensor:
- platform: template
sensors:
is_edp_eco_rate:
value_template: >-
{%- if now().weekday() in (0,1,2,3,4) and states('sensor.time') >= (states.input_datetime.economico_semana_ligar.attributes.timestamp | int | timestamp_custom('%H:%M', False)) and states('sensor.time') < (states.input_datetime.economico_semana_desligar.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "verao") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_verao_00.attributes.timestamp | int | timestamp_custom('%H:%M', False)) and states('sensor.time') < (states.input_datetime.economico_sab_off_verao_00.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "verao") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_verao_01.attributes.timestamp | int | timestamp_custom('%H:%M', False)) and states('sensor.time') < (states.input_datetime.economico_sab_off_verao_01.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "verao") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_verao_02.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "inverno") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_inverno_00.attributes.timestamp | int | timestamp_custom('%H:%M', False)) and states('sensor.time') < (states.input_datetime.economico_sab_off_inverno_00.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "inverno") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_inverno_01.attributes.timestamp | int | timestamp_custom('%H:%M', False)) and states('sensor.time') < (states.input_datetime.economico_sab_off_inverno_01.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif is_state("input_select.summer_time", "inverno") and now().weekday() == 5 and states('sensor.time') >= (states.input_datetime.economico_sab_on_inverno_02.attributes.timestamp | int | timestamp_custom('%H:%M', False)) -%}
true
{%- elif now().weekday() == 6 -%}
true
{%- else -%}
false
{%- endif -%}
friendly_name: 'EDP horario Económico'
entity_id: sensor.time
#Como usar? “Simples”
- platform: template
sensors:
edp_realtime_price_frigorifico:
friendly_name: 'Frigorifico Spending'
unit_of_measurement: '€/h'
value_template: >-
{% if is_state("binary_sensor.is_edp_eco_rate", "on") -%}
{{ ((states.sensor.edp_plug_frigorifico_power.state | float / 1000 * states.input_number.edp_eco_rate.attributes.min)) | round(3) }}
{%- else -%}
{{ ((states.sensor.edp_plug_frigorifico_power.state | float / 1000 * states.input_number.edp_full_rate.attributes.min)) | round(3) }}
{%- endif %}