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

Anbefalte innlegg

Skrevet

Hei,

 

Jeg er relativt uerfaren på å lage automasjoner i Home Assistant, men har en klar visjon for hvordan jeg ønsker at lys skal dimmes i leiligheten min. Håper at noen her på forumet kan hjelpe meg å utvikle denne automasjonen, og at også andre drar nytte av den.

 

Lysforholdene varierer utrolig mye basert på tid på året, døgnet og været ute. Jeg ønsker å alltid holde lysene på optimalt nivå, basert på en lysintensitetsmåler. 

  1. Lyset skal dimmes inn fra kl 07.30
  2. Ved mye naturlig lys skal kunstig lys slå seg av
  3. Lysnivået skal være høyt mellom 9 og 18.30
  4. Lysnivået skal være dimmet mellom 18.30 og 00.00

 

Lysmåleren min gir meg kun en ny avlesning annehver time eller ved fordobling og halvering av lysintensiteten. Jeg ønsker derfor at lysnivået skal reevalueres on-event. Vet enda ikke hvordan jeg skal forholde meg til det med å slå av og på lyset, vil nødig vente et døgn før det kommer tilbake i rytmen sin igjen, men det må bli steg 2.

Eksempler er under.

 

 

lys_auto.thumb.png.9bb5789f63ec79073d2993796fcfb38c.png

 

Belysning (blå linje) øker gradvis om morgenen, slår seg av når sollyset (oransje) blir sterkt nok og kun naturlig lys trengs, og kompenserer gravis for bortfall av lys ved skumring. Det totale lysnivået reguleres en del ned på kvelden, og dimmes gradvis til null ved natt-punktet.

 

 

overskyet.thumb.png.051ff901946223331c89979e881b0e8b.png

 

Belysning (blå linje) økes  gradvis om morgenen, og holder seg høyt utover dagen, da sollyset (oransje) aldri blir strekt nok til å trigge deaktivering. Det dimmes ned til samme nivå som ovenforstående eksempel på kveldstid, og ned til 0 ved natt.

 

 

Jeg har begynt med denne psudokoden:

 

on (time: morning) { #Om morgenen sjekker vi om lyset alt er på, hvis ikke så dimmer den mot settpunkt basert på hvor lyst det er ute
    if (brightness == 0% && val <3000lux) {
        if (val < 10lux) { brightness = 30%} 
        else if (val < 100lux) {brightness = 60%} #Hvis det er litt lysere, høyere settpunkt
        else if (val < 1000lux {brightness = 85%}
        else {brightness = 100%}

on (time: night) { #Slå av lyset når det blir natt. Kan bygges ut senere til bevegelsessensor i stuen og andre ting, og vil da utsette med 30min hvis fortsatt aktivitet
    if (brightness != 0%) {brightness = 0%} 
    
on (state change: lux.val)
    if (night > time > morning+60min) #Hvis på dagtid, bør være oppe og gå nå
    if (val < 10lux) { brightness = 50%} #Hvis det er mørkt, settpunkt lavt)
    else if (val < 100lux) {brightness = 65%} #Hvis det er litt lysere, høyere settpunkt
    else if (val < 1000lux {brightness = 90%}
    else if (val < 3000lux) {brightness = 50%}
    else (brightness == 0%) #Hvis det er jækla lyst, slå av
} else if (time > night && brightness != 0%){brightness = 0%}  #Hvis natt-tid har passert og lysene enda ikke er slått av (hva gjør jeg hvis lysene er manuelt slått på midt på natten? da vil de jo periodisk slå seg av. Lage en ekstra automasjon på tid som tar siste avlesning av lys heller, for morgen og kveld?


Så langt har jeg prøvd å lage en entitet av alle lysene jeg vil regulere. Så antar jeg at jeg må lage denne koden i automation.yaml filen. Hadde satt stor pris på om noen hadde tid til å komme med innspill på ideene mine og kanskje hjelpe meg å skrive automasjonskoden i Home Assistant markup.

 

 

Skrevet

En annen ting er at behovet for kunstig lys er lite hvis sollys bidrar med mer enn 100 lux inne. Men grenseverdiene i koden ovenfor er kanskje bare eksempler?

Skrevet (endret)

Jeg har så smått begynt å eksperimentere litt med lysstyrkeregulering ut i fra måling fra sensor.

Den mest vellykkede metoden så langt fungerer etter "sample and hold":

 

Dimmingen av lyset gjøres til ønsket styrke med bryter/app.

Når sensoren rapporterer lysnivå etterpå så lagres dette.

Hvert minutt sjekkes det lagrede nivået mot siste målte nivå fra sensor og dimmingen av lysene justeres opp eller ned ett knepp om det er utenfor en hysterese.

Denne minuttjusteringen hoppes over når man venter på ny måling fra sensor etter manuell justering av lysstyrke.

 

Dimmere i openhab har en oppløsning på hundredeler.

Hysteresen er ganske uvitenskaplig satt til 1/15 av samplet lysstyrke.

edit: hysteresen vil nok variere etter hvor sensoren er plassert i forhold til vinduer og lamper.

Så langt er det ingen som har kommentert eller lagt merke til den automatikken 🙂

Bortsett fra meg.

 

Endret av NilsOF
Skrevet

@Moskus den oppdaterer seg veldig sjeldent, men den sender som sagt en oppdatering ved dobling eller halvering av styrken. Siden mennesker oppfatter lys logaritmisk tenker jeg det kan være håp. Kom uansett på at jeg hadde noen Mi Flora greier som jeg endelig har fått inn i HA, så nå har jeg to lyssensorer til. De går på BLE, vet ikke helt hvor ofte de oppdaterer, kanskje hvert 10. minutt eller så. 

 

@stigvi tallene jeg nevnte er kun for eksempel, vil basere dem på erfaringstall senere.

 

@NilsOF artig! så du justerer lyset, så lagres et setpunkt av lysnivået, som da opprettholdes av en 'PID'? Kanskje jeg bør gjøre det samme og glemme det med å måle lyset ute, og heller kun måle lyset innover i rommet. 

Skrevet
Akkurat nå, Vegard trenger hjelp skrev:

@Moskus den oppdaterer seg veldig sjeldent, men den sender som sagt en oppdatering ved dobling eller halvering av styrken

Ja, det er bl.a. det jeg mener er altfor sjeldent.

 

1 minutt siden, Vegard trenger hjelp skrev:

Siden mennesker oppfatter lys logaritmisk tenker jeg det kan være håp

Er du sikker på at det gjelder lys...? Jeg vet vi regner lyd på en logaritmisk skala (det er jobben min) for ellers blir det så store tall i Pascal. En subjektiv dobling av lyden er 10 dB selv om en dobling av energinivået er 3 dB. Men at vi oppfatter lys logaritmisk er nytt for meg, og i tillegg vanskelig å finne noe om...

 

Men jeg mener det ikke er særlig vanskelig å merke forskjell på små endringer i lysstyrken. Går det fra 100 Lux til 200 Lux, så har man mistet mye informasjon mellom disse to.

 

Jeg hadde spandert på meg noen sensorer som rapporterte oftere enn det, f.eks. via Zigbee eller Z-wave. 

Skrevet
5 minutter siden, Vegard trenger hjelp skrev:

så du justerer lyset, så lagres et setpunkt av lysnivået, som da opprettholdes av en 'PID'?

Ja.

Ikke akkurat PID, men en justering på en hundredel av dimmeverdien pr minutt.

Dette er en så liten endring av lysstyrken at det oppfattes glidende og umerkbart.

 

Til akkurat dette eksperimentet bruker jeg en Hue innendørs-sensor.

 

Som uvidelse tenker jeg å dele opp døgnet og sette ny "target" (luminansverdi) på klokkeslett. 

Med ett knepp justering pr. minutt så vil dette også oppfattes glidende og umerkbart.

Videre blir det å sømme inn bevegelsesensorene slik at lyset dimmes ned (ett knepp pr. minutt) om det ikke er bevegelse i rommet (og naborommene).

Skrevet (endret)
41 minutter siden, Moskus skrev:

Er du sikker på at det gjelder lys...?

Lysstyrke er en rar ting. Og det må nesten være mere enn noe som kan beregnes med en logaritme med i spillet.

Det skal ikke mye lys til i mørket for at vi kan se ting når øynene er tilvendt.

På dagtid så måles luminansen fra sensorene til skyhøye verdier, men på natt/kveld så faller verdiene fort til null. 
For alt jeg vet så oppfatter øynene disse forskjellene alt etter hvor mye gulerot man spiser.

Endret av NilsOF
Skrevet
38 minutter siden, Moskus skrev:

Ja, det er bl.a. det jeg mener er altfor sjeldent.

 

Er du sikker på at det gjelder lys...? Jeg vet vi regner lyd på en logaritmisk skala (det er jobben min) for ellers blir det så store tall i Pascal. En subjektiv dobling av lyden er 10 dB selv om en dobling av energinivået er 3 dB. Men at vi oppfatter lys logaritmisk er nytt for meg, og i tillegg vanskelig å finne noe om...

 

Men jeg mener det ikke er særlig vanskelig å merke forskjell på små endringer i lysstyrken. Går det fra 100 Lux til 200 Lux, så har man mistet mye informasjon mellom disse to.

 

Jeg hadde spandert på meg noen sensorer som rapporterte oftere enn det, f.eks. via Zigbee eller Z-wave. 

 

Jeg kjøpte akkurat denne Sensative Strip saken, uvitende om hvor utrolig strømsparende den var. Så en strek i regningen der. Hadde samme bekymringene som deg, men vi får se hvordan det blir i praksis. Den gir meg i det minste utetemperatur. 

 

Husker ikke helt hvor jeg lærte dette med lys, men mennesker er veldig gode på å omstille seg fra mye til lite lys, tenk nattsyn og hvor dårlige gamle mobiltelefoner var på mørke. Om dagen om vinteren er det 3000 lux hos meg, mens i et solrikt land på sommeren er det 20 - 30 000 lux. Mye skarpere, men jeg ble overrasket over hvor store forskjeller det var når jeg så målingene i et histogram hjemme hos meg selv. Kurven går skarpt opp og ned igjen når den er plottet linært. 

Skrevet

@Vegard trenger hjelp Hvordan man skal gjøre dette i ditt system kan jeg ikke hjelpe med 🙂

Men man trenger en god sensor plassert sånn at det kan leses luminansverdier innenfor ett brukbart måleomeråde .

Hovedlyskilden står 1,5 meter fra sensoren i mitt tilfelle.

Det er nok til at lyset slåes helt av når sola skinner inn i rommet.

Jeg vil tro at en Aeotec ms6 på USB forsyning fungerer utmerket. Ms6 på batteri er jeg sikker på at ikke vil fungere. Jeg tror også at et Fibaro-øye heller ikke duger.

Hue sin sensor fungerer strålende.

Skrevet (endret)

Selvlært er vellært, osv.

Slår på lysene om morgenen, intensitet og fargetemperatur reguleres gjennom dagen. En variasjon skjer hvis det er høyt lysnivå.

 

 

alias: autolights
variables:
  light_factor: 80
  color_factor: 2200
  default_colortemp: 420
  default_brightness: 127
  default_transition: 30
description: >-
  enables automatic control of brightness and color tempe regulated by outside
  readings
trigger:
  - platform: state
    entity_id: sensor.sensative_strips_comfort_luminance
  - platform: time
    at: input_datetime.morgen
  - platform: homeassistant
    event: start
condition:
  - condition: time
    after: input_datetime.morgen
    before: input_datetime.natt
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
action:
  - choose:
      - conditions:
          - type: is_value
            condition: device
            device_id: 97be2f15adad95bd8f5d2e6648a04915
            entity_id: sensor.sensative_strips_comfort_luminance
            domain: sensor
            above: 2000
            below: 50000
        sequence:
          - service: scene.turn_on
            data:
              entity_id: scene.dim_high
              transition: 120
      - conditions:
          - type: is_value
            condition: device
            device_id: 97be2f15adad95bd8f5d2e6648a04915
            entity_id: sensor.sensative_strips_comfort_luminance
            domain: sensor
            below: 2000
            above: 40
        sequence:
          - service: light.turn_on
            data:
              entity_id: light.stue
              brightness: >-
                {{(light_factor *
                log(states.sensor.sensative_strips_comfort_luminance.state, 10))
                | int }}
              color_temp: >-
                {{(color_factor /
                log(states.sensor.sensative_strips_comfort_luminance.state, 2))
                | int}}
          - service: light.turn_on
            data:
              entity_id: light.soverom
              brightness: >-
                {{(light_factor *
                log(states.sensor.sensative_strips_comfort_luminance.state, 10))
                | int}}
              color_temp: >-
                {{(color_factor /
                log(states.sensor.sensative_strips_comfort_luminance.state, 2))
                | int}}
          - service: input_number.set_value
            data_template:
              entity_id: input_number.setcolortemp
              value: >-
                {{(color_factor
                /log(states.sensor.sensative_strips_comfort_luminance.state, 2))
                | int}}
          - service: input_number.set_value
            data_template:
              entity_id: input_number.setbrightness
              value: >-
                {{(light_factor
                *log(states.sensor.sensative_strips_comfort_luminance.state,
                10))| int}}
      - conditions:
          - type: is_value
            condition: device
            device_id: 97be2f15adad95bd8f5d2e6648a04915
            entity_id: sensor.sensative_strips_comfort_luminance
            domain: sensor
            below: 40
        sequence:
          - service: light.turn_on
            data:
              entity_id: 'light.stue, light.soverom'
              brightness: '{{default_brightness | int}}'
              color_temp: '{{default_colortemp | int}}'
              transition: '{{default_transition | int}}'
          - service: input_number.set_value
            data:
              entity_id: input_number.setcolortemp
              value: '{{default_colortemp| int}}'
          - service: input_number.set_value
            data:
              entity_id: input_number.setbrightness
              value: '{{default_brightness | int}}'
mode: restart

 

Endret av Vegard trenger hjelp
Oppdatert skript

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.