Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Hjelp til YAML automasjon av VVB


Teknor

Anbefalte innlegg

Har følgende automasjon for å aktivere VVB når timespris er under gjennomsnittsprisen for døgnet.

 

Skulle gjerne hatt inn en betingelse som gjorde at VVB ikke ble aktivert i tidsrommet 2200-2359 eller 0000-0100 selv om timespris > gj.snittspris.

 

Noen som kan bistå?

 

alias: VVB On
description: Slår på VVB rele når timespris er under dagens gjennomsnitt
trigger:
  - platform: numeric_state
    entity_id: sensor.nordpool_today_current
    below: sensor.nordpool_today_average
    for:
      hours: 0
      minutes: 0
      seconds: 10
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single

 

Endret av Teknor
Lenke til kommentar
Del på andre sider

Legg til en time condition?

Jeg kommer opp med denne i visual editor:

condition: time
after: "01:00:00"
before: "22:00:00"



Til VVB bruker jeg en sensor for billigste timer, hvor tidsrom er lagt inn i sensoren så selve automasjonen ikke trenger bry seg om det. Da er jeg sikker på å få ønsket antall driftstimer uansett når det er billigst.

Endret av thoralex
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Den treffer ikke helt behovet, tror jeg. Har testet ut den betingelsen, men ser ikke ut til å ta hensyn til den.

 

Det jeg ønsker er:

 

Slå på VVB rele når timespris er under dagens gjennomsnitt, men i perioden 22:00 til 02:00 skal den uansett være av.

 

Hypotensen er at strømmen uansett er billigere etter kl 02:00 enn på sen kveld, selv om prisen uansett er under gjennomsnittet for døgnet. På den måten presser jeg forbruket mer mot natt, ettersom familien ikke trenger å dusje eller har behov for varmtvann sent på kvelden uansett.

 

Virker som uansett hva jeg velger som conditions så virker det som den ikke hensyn tar det. Har også oppdatert YAML configuration reloading.

 

Noen andre tips?

 

alias: VVB On test
description: >-
  Slår på VVB rele når timespris er under dagens gjennomsnitt - forsøk på unngå
  kveld
trigger:
  - platform: numeric_state
    entity_id: sensor.nordpool_today_current
    below: sensor.nordpool_today_average
    for:
      hours: 0
      minutes: 0
      seconds: 10
condition:
  - condition: and
    conditions:
      - condition: time
        after: "02:00"
        before: "22:00"
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single

 

 

Endret av Teknor
Lenke til kommentar
Del på andre sider

Det er sikkert flere måter på å gjøre dette på.

Jeg ville gjort automatiseringen ved først å lage en binær template sensor som er True (on) når time strømpris er billigere enn gjennomsnitt og False (off) når strømpris er dyrere enn gjennomsnitt. Du kan endre og teste template ved hjelp av Template editor under Developer Tools -> Template. Er du nybegynner på Template og Jinja2 syntaks anbefaler jeg at du leser her: https://www.home-assistant.io/docs/configuration/templating/ 

 

template:
  - binary_sensor:
      - name: "Pris er billigere enn gjennomsnitt"
        state: >
          {% set average = state_attr('sensor.nordpool_kwh_krsand_nok_3_10_025', 'average') | float(default=0) %}
          {% set timeprice = states('sensor.nordpool_kwh_krsand_nok_3_10_025') | float(default=0) %}
          {{ timeprice < average }}

 

Deretter kan du lage en yaml automasjon som bruker Choose og Trigger ID til å velge hva som skal skje. Les mer om Trigger ID her: https://www.home-assistant.io/docs/automation/trigger/#trigger-id og Choose her: https://www.home-assistant.io/docs/scripts/#choose-a-group-of-actions

 

alias: VVB On test
description: >-
  Slår på VVB rele når timespris er under dagens gjennomsnitt - forsøk på unngå
  kveld
trigger:
  - platform: state
    entity_id:
      - binary_sensor.pris_er_billigere_enn_gjennomsnitt
    from: "off"
    to: "on"
    id: pris_billig
  - platform: state
    entity_id:
      - binary_sensor.pris_er_billigere_enn_gjennomsnitt
    from: "on"
    to: "off"
    id: pris_dyr
condition:
  - condition: time
    after: "02:00:00"
    before: "22:00:00"
action:
  - choose:
      - conditions:
          - condition: trigger
            id: pris_billig
        sequence:
          - service: switch.turn_on
            data: {}
            target:
              entity_id: switch.bryter_varmvannsbereder
      - conditions:
          - condition: trigger
            id: pris_dyr
        sequence:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.bryter_varmvannsbereder
mode: single

 

 

Du kan også lage en price level template sensor for timeprisen som jeg har gjort her med Tibber timeprisen. Du kan da bruke denne som trigger i din automasjon.

 

template:
  - sensor:
      - name: Electricity price - Price level (1-day)
        icon: mdi:currency-usd
        state: >-
          {% set price_cur = states('sensor.electricity_price_toraldasen_32') | float(0) %}
          {% set price_avg = state_attr('sensor.electricity_price_toraldasen_32', 'avg_price') | float(0) %}
          {% if price_cur == 0 or price_avg == 0 %}
            unknown
          {% else %}
          {% set price_ratio = (price_cur / price_avg) %}
          {% if price_ratio >= 1.4 %}
            VERY_EXPENSIVE
          {% elif price_ratio >= 1.15 %}
            EXPENSIVE
          {% elif price_ratio <= 0.6 %}
            VERY_CHEAP
          {% elif price_ratio <= 0.9 %}
            CHEAP
          {% else %}
            NORMAL
          {% endif %}
          {% endif %}

 

Jeg kan anbefale Prizeanalyzer (https://github.com/erlendsellie/priceanalyzer) til å varme opp VVB og varmekabler. Fordelen med Prizeanalyser er at den varme opp varmekablene før de dyreste timene (boost) og senker varmen (save) når strømprisen er høy. Utvikler har også laget en god løsning for å varme opp vvb når strømpris er billigst (på natten).

  • Like 1
  • Thanks 1
Lenke til kommentar
Del på andre sider

Fungerte nesten...

 

Dersom strømprisen kryper under gjennomsnittet (endrer status fra "pris_dyr" til "pris_billig" i perioden 22:00 til 02:00 (noe den oftest gjør), så trigges ikke automasjonen igjen kl 03:00 fordi entiteten "binary_sensor.pris_er_billigere_enn_gjennomsnitt" ikke endres (fortsatt har status som "pris_billig").

 

Noen elegant løsning på det @haraldov?

Lenke til kommentar
Del på andre sider

Jeg har valgt å skru av VVB hvis pris faller mer enn 15øre ila en time og den kan være av i opptil 15 timer hvis prisen er høyere enn pris timen den skrues på + 15øre * 4% pr time av. VVB må og være på i minimum 8 timer pr dag. Tallene må selvsagt tilpasses antall tenåringer i hus... Med disse tallene skrur VVB seg stort sett på kl 22, men det er ikke hver dag den går i sparemodus. 15øre er tatt litt ut av det blå. Må regne ut varmetap og hvor mye ekstra energi den bruker pr time utsatt på å varme opp igjen.

Kan dessverre ikke hjelpe med YAML koden men har installert Appdaemon og skrevet koden i python.

  • Like 1
Lenke til kommentar
Del på andre sider

Denne funker for meg. Laget to automasjoner. Får vel slå dem sammen etterhvert. 
 

alias: VVB on
description: >-
  Slår på VVB rele når timespris er under dagens gjennomsnitt uten kritiske
  timer
trigger:
  - platform: time_pattern
    minutes: "1"
condition:
  - condition: and
    conditions:
      - condition: time
        after: "02:00:00"
        before: "22:00:00"
      - condition: numeric_state
        entity_id: sensor.nordpool_today_current
        below: sensor.nordpool_today_average
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single

og

alias: VVB Off
description: Slår av VVB rele når timespris er over dagens gjennomsnitt
trigger:
  - platform: numeric_state
    entity_id: sensor.nordpool_today_current
    above: sensor.nordpool_today_average
condition: []
action:
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single
 

Lenke til kommentar
Del på andre sider

hjemmedude skrev (På 4.1.2023 den 8.00):

priceanalyzer kan man velge å justere mer enn 1 grad i save/boost mode? Kunne tenke meg 3 grader

Utvikler av PriceAnalyzer har laget en blueprint "priceanalyzer_multiply.yaml" som bruker en input_number multiplier for å justere temperatur enten opp eller ned 2-3 grader.

 

    multiply:
      name: Multiply Correction
      description: Input Number Helper To multiply the correction. Useful if you want more aggressive control.
      selector:
        entity:
          domain: input_number

 

Du finner den her: https://github.com/erlendsellie/HomeAssistantConfig/tree/master/blueprints/automation/erlendsellie. Du kan bruke denne som utgangspunkt å lage din egen binær sensor template som du kan bruke i Schedy. 

 

        {%-set baseTemp = states(number) | float(default=0)%}
        {%-set priceanalyzer = states(sensor) | float(default=0)%}
        {% set multiplyNumber = states(multiply) | float(default=1)  %}
        {{baseTemp + (priceanalyzer * multiplyNumber)}}

Jeg kan hjelpe deg med å lage template sensoren hvis du trenger det.

 

 

  • Like 1
Lenke til kommentar
Del på andre sider

Her er et lite forslag fra min side med en enkel tilnærming :)

 

Jeg forholder meg pr nå kun til low_price attributten på Nordpool-entiteten. Er low_price satt til true så går VVB på. Er low_price satt til false så går VVB av. Automasjonen trigges av endring på low_price attributten. Så den kjører altså kun når den endrer state.

 

Hva som skal defineres som low_price bestemmes i oppsettet av Nordpool. Standard oppsett er at low_price er satt til true når timesprisen er under snittprisen for dagen. Dette kan endres via variabel low_price_cutoff i configuration.yaml.

 

Som en kan se så har jeg ikke lagt inn noen begrensninger når på døgnet den kan være av eller på. Men det kan en jo legge inn i koden om en ønsker med en if setning til. Men for min del tenker jeg at under snittet er under snittet enten det er på dagen eller kvelden. Det er bare en fordel om noen av disse timene er på dagen når vi ikke er hjemme så slipper vi at den slår seg på lengre enn nødvendig på kvelden når mye annet skal trekke strøm og.

 

alias: Water Heater | Turn on or off based on low_price state
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.nordpool_kwh_krsand_nok_2_10_025
    attribute: low_price
condition: []
action:
  - if:
      - condition: state
        entity_id: sensor.nordpool_kwh_krsand_nok_2_10_025
        attribute: low_price
        state: true
    then:
      - type: turn_off
        device_id: 
        entity_id: entitetsbryter til vvb
        domain: switch
    else:
      - type: turn_off
        device_id:
        entity_id: entitetsbryter til vvb
        domain: switch
mode: single

 

Utenom dette tenkte jeg og å legge inn en automasjon som tvinger VVB på dersom temperaturen i den faller under en viss verdi eller dersom den ikke har vært over 60 grader på over ei uke.

Lenke til kommentar
Del på andre sider

Har etter tips her inne funnet ut at disse to automasjonene gjør jobben for meg. Vil heller ha en "time trigger" enn en trigger når status endres, fordi det blir mer robust om jeg skulle endre VVB på/av manuelt. @haraldov satt meg på sporet. Takk.

 

Tenker å slå de to automasjonene sammen til en nå jeg får tid.

 

alias: VVB on
description: >-
  Slår på VVB rele når timespris er u dagens gjennomsnitt uten kritiske timer
trigger:
  - platform: time_pattern
    minutes: "1"
condition:
  - condition: and
    conditions:
      - condition: time
        after: "02:00:00"
        before: "22:00:00"
      - condition: numeric_state
        entity_id: sensor.nordpool_today_current
        below: sensor.nordpool_today_average
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single

 

og:

 

alias: VVB Off
description: Slår av VVB rele når timespris er over dagens gjennomsnitt
trigger:
  - platform: numeric_state
    entity_id: sensor.nordpool_today_current
    above: sensor.nordpool_today_average
condition: []
action:
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.datek_pop2_switch
mode: single

 

Lenke til kommentar
Del på andre sider

haraldov skrev (På 6.1.2023 den 9.12):

Utvikler av PriceAnalyzer har laget en blueprint "priceanalyzer_multiply.yaml" som bruker en input_number multiplier for å justere temperatur enten opp eller ned 2-3 grader.

 

    multiply:
      name: Multiply Correction
      description: Input Number Helper To multiply the correction. Useful if you want more aggressive control.
      selector:
        entity:
          domain: input_number

 

Du finner den her: https://github.com/erlendsellie/HomeAssistantConfig/tree/master/blueprints/automation/erlendsellie. Du kan bruke denne som utgangspunkt å lage din egen binær sensor template som du kan bruke i Schedy. 

 

        {%-set baseTemp = states(number) | float(default=0)%}
        {%-set priceanalyzer = states(sensor) | float(default=0)%}
        {% set multiplyNumber = states(multiply) | float(default=1)  %}
        {{baseTemp + (priceanalyzer * multiplyNumber)}}

Jeg kan hjelpe deg med å lage template sensoren hvis du trenger det.

 

 

Mange takk!😊

Vet du om man kan bruke climate.bad sensor og ikke input_number? Eller kan overstyre input_number.termostat_bad med temp data fra climate.bad?

Hvordan går man frem for å ha 10 termostater styrt av priceanalyzer, 10 stk input_number ? 🙂

Kanskje det enkleste for meg er å få boost, save og normal inn i schedy ?

 

edit: helt ny med blueprints. Har opprettet 5 input_numbers for 5 termostater, og 5 blueprints for priceanalyzer. Det ser ut til å funke. Schedy kjører bak og overkjører basert på pid-regulatoren til stigvi. Teste dette litt. 🙂

 

Endret av hjemmedude
  • Like 1
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Du kan bruke service "input_number.set_value" til å skrive temperaturen til en climate entitet inn i en input.number entitet. Fant løsningen her: https://community.home-assistant.io/t/save-attribute-in-a-input-number/371847

 

image.png.5f2efa043c75b5082140f59c065f8d01.png

 

hjemmedude skrev (På 6.1.2023 den 19.57):

Hvordan går man frem for å ha 10 termostater styrt av priceanalyzer, 10 stk input_number ?

 

Har vurdert å bytte ut blueprint med min egen automasjon slik at jeg ikke trenger så mange automasjoner. Skal se om jeg kan få laget en slik automasjon jeg kan dele.

 

  • Like 1
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.