Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Howto: Få estimert strømstøtte inn i HA


MrE

Anbefalte innlegg

MagnusO2 skrev (På 6.12.2023 den 16.30):

Det har du selvsagt rett i...

Har gjort en nytt forsøk som benytter seg av custom integrasjonen Holidays (https://github.com/bruxy70/Holidays). Denne holder en liste over datoer som er definerte helligdager som jeg sammenligner med.

Forutsetningen her er at nordpoolintegrasjonen bruker datoen til timen den prosesserer når man bruker now(). Har spurt utvikleren om dette, men ikke fått svar...

 

Fortsatt åpen for innspill på dette!! 🙂

 

{# January to March - Weekend and holiday taxes #}
{% if (as_timestamp(now()) | timestamp_custom("%F")) in (state_attr('calendar.holidays','holidays') | list) and (now().month >= 1 and now().month <= 3) %}
  {% set el_taxes = 0.3558 %}
  
{# April to December - Weekend and holiday taxes #}
{% elif (as_timestamp(now()) | timestamp_custom("%F")) in (state_attr('calendar.holidays','holidays') | list) and (now().month >= 4) %}
  {% set el_taxes = 0.4393 %}

{# January to March - Dyatime taxes #}
{% elif (now().month >= 1 and now().month <= 3) and (now().hour >= 6 and now().hour <= 22) %}
  {% set el_taxes = 0.4738 %}

{# January to March - Night taxes #}
{% elif (now().month >= 1 and now().month <= 3) and (now().hour >= 23 or now().hour <= 5) %}
  {% set el_taxes = 0.3558 %}

{# April to December - Day taxes #}
{% elif (now().month >= 4) and (now().hour >= 6 and now().hour <= 22) %}
  {% set el_taxes = 0.5573 %}

{# April to December - Night taxes #}
{% elif (now().month >= 4) and (now().hour >= 23 or now().hour <= 5) %}
  {% set el_taxes = 0.4393 %}
{% endif %}


{% if current_price > 0.875 %}
    {% set subs = (current_price - 0.875) * 0.9 %}
    {% set additional_cost = el_taxes - subs %}
{% elif current_price <= 0.875 %}
    {% set additional_cost = el_taxes %}
{% endif %}


{{ additional_cost }}

 


Flott at du fant integrasjonen "Holidays". Da går det, som du har gjort, å teste på om en dato er en rød dag i kalenderen.

Lenke til kommentar
Del på andre sider

Hos meg fikk jeg problem med at Nordpool integrasjonen starter opp før holidays integrasjonen og da feiler prisberegningen. Dette kan en løse med å endre manifest filen til nordpool. Men så må en huske å gjøre det hver gang det er ny versjon av nordpool.

Da er det lettere å huske å endre helligdag-listen som jeg har i malen. Den endres kun en gang i året og jeg må jo allikevel endre malen pga nye priser. Da tar det mindre enn et minutt å legge inn 5 bevegelige helligdager istedenfor å være avhengig av at holidays integrasjonen starter opp før nordpool.....

Lenke til kommentar
Del på andre sider

Jeg har nylig gått over til å la Nordpool-integrasjonen kun ta seg av spotprisen, og så lar jeg andre entities holde på nettleie og strømstøtte hver for seg, før jeg summerer opp en netto strømpris. Synes sjøl at det var ryddigst og enklest, men det blir jo subjektivt.

 

Gjør dette ved å "speile" raw_today og raw_tomorrow fra Nordpool til nye Pyscript-variabler, slik at de er på samme format som Nordpool-entity'en.

 

Nettleie:

 

# ...

YEAR = datetime.today().year
NOR_HOLIDAYS = holidays.NO(years=[YEAR, YEAR+1, YEAR+2])

@time_trigger
@state_trigger("sensor.nordpool_kwh_krsand_nok_3_10_025")
def calculate_grid_tariff():
    now = datetime.now(tz=tz)

    pyscript.electricity_grid_tariff = PEAK_RATE if is_peak(now) else OFFPEAK_RATE

    pyscript.electricity_grid_tariff.raw_today = sensor.nordpool_kwh_krsand_nok_3_10_025.raw_today.copy()
    pyscript.electricity_grid_tariff.raw_tomorrow = sensor.nordpool_kwh_krsand_nok_3_10_025.raw_tomorrow.copy()

    for rt in pyscript.electricity_grid_tariff.raw_today:
        rt['grid_tariff'] = PEAK_RATE if is_peak(rt['start']) else OFFPEAK_RATE

    for rt in pyscript.electricity_grid_tariff.raw_tomorrow:
        rt['grid_tariff'] = PEAK_RATE if is_peak(rt['start']) else OFFPEAK_RATE

    
def is_peak(t):
    is_holiday = t.date() in NOR_HOLIDAYS
    is_weekend = t.isoweekday() >= 6
    is_night = t.hour <= 5 or t.hour >= 22

    if is_holiday or is_weekend or is_night:
        return False
    else:
        return True

 

Strømstøtte:

 

# ...

@time_trigger
@state_trigger("sensor.nordpool_kwh_krsand_nok_3_10_025")
def calculate_subsidy():
    now = datetime.now(tz=tz)

    spot = float(sensor.nordpool_kwh_krsand_nok_3_10_025)
    pyscript.electricity_subsidy = get_subsidy(spot)

    pyscript.electricity_subsidy.raw_today = sensor.nordpool_kwh_krsand_nok_3_10_025.raw_today.copy()
    pyscript.electricity_subsidy.raw_tomorrow = sensor.nordpool_kwh_krsand_nok_3_10_025.raw_tomorrow.copy()

    for rt in pyscript.electricity_subsidy.raw_today:
        rt['subsidy'] = get_subsidy(rt['value'])

    for rt in pyscript.electricity_subsidy.raw_tomorrow:
        rt['subsidy'] = get_subsidy(rt['value'])

def get_subsidy(spot_price):
    subsidy = max((spot_price - SUBSIDY_THRESHOLD)*SUBSIDY_LEVEL, 0)
    return round(subsidy, 4)

 

Så er det bare å iterere gjennom raw_today/raw_tomorrow og summere opp nettoprisen per time.

Endret av RVM
Lenke til kommentar
Del på andre sider

stigvi skrev (4 timer siden):

Hos meg fikk jeg problem med at Nordpool integrasjonen starter opp før holidays integrasjonen og da feiler prisberegningen. Dette kan en løse med å endre manifest filen til nordpool. Men så må en huske å gjøre det hver gang det er ny versjon av nordpool.

Da er det lettere å huske å endre helligdag-listen som jeg har i malen. Den endres kun en gang i året og jeg må jo allikevel endre malen pga nye priser. Da tar det mindre enn et minutt å legge inn 5 bevegelige helligdager istedenfor å være avhengig av at holidays integrasjonen starter opp før nordpool.....

Klarer ikke forstå hvordan det er en utfordring? En slik feil blir vel bare aktuell nå templaten evalueres og det skjer hvert minutt og ved endringer i holidays-sensoren. Det er ellers ingen avhengigheter mellom nordpool og holidays...

 

UPDATE:

Jo, selvsagt.... Ser det nå.... :-)
Det var teit... Men ikke et problem for meg... 

Endret av MagnusO2
Lenke til kommentar
Del på andre sider

RVM skrev (29 minutter siden):

Jeg har nylig gått over til å la Nordpool-integrasjonen kun ta seg av spotprisen, og så lar jeg andre entities holde på nettleie og strømstøtte hver for seg, før jeg summerer opp en netto strømpris.


Har vurdert det samme. Og å lage det slik at prisene for hvor time enten hentes fra Nordpool integrasjon eller Entsoe-e integrasjon, avhengig av tilgjengelighet på priser. Da får jeg to kilder som jeg varierer på, alt ettersom.

Lenke til kommentar
Del på andre sider

2 minutes ago, stigvi said:


Har vurdert det samme. Og å lage det slik at prisene for hvor time enten hentes fra Nordpool integrasjon eller Entsoe-e integrasjon, avhengig av tilgjengelighet på priser. Da får jeg to kilder som jeg varierer på, alt ettersom.

Litt av poenget med å gjøre det akkurat sånn for meg, var at jeg da slapp å endre så mye på logikk som bruker raw_today/raw_tomorrow andre steder, siden jeg har samme format for raw_today/raw_tomorrow i min nettopris.

Lenke til kommentar
Del på andre sider

RVM skrev (Akkurat nå):

Litt av poenget med å gjøre det akkurat sånn for meg, var at jeg da slapp å endre så mye på logikk som bruker raw_today/raw_tomorrow andre steder, siden jeg har samme format for raw_today/raw_tomorrow i min nettopris.

For meg er det motsatt. Jeg har en enkel liste som inneholder alle priser istedenfor å splitte den opp i to lister. Listen inneholder dato og klokkeslett så å splitte den i to for i dag og i morgen, gjør det bare mer komplisert.

 

@state_trigger("sensor.nordpool")
def strompris():
    if (sensor.nordpool.raw_tomorrow is not None
        and len(sensor.nordpool.raw_tomorrow) > 0
        and sensor.nordpool.raw_tomorrow[0]['value'] is not None):
        pyscript.strompris = datetime.now()
        pyscript.strompris.raw_price = sensor.nordpool.raw_today + sensor.nordpool.raw_tomorrow


Dette lagde jeg for mer enn et år siden, med en plan om å lese inn priser fra Entso-e hvis Nordpool er utilgjengelig. Men så stoppet det opp av en eller annen grunn.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.