Teknor Skrevet 22. juni 2023 Skrevet 22. juni 2023 Jeg har i dag en HomeAssistant-automatikk som aktiverer VVB når timesprisen er rimeligere enn gjennomsnittet for døgnet basert på følgnde YAML kode: binary_sensor: - name: "Pris er billigere enn gjennomsnitt" state: > {% set average = state_attr('sensor.nordpool_kwh_krsand_nok_2_10_025', 'average') | float(default=0) %} {% set timeprice = states('sensor.nordpool_kwh_krsand_nok_2_10_025') | float(default=0) %} {{ timeprice < average }} Har funnet ut at min varmvannsbereder må være aktiv i 4-6 timer i løpet av døgnet for varme opp varmtvannsbehovet, så en løsning hvor VVB aktiveres når prisen er blant de seks billigste timene ville vært enda mer optimalt. Og når ingen er hjemme burde automatikken kun aktivere VVB i den timen prisen er billigst (som burde være nok for å varme vannet til 78 grader en gang i løpet av døgnet). Har noen tips til YAML kode som gir meg template sensorer som inkluderer en sånn rangering? Vil tro behovet også er relevant for en del andre HA brukere. Siter
thoralex Skrevet 22. juni 2023 Skrevet 22. juni 2023 Det er diskutert flere steder her på forumet før, blant annet i denne tråden: Jeg bruker samme prinsipp men gikk over til entso-e da den integrasjonen kom. 1 Siter
Teknor Skrevet 22. juni 2023 Forfatter Skrevet 22. juni 2023 Takk - da får jeg sette meg inn i den tråden og entso-e. Siter
stigvi Skrevet 22. juni 2023 Skrevet 22. juni 2023 Her er en rekke eksempler. De baseres på data fra entso-e integrasjonen. De to nederste sensorene er for lading av bil og der er det fleksibelt antall timer ut i fra trinn på nettleie. - unique_id: billigste_timer_1_1 name: billigste_timer_1_1 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) }} - unique_id: billigste_timer_1_2 name: billigste_timer_1_2 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) }} - unique_id: billigste_timer_1_3 name: billigste_timer_1_3 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) }} - unique_id: billigste_timer_1_4 name: billigste_timer_1_4 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) or (t == as_datetime(l[3].time).hour and d == as_datetime(l[3].time).day) }} - unique_id: billigste_timer_1_5 name: billigste_timer_1_5 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) or (t == as_datetime(l[3].time).hour and d == as_datetime(l[3].time).day) or (t == as_datetime(l[4].time).hour and d == as_datetime(l[4].time).day) }} - unique_id: billigste_timer_1_6 name: billigste_timer_1_6 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[14:39]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) or (t == as_datetime(l[3].time).hour and d == as_datetime(l[3].time).day) or (t == as_datetime(l[4].time).hour and d == as_datetime(l[4].time).day) or (t == as_datetime(l[5].time).hour and d == as_datetime(l[5].time).day) }} - unique_id: billigste_timer_1_18 name: billigste_timer_1_18 state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices_today')|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ not ((t == as_datetime(l[18].time).hour and d == as_datetime(l[18].time).day) or (t == as_datetime(l[19].time).hour and d == as_datetime(l[19].time).day) or (t == as_datetime(l[20].time).hour and d == as_datetime(l[20].time).day) or (t == as_datetime(l[21].time).hour and d == as_datetime(l[21].time).day) or (t == as_datetime(l[22].time).hour and d == as_datetime(l[22].time).day) or (t == as_datetime(l[23].time).hour and d == as_datetime(l[23].time).day)) }} - unique_id: billigste_lading_venstre name: billigste_lading_venstre state: >- {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[16:29]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t >= 5 and t < 16) or (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) or (t == as_datetime(l[3].time).hour and d == as_datetime(l[3].time).day) }} - unique_id: billigste_lading_hoyre name: billigste_lading_hoyre state: >- {% set trinn = float(states('input_select.nettleie_pristrinn')) < 6 %} {% set l=state_attr('sensor.average_electricity_price_today', 'prices')[16:iif(trinn, 27, 29)]|sort(attribute='price') %} {% set t = now().hour %} {% set d = now().day %} {{ (t >= iif(trinn, 3, 5) and t < 15) or (t == as_datetime(l[0].time).hour and d == as_datetime(l[0].time).day) or (t == as_datetime(l[1].time).hour and d == as_datetime(l[1].time).day) or (t == as_datetime(l[2].time).hour and d == as_datetime(l[2].time).day) or (t == as_datetime(l[3].time).hour and d == as_datetime(l[3].time).day) or iif(trinn, (t == as_datetime(l[4].time).hour and d == as_datetime(l[4].time).day), false) or iif(trinn, (t == as_datetime(l[5].time).hour and d == as_datetime(l[5].time).day), false) or iif(trinn, (t == as_datetime(l[6].time).hour and d == as_datetime(l[6].time).day), false)}} Siter
VikingOy Skrevet 23. juni 2023 Skrevet 23. juni 2023 (endret) Teknor skrev (På 22.6.2023 den 9.45): Jeg har i dag en HomeAssistant-automatikk som aktiverer VVB når timesprisen er rimeligere enn gjennomsnittet for døgnet basert på følgnde YAML kode: binary_sensor: - name: "Pris er billigere enn gjennomsnitt" state: > {% set average = state_attr('sensor.nordpool_kwh_krsand_nok_2_10_025', 'average') | float(default=0) %} {% set timeprice = states('sensor.nordpool_kwh_krsand_nok_2_10_025') | float(default=0) %} {{ timeprice < average }} Hei, jeg har testet denne, og resultatet så langt er nedslående. Mulig jeg har misforstått målet med koden, men jeg trodde at hele hensikten er å "treffe" bunnpunktet i datasettet fra NordPool for derigjenom å kunne spare mest mulig penger? Vel, her er kurven i det sensoren din gikk "on" nå i kveld (den blå vertikale streken); Rød kurve er fortid, blå kurve er fremtid. Har jeg muligens misforstått noe, eller gjort noe feil? Nordpool tilbyr data helt frem til søndag kveld og lavest pris er helt tydelig mellom kl 13 og kl 14 i morgen (søndag). Jeg trodde sensoren skulle slått inn da, og ikke nå!? Endret 23. juni 2023 av VikingOy Siter
Kim123 Skrevet 27. juni 2023 Skrevet 27. juni 2023 Tror den ser på dagens priser og ikke neste dagspriser? Jeg har laget et fleksibelt system hvor jeg har tre valg, 'billigste døgntimer', 'billigste timer 0-12' og 'billigste timer 12-24'. Med noen flere ting: Legionella kontroll - Er ikke tanken helt oppvarmet på 3 døgn settes billigste døgntimer opp på 8 . Hvis strømprisen er billigere etter kl 20 enn de 4 billigste strømtimene neste døgn startes vvb. 1 Siter
thoralex Skrevet 29. juni 2023 Skrevet 29. juni 2023 (endret) Kim, har du temperatursensor i tanken? Hvis ikke, hvordan laget du sensoren? Har prøvd å lage en sånn selv, men ikke klart å få til noe særlig brukbart. Endret 29. juni 2023 av thoralex Siter
Kim123 Skrevet 29. juni 2023 Skrevet 29. juni 2023 Ingen sensor i tanken nei. Den fungerer bare på en sånn måte at hvis pluggen er på og det ikke trekkes noe strøm så blir det tolket som at varmeelementet har skrudd seg av. Sensor.yaml - platform: template sensors: #Kjeller vvb_oppvarmet: friendly_name: "VVB Oppvarmet" value_template: "{{ state_attr('input_datetime.vvb_heater_completed', 'timestamp')|timestamp_custom('%d.%m.%y %H:%M') }}" binary_sensor: - name: "VVB_Legionella_OK" delay_on: minutes: 5 state: "{{ now().strftime('%Y-%m-%d %H:%M:%S') < states('input_datetime.vvb_heater_legioniella') }}" Automations.yaml # Denne automasjonen sjekker om VVB rele er skrudd på og # og om varmelementet trekker strøm. Dette for å forhindre # eventuelt legionella. - id: "031220211042" alias: "VVB. LegionellaOK" trigger: - platform: template value_template: "{{ states('switch.varmtvannstank') == 'on' and states('sensor.varmtvannstank_electric_consumption_w')|int(default=300) < 100 }}" for: minutes: 2 action: # Lagre hvilken dato og klokkeslett # vi skal øke antall timer på. - service: input_datetime.set_datetime entity_id: input_datetime.vvb_heater_legioniella data: datetime: "{{ now() + timedelta(days=3) }}" # Lagre dato og klokkeslett for forrige gang helt oppvarmet. - service: input_datetime.set_datetime entity_id: input_datetime.vvb_heater_completed data: datetime: "{{ now() }}" # Sjekk om antall timer på har # vært økt av automatikken. - condition: state entity_id: binary_sensor.VVB_legionella_OK state: 'off' # Skru tilbake til opprinnelig antall timer. - service: input_number.set_value entity_id: input_number.vvb_billigste_timer_dogn data_template: value: "{{ states('input_number.antall_billig_timer_natt_backup') }}" # Denne automasjonen øker antall timer på # slik vi skal få helt oppvarmet vvb - id: "031220211101" alias: "VVB. LegionellaFeil" trigger: - platform: time at: input_datetime.vvb_heater_legioniella action: # Lagre gamle verdi - service: input_number.set_value entity_id: input_number.antall_billig_timer_natt_backup data_template: value: "{{ states('input_number.vvb_billigste_timer_dogn') }}" # Øk timer vvb skal være på med 3 timer - service: input_number.set_value entity_id: input_number.vvb_billigste_timer_dogn data_template: value: "{{ states('input_number.vvb_billigste_timer_dogn')|int + 3|int}}" # Lag en notifikasjon i home assistant - service: persistent_notification.create data: message: "Varmtvannsberederen har ikke oppnådd temperaturen sin på 3 dager. Berederen varmes helt opp neste gang" title: "Varmtvann Legionella" 1 Siter
thoralex Skrevet 30. juni 2023 Skrevet 30. juni 2023 Takk! Det er omtrent det jeg har prøvd å lage, bare bedre. Siter
Kråkerøymannen Skrevet 19. desember 2023 Skrevet 19. desember 2023 (endret) Kim123 skrev (På 27.6.2023 den 11.24): Tror den ser på dagens priser og ikke neste dagspriser? Jeg har laget et fleksibelt system hvor jeg har tre valg, 'billigste døgntimer', 'billigste timer 0-12' og 'billigste timer 12-24'. Med noen flere ting: Legionella kontroll - Er ikke tanken helt oppvarmet på 3 døgn settes billigste døgntimer opp på 8 . Hvis strømprisen er billigere etter kl 20 enn de 4 billigste strømtimene neste døgn startes vvb. Hei, @Kim123. Takk for at du har delt koden din. Jeg finner dessverre ikke helt ut av det. De to første sensorene i dette skjermbildet (Billigste fra kl 00-12 ogf Billigste fra 12-24) finner jeg ikke noe sted i koden din. Hvordan brukes de og hva er de? Endret 19. desember 2023 av Kråkerøymannen Siter
Kim123 Skrevet 18. januar Skrevet 18. januar Kråkerøymannen skrev (På 19.12.2023 den 1.24): Hei, @Kim123. Takk for at du har delt koden din. Jeg finner dessverre ikke helt ut av det. De to første sensorene i dette skjermbildet (Billigste fra kl 00-12 ogf Billigste fra 12-24) finner jeg ikke noe sted i koden din. Hvordan brukes de og hva er de? Du kan lage disse under Innstillinger -> enheter og tjenester -> Hjelpere -> + Opprett hjelper -> Nummer 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.