stigvi Skrevet 11. desember 2023 Skrevet 11. desember 2023 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. Siter
stigvi Skrevet 11. desember 2023 Skrevet 11. desember 2023 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..... Siter
RVM Skrevet 11. desember 2023 Skrevet 11. desember 2023 (endret) 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 11. desember 2023 av RVM Siter
MagnusO2 Skrevet 11. desember 2023 Skrevet 11. desember 2023 (endret) 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 11. desember 2023 av MagnusO2 Siter
stigvi Skrevet 11. desember 2023 Skrevet 11. desember 2023 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. Siter
RVM Skrevet 11. desember 2023 Skrevet 11. desember 2023 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. Siter
stigvi Skrevet 11. desember 2023 Skrevet 11. desember 2023 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. Siter
Anbefalte innlegg
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.