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

Prediktiv reduksjon av strømbruk - Effektariff nivå


kjetilsn

Anbefalte innlegg

Har du lagt inn kode for å sette nytt settpunkt når du endrer det?

Jeg har dette:

@state_trigger("input_select.nettleie_pristrinn")

def setpoint(value=None):

    pid.setpoint = float(value) - 0.2

 

Du må bruke input_number.max_energy_usage istedenfor input_select.nettleie_pristrinn

 

Jeg ville laget en state_trigger på accumulated consumption current .... 
Kanskje det er det du har?

Endret av stigvi
Lenke til kommentar
Del på andre sider

2 hours ago, stigvi said:

Har du lagt inn kode for å sette nytt settpunkt når du endrer det?

Nei, jeg har bare laget en input_number i HA Helpers som heter Max energy usage (input_number.max_energy_usage) og en input_number for Pris pr kwh agderenergi (input_number.pris_pr_kwh_agderenergi). Deretter kopierte jeg din kode herfra hvor jeg fjernet jeg den miderste delen nedover som jeg trodde handlet om hvordan slå av strøm for å komme under 5 kwt. Brukte deretter Tibber sensorer for strømforbruk per time (beregnet og forbrukt) i scriptet.

 

Er dette feil?

 

Er ikke så Python kyndig.  Jeg klarer å lese Pyscript kode, men Python koden og hvordan simple_pid fungerer sliter jeg med å forstå. Hadde vært fint om du kunne forklare litt steg for steg. Det blir litt mange poster på forskjellige steder som ikke hemger sammen.

Jeg har heller ikke laget entitet input_select.nettleie_pristrinn

Takk for raskt svar og hjelp.

 

Endret av haraldov
Lenke til kommentar
Del på andre sider

haraldov skrev (12 timer siden):

Nei, jeg har bare laget en input_number i HA Helpers som heter Max energy usage (input_number.max_energy_usage)

Når denne endres (til 30, som du viste til) så må pid regulatoren få vite om det. Det gjør en med å lage en trigger på input_number.max_energy_usage og sette ny setpoint. Jeg har lagt med mitt skript så ser du hvordan jeg har gjort det. Der er det også tatt med andre endringer som at jeg setter utgangen til 100% ved oppstart av HA og jeg har også laget et filter på pid-utgangen for å dempe ned plutselige endringer.

Men etter at jeg laget dette er det kommet en pid-regulator i HACS. Kanskje den er lettere for deg å bruke? Da slipper du å styre med et skript.

soloam/ha-pid-controller: PID Controller to Home Assistant (github.com)

Jeg vet ikke om parametrene for p, i og d kan brukes slik som de er i skriptet, men sannsynligvis kan de det.

 

from simple_pid import PID

pid = PID(40.0, 0.4, 2500.0, setpoint=float(input_select.nettleie_pristrinn) - 0.2)
pid.set_auto_mode(False)
pid.sample_time = 1.9
pid.output_limits = (0, 100)
pid.proportional_on_measurement = False
pid.set_auto_mode(True, last_output=100.0)
last_c = 100.0
turned_off_all = False
turned_off_car_red = False
turned_off_car_blue = False

