AndersO Skrevet 5. mars 2021 Skrevet 5. mars 2021 Har en flow som kjÞrer gardinen ned nÄr LUX i rommet blir over 200 (Basert pÄ Fibaro motion sensor), og en annen flow som kjÞrer den opp igjen nÄr LUX blir mindre enn 199. Funker fint det, men hvordan hindrer jeg den i Ä gÄ opp og ned som en jojo nÄr LUXen er akkurat i grenseland? dvs nÄr gardinen gÄr ned, sÄ blir LUXen under 199 og den gÄr opp igjen. Da blir LUXen over 200 og den gÄr ned. Slik gÄr nu dagan....  Noen forslag? Kanskje en sjekk mot tid? At gardinen mÄ ha vÊrt nede i minst en time fÞr den kan gÄ opp igjen? Har ingen anelse om hvordan det settes opp i sÄfall. Siter
Guahtdim Skrevet 5. mars 2021 Skrevet 5. mars 2021 Med kun en lux i forskjell sÄ er det ulempen. Det enkleste er Ä si ned pÄ 200 og opp pÄ f.eks. 150 (her kan du teste ut hva som passer best).  Eventuelt at du gÄr inn med en minimumstid som man skal holde endringen fÞr det kan komme en ny endring. Jeg kjenner ikke dine enheter godt nok til Ä si hvordan du kan gjÞre det i de. Siter
AndersO Skrevet 5. mars 2021 Forfatter Skrevet 5. mars 2021 Ja, det er jo selvfÞlgelig ogsÄ en mulighet. Jeg kan teste Ä ha litt stÞrre "avstand" mellom opp og ned.  Takk for tipset Siter
stigvi Skrevet 5. mars 2021 Skrevet 5. mars 2021 Jeg har lagd det slik at nÄr de fÞrst gÄr ned sÄ stÄr de slik i minimum 8 timer hvis ingen er hjemme eller i 2 timer hvis noen er hjemme. At de skal gÄ opp og ned etterhvert som skyene driver forbi, er ikke bra. Siter
AndersO Skrevet 5. mars 2021 Forfatter Skrevet 5. mars 2021 2 timer siden, stigvi skrev: Jeg har lagd det slik at nÄr de fÞrst gÄr ned sÄ stÄr de slik i minimum 8 timer hvis ingen er hjemme eller i 2 timer hvis noen er hjemme. At de skal gÄ opp og ned etterhvert som skyene driver forbi, er ikke bra. Det var noe sÄnt jeg tenkte pÄ ogsÄ. Er det pÄ Homey? Kunne jeg i sÄfall tatt en titt pÄ den flowen?  Siter
stigvi Skrevet 5. mars 2021 Skrevet 5. mars 2021 30 minutter siden, AndersO skrev: Er det pÄ Homey? Nei, det er skrevet i python for Home Assistant. Men kan dele hvis du fortsatt er interessert Siter
AndersO Skrevet 5. mars 2021 Forfatter Skrevet 5. mars 2021 1 time siden, stigvi skrev: Nei, det er skrevet i python for Home Assistant. Men kan dele hvis du fortsatt er interessert Ja takk, gjerne. Kan jo hende det gĂ„r opp et lys đ Siter
StaggerLee Skrevet 5. mars 2021 Skrevet 5. mars 2021 Man kan sette i samme flow at man deaktiverer flowen og setter i gang en timer pÄ x minutter. NÄr x minutter har gÄtt sÄ aktiveres flow igjen. Siter
stigvi Skrevet 6. mars 2021 Skrevet 6. mars 2021 10 timer siden, AndersO skrev: Ja takk, gjerne. Kan jo hende det gĂ„r opp et lys đ Konfigurasjon for en av gardinene:  gardiner: - id: hagestue_oest navn: Hagestue Ăžst retning: 138.6 sollysnivaa: 27000 forsinkelse_borte: 18000 forsinkelse_hjemme: 7200 gardin: cover.rullegardin_hagestue_oest vindu: binary_sensor.glassdor_a sollyssensors: sensor.lysstyrke_filtrert elevation: 5 azimuth_morgen: 10 azimuth_kveld: 10 borteposisjon: 0 hjemmeposisjon: 40 overstyr: input_select.modus_gardin_terrasse bryter: gardin_bryter event_auto: 1002 event_alltid_oppe: 2002 event_halvveis_nede: 3002 delay: 2 Kode:  import time registered_triggers = [] factory_apps = [] @time_trigger('startup') def gardinstartup(): for app in pyscript.app_config: factory_apps.append(Gardiner(app)) class Gardiner: Status_OPPE = 1 Status_HALVVEIS = 2 Status_LUKKET = 3 Status_UKJENT = 4 Status_MANUELL = 5 Type_IKEA = 1 Type_LUXAFLEX = 2 Type_UKJENT = 3 isSun = False isInPosition = False type = Type_UKJENT cfg = None def __init__(self, config): self.cfg = config state.persist(f"pyscript.gardin_{self.cfg['id']}_twls", default_value=0) state.persist(f"pyscript.gardin_{self.cfg['id']}_status", default_value=self.Status_OPPE) if "gardin" in self.cfg: self.type = self.Type_IKEA elif "scene_oppe" in self.cfg and "scene_lukket" in self.cfg and "scene_halvveis" in self.cfg: self.type = self.Type_LUXAFLEX if float(sun.sun.elevation) >= float(self.cfg['elevation']): if float(sun.sun.azimuth) >= float(self.cfg['retning'] - 90 + self.cfg['azimuth_morgen']): if float(sun.sun.azimuth) <= float(self.cfg['retning'] + 90 - self.cfg['azimuth_kveld']): self.isInPosition = True f = int(self.cfg['forsinkelse_borte']) if binary_sensor.noen_er_hjemme == "on": f = int(self.cfg['forsinkelse_hjemme']) if time.time() - float(state.get(f"pyscript.gardin_{self.cfg['id']}_twls")) < f: self.isSun = True @state_trigger(f"{self.cfg['sollyssensors']}", state_hold = self.cfg['delay']) def sollys_trig(): self.sollys() registered_triggers.append(sollys_trig) @state_trigger("sun.sun.azimuth", state_hold = self.cfg['delay']) def sun_trig(): self.sun() registered_triggers.append(sun_trig) @state_trigger(f"{self.cfg['overstyr']}", state_hold = self.cfg['delay']) def nystatus_trig(): self.nystatus() registered_triggers.append(nystatus_trig) @event_trigger("deconz_event") def bryter_trig(context, device_id, event_type, trigger_type, unique_id, id=None, event=None): self.bryter(id, event) registered_triggers.append(bryter_trig) if "vindu" in self.cfg: @state_trigger(f"{self.cfg['vindu']}") def nystatusvindu_trig(): self.nystatus() registered_triggers.append(nystatusvindu_trig) if int(state.get(f"pyscript.gardin_{self.cfg['id']}_status")) == self.Status_HALVVEIS: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = f"{self.cfg['navn']} er halvveis lukket") elif int(state.get(f"pyscript.gardin_{self.cfg['id']}_status")) == self.Status_LUKKET: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = f"{self.cfg['navn']} er lukket") else: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = "") state.set(f"sensor.gardin_sollysnivaagrense_{self.cfg['id']}", value = self.cfg['sollysnivaa']) def sun(self): self.isInPosition = False if float(sun.sun.elevation) >= float(self.cfg['elevation']): if float(sun.sun.azimuth) >= float(self.cfg['retning'] - 90 + self.cfg['azimuth_morgen']): if float(sun.sun.azimuth) <= float(self.cfg['retning'] + 90 - self.cfg['azimuth_kveld']): self.isInPosition = True self.sett_posisjon() def nystatus(self): self.sett_posisjon() def sollys(self): try: if self.isInPosition == True and float(state.get(self.cfg['sollyssensors'])) >= float(self.cfg['sollysnivaa']): state.set(f"pyscript.gardin_{self.cfg['id']}_twls", value = time.time()) if self.isSun == False: self.isSun = True #self.log("sollys er paa") self.sett_posisjon() else: f = int(self.cfg['forsinkelse_borte']) if binary_sensor.noen_er_hjemme == "on": f = int(self.cfg['forsinkelse_hjemme']) if self.isSun == True and time.time() - float(state.get(f"pyscript.gardin_{self.cfg['id']}_twls")) > f: self.isSun = False self.sett_posisjon() except Exception: pass def sett_posisjon(self): try: g = self.Status_OPPE if self.type == self.Type_IKEA: pos = int(self.cfg['borteposisjon']) if binary_sensor.noen_er_hjemme == "on": pos = int(self.cfg['hjemmeposisjon']) if self.isSun == True and self.isInPosition == True: g = self.Status_LUKKET if state.get(self.cfg['overstyr']) == "Alltid oppe": g = self.Status_OPPE self.isSun = False elif state.get(self.cfg['overstyr']) == "Helt nede": g = self.Status_LUKKET self.isSun = False if self.type == self.Type_IKEA: pos = int(self.cfg['borteposisjon']) elif state.get(self.cfg['overstyr']) == "Halvveis nede": g = self.Status_HALVVEIS self.isSun = False if self.type == self.Type_IKEA: pos = int(self.cfg['hjemmeposisjon']) elif state.get(self.cfg['overstyr']) == "Manuell": g = self.Status_MANUELL self.isSun = False if "vindu" in self.cfg and state.get(self.cfg['vindu']) == "on": g = self.Status_OPPE self.isSun = False #log.info(f"Gardin {self.cfg['navn']} settes til = {g}") if g != self.Status_MANUELL: if self.type == self.Type_IKEA: if g != self.Status_OPPE and abs(float(state.get(f"{self.cfg['gardin']}.current_position")) - pos) > 2: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = f"{self.cfg['navn']} er lukket") cover.set_cover_position(entity_id = self.cfg['gardin'], position = pos) state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_LUKKET) elif g == self.Status_OPPE and float(state.get(f"{self.cfg['gardin']}.current_position")) < 99: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = "") cover.set_cover_position(entity_id = self.cfg['gardin'], position = 100) state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_OPPE) elif self.type == self.Type_LUXAFLEX: if g == self.Status_LUKKET and int(state.get(f"pyscript.gardin_{self.cfg['id']}_status")) != self.Status_LUKKET: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = f"{self.cfg['navn']} er lukket") scene.turn_on(entity_id=self.cfg['scene_lukket']) state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_LUKKET) elif g == self.Status_OPPE and int(state.get(f"pyscript.gardin_{self.cfg['id']}_status")) != self.Status_OPPE: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = "") scene.turn_on(entity_id=self.cfg['scene_oppe']) state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_OPPE) elif g == self.Status_HALVVEIS and int(state.get(f"pyscript.gardin_{self.cfg['id']}_status")) != self.Status_HALVVEIS: state.set(f"sensor.gardin_status_{self.cfg['id']}", value = f"{self.cfg['navn']} er halvveis lukket") scene.turn_on(entity_id=self.cfg['scene_halvveis']) state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_HALVVEIS) except Exception: pass def bryter(self, id=None, event=None): try: #self.log('Bryter id: {} og event {}'.format(data['id'], data['event'])) if "bryter" in self.cfg and id == self.cfg['bryter'] and event == int(self.cfg['event_alltid_oppe']): state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_UKJENT) input_select.select_option(entity_id = self.cfg['overstyr'], option = "Alltid oppe") elif "bryter" in self.cfg and id == self.cfg['bryter'] and event == int(self.cfg['event_halvveis_nede']): state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_UKJENT) input_select.select_option(entity_id = self.cfg['overstyr'], option = "Halvveis nede") elif "bryter" in self.cfg and id == self.cfg['bryter'] and event == int(self.cfg['event_auto']): state.set(f"pyscript.gardin_{self.cfg['id']}_status", value = self.Status_UKJENT) self.isSun = False input_select.select_option(entity_id = self.cfg['overstyr'], option = "Auto") if(float(state.get(self.cfg['sollyssensors'])) >= float(self.cfg['sollysnivaa'])): self.isSun = True except Exception: pass  Siter
AndersO Skrevet 6. mars 2021 Forfatter Skrevet 6. mars 2021 Tusen takk đ Blir litt Ă„ sette seg inn i her ja đ Siter
torstein89 Skrevet 9. mars 2021 Skrevet 9. mars 2021 Ville heller satt pÄ en timer via countdown/timer plugin. HÞrt at den innebygde utsettelsen kan vÊre litt "vanskelig" Ä ha med Ä gjÞre. Alternativt sette tidsintervall "alle" 30min/60 min og sjekk lux er over under? Sent from my iPhone using Tapatalk 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.