skefre Skrevet 25. oktober 2021 Skrevet 25. oktober 2021 stigvi skrev (På 28.1.2021 den 6.35): Her er et tips til hvordan en i Home Assistant finner de timene som har billigst strøm. Start med å legge inn en Nordpool integrasjon. Jeg bruker denne: custom-components/nordpool: nordpool sensor for ha. (github.com) Enklest er vel å legge den inn via HACS..... Så oppretter du denne mal-sensoren: binary_sensor: - platform: template sensors: billigste_4_timer: value_template: >- {% set l=state_attr('sensor.nordpool_kwh_xxxxxx_xxx_x_xx_xxx', 'raw_today')|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) }} Bytt navn på nordpool sensor til det du har valgt. Denne sorterer raw_today på pris og så bruker en de 4 billigste timene til å avgjøre om den skal være true eller false. En svakhet er at den ikke vil oppdatere seg hvis prisen er uforandret fra en time til en annen, men skjer det? Men en kan legge inn {% set x = states("sensor.time") %} som en linje øverst hvis en bekymrer seg for det. De dyreste timene vil ha indeks 20, 21, 22 og 23 hvis en heller vil ha de istedenfor billigste. Har noen en god løsning, tilsvarende denne, for å finne timene med laveste strømpris innenfor et gitt tidsintervall, for eksempel mellom klokken 16-24? Siter
stigvi Skrevet 25. oktober 2021 Forfatter Skrevet 25. oktober 2021 skefre skrev (1 time siden): Har noen en god løsning, tilsvarende denne, for å finne timene med laveste strømpris innenfor et gitt tidsintervall, for eksempel mellom klokken 16-24? Du endrer til dette for å få billigste time etter 16 {% set l=state_attr('sensor.nordpool', 'raw_today')|selectattr('start', '>=', now().replace(hour=16,minute=0,second=0,microsecond=0))|sort(attribute='value') %} 2 Siter
skefre Skrevet 25. oktober 2021 Skrevet 25. oktober 2021 stigvi skrev (3 timer siden): Du endrer til dette for å få billigste time etter 16 {% set l=state_attr('sensor.nordpool', 'raw_today')|selectattr('start', '>=', now().replace(hour=16,minute=0,second=0,microsecond=0))|sort(attribute='value') %} Takker så mye! Hvis sluttidspunktet ikke er 24, eksempelvis 08-15, hva blir det da? Ut fra min begrensede kompetanse her, så klarer jeg nemlig ikke å se hvordan jeg skal skrive om koden over for å få til det Siter
stigvi Skrevet 25. oktober 2021 Forfatter Skrevet 25. oktober 2021 skefre skrev (10 minutter siden): Takker så mye! Hvis sluttidspunktet ikke er 24, eksempelvis 08-15, hva blir det da? Ut fra min begrensede kompetanse her, så klarer jeg nemlig ikke å se hvordan jeg skal skrive om koden over for å få til det Det enkleste er bare å slenge på en ny selectattr...... {% set l=state_attr('sensor.nordpool', 'raw_today')|selectattr('start', '>=', now().replace(hour=8,minute=0,second=0,microsecond=0))|selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))|sort(attribute='value') %} 2 Siter
gjarumja Skrevet 14. november 2021 Skrevet 14. november 2021 Hei, Er det noen som har noen triks på lur for å få ut timene med billig pris for manuell planlegging mellom angitt tidvindu? F eks billigste pris mellom kl 16 og 23 er fra kl 20-22 Siter
stigvi Skrevet 14. november 2021 Forfatter Skrevet 14. november 2021 gjarumja skrev (14 minutter siden): Hei, Er det noen som har noen triks på lur for å få ut timene med billig pris for manuell planlegging mellom angitt tidvindu? F eks billigste pris mellom kl 16 og 23 er fra kl 20-22 Billigste pris er i element 0 siden tabellen er sortert på pris. Og da kan du bruke start og end for å hente klokkeslett. {% set l=state_attr('sensor.nordpool', 'raw_today')|sort(attribute='value') %} {{ l[0].start }} Siter
gjarumja Skrevet 15. november 2021 Skrevet 15. november 2021 stigvi skrev (16 timer siden): Billigste pris er i element 0 siden tabellen er sortert på pris. Og da kan du bruke start og end for å hente klokkeslett. {% set l=state_attr('sensor.nordpool', 'raw_today')|sort(attribute='value') %} {{ l[0].start }} Ha du et eksempel som inneholder hele sensoren? Siter
ThoStaKa Skrevet 15. november 2021 Skrevet 15. november 2021 5 hours ago, gjarumja said: Ha du et eksempel som inneholder hele sensoren? Nå har jeg ikke testet dette noe annet sted enn i Templates, men noe slikt burde kanskje være en greit start? Denne er vel "True" de 4 billigste timene, da. {% set l=state_attr('sensor.nordpool', 'raw_today')|selectattr('start', '>=', now().replace(hour=7,minute=0,second=0,microsecond=0))|selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))|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) }} Siter
stigvi Skrevet 16. november 2021 Forfatter Skrevet 16. november 2021 gjarumja skrev (På 15.11.2021 den 1.44): Ha du et eksempel som inneholder hele sensoren? template: - sensor: - unique_id: billigste_time_tidspunkt name: billigste_time_tidspunkt state: >- {% set l=state_attr('sensor.nordpool', 'raw_today')|sort(attribute='value') %} {{ l[0].start.strftime('%H:%M') }} 1 Siter
gjarumja Skrevet 16. november 2021 Skrevet 16. november 2021 stigvi skrev (12 timer siden): template: - sensor: - unique_id: billigste_time_tidspunkt name: billigste_time_tidspunkt state: >- {% set l=state_attr('sensor.nordpool', 'raw_today')|sort(attribute='value') %} {{ l[0].start.strftime('%H:%M') }} Tusen takk!! Fikk det til med litt modifisering. De som var allikevel rart er at billig periode idag fungerer, men imorgen fungerer ikke... Noen ideer om hva som er galt? - name: "Billigste periode idag" state: >- {% set l=state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'raw_today')|selectattr('start', '>=', now().replace(hour=7,minute=0,second=0,microsecond=0))|selectattr('start', '<', now().replace(hour=23,minute=59,second=0,microsecond=0))|sort(attribute='value') %} {{ l[4].start.strftime('%H:%M') }} {{ "-" }} {{ l[0].start.strftime('%H:%M') }} - name: "Billigste periode imorgen" state: >- {% set l=state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'raw_tomorrow')|selectattr('start', '>=', now() + timedelta(days=1).replace(hour=7,minute=0,second=0,microsecond=0))|selectattr('start', '<', now().replace(hour=23,minute=59,second=0,microsecond=0))|sort(attribute='value') %} {{ l[4].start.strftime('%H:%M') }} {{ "-" }} {{ l[0].start.strftime('%H:%M') }} Siter
Boxer Skrevet 3. desember 2021 Skrevet 3. desember 2021 Mye interessant her. Jeg har selv testet litt med automatiserte strømsparetiltak basert på %lav evt %høy pris, men opplever at priskurvene er så ulike fra dag til dag at det er vanskelig å få det til å treffe godt. F.eks kan en dag plutselig ha veldig mange timer med «dyr strøm», og da blir badegulvet for kaldt. Så langt har jeg derfor konkludert med at jeg må ha med en tidsfaktor. Altså f.eks dyreste 2 timer innen en 6 timers periode (gulvvarme reduksjon). Eller billigste 3 timer i løpet av de neste 12 timene(tørketrommel), eller billigste 6 timer innen kl 0800(elbillader). Noen andre som tenker likt og som har fått dette til? Siter
Kal-El Skrevet 9. januar 2022 Skrevet 9. januar 2022 stigvi skrev (På 28.1.2021 den 6.35): Her er et tips til hvordan en i Home Assistant finner de timene som har billigst strøm. Jeg har lagt inn denne og opprettet et entity-kort. Vil tro det viser "off" når prisen er utenfor de fire billigste timene og "on" når prisen er innenfor de fire billigste timene. Et smart bruksområde for denne sensoren tenker jeg er VVB og panelovner i rom som ikke nødvendigvis må ha jevn varme. Jeg har opprettet automasjoner så jeg får skrudd VVB på i de billigste fire timene. Men jeg finner ikke helt måten å skru av enheten når prisen er utenfor... Det høres ut som det skulle være en enkel sak å få til, men jeg ser ikke helt løsningen... Noen tips? Siter
Bjonness Skrevet 9. januar 2022 Skrevet 9. januar 2022 Kal-El skrev (8 timer siden): Jeg har lagt inn denne og opprettet et entity-kort. Vil tro det viser "off" når prisen er utenfor de fire billigste timene og "on" når prisen er innenfor de fire billigste timene. Et smart bruksområde for denne sensoren tenker jeg er VVB og panelovner i rom som ikke nødvendigvis må ha jevn varme. Jeg har opprettet automasjoner så jeg får skrudd VVB på i de billigste fire timene. Men jeg finner ikke helt måten å skru av enheten når prisen er utenfor... Det høres ut som det skulle være en enkel sak å få til, men jeg ser ikke helt løsningen... Noen tips? Når state = off så skrur du av vvb, er vel ganske rett fram? Du kan jo starte med å dele automasjonene du har laget allerede, lettere å hjelpe da. Siter
Kal-El Skrevet 9. januar 2022 Skrevet 9. januar 2022 Bjonness skrev (1 time siden): Når state = off så skrur du av vvb, er vel ganske rett fram? Det burde jo være det, har ikke lang fartstid med HA så det er sikkert noe åpenlyst jeg ikke ser... Automasjonen for å skru på har jeg laget slik: alias: VVB på - billigste 4 timer description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer condition: [] action: - type: turn_on device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single Så prøvde jeg meg på et skudd i blinde for å skru av når det ikke var innenfor de billigste 4 timer, men denne skrur av VVB med en gang den første automasjonen skrur den på så "conditions" som jeg prøve å legge inn fungerer vel heller dårlig: alias: 'VVB av - ikke billigste 4 timer ' description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer attribute: friendly_name condition: - condition: not conditions: - condition: state entity_id: binary_sensor.billigste_4_timer state: '' action: - type: turn_off device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single Siter
stigvi Skrevet 9. januar 2022 Forfatter Skrevet 9. januar 2022 Kal-El skrev (3 minutter siden): Det burde jo være det, har ikke lang fartstid med HA så det er sikkert noe åpenlyst jeg ikke ser... Automasjonen for å skru på har jeg laget slik: alias: VVB på - billigste 4 timer description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer condition: [] action: - type: turn_on device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single Så prøvde jeg meg på et skudd i blinde for å skru av når det ikke var innenfor de billigste 4 timer, men denne skrur av VVB med en gang den første automasjonen skrur den på så "conditions" som jeg prøve å legge inn fungerer vel heller dårlig: alias: 'VVB av - ikke billigste 4 timer ' description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer attribute: friendly_name condition: - condition: not conditions: - condition: state entity_id: binary_sensor.billigste_4_timer state: '' action: - type: turn_off device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single Den første du har øverst her vil kjøre uansett endring så den utføres både når billigste timere går av og på. Du må legge inn en betingelse på at den kun skal kjøres når den går fra off til on. Det er greit å ta med fra off til on så slipper du problem med at den kjøres når den går fra unavailable til on. Det gjør den i oppstart av HA, feks. 1 Siter
Kal-El Skrevet 9. januar 2022 Skrevet 9. januar 2022 stigvi skrev (18 minutter siden): Du må legge inn en betingelse på at den kun skal kjøres når den går fra off til on Vil disse to gjøre nytten da? alias: VVB på - billigste 4 timer description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer from: 'off' to: 'on' condition: [] action: - type: turn_on device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single alias: 'VVB av - ikke billigste 4 timer ' description: '' trigger: - platform: state entity_id: binary_sensor.billigste_4_timer id: binary_sensor.billigste_4_timer attribute: friendly_name from: 'on' to: 'off' condition: [] action: - type: turn_off device_id: 97e7388e393e3c9381be7c1c1fb555ad entity_id: switch.lumi_lumi_plug_mmeu01_on_off domain: switch mode: single Eller vil det beste være å (som du kanskje råder meg til) og kutte ut "from: 'on' to: 'off'" delen i triggeren og legge inn betingelsen: condition: - condition: state entity_id: binary_sensor.billigste_4_timer state: 'off' Siter
stigvi Skrevet 9. januar 2022 Forfatter Skrevet 9. januar 2022 Sånn som du har det nå er helt topp. Se om ikke det virker som det skal. 1 Siter
Falense Skrevet 21. februar 2022 Skrevet 21. februar 2022 (endret) import datetime @time_trigger("cron(1 * * * *)") def update_saving_hours(): today_prices = state.getattr(sensor.nordpool_kwh_oslo_nok_3_00_025).get("today") hour_price_pairs = zip(range(24), today_prices) hour_price_pairs = sorted(hour_price_pairs, key=lambda v: v[1]) most_expensive_today = {} for i,(hour, price) in enumerate(hour_price_pairs): most_expensive_today[hour] = i tomorrow_prices = state.getattr(sensor.nordpool_kwh_oslo_nok_3_00_025).get("tomorrow") hour_price_pairs = zip(range(24), tomorrow_prices) hour_price_pairs = sorted(hour_price_pairs, key=lambda v: v[1]) most_expensive_tomorrow = {} for i,(hour, price) in enumerate(hour_price_pairs): most_expensive_tomorrow[hour] = i now = datetime.datetime.now() current_hour = now.hour log.info("Ran power saving script at %s" % now) for i in range(1,24): least_n_expensive = [{v: most_expensive_today[v] < i} for v in range(0,24)] least_n_expensive_tomorrow = [{v: most_expensive_tomorrow[v] < i} for v in range(0,24)] state.set("sensor.powersaving_%s_least_expensive" %i, most_expensive_today[current_hour] < i, new_attributes={"today_prices": today_prices, "today": least_n_expensive, "tomorrow_prices": tomorrow_prices, "tomorrow": least_n_expensive_tomorrow})#, new_attributes={"hours": }) n_most_expensive = [{v: most_expensive_today[v] > 23-i} for v in range(0,24)] n_most_expensive_tomorrow = [{v: most_expensive_tomorrow[v] > 23-i} for v in range(0,24)] state.set("sensor.powersaving_%s_most_expensive" %i, most_expensive_today[current_hour] > 23-i, new_attributes={"today_prices": today_prices, "today": n_most_expensive, "tomorrow_prices": tomorrow_prices, "tomorrow": n_most_expensive_tomorrow})#, new_attributes={"hours:": map(lambda v: most_expensive[current_hour] >= i, range(0,24))}) Jeg syntes det ble litt tungvindt med template for hver time så jeg skrev dette snippet som kan brukes med pyscript (som finnes under HACS). Denne lager 23 sensorer med billigste og dyreste time. Husk å bytt ut "nordpool_kwh_oslo_nok_3_00_025" med din sensor. Endret 22. februar 2022 av Falense Fikset en bug 3 Siter
hellowlol Skrevet 21. februar 2022 Skrevet 21. februar 2022 Falense skrev (19 minutter siden): import datetime @time_trigger("cron(1 * * * *)") def update_saving_hours(): today_prices = state.getattr(sensor.nordpool_kwh_oslo_nok_3_00_025).get("today") hour_price_pairs = zip(range(24), today_prices) hour_price_pairs = sorted(hour_price_pairs, key=lambda v: v[1]) most_expensive_today = {} for i,(hour, price) in enumerate(hour_price_pairs): most_expensive_today[hour] = i tomorrow_prices = state.getattr(sensor.nordpool_kwh_oslo_nok_3_00_025).get("tomorrow") hour_price_pairs = zip(range(24), tomorrow_prices) hour_price_pairs = sorted(hour_price_pairs, key=lambda v: v[1]) most_expensive_tomorrow = {} for i,(hour, price) in enumerate(hour_price_pairs): most_expensive_tomorrow[hour] = i now = datetime.datetime.now() current_hour = now.hour log.info("Ran power saving script at %s" % now) for i in range(1,24): least_n_expensive = [{v: most_expensive_today[v] < i} for v in range(0,24)] least_n_expensive_tomorrow = [{v: most_expensive_tomorrow[v] < i} for v in range(0,24)] state.set("sensor.powersaving_%s_least_expensive" %i, most_expensive_today[current_hour] < i, new_attributes={"today_prices": today_prices, "today": least_n_expensive, "tomorrow_prices": tomorrow_prices, "tomorrow": least_n_expensive_tomorrow})#, new_attributes={"hours": }) n_most_expensive = [{v: most_expensive_today[v] > 23-i} for v in range(0,24)] n_most_expensive_tomorrow = [{v: most_expensive_tomorrow[v] > 23-i} for v in range(0,24)] state.set("sensor.powersaving_%s_most_expensive" %i, most_expensive_today[23-current_hour] > i, new_attributes={"today_prices": today_prices, "today": n_most_expensive, "tomorrow_prices": tomorrow_prices, "tomorrow": n_most_expensive_tomorrow})#, new_attributes={"hours:": map(lambda v: most_expensive[current_hour] >= i, range(0,24))}) Jeg syntes det ble litt tungvindt med template for hver time så jeg skrev dette snippet som kan brukes med pyscript (som finnes under HACS). Denne lager 23 sensorer med billigste og dyreste time. Husk å bytt ut "nordpool_kwh_oslo_nok_3_00_025" med din sensor. Jeg klarer ikke helt forstå hva du prøver på, mulig det er pga formateringen blir rar på mobilen så jeg klarer ikke lese koden enkelt. Men det ser veldig mye mer komplisert ut enn det trenger å være. Du kan bruke raw_today og raw_tomorrow for å gjøre ting enklere. Fint bidrag! 1 Siter
Falense Skrevet 22. februar 2022 Skrevet 22. februar 2022 Istedenfor at man må bestemme seg hvor mange av de dyreste timene man vil unngå så kan nå hver enhet få sin egen strømstyring basert på hvor mye man er villig til å ofre. Sensorene oppdateres automatisk hver time (et minutt over hel) og hver sensor har "timeplanen" som tilleggs attributt. 1 Siter
Gunnar-K Skrevet 21. juni 2022 Skrevet 21. juni 2022 Er nybegynner på HA. Får til å hente strømpriser, og binary_sensor.billigste_4_timer ser ut til å fungere. Men min enkle automatisering virker ikke. Forsøker å skru på bereder innenfor de 4 billigste timer, og av ellers. Innholdet i automations.yaml er slik: alias: Bereder av description: Slå av bereder utenfor de 4 billigste timer trigger: - platform: state entity_id: - binary_sensor.billigste_4_timer from: 'on' to: 'off' condition: [] action: - type: turn_off device_id: 0d7f8d04e25596dd5c7e468371f8bfc5 entity_id: switch.bereder_kjeller_socket_1 domain: switch mode: single alias: Bereder på description: Slå på bereder innenfor de 4 billigste timer trigger: - platform: state entity_id: - binary_sensor.billigste_4_timer from: 'off' to: 'on' condition: [] action: - type: turn_on device_id: 0d7f8d04e25596dd5c7e468371f8bfc5 entity_id: switch.bereder_kjeller_socket_1 domain: switch mode: single Loggen ser slik ut for bereder av: "Bereder av utløst av tilstanden..." kl 05:00:00 tror jeg stemmer, men berederen var da allerede på, og har stått på hele tiden. Noen som ser noe muffens? Siter
Gunnar-K Skrevet 21. juni 2022 Skrevet 21. juni 2022 (endret) Kanskje det egentlig virker? Ser sånn ut på historiegrafen, men bereder av og bereder på er grønn (på) hele tiden. Er det bare for å indikere at automasjonen kjører? Bereder kjeller socket 1 ser ut til å følge billigste_4_timer. Endret 21. juni 2022 av Gunnar-K Siter
RVM Skrevet 22. juni 2022 Skrevet 22. juni 2022 Gunnar-K skrev (8 timer siden): [...] bereder av og bereder på er grønn (på) hele tiden. Er det bare for å indikere at automasjonen kjører? Jepp, det viser bare at automasjonen ikke er deaktivert. Automasjoner som objekt er omtrent som en switch, og kan skrus av og på med sine egne services ("automation.toggle" osv.). Ser ut som automasjonen virker ja, men det kan bli en del støy i logbook når man restarter HA ofte eller enheter dropper ut og inn. Siter
RVM Skrevet 22. juni 2022 Skrevet 22. juni 2022 Falense skrev (På 21.2.2022 den 22.28): [...pyscript...] Jeg syntes det ble litt tungvindt med template for hver time så jeg skrev dette snippet som kan brukes med pyscript (som finnes under HACS). Denne lager 23 sensorer med billigste og dyreste time. Husk å bytt ut "nordpool_kwh_oslo_nok_3_00_025" med din sensor. Jeg bruker også pyscript til omtrent samme formål, og essensen hos meg er: [...] today = [e for e in pyscript.electricity_prices.today if type(e) is float] # Remove any Nones today_dict = {} for i, v in enumerate(today): today_dict[i] = v today_prices_sorted_dict = {k: v for k, v in sorted(today_dict.items(), key=lambda item: item[1])} today_prices_sorted_list = [k for k,v in today_prices_sorted_dict.items()] state.setattr("pyscript.electricity_prices.today_hours_by_price_dict", today_prices_sorted_dict) state.setattr("pyscript.electricity_prices.today_hours_by_price_list", today_prices_sorted_list) [...] Så bruker jeg de sorterte dict- eller list-objektene avhengig av hva jeg vil oppnå. Siter
Gunnar-K Skrevet 22. juni 2022 Skrevet 22. juni 2022 RVM skrev (14 timer siden): Jepp, det viser bare at automasjonen ikke er deaktivert. Automasjoner som objekt er omtrent som en switch, og kan skrus av og på med sine egne services ("automation.toggle" osv.). Ser ut som automasjonen virker ja, men det kan bli en del støy i logbook når man restarter HA ofte eller enheter dropper ut og inn. Hm.. etter et døgn ser det ut til at det bare virker av og til. Misset minst ett påslag, slik at berederen ble stående avslått hele dagen. Det var nok ikke bare 20-åringen som dusja en time eller to.. Er det noe ekstra betingelse en bør legge inn for å få det mere stabilt? Fra loggen ser det ut til at smartpluggen slo seg på 22:09:12 21/6, og av igjen 22:09:15, altså 3 sekunder senere.. Vet ikke hva som skjer i et slikt tilfelle? 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.