29 423 läst · 57 svar
29k läst
57 svar
Elpris i Home Assistant
Jag har inte labbat med detta själv men enligt dokumentationen tolkar jag det som att du kan ha en automation som körs varje dag efter att du fått senaste priserna från Nordpool, och i den sätta input_datetime till önskat värde med ett service-anrop till input_datetime.set_datetime.tveksamt skrev:
Inte hela lösningen för du behöver också få fram billigaste timmen ur datan men kanske en hjälp i rätt riktning?
Jag styr diskmaskinen på liknande premisser, enklast är nog att du kikar i den här trådentveksamt skrev:Ursäkta om jag hoppar in med en egen fråga i tråden, men någon här kanske har ett bra tips gällande just nordpool-integrationen.
Jag har den redan och det funkar fint. Det jag skulle vilja få till, men inte vet hur man gör det bäst, är att automatisera en input_datetime utifrån detta.
Väldigt specifikt exempel:
Min batteriladdare till elcykeln sitter i en smartplugg, bredvid denna har jag en knapp som jag just nu använder för att bara starta eller stoppa laddningen.
Istället skulle jag vilja använda den som så att när jag pluggat i batteriet och trycker på knappen vill jag, utifrån nordpool-sensorn, hitta den billigaste perioden innan imorgon kl 7 som varar under 2h (den tid det tar att ladda fullt) och starta pluggen då.
Det jag inte lyckas med är att omsätta tiden den billigaste perioden börjar till en input_datetime som jag kan använda att trigga min automation med.
Någon som har tips?
https://community.home-assistant.io...lcome-nordpool-energy-price-per-hour/34646/62
Powersaver.no löser detta åt dig!tveksamt skrev:Ursäkta om jag hoppar in med en egen fråga i tråden, men någon här kanske har ett bra tips gällande just nordpool-integrationen.
Jag har den redan och det funkar fint. Det jag skulle vilja få till, men inte vet hur man gör det bäst, är att automatisera en input_datetime utifrån detta.
Väldigt specifikt exempel:
Min batteriladdare till elcykeln sitter i en smartplugg, bredvid denna har jag en knapp som jag just nu använder för att bara starta eller stoppa laddningen.
Istället skulle jag vilja använda den som så att när jag pluggat i batteriet och trycker på knappen vill jag, utifrån nordpool-sensorn, hitta den billigaste perioden innan imorgon kl 7 som varar under 2h (den tid det tar att ladda fullt) och starta pluggen då.
Det jag inte lyckas med är att omsätta tiden den billigaste perioden börjar till en input_datetime som jag kan använda att trigga min automation med.
Någon som har tips?
Hyffsat hög inlärningströskel, även för en kodapa. Satte upp en automation för att köra avfuktaren i torkrummet under dygnets X billigaste timmar. Satte först upp en template sensor för att räkna ut ett tröskelvärde. input_number.dehumidifier_on_hours är ett reglage för hur många timmar den ska vara igång:
Denna kan sedan kollas mot det aktuella timpriset på el med en template-trigger en automation. För att slå på avfuktaren:
Samt att slå av den:
Kod:
template:
- sensor:
- name: "Dehumidifier cutoff"
unit_of_measurement: "SEK"
state: >
{% set pricesTodaySorted = states.sensor.nordpool_kwh_se3_sek_3_10_025.attributes.today | sort %}
{{ pricesTodaySorted[ states('input_number.dehumidifier_on_hours') | int ]}}
Denna kan sedan kollas mot det aktuella timpriset på el med en template-trigger en automation. För att slå på avfuktaren:
Kod:
{{ sensor.nordpool_kwh_se3_sek_3_10_025 | float > sensor.dehumidifier_cutoff | float }}
Kod:
{{ sensor.nordpool_kwh_se3_sek_3_10_025 | float <= sensor.dehumidifier_cutoff | float }}
Nu är nästa utmaning att göra lite mer analys på elpriset. Skulle vilja att avfuktaren kör fler timmar de nätter då elen är billig, och färre när det är dyrt. Men ändå kunna sätta ett hyffsat stabilt medelvärde för antalet timmar.
Jag landade i att utvärdera fyra kurvor för att dynamiskt nattsänka BVP, timpris över: den högsta avS Staffan-N skrev:
- Medel - hämtas direkt från Nordpool-sensorn
- Median - beräknas på sorterad Nofdpool-lista (raw_today)
- Max - medel
- Max - median
Kod:
service: input_number.set_value
data_template:
value: >-
{% set npmax=state_attr("sensor.nordpool_kwh_se3","max") %} {% set
npavg=state_attr("sensor.nordpool_kwh_se3","average") %} {% set
l=state_attr("sensor.nordpool_kwh_se3","raw_today") |
sort(attribute="value") %} {% set npmed=(l[12].value + l[13].value)/2 %} {%
set npmaxmed=npmax-npmed %} {% set npmaxavg=npmax-npavg %} {% set np_json =
{"value": npavg}, {"value": npmed}, {"value": npmaxmed}, {"value": npmaxavg}
%} {% set ll=np_json | sort(attribute="value") %} {{ ll[3].value }}
target:
entity_id: input_number.nordpool_cutoff
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Jag har en relaterad fråga som jag tänkte ställa här, och det är om någon sitter på en lösning för att i HA kontinuerligt beräkna och visa månadens snittpris under pågående månad? Alltså om snittpriset dag #1 = 1 kr och snittpriset dag #2 = 5 kr så är månadens snittpris hittills = (1+5)/2 = 3 kr. Sen dag #3 kommer det att priset = 3 kr och då blir snittet (1+5+3)/3 = 9 kr.
På Nordpools hemsida och diverse andra sajter kan man ju se föregående månaders snittpris, men inte pågående.
Att jag undrar är för att jag inte har timpris idag (överväger att skaffa men ska utvärdera lite om det är mödan värt med mina förutsättningar) och jag vill gärna hålla koll på vartåt det lutar successivt under månaden. På så vis kan jag tillsammans med elmätningen få en proaktiv uppskattning av vad kommande elräkning kommer att hamna på.
Man får ju ett värde som heter average i Nordpool-integrationen varje dag. Jag har inte kontrollräknat men den bör vara medelvärdet av alla timpriserna man får vid just den hämtningen antar jag? Så den skulle man i så fall kunna plotta i något diagram samtidigt som man håller koll på medelvärdet av alla average-värden kanske?
Eller så finns det smidigare vis
På Nordpools hemsida och diverse andra sajter kan man ju se föregående månaders snittpris, men inte pågående.
Att jag undrar är för att jag inte har timpris idag (överväger att skaffa men ska utvärdera lite om det är mödan värt med mina förutsättningar) och jag vill gärna hålla koll på vartåt det lutar successivt under månaden. På så vis kan jag tillsammans med elmätningen få en proaktiv uppskattning av vad kommande elräkning kommer att hamna på.
Man får ju ett värde som heter average i Nordpool-integrationen varje dag. Jag har inte kontrollräknat men den bör vara medelvärdet av alla timpriserna man får vid just den hämtningen antar jag? Så den skulle man i så fall kunna plotta i något diagram samtidigt som man håller koll på medelvärdet av alla average-värden kanske?
Eller så finns det smidigare vis
För att bygga vidare på det tidigare konceptet där jag plockar ut ett tröskelvärde för att få fram de X billigaste timmarna under dygnet, så vill jag "låna" timmar från närliggande dagar genom att räkna ut ett genomsnittligt tröskelvärde över tid. Om elpriset är ovanligt billigt en dag, passa på att buffra lite extra just den dagen, men försök hålla ett snitt på X timmar. Detta görs genom att jag räknar ut ett "exponential moving average" på hela listan med elpriser, sorterat på storlek. Resultatet blir i princip en tabell med 24 tröskelvärden som kan användas för att i snitt få ut X billigaste timmarna per dygn:
Faktorn "weight" är hur mycket morgondagens pris skall räknas in i tröskelvärdena. 0.5 betyder att snittet består till 50% av morgondagen, 25% av dagen, 12.5% av gårdagen o.s.v.
Tabellen använder jag på följande sätt i en sensor, för att få ut ett tröskelvärde som kan kollas mot det aktuella timpriset:
Här är en graf på dagens och morgondagens timpriser med tröskelvärdet för sex timmars avfuktning utplottat i blått. imorgon är det billigt så då blir det många timmar. Klockan 1800 imorgon så kommer tröskelvärdet räknas om med nästkommande dags priser, så sista timmarna på linjen stämmer inte. Ser lite ut som jag har ett klassiskt off-by-one error och att jag kommer snitta på sju timmar istället för sex.
Kod:
automation elpris_ema:
- alias: "Calculate Elpris EMA"
trigger:
- platform: time
at: "18:00"
action:
- service: input_text.set_value
target:
entity_id: input_text.nordpool_ema
data:
value: >
{% set prices = namespace(
tomorrow = state_attr('sensor.nordpool_kwh_se3', 'tomorrow') | sort,
today = state_attr('sensor.nordpool_kwh_se3', 'today') | sort,
ema = states('input_text.nordpool_ema').split(',')
)%}
{% set data = namespace(values=[], weight=0.5) %}
{% for price_today in prices.today %}
{% set prev_ema = prices.ema[loop.index0] | default(price_today,true) | float(price_today) %}
{% set price_tomorrow = prices.tomorrow[loop.index0] | default(price_today,true) %}
{% set lerped = price_tomorrow * data.weight + prev_ema * (1-data.weight) %}
{% set data.values = data.values + [lerped | string | truncate(5,true,'')] %}
{% endfor %}
{{data.values|join(',')}}
Tabellen använder jag på följande sätt i en sensor, för att få ut ett tröskelvärde som kan kollas mot det aktuella timpriset:
Kod:
template:
- sensor:
- name: "Dehumidifier cutoff"
unit_of_measurement: "SEK"
state: >
{% set prices = states('input_text.nordpool_ema').split(',') %}
{% set num_hours = states('input_number.dehumidifier_on_hours') | int %}
{{ prices[num_hours] | float}}
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Rättelse för tidigare inlägg: Såklart kan man ju inte hämta ut en sensor med syntax som om den vore ett objekt. Detta är rätt:
Som utvecklingsmiljö beträffat är detta nog det värsta jag varit med om
Kod:
{{ states('sensor.nordpool_kwh_se3')|float < states('sensor.dehumidifier_cutoff')|float }}
Som utvecklingsmiljö beträffat är detta nog det värsta jag varit med om
Medlem
· Västra Götaland
· 133 inlägg
Nån som kan förklara mer om hur man lägger till HACS lättast?