@state_trigger("sensor.energy")
def new_state():
    global pid
    global last_c
    global turned_off_all
    global turned_off_car_red
    global turned_off_car_blue
    
    c = (0.9 * last_c) + (0.1 * pid(float(sensor.estimated_hourly_consumption)))
    #p, i, d = pid.components
    #state.set("sensor.regulator_p", round(p,1))
    #state.set("sensor.regulator_i", round(i,1))
    #state.set("sensor.regulator_d", round(d,1))
    
    if round(last_c, 0) != round(c, 0):
        sensor.regulator_energy_usage = round(c, 0)
        
        v = max(5 * round(c, 0) - 400, 0.0)
        number.effekt_varmtvannsbereder.set_value(round(v,1))

    last_c = c

    if c < 10 and turned_off_car_red == False:
        easee.set_charger_dynamic_limit(charger_id = "EH430587", current = "0")
        turned_off_car_red = True

    if c > 12 and turned_off_car_red == True:
        easee.set_charger_dynamic_limit(charger_id = "EH430587", current = "16")
        turned_off_car_red = False

    if c < 70 and turned_off_car_blue == False:
        easee.set_charger_dynamic_limit(charger_id = "EH3JE5CS", current = "0")
        turned_off_car_blue = True

    if c > 72 and turned_off_car_blue == True:
        easee.set_charger_dynamic_limit(charger_id = "EH3JE5CS", current = "16")
        turned_off_car_blue = False

    if c < 2 and turned_off_all == False:
        esphome.terrassevarmer_pause()
        switch.heru_electric_heater_connected.turn_off()
        persistent_notification.create(title = "Strøm", message = "Effektbegrensing slo av alt.")

        turned_off_all = True
    
    if c > 5 and turned_off_all == True:
        esphome.terrassevarmer_resume()
        switch.heru_electric_heater_connected.turn_on()
        turned_off_all = False
    
@state_trigger("input_select.nettleie_pristrinn")
def setpoint(value=None):
    pid.setpoint = float(value) - 0.2

@state_trigger("input_number.consumption_lasthour")
def hourly_usage(value=None):
    if float(value) >= float(input_select.nettleie_pristrinn):
        script.turn_on(entity_id = "script.send_melding", variables = {'message': 'Strømforbruk var større enn grense', 'title': 'Strøm', 'channel': 'Info'})

 

  • Like 1
Lenke til kommentar
Del på andre sider

Nå ser det ut til å fungere @stigvi. Brukte scriptet ditt du la ved. Har bare opprettet input_select.nettleie_pristrinn og input_number.consumption_lasthour. Endret til: @state_trigger("sensor.power_toraldasen_32") og pid(float(sensor.estimated_consumption_current_hour_toraldasen_32).

 

image.png.4eae42c9e8c028647e17848a2908721d.png

 

Hvilke verdier bruker du i input_select.nettleie_pristrinn? Er det 5, 10, 15 kW som de bruker som kapasitetsgrense i denne artikkelen https://www.tu.no/artikler/slik-blir-den-nye-nettleia-pris-grenser-pa-5-og-10-kw/514897

 

Det samme gjelder input_number.consumption_lasthour. Hva gjør den?

Takk igjen for god hjelp.

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

haraldov skrev (47 minutter siden):

Hvilke verdier bruker du i input_select.nettleie_pristrinn? Er det 5, 10, 15 kW som de bruker som kapasitetsgrense i denne artikkelen https://www.tu.no/artikler/slik-blir-den-nye-nettleia-pris-grenser-pa-5-og-10-kw/514897

Jeg har lagt inn 5 og 10 som er de eneste aktuelle for meg. Min netteier har utsatt innføring til 1. juli så jeg ser det hele an litt.

haraldov skrev (51 minutter siden):

Det samme gjelder input_number.consumption_lasthour. Hva gjør den?

Den kan du slette. Det er noe jeg lagde for å vise forbruket i en time ut i fra det som måleren rapporterer hver time. Så har jeg lagd et varsel på mobil

  • Like 1
Lenke til kommentar
Del på andre sider

Kjempestolt av meg selv. Ved hjelp av Pyscript la jeg til attributter til sensor.regulator_energy_usage slik at jeg kan få kurvediagram. Pussig nok klarte jeg ikke å gjøre dette ved hjelp av Customize devices: https://www.home-assistant.io/docs/configuration/customizing-devices/

 

state.set("sensor.regulator_energy_usage", state_class="measurement", unit_of_measurement="%", friendly_name="Pådrag varme", device_class="power_factor")

 

  • Like 1
Lenke til kommentar
Del på andre sider

Har ikke kommet så langt ennå. Kommer til å bruke ditt pyscript til dette. Prioriterer å slå av varmtvannsbereder først, deretter varmekabler. Lader elbil på natten eller på arbeid så den prioriteres ikke først. Jeg ser at høyeste forbruk er ca 10 kW i løpet av dette døgnet, så skal jeg være under 5 kW så må det nok strupes inn litt.

image.png.5ed4e46d5a565a662eb2d968dd1eb41f.png

 

Har også begynt å se på soloam/ha-pid-controller: PID Controller to Home Assistant (github.com), men er litt usikker på hvordan kunne bruke pid output. Hvis det fungerer å kunne bruke denne addon så kan det være lettere å finne PID verdiene en trenger.

Endret av haraldov
Lenke til kommentar
Del på andre sider

Hei @stigvi. Pyscriptet ditt fungerer, men jeg har av og til litt problemer med å få opprettet sensor.regulator_energy_usage etter en omstart av home assistant programmet. Venter jeg en stund (opptil en time tror jeg) blir sensoren opprettet. Er dette et kjent problem? Hvis så har du en løsning?

 

On 19/02/2022 at 12:02, stigvi said:
 if round(last_c, 0) != round(c, 0):
        sensor.regulator_energy_usage = round(c, 0)

 

image.png.773ab8ed6437d134e15272d3ba380d6d.png

 

Mitt pyscript ser slik ut nå:

 

from simple_pid import PID

pid = PID(40.0, 0.4, 2500.0, setpoint=float(input_select.nettleie_pristrinn) - 0.2)
pid.set_auto_mode(False)
pid.sample_time = 1.9
pid.output_limits = (0, 100)
pid.proportional_on_measurement = False
pid.set_auto_mode(True, last_output=100.0)
last_c = 100.0
turned_off_all = False

@state_trigger("sensor.power_toraldasen_32")
def new_state():
    global pid
    global last_c
    global turned_off_all
    
    c = (0.9 * last_c) + (0.1 * pid(float(sensor.estimated_consumption_current_hour_toraldasen_32)))
    p, i, d = pid.components
    state.set("sensor.regulator_p", round(p,1))
    state.set("sensor.regulator_i", round(i,1))
    state.set("sensor.regulator_d", round(d,1))
    
    if round(last_c, 0) != round(c, 0):
        sensor.regulator_energy_usage = round(c, 0)
    last_c = c
    
    if c < 70 and turned_off_all == False:
        switch.bryter_varmvannsbereder.turn_off()
        climate.turn_off(entity_id="climate.varmekabel_gang")
        turned_off_all = True

    if c > 72 and turned_off_all == True:
        switch.bryter_varmvannsbereder.turn_on()
        climate.turn_on(entity_id="climate.varmekabel_gang")
        turned_off_all = False

    if c < 10 and turned_off_all == False:
        climate.turn_off(entity_id="climate.varmekabel_bad1etg",entity_id="climate.varmekabel_bad2etg",entity_id="climate.varmekabel_gmlstue",entity_id="climate.varmekabel_nystue",entity_id="climate.varmekabel_kjokken")
        turned_off_all = True

    if c > 12 and turned_off_all == True:
        climate.turn_on(entity_id="climate.varmekabel_bad1etg",entity_id="climate.varmekabel_bad2etg",entity_id="climate.varmekabel_gmlstue",entity_id="climate.varmekabel_nystue",entity_id="climate.varmekabel_kjokken")
        turned_off_all = False
        
    if c < 2 and turned_off_all == False:
        modbus.write_register(address=2504,unit=1,value=1,hub="VTR500")
        persistent_notification.create(title = "Strøm", message = "Effektbegrensing slo av alt.")
        turned_off_all = True
    
    if c > 5 and turned_off_all == True:
        modbus.write_register(address=2504,unit=1,value=0,hub="VTR500")
        turned_off_all = False
    
@state_trigger("input_select.nettleie_pristrinn")
def setpoint(value=None):
    pid.setpoint = float(value) - 0.2

 

Endret av haraldov
Lenke til kommentar
Del på andre sider

haraldov skrev (1 time siden):

Pyscriptet ditt fungerer, men jeg har av og til litt problemer med å få opprettet sensor.regulator_energy_usage etter en omstart av home assistant programmet. Venter jeg en stund (opptil en time tror jeg) blir sensoren opprettet. Er dette et kjent problem? Hvis så har du en løsning?

Nei, jeg har ikke dette problemet og jeg måtte kikke i koden min for å se hvorfor.

Grunnen er at jeg har definert en malsensor som ser slik ut

 

    - unique_id: regulator_energy_usage
      name: "Regulator pådrag"
      unit_of_measurement: '%'
      state: 100


Så min HA starter alltid opp med denne satt til 100% og står til denne verdien fram til skriptet er kommet i gang.

Alternativt kan du i skriptet sette denne øverst sammen med initialisering av pid

...
turned_off_all = False
sensor.regulator_energy_usage = 100.0


Det er bare å beklage at dette ikke er kommet med, men som du har nevnt, informasjonen ligger spredd utover og er en smule uoversiktelig.

Lenke til kommentar
Del på andre sider

Takk igjen @stigvi. Jeg er glad for at du deler.

Etter å lest gjennom pyscript forum så kan kanskje state.persist brukes istedenfor HA template sensor for gjøre sensor.regulator_energy_usage konstant. Kommer til å bruke din metode hvis koden nedefor fungerer.

 

Eksempel: https://github.com/custom-components/pyscript/discussions/211

Okay, answering my own question. state.persist works perfectly well for this use case. Sample in case someone else comes looking for this:

POWER_ATTR = { "unit_of_measurement": "kW", "device_class": "power" }

state.persist('pyscript.tesla_card_grid_to_house', default_value="0", default_attributes=POWER_ATTR)

@state_trigger('sensor.powerwall_load_now', ...)
def recalc_power():
    ...
    pyscript.tesla_card_grid_to_house = 123.0

 

Lenke til kommentar
Del på andre sider

Jeg bruker state.persist selv i andre sammenhenger så det er også et godt alternativ. I praksis tror jeg ikke forskjellen er så veldig stor annet enn at du legger den under sensor domenet i ene tilfellet og pyscript i det andre.

Edit: Grunnen til mitt valg om en malsensor er nok at jeg vil at denne skal ha verdi 100 når jeg starter opp HA istedenfor en annen verdi som sannsynligvis ikke er rett lenger. Utgangen på regulatoren endrer seg kontinuerlig og hva den hadde av verdi før en omstart er en smule uinteressant.

Endret av stigvi
Lenke til kommentar
Del på andre sider

Takk igjen for svar.

Jeg ser at du slå av og på ladning av dine elbiler i pyscriptet.

On 19/02/2022 at 12:02, stigvi said:
  if c > 12 and turned_off_car_red == True:
        easee.set_charger_dynamic_limit(charger_id = "EH430587", current = "16")
        turned_off_car_red = False

 

Tibber skriver at "kunder kan aktivere såkalt “lastbalansering” mot hovedsikring og på den måten automatisk redusere ladeeffekt når den totale belastningen på hovedsikringen nærmer seg et maksnivå. Lenke: https://support.tibber.com/nb/articles/5759652-hvordan-smartlade-elbilen-uten-a-toppe-forbruket

 

Er det dette som skjer når du bruker easee.set_charger_dynamic_limit?

Hadde vært fint om du kunne ha delt din automatisering av ladning av elbil. Har Easee lader selv, men bruker fortsatt Tibber sin lading av bil. Ser at jeg er under 5 kWt stort sett hele dagen, bortsatt fra natt når elbilen min lader og da fyker strømmforbruket til 6-7 kWt noen timer.

Lenke til kommentar
Del på andre sider

haraldov skrev (15 timer siden):

Er det dette som skjer når du bruker easee.set_charger_dynamic_limit?

Med den funksjonen setter jeg bare lading på pause når jeg er over forbruket som er tilgjengelig i et effekttrinn. Jeg styrer mot effekttrinnene og bryr meg ikke om hovedsikring. Den er 50A og spenningen er 400V 3-fase. Begge easee boksene står på en 16A 3-fase kurs og jeg har 11kW å bruke på bil. Den ene bilen lades stort sett med kun 1,3kW og den andre på 2,6kW så jeg prioriterer lav effekt. Bilene er satt opp til å lade til 30% som minimum og deretter videre til 90% om natt for å være ferdig ladet rett før avreise om morgenen. Jeg kunne kanskje spart en krone eller to med å lade kun når strømprisen er lavest, men det er vanskelig når en samtidig skal holde effekten lav.

Så det som er der i mitt skript er der ene og alene for å holde meg under en gitt kWt/t grense.

  • Like 1
Lenke til kommentar
Del på andre sider

haraldov skrev (20 timer siden):

Mitt pyscript ser slik ut nå:

Kikket litt på det og tror nok ikke dette vil virke. Når c<70 så slår du av VVB og varme i gang og du setter turned_of_all til true. Når c endrer seg til mindre enn 10 og mindre enn 2 så vil du aldri slå av varmekabel på bad og skrive til modbus register fordi turned_of_all er true. Istedenfor et flagg som turned_of_all så bør du heller legge inn en sjekk der du tester på tilstanden til hver enkelt climate.

Et annet tips er å fordele alle varmekablene mellom 0 og 100% og ikke slå av så mange samtidig ved 10%.


Årsaken til at jeg brukte et flagg som turned_of_all er at det jeg slo av (easee og ventilasjonsvarme) er trege med å oppdatere status tilbake igjen. Men dine climate er neppe det og det er mye lurere å teste på om en climate er av eller på.

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

 

Det aller beste er om du har et eget system for å slå av og på varme. Og så er status fra pid-regulatoren en inngang til dette systemet. Noen har anbefalt schedy, men jeg kjenner ikke til den. Jeg har lagd mitt eget system basert på bayesian sensor i HA, men den krever litt innsats i å sette opp. Ditt problem er at du nå får et skript som slår av og på varme. Hva om du reiser vekk og vil at varme skal være av.

  • Like 1
Lenke til kommentar
Del på andre sider

 

25 minutes ago, stigvi said:

Det aller beste er om du har et eget system for å slå av og på varme.

Enig i alt du skriver @stigvi. Jeg har idag varmestyring basert på HA automatisering som fungerer, men har ikke tatt høyde for at jeg skal reise vekk eller presence (automatisering når første mann kommer hjem).

Fordelen med HA automatisering er at det er lett å debugge (https://www.home-assistant.io/docs/automation/troubleshooting/), men ulempen er litt uoversiktlig i GUI når automatiseringer med if setninger (choose) skal lages. Har prøvd schedy, men slet med å sette opp en god konfigurasjon så jeg gav opp etterhvert.

 

Pyscript er jeg nybegynner på og trenger nok flere eksempler på varmestyring, men fordelen er at pyscript er lett å lese når det er enkle automatiseringer. Skal se om jeg kan prøve å lage et varmestyring ut i fra status fra pid-regulatoren og se om jeg får rettet opp mitt pyscript. Takk igjen for all hjelp.

 

 

 

 

Lenke til kommentar
Del på andre sider

Kan anbefale å teste schedy som stigvi nevnte. Har brukt det i mange år og er veldig fornøyd. Her kjører jeg flere sløyfer slik at forskjellige rom har forskjellige modus etter hvem som er hjemme, og om det er helg, ukedag, eller fridag, om vi er bortreist, om strømmen er dyr, osv. Bruker også input fra dører slik at termostater skrues av om feks terrassedør står åpen. Dette er jo også fint å bruke på vinduer. Bruker også python scriptet til stigvi som input her og reduserer settpunkt temperatur i forskjellige rom i prioritert rekkefølge. Eneste minus er kanskje at det ikke er en gui for å endre noe, det må gjøres i en config fil.

Kjører dette i appdaemon i egen docker, bruker portainer for admin og debug, godt fornøyd med det. Schedy oppdaterer når konfig fil lagres, uten restart, på den måten er det kjapt og effektivt å teste ut ny konfig.

 

Eksempel:

  rooms:
 
    living:
      actors:
        climate.stue:
      schedule:
      - v: 21
        rules:
          - rules:
            - x: "Next() if is_off('binary_sensor.terassedor') else Break()"
            - x: "Add(-4) if state('sensor.energy_regulator_usage_step') < '5' else Next()"
            - x: "Add(-1) if is_on ('binary_sensor.dyreste_4_timer') else Next()"
            - x: "Add(-1) if is_on ('input_boolean.energy_cost_extreme') else Next()"
            - x: "Add(-5) if is_on ('input_boolean.varmt_ute') else Next()"
            - x: "Add(-5) if is_off ('input_boolean.oppe_hjemme') else Next()"
            - x: "Add(-10) if is_on ('input_boolean.ferie') else Next()"

            - rules:
              - x: "Next() if state('input_boolean.fri') == 'off' else Break()"  
              - { start: "14:00", end: "22:00", weekdays: 1-4 }
              - { start: "14:00", end: "23:00", weekdays: 5 }
              - { start: "08:00", end: "23:00", weekdays: 6 }
              - { start: "08:00", end: "23:00", weekdays: 7 }
              - { v: 18 }

            - rules:
              - x: "Next() if state('input_boolean.fri') == 'on' else Break()"  
              - { start: "06:00", end: "22:00", weekdays: 1-4 }
              - { start: "06:00", end: "23:00", weekdays: 5 }
              - { start: "08:00", end: "23:00", weekdays: 6 }
              - { start: "08:00", end: "23:00", weekdays: 7 }
              - { v: 18 }            
            
            
      - v: "OFF"    
  

 

Lenke til kommentar
Del på andre sider

Jeg har gjort to forsøk med schedy allerede for varmestyring. Andre forsøket var alt på plass trodde jeg, men kom ikke helt i mål med hvordan sette opp schedy når en skal styre varme, når terassedør åpnes i stua og en eller to vinduer åpnes på kjøkkenet.

Ut ifra schedy dokumentasjonen (https://hass-apps.readthedocs.io/en/stable/apps/schedy/tips-and-tricks/open-window-detection.html), så skal en lage en customize.yaml fil med kontaktsensorene for f.eks stua. Schedy vil så søke etter kontaktsensorer med on og regelen for stua blir aktivert.

Jeg har kontaktsensorer som er plassert på kjøkkenet og i stua. Jeg må derfor lage et window_room: kjokken og et window_room: stue i en customize.yaml fil med kontaktsensorene i.

 

Må jeg da lage to regler for vinduer eller terassedør som åpnes, en for kjøkkenet og en for stua eller fins det en måte å lage en regel som vil gjelde for begge? Håper jeg har forklart meg godt nok. Det er bare å spørre hvis du trenger mere informasjon.

 

Quote
- rules:
            - x: "Next() if is_off('binary_sensor.terassedor') else Break()"

 

Endret av haraldov
Endret tilbakemelding til et spørsmål
Lenke til kommentar
Del på andre sider

Her er schedy config jeg brukte forrige år før jeg gikk over til enklere HA varme automatisering. Jeg tror jeg overkompliserte en del. Gi meg gjerne tilbakemelding på hvordan du ville ha gjort det:

schedy_heating:  # This is our app instance name.
  module: hass_apps_loader
  class: SchedyApp

  actor_type: thermostat

  schedule_prepend:
  - x: "Add(-3) if is_on ('binary_sensor.power_saving') else Next()"
  - x: "Add(-10) if is_on ('input_boolean.ferie') else Next()"
  - x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', state='on', window_room='living')) else Next()"
  - x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', state='on', window_room='varmepumpe')) else Next()"

  watched_entities:
  - binary_sensor.power_saving
  - sensor.arbeidsdag
  - input_boolean.ferie

  rooms:

    living:
      rescheduling_delay: 120
      actors:
        climate.floor_thermostat_2:
        climate.floor_thermostat_3:
        climate.floor_thermostat_5:
      watched_entities:
      - binary_sensor.smart_door_sensor_access_control_window_door_is_open
      - binary_sensor.openclose_29
      - binary_sensor.openclose_30
      schedule:
      - v: 21
        rules:
        - weekdays: 1-5
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'True' else Break()"
          - { start: "06:00", end: "07:30" }
          - { start: "15:00", end: "22:30" }
        - weekdays: 6-7
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'False' else Break()"
          - { start: "08:00", end: "22:30" }
      - v: 18

    varmepumpe:
      rescheduling_delay: 120
      actors:
        climate.toshiba:
      watched_entities:
      - binary_sensor.smart_door_sensor_access_control_window_door_is_open
      - binary_sensor.openclose_29
      - binary_sensor.openclose_30
      schedule:
      - v: 23
        rules:
        - weekdays: 1-5
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'True' else Break()"
          - { start: "06:00", end: "07:30" }
          - { start: "15:00", end: "22:30" }
        - weekdays: 6-7
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'False' else Break()"
          - { start: "08:00", end: "22:30" }
      - v: 20

    gang:
      rescheduling_delay: 120
      actors:
        climate.floor_thermostat_6:
      schedule:
      - v: 19
        rules:
        - weekdays: 1-5
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'True' else Break()"
          - { start: "06:00", end: "07:30" }
          - { start: "15:00", end: "22:30" }
        - weekdays: 6-7
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'False' else Break()"
          - { start: "08:00", end: "22:30" }
      - v: 16

    bad:
      rescheduling_delay: 120
      actors:
        climate.floor_thermostat_4:
        climate.floor_thermostat:
      schedule:
      - v: 23
        rules:
        - weekdays: 1-5
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'True' else Break()"
          - { start: "06:00", end: "07:30" }
          - { start: "15:00", end: "22:30" }
        - weekdays: 6-7
          rules:
          - x: "Next() if state('sensor.arbeidsdag') == 'False' else Break()"
          - { start: "08:00", end: "22:30" }
      - v: 20

 

Lenke til kommentar
Del på andre sider

Hei,

Jeg la også merket til at det var anbefalt måte å gjøre det på, og sikkert med god grunn,  men siden jeg ikke har sensorer på vinduer (ikke si det til noen) så ble det kun en input på de rommene jeg har denne funksjonaliteten. Så da valgte jeg å gjøre det slik som eksempelet jeg postet for stue. Når det blir flere input så tenker jeg å bruke feks template binary sensor, eller template sensor som setter en felles input boolean for det aktuelle romme, da med litt forsinkelse slik at det går noen minutter før termostaten går av. Eller bruke gruppe.

Endret av kjetilsn
Lenke til kommentar
Del på andre sider

Takk, en template binary sensor, eller template sensor det kan løse problemet. Tenkte etter jeg la inn innlegget at en felles window_rooms som f.eks living room (stue og kjøkken i ett) kan også være en løsning.

Schedy løser mange problemer når HA automatiseringene blir omfattende. Har frem til nå brukt HA action choose når jeg trenger if-else handlinger. Jeg skal gjøre et nytt forsøk med schedy. Takk for hjelpen @kjetilsn.

Lenke til kommentar
Del på andre sider

  • 9 måneder senere...

Hei.

 

Kode er ikke min sterkeste side, men jeg prøver meg. Beklager på forhånd om spørsmålet har ett opplagt svar jeg ikke ser :) Jeg har fulgt koden til @stigvi, men finner ikke ut hvordan sensor.regulator_p, _i og _d settes opp? Er det noe jeg misforstår helt langs veien her? Jeg vil tro dette er essensielt for at scriptet skal fungere.

Lenke til kommentar
Del på andre sider

selvesteha skrev (1 time siden):

Hei.

 

Kode er ikke min sterkeste side, men jeg prøver meg. Beklager på forhånd om spørsmålet har ett opplagt svar jeg ikke ser :) Jeg har fulgt koden til @stigvi, men finner ikke ut hvordan sensor.regulator_p, _i og _d settes opp? Er det noe jeg misforstår helt langs veien her? Jeg vil tro dette er essensielt for at scriptet skal fungere.

De tre kan du egentlig bare glemme. De er der bare for visningen sin del og for å lettere kunne stille inn disse tre parametrene.

Men du trenger ikke "sette de opp". Med state.set("sensor.blabla", 99.0) blir sensor.blabla opprettet automatisk og får verdien 99.

  • Like 1
Lenke til kommentar
Del på andre sider

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.