stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 Nå ser det ut som om entso-e integrasjonen fungerer bedre og prices attributten endres ikke ved midnatt. Så da har jeg endret mine mal-sensorer som er på i de billigste timene til det som er vist nedenfor. Nye priser kommer vanligvis klokken 14:00 så mine mal-sensorer ignorerer prisene som allerede er blitt gamle og tar kun hensyn til de fremtidige prisene. - unique_id: billigste_timer_1_2 name: billigste_timer_1_2 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:]|sort(attribute='price') %} {% set t = now() %} {{ (t >= as_datetime(l[0].time) and t <= as_datetime(l[0].time) + timedelta(hours = 1)) or (t >= as_datetime(l[1].time) and t <= as_datetime(l[1].time) + timedelta(hours = 1)) }} - unique_id: billigste_timer_1_3 name: billigste_timer_1_3 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:]|sort(attribute='price') %} {% set t = now() %} {{ (t >= as_datetime(l[0].time) and t <= as_datetime(l[0].time) + timedelta(hours = 1)) or (t >= as_datetime(l[1].time) and t <= as_datetime(l[1].time) + timedelta(hours = 1)) or (t >= as_datetime(l[2].time) and t <= as_datetime(l[2].time) + timedelta(hours = 1)) }} 1 Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 Med nordpool integrasjonen kan en ofte oppleve at dagens billigste timer er mellom 23:00 og 0:00 samtidig som prisen fortsetter å falle utover natten. Da er det dumt å varme vannet mellom 23:00 og midnatt. Selvfølgelig kunne en også sjekke listen med morgendagens priser også, men da startet utfordringene. Nordpool integrasjonen sletter "dagens" priser ved midnatt og det som var morgendagens priser blir nye dagens priser. Det gjør det komplett umulig å lage mal-sensorer som vist ovenfor fordi historikken til prisene blir borte. Hvordan skal en finne de 2 billigste timene i løpet av natten når en ikke vet noe om det som skjedde før midnatt? Med entso-e integrasjonen er det nå blitt lett. Med nordpool-integrasjonen må en ty til automasjoner eller skripting sammen med hjelpe-sensorer. Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 (endret) Takk, da var jeg på rett spor med mine også. Har du innspill på hvordan man kan plukke fra bestemte tidsrom? Jeg har brukt denne med nordpool for å unngå å koble inn store laster i perioder hvor forbruket vanligvis er høyt, selv om de timene skulle være billigere: - platform: template sensors: billigste_6_timer_offpeak: value_template: >- {% set l = (state_attr('sensor.nordpool', 'raw_today') |selectattr('start', '<', now().replace(hour=6,minute=0,second=0,microsecond=0)) |list + state_attr('sensor.', 'raw_today') |selectattr('start', '>=', now().replace(hour=9,minute=0,second=0,microsecond=0)) |selectattr('start', '<', now().replace(hour=16,minute=0,second=0,microsecond=0)) | list + state_attr('sensor.', 'raw_today') |selectattr('start', '>=', now().replace(hour=21,minute=0,second=0,microsecond=0)) | list) | sort(attribute='value') %} {{ (now() >= l[0].start and now() <= l[0].end) or (now() >= l[1].start and now() <= l[1].end) or (now() >= l[2].start and now() <= l[2].end) or (now() >= l[3].start and now() <= l[3].end) or (now() >= l[4].start and now() <= l[4].end) or (now() >= l[5].start and now() <= l[5].end) }} Endret 7. november 2022 av thoralex Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 thoralex skrev (6 minutter siden): Har du innspill på hvordan man kan plukke fra bestemte tidsrom? Disse to gjør stort sett det samme {{state_attr('sensor.nordpool', 'raw_today') |selectattr('start', '>=', now().replace(hour=9,minute=0,second=0,microsecond=0)) |selectattr('start', '<', now().replace(hour=16,minute=0,second=0,microsecond=0)) | list }} {{state_attr('sensor.nordpool', 'raw_today')[9:16]}} Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 Glemte kanskje å presisere at jeg prøver å få det til basert på entso-e. Men jeg tror jeg fikk det til nå, må bruke bare 6 og ikke 06 i timene. - platform: template sensors: billigste_6_timer_entsoe_offpeak: value_template: >- {% set l= state_attr('sensor.entsoe', 'prices')[21:6] + state_attr('sensor.entsoe', 'prices')[9:16] |sort(attribute='price') %} {% set t = now() %} {{ (t >= as_datetime(l[0].time) and t <= as_datetime(l[0].time) + timedelta(hours = 1)) or (t >= as_datetime(l[1].time) and t <= as_datetime(l[1].time) + timedelta(hours = 1)) or (t >= as_datetime(l[2].time) and t <= as_datetime(l[2].time) + timedelta(hours = 1)) or (t >= as_datetime(l[3].time) and t <= as_datetime(l[3].time) + timedelta(hours = 1)) or (t >= as_datetime(l[4].time) and t <= as_datetime(l[4].time) + timedelta(hours = 1)) or (t >= as_datetime(l[5].time) and t <= as_datetime(l[5].time) + timedelta(hours = 1)) }} Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 (endret) thoralex skrev (16 minutter siden): state_attr('sensor.entsoe', 'prices')[21:6] Det er ikke timer som skal inn her, men indeks i listen (elementnummer). Så her må du bruke 21 og 31 Test det ut i Home Assistant sitt mal-verktøy med {{ state_attr('sensor.entsoe', 'prices')[9:16] }} for å se om listen du får, starter og stopper med riktig time. state_attr('sensor.average_electricity_price_today', 'prices')[21:31] + state_attr('sensor.average_electricity_price_today', 'prices')[33:41] Endret 7. november 2022 av stigvi Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 (endret) Men vær oppmerksom på at prices listen oppdateres klokken 14 så ditt ønske om billig pris fra 09 til 16 må du tenke mer på. Spørs om det ikke er lurt å dele det opp i to malsensorer...... Eller ha det slik du hadde med å bruke selectattr. Den søker jo opp timene uavhengig av hvor i listen den timen faktisk er og da unngår en problem med at alle prisene forskyves et døgn. Men du må være obs på døgnskifte når du bruker now() Endret 7. november 2022 av stigvi Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 (endret) Målet var å lage en liste og plukke de 6 billigste uavhengig av hvilken av de to periodene de er i. Eller rettere sagt: plukke de 6 billigste timene i et døgn untatt periodene 0600-0900 og 16-21. Nordpool sensoren jeg postet over fungerte etter hensikten bortsett fra at den oppdaterte ved midnatt som var et veldig ugunstig tidspunkt. Endret 7. november 2022 av thoralex Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 thoralex skrev (1 time siden): Målet var å lage en liste og plukke de 6 billigste uavhengig av hvilken av de to periodene de er i. Eller rettere sagt: plukke de 6 billigste timene i et døgn untatt periodene 0600-0900 og 16-21. Nordpool sensoren jeg postet over fungerte etter hensikten bortsett fra at den oppdaterte ved midnatt som var et veldig ugunstig tidspunkt. Det er enkelt å få til hvis entso-e alltid oppdateres klokken 14. Det er de dagene dette ikke skjer, som blir litt utfordrende. Perioden 0900 til 1600 ville jeg delt opp i to der 1400 var grensen mellom de. Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 Er det ikke bare å dele 1600? Eller rettere sagt starte 2100? state_attr('sensor.average_electricity_price_today', 'prices')[21:31] + state_attr('sensor.average_electricity_price_today', 'prices')[33:41] Er det ikke det denne templaten vil gjøre? Starte 2100 i dag og gå til 1600 i morra? Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 thoralex skrev (1 minutt siden): Er det ikke det denne templaten vil gjøre? Starte 2100 i dag og gå til 1600 i morra? Nei, for i morgen klokken 14 vil de to timene mellom 14 og 16 flytte seg fram 24 timer i listen. Hvis de har indeks 38 og 39 i dag, så er de på indeks 14 og 15 i morgen etter 1400 Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 (endret) Selvfølgelig, listen oppdateres jo der. Da har jeg endt opp med dette: - platform: template sensors: billigste_6_timer_entsoe_offpeak: value_template: >- {% set l= ( state_attr('sensor.entsoe', 'prices')[14:15]|list + state_attr('sensor.entsoe', 'prices')[21:30]|list + state_attr('sensor.entsoe', 'prices')[33:37]|list ) |sort (attribute='price') %} {% set t = now() %} {{ (t >= as_datetime(l[0].time) and t <= as_datetime(l[0].time) + timedelta(hours = 1)) or (t >= as_datetime(l[1].time) and t <= as_datetime(l[1].time) + timedelta(hours = 1)) or (t >= as_datetime(l[2].time) and t <= as_datetime(l[2].time) + timedelta(hours = 1)) or (t >= as_datetime(l[3].time) and t <= as_datetime(l[3].time) + timedelta(hours = 1)) or (t >= as_datetime(l[4].time) and t <= as_datetime(l[4].time) + timedelta(hours = 1)) or (t >= as_datetime(l[5].time) and t <= as_datetime(l[5].time) + timedelta(hours = 1)) }} Ser det fornuftig ut? Endret 7. november 2022 av thoralex Siter
stigvi Skrevet 7. november 2022 Forfatter Skrevet 7. november 2022 thoralex skrev (51 minutter siden): Ser det fornuftig ut? Det ser fornuftig ut, men om det er rett, vet jeg ikke. Det er i allefall ikke tidsperiodene du oppga i en tidligere post. 14:16 21:30 33:38 stemmer det? Siter
thoralex Skrevet 7. november 2022 Skrevet 7. november 2022 (endret) Jeg har nok rotet en del med tallene underveis ja, og er egentlig veldig usikker på hvordan det er riktig å bruke dem. Lista i sensoren starter jo på "00:00:00+01:00" som betyr klokka ett i mitt hode, men prisene skal vel gå fra midnatt så det kan jo ikke stemme? Og starter lista på 0 eller 1? Tallene er uansett bare veiledende, må fundere litt mer på hva som er optimalt. Edit: ser at jeg har tolket xx:xx som "fra og med":"til og med", mens det riktige ser ut til å være fra:til. Så 14:16 gir to timer og ikke tre som jeg trodde. Endret 7. november 2022 av thoralex Siter
havne Skrevet 10. november 2022 Skrevet 10. november 2022 Jeg pleier å stjele litt kode her og der, hvor jeg prøver å modifisere meg frem til noe jeg ønsker, men denne gangen sliter jeg litt, så håper dere har tid til å hjelpe meg. Jeg har tyvlånt en kodesnutt fra github, som gir meg de tre (eller antall ønsket) billigste timer med strøm ila natta (22-06), dette styrer bla.a VVB og lading av elbil sensors: billig_nattstrom: friendly_name: "Billig nattstrøm" value_template: >- {%- set ns = namespace(hour_price=[], cheapest_hour= false) %} {%- set cheap_hours = namespace(number=3) %} {% if state_attr("sensor.strompris", "tomorrow_valid")==true %} {% for i in range(22, 24) %} {% set ns.hour_price = ns.hour_price + [(i, states.sensor.strompris.attributes.raw_today[i].price)] %} {%- endfor -%} {% for i in range(0, 7) %} {% set ns.hour_price = ns.hour_price + [(i, states.sensor.strompris.attributes.raw_tomorrow[i].price)] %} {%- endfor -%} {% else %} {% for i in range(0, 7) %} {% set ns.hour_price = ns.hour_price + [(i, states.sensor.strompris.attributes.raw_today[i].price)] %} {%- endfor -%} {% endif %} {% set hour_price_dict = dict.from_keys(ns.hour_price) %} {% set sorted_hour_price_dict = hour_price_dict.items()|sort(attribute='1') %} {% for i in range(0, cheap_hours.number) %} {% if sorted_hour_price_dict[i].0 == now().hour %} {% set ns.cheapest_hour = true %} {% else %} {% set ns.cheapest_hour = false %} {% endif %} {%- endfor -%} {{ ns.cheapest_hour }} sorted_hour_price_dict i koden gir meg biligste timer i stigende rekkefølge: [(1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (0, 1), (6, 1), (23, 10), (22, 15)] Det jeg ønsker er å printe ut klokkeslettet for de billigste timene (tallet til venstre). sorted_hour_price_dict.0 gir meg (1, 0) sorted_hour_price_dict.1 gir meg parentes nr 2 i listen, etc. Et fint resultat hadde vært om utfallet blir "Kl 0-3" eller "Kl 2-6" hvis man har puttet inn ønske om de 4 billigste timer, etc. Håper dere kan hjelpe! Siter
stigvi Skrevet 11. november 2022 Forfatter Skrevet 11. november 2022 thoralex skrev (På 7.11.2022 den 14.36): Selvfølgelig, listen oppdateres jo der. Da har jeg endt opp med dette: - platform: template sensors: billigste_6_timer_entsoe_offpeak: value_template: >- {% set l= ( state_attr('sensor.entsoe', 'prices')[14:15]|list + state_attr('sensor.entsoe', 'prices')[21:30]|list + state_attr('sensor.entsoe', 'prices')[33:37]|list ) |sort (attribute='price') %} {% set t = now() %} {{ (t >= as_datetime(l[0].time) and t <= as_datetime(l[0].time) + timedelta(hours = 1)) or (t >= as_datetime(l[1].time) and t <= as_datetime(l[1].time) + timedelta(hours = 1)) or (t >= as_datetime(l[2].time) and t <= as_datetime(l[2].time) + timedelta(hours = 1)) or (t >= as_datetime(l[3].time) and t <= as_datetime(l[3].time) + timedelta(hours = 1)) or (t >= as_datetime(l[4].time) and t <= as_datetime(l[4].time) + timedelta(hours = 1)) or (t >= as_datetime(l[5].time) and t <= as_datetime(l[5].time) + timedelta(hours = 1)) }} Ser det fornuftig ut? En enklere måte er å gjøre som dette (etter inspirasjon fra et annet innlegg i dag) {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:38]|sort(attribute='price') %} {% set t = now().hour %} {{ (t == as_datetime(l[1].time).hour) or (t == as_datetime(l[1].time).hour) }} Siter
Gunnar-K Skrevet 21. januar 2023 Skrevet 21. januar 2023 stigvi skrev (På 16.10.2022 den 18.18): Et alternativ til Nordpool integrasjonen, er Entso-e. Til Entso-e er det nettopp laget en integrasjon til Home Assistant og den finnes her, https://github.com/JaccoR/hass-entso-e På samme måte som i Nordpool integrasjonen så kan en legge til nettleie på prisen. Denne gjør det derimot litt annerledes så malene er ikke helt like. Min mal for å gjøre om euro til kroner og legge til nettleie, ser slik ut. {% set s = { "day": 0.6676, "night": 0.5426, "cert": 0.01, "vat": 1.25, "eur": 10.36 } %} {% if now().isoweekday() >= 1 and now().isoweekday() <= 5 %} {% if now().hour >= 6 and now().hour < 22 %} {{(current_price * s.eur * s.vat + s.day + s.cert) | float}} {% else %} {{(current_price * s.eur * s.vat + s.night + s.cert) | float}} {% endif %} {% else %} {{(current_price * s.eur * s.vat + s.night + s.cert) | float}} {% endif %} @stigvi , jeg modifiserte denne litt for å få med Elvias satser for januar - mars, og april - desember, og la malen inn i Entso-e integrasjonen. Fungerer fint! Men jeg har bruk for spotprisene både med og uten nettleie, siden jeg har solceller, og muligens kommer til å selge overskuddskraft. Jeg tenkte at jeg kunne fjerne koden fra integrasjonen, og heller bruke den i en "ekstern" mal-sensor? Men koden kan kanskje ikke brukes uten videre? Hva er dette slags "språk"? Siter
thoralex Skrevet 21. januar 2023 Skrevet 21. januar 2023 21 minutes ago, Gunnar-K said: @stigvi , jeg modifiserte denne litt for å få med Elvias satser for januar - mars, og april - desember, og la malen inn i Entso-e integrasjonen. Fungerer fint! Men jeg har bruk for spotprisene både med og uten nettleie, siden jeg har solceller, og muligens kommer til å selge overskuddskraft. Jeg tenkte at jeg kunne fjerne koden fra integrasjonen, og heller bruke den i en "ekstern" mal-sensor? Men koden kan kanskje ikke brukes uten videre? Hva er dette slags "språk"? Du kan ha flere Entso-e integrasjoner, det er kanskje det enkleste? Jeg har en med og en uten nettleie, fungerer perfekt! 1 Siter
stigvi Skrevet 21. januar 2023 Forfatter Skrevet 21. januar 2023 Gunnar-K skrev (1 time siden): @stigvi , jeg modifiserte denne litt for å få med Elvias satser for januar - mars, og april - desember, og la malen inn i Entso-e integrasjonen. Fungerer fint! Men jeg har bruk for spotprisene både med og uten nettleie, siden jeg har solceller, og muligens kommer til å selge overskuddskraft. Jeg tenkte at jeg kunne fjerne koden fra integrasjonen, og heller bruke den i en "ekstern" mal-sensor? Men koden kan kanskje ikke brukes uten videre? Hva er dette slags "språk"? "Språket" er standard jinja2 som brukes i mal-sensorer i HA. Men både Nordpool og Entso-e integrasjonen overstyrer now() funksjonen så det er ikke så lett å bruke disse malene til noe annet enn i entso-e 1 Siter
Gunnar-K Skrevet 22. januar 2023 Skrevet 22. januar 2023 thoralex skrev (16 timer siden): Du kan ha flere Entso-e integrasjoner, det er kanskje det enkleste? Jeg har en med og en uten nettleie, fungerer perfekt! Takker! Det løser problemet🙂 Siter
Gunnar-K Skrevet 26. januar 2023 Skrevet 26. januar 2023 Mal-sensoren (billigste_timer_1_6, etter mønster fra stigvi) for å finne de billigste timene virker fint, men automasjonen min slår aldri ut. Sikkert noe banalt, ser slik ut for å slå på: - id: '1674599131167' alias: bereder_paa description: Slå på bereder trigger: - platform: state entity_id: - sensor.billigste_timer_1_6 from: 'false' to: 'true' condition: [] action: - type: turn_on device_id: 0d7f8d04e25596dd5c7e468371f8bfc5 entity_id: switch.bereder_kjeller_socket_1 domain: switch mode: single Siter
Gunnar-K Skrevet 28. januar 2023 Skrevet 28. januar 2023 Gunnar-K skrev (På 26.1.2023 den 17.23): Mal-sensoren (billigste_timer_1_6, etter mønster fra stigvi) for å finne de billigste timene virker fint, men automasjonen min slår aldri ut. Sikkert noe banalt, ser slik ut for å slå på: - id: '1674599131167' alias: bereder_paa description: Slå på bereder trigger: - platform: state entity_id: - sensor.billigste_timer_1_6 to: 'True' condition: [] action: - type: turn_on device_id: 0d7f8d04e25596dd5c7e468371f8bfc5 entity_id: switch.bereder_kjeller_socket_1 domain: switch mode: single Tok bort from: og endret true til True, slik som det kommer opp om jeg kjører billigste_timer_1_6 i mal-debuggeren. Ser ut til å ha fungert i natt. Tenkte å legge inn en repeat-funksjon for å vekke smart-pluggen noen ganger. Redigerte direkte i automations.yaml fila. Får ingen feilmelding, men automasjonen forsvinner fra Innstillinger -> automasjoner. Mulig det fungerer likevel. får prøve i natt. Siter
stigvi Skrevet 28. januar 2023 Forfatter Skrevet 28. januar 2023 Gunnar-K skrev (5 timer siden): Hvis du i HA kikker på tilstander i det som heter utviklerverktøy så vil du se at ingen binære sensorer har tilstanden False, false, true eller True. De har enten off eller on (med små bokstaver). At det virker med True og ikke true er nok fordi python vil ha det slik. Men det som skjer er at din automasjon må konvertere True til on. Det beste er egentlig å bruke de tilstandene som sensoren har, nemlig on og off. Siter
Gunnar-K Skrevet 28. januar 2023 Skrevet 28. januar 2023 OK. Jeg var usikker på om mal-sensoren "billigste_timer_1_6" er en binær sensor eller ikke. Under tilstander står den ihvertfall til False eller True. Siter
stigvi Skrevet 29. januar 2023 Forfatter Skrevet 29. januar 2023 (endret) Gunnar-K skrev (10 timer siden): OK. Jeg var usikker på om mal-sensoren "billigste_timer_1_6" er en binær sensor eller ikke. Under tilstander står den ihvertfall til False eller True. Merkelig. Hos meg er den on og off. Hvordan ser din malsensor ut? Endret 29. januar 2023 av stigvi 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.