stigvi Skrevet 14. januar Del Skrevet 14. januar (endret) Innlegget er ment som et tips eller noe en kan dra nytte av til andre ting. Når en lager en malsensor, vil denne malen evalueres hver gang en entitet som er brukt i malen, endres. Dette er stort sett ønskelig, men noen ganger er det en hindring. I eksempelet under, beregner jeg oppvarmingstid for VVB og setter en binær sensor til På i de billigste timene og i så mange timer som det er nødvendig å varme vann. Problemet oppstår når temperaturen i vannet øker og da vil beregnet oppvarmingstid synke. Dette lager kluss når en skal plukke de billigste timene. En kan starte å varme vann i den billigste timen, men når en kommer til den nest billigste kan oppvarmingstiden sunket så mye at denne timen utelates. Å varme vannet krever bare en time til og den billigste timen er jo nettopp passert. Denne problemstillingen kan en omgå ved å bruke en ny funksjonalitet i HA. Så veldig ny er den derimot ikke. Mulig den har eksistert i et par år nå. Det dreier seg om å skille trigger / evaluering av mal til noe en selv bestemmer. Det kan være tid, tilstand, hendelse eller egentlig hva som helst. Dokumentasjon for dette, finner en her: https://www.home-assistant.io/docs/automation/trigger/ Triggere for automatisering er prikk lik triggere en kan bruke i maler og dokumentasjonen for disse er lik. I eksempelet nedenfor, trigger jeg beregning av oppvarmingstid kun i start på hver time og kun hvis VVB er avslått. Så snart en starter på å varme vann, vil ikke ny oppvarmingstid bli beregnet. Unntaket er når en setter ny temperatur en skal varme til, bare for å ta med det og å vise at en kan ha mange triggere. Etter min mening er dette en svært nyttig egenskap til mal-sensorer som ofte kan forenkle ganske mye. template: - trigger: - platform: template value_template: "{{ now().minute == 0 and states('sensor.effekt_varmtvann')|float(0) == 0 }}" - platform: state entity_id: - input_number.vvb_temperatur sensor: - unique_id: vvb_heating_time name: "vvb oppvarmingstid" unit_of_measurement: 'h' device_class: duration state: >- {{ ((states('input_number.vvb_temperatur')|float(80) - average(states('sensor.varmtvannstank_topp_temperatur')|float(60), states('sensor.varmtvannstank_senter_temperatur')|float(60), states('sensor.varmtvannstank_bunn_temperatur')|float(60))) / (iif(float(states('sensor.effektbegrensing')) > 8, 1.0, 2.0) / 194.0 / 0.001163))|round(1) }} - binary_sensor: - unique_id: billigste_timer_vvb name: billigste_timer_vvb state: >- {% set l=state_attr('pyscript.strompris', 'prices')[14:39]|sort(attribute='totalprice') %} {% set t = now().hour %} {% set d = now().day %} {% set h = states('sensor.vvb_oppvarmingstid')|float(0) %} {{ iif(h > 0, (t == as_datetime(l[0].start).hour and d == as_datetime(l[0].start).day), false) or iif(h > 1, (t == as_datetime(l[1].start).hour and d == as_datetime(l[1].start).day), false) or iif(h > 2, (t == as_datetime(l[2].start).hour and d == as_datetime(l[2].start).day), false) or iif(h > 3, (t == as_datetime(l[3].start).hour and d == as_datetime(l[3].start).day), false) or iif(h > 4, (t == as_datetime(l[4].start).hour and d == as_datetime(l[4].start).day), false) or iif(h > 5, (t == as_datetime(l[5].start).hour and d == as_datetime(l[5].start).day), false) or iif(h > 6, (t == as_datetime(l[6].start).hour and d == as_datetime(l[6].start).day), false) }} Endret 14. januar av stigvi 2 Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
stigvi Skrevet 18. januar Forfatter Del Skrevet 18. januar Et annet eksempel er strømpris for forrige time. Som kjent vil strømmåler i huset sende forbruk noen sekunder etter hver hele time. I "Energi" oppsettet til HA kan en knytte opp en sensor som inneholder strømpris, men dette bør da være pris som var i forrige time og ikke i den gjeldende timen. template: - trigger: - platform: time_pattern minutes: 59 sensor: - unique_id: be7b58ab-a2da-4f51-b770-9583e1da4cb9 name: "Energy price last hour" unit_of_measurement: "NOK/kWh" device_class: monetary state: "{{ states('pyscript.totalstrompris')|round(6) }}" Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
stigvi Skrevet 18. januar Forfatter Del Skrevet 18. januar Dette med strømpris siste time var et eksempel og ikke noe jeg bruker selv. Min mal for strømpris siste time ser slik ut: - unique_id: be7b58ab-a2da-4f51-b770-9583e1da4cb9 name: "Energy price last hour" unit_of_measurement: "NOK/kWh" device_class: monetary state: >- {% set s = (now()-timedelta(hours=1))|as_timestamp|timestamp_custom('%Y-%m-%dT%H:00:00+01:00') %} {{ (state_attr("pyscript.strompris", "prices")|selectattr("start", "eq", s)|list)[0].totalprice }} Den gjør samme jobben, bortsett fra at den endres på hver hele time istedenfor 1 minutt før. Men den er mer kryptisk og å bruke en mal-trigger istedenfor, viser at det går å lage slikt enkelt. Sannsynligvis er mal-triggere også mer effektive i og med at den evalueres en gang i timen, mens denne som er i dette innlegget evalueres hvert minutt. Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
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.