Skip to content

Instantly share code, notes, and snippets.

@jorgror
Last active November 4, 2023 21:54
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jorgror/8e9fb54d7236bdba131931eabd90961b to your computer and use it in GitHub Desktop.
Save jorgror/8e9fb54d7236bdba131931eabd90961b to your computer and use it in GitHub Desktop.
Low spot price sensor
template:
- binary_sensor:
- name: Lav Spotpris
state: |
{% set today_price = state_attr('sensor.nordpool','today') %}
{% set current = state_attr('sensor.nordpool', 'current_price') %}
{% set number_of_hours = states('input_number.number_of_hours') | int %}
{% set max_price = states('input_number.max_price') | float %}
{% if number_of_hours == 0 %}
{% set price_limit = 0 %}
{% else %}
{% set price_limit = (today_price | sort)[number_of_hours-1] %}
{% endif %}
{% set limit = ([ price_limit, max_price ]) | min %}
{{current <= limit}}
input_number:
max_price:
name: Maks Pris
min: 0
max: 10
step: 0.1
icon: mdi:cash-lock
unit_of_measurement: kr/kWt
number_of_hours:
name: Antall Timer
min: 0
max: 24
step: 1
icon: mdi:clock
@jorgror
Copy link
Author

jorgror commented Nov 4, 2023

  1. Den tar de fire billigste timene, uavhengig når de er. Så de kan gjerne være slik som i ditt eksempel.
  2. Ja, da vil du måtte vente til neste dag. Koden er hovedsaklig tiltenkt utstyr som varmer opp et varmelager, f.eks varmtvannsbereder, sentralvarme eller lignende.
  3. Koden tar ikke hensyn til dette. Det er relativt enkelt å oppdatere den til å ta hånd om dette, men det har noen negative side-effekter. Hvis prisen synker dag for dag vil man kunne ende opp i en situasjon hvor sensoren ikke blir True mange dager i strekk. Hovedtanken bak sensoren er styring av varmtvannsbereder og da vil man at den skal varme hver dag, selv om strømmen blir billigere i morgen.

@oywino
Copy link

oywino commented Nov 4, 2023

Ok, jeg skjønner.
Jeg gjorde et forsøk i HA Template editoren som følger:

 {% set today_price = state_attr('sensor.nordpool','today') %}
 {% set tomorrow_price = state_attr('sensor.nordpool','tomorrow') %}
 {% set two_days = today_price + tomorrow_price %}
 {% set x = now().hour %}
 {{ x }}
 {% set two_days = two_days[x:] %}
 {{ two_days}}
 {% set current = state_attr('sensor.nordpool', 'current_price') %}
 {% set number_of_hours = 5 %}
 {% set max_price = 10 %}
 {% set price_limit = (two_days | sort)[number_of_hours-1] %}
 {{ price_limit }}
 {% set limit = ([ price_limit, max_price ]) | min %}
 {{ limit }}
 {{current <= limit}}

Tanken er at koden hele tiden ser fra "now" og frem til slutten på neste dag. Jeg innbiller meg at det kan fungere?
Verdiene jeg fikk ut var disse (nå kl 22:45):

 22

 [0.54, 0.52, 0.59, 0.59, 0.54, 0.52, 0.49, 0.52, 0.54, 0.68, 0.74, 0.71, 0.73, 0.74, 0.68, 0.69, 0.7, 0.83, 0.93, 1.02, 1.01, 0.9, 0.79, 0.79, 0.76, 0.7]

0.54

0.54

True

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment