stigvi
Medlemmer-
Innlegg
2 751 -
Ble med
-
Besøkte siden sist
-
Dager vunnet
155
Innholdstype
Profiler
Forum
Blogger
Nedlastninger
Artikler
Regler
Hendelser
Galleri
Store
Alt skrevet av stigvi
-
Zage doorbell sensor - smartifisering av dørklokke
stigvi svarte på aleks sitt emne i Automasjonskaféen
Kjenner ikke til hvordan den virker i Homey, men den er litt spesiell uanz system. Det virker som om den trigger kun hvis den blir påtrykt en vekselspenning på inngangen. Det er helt ok i de fleste ringeklokkeanlegg, men har du et system med likespenning så er kanskje ikke Zage løsningen. Det finnes alternativer, men har du kjøpt Zage så er det jo kjekt om den kommer til nytte. -
Se om du kan bruke dette biblioteket, pyTibber · PyPI
-
Jeg har 170 enheter. I fjor høst hadde jeg store problemer med å få det stabilt, men så byttet jeg ut 6 IKEA pærer med Philips sine og etter det har det vært helt stabilt.
- 85 svar
-
- 1
-
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
-
Nei, det er skrevet i python for Home Assistant. Men kan dele hvis du fortsatt er interessert
-
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.
-
Har du prøvd å ta den ut av stikkontakten og sette den i igjen etter at du har endret?
-
Ikke annet enn at releet i den (og tilsvarende slike enheter) har begrenset levetid. Men det er ikke sikkert z-water har gjort noe heller for å øke levetiden. Hvis du slår av/på hvert 5. minutt så har du ca 100.000 operasjoner pr år. En aktuator er en induktiv last av verste sort (generer gnist over kontakten når en slår av) og jeg ville ikke veddet på at de holder i årevis.
-
Jeg ser det hver gang jeg legger ut noe her at det er rom for forbedringer på andre steder. De to kortene jeg hadde for å vise værmelding så litt triste ut og viste dobbelt opp med info. Så da byttet jeg de ut med en jeg fant i HACS
- 18 svar
-
- 1
-
Her er et eksempel på hvordan jeg henter ut fra værmeldingen hvor mange timer med sol det er meldt fra nå og framover. Det kan brukes til å styre oppvarming i huset eller gardiner. Og det er lett å bytte ut dette til noe annet som antall dager med regn, antall timer med frost osv. Skal en ha antall timer så må en aktivere timebasert værmelding i met.no integrasjonen. Met.no integrasjonen skal da ha to sensorer. sensor: - platform: template sensors: timer_med_sol: friendly_name: Timer med sol unit_of_measurement: h value_template: >- {% set vars = namespace(count=0) %} {% set vars = namespace(found=true) %} {% set vars.count = 0 %} {% set l = state_attr('weather.orstad_utsyn_hourly','forecast')|map(attribute='condition')|list %} {% for item in l %} {% if vars.found == true and item == 'sunny' %} {% set vars.count = loop.index %} {% else %} {% set vars.found = false %} {% endif %} {% endfor %} {{ vars.count }}
- 18 svar
-
- 5
-
Antar det er i samme enhet som verdien rapporteres i. Er den i Watt, så setter du hvor mange Watt den må endres før det rapporteres. Det er det mest naturlige enn prosent her i og med at enheten ikke har et klart bilde av hva som er grenseverdier, altså prosent av hva da. PS. Bildet nedenfor er fra en Samsung smartplugg
- 85 svar
-
- 1
-
Har du deconz? I så fall endres dette på det som heter report interval på denne egenskapen.
-
Fra wikipedia At the GitHub "State of the Octoverse" 2020 Home Assistant was listed in second place in the Top 10 list of Python packages with most active contributors (with 8,162 unique contributors during 2020). Similarly, the 2019 "State of the Octoverse" listed Home Assistant as the tenth biggest open source project on GitHub, based on the number of active contributors that year (the project had contributions from 63,000+ contributors during 2019).
-
Mon tro hvor mange utviklere det er totalt sett i dette hvis en også tar med alle de som lager noe som havner under HACS. En ukvalifisert gjetning er et 4-sifret tall......
-
FYI: Denne kom i går og de fortsetter med å finpusse og forbedre. Etterhvert fremstår Home Assistant som ganske strømlinjeformet og det er ganske klart for meg at jeg gjorde det rette valget med å gå for denne istedenfor andre systemer 🙂
-
Noen som har prøvd rimelig wifi garasjeportåpner
stigvi svarte på Gravity sitt emne i Annen Elektronikk
https://www.ikea.com/no/no/p/tradfri-tradlos-dimmer-hvit-70408595/ - IKEA Er på tilbud fram til 7. mars. De hentes inn i Home Assistant ved hjelp av en zigbee integrasjon. Home Assistant har en innebygget og i tillegg finnes det andre som deconz og zigbee2mqtt -
Noen som har prøvd rimelig wifi garasjeportåpner
stigvi svarte på Gravity sitt emne i Annen Elektronikk
Jeg har ikea sin zigbee vippebryter strategisk plassert ved porten. Fungerer fint det ...... -
Noe så kjedelig som å bytte ut appdaemon med pyscript. Pyscript er et ganske nytt prosjekt til Home Assistant. Den kom i fjor høst. Appdaemon har fungert veldig bra for min del, men av og til føler en at det er å skyte spurv med kanon. At den er en add-on og kommuniserer med HA via et rest api gjør også litt til at den ikke er lynrask. Av og til kunne hendelser bruke lange 0,5s på å vandre fra HA til Appdaemon. Pyscript er en komponent til HA og er mye nærmere dataene. I tillegg har utvikleren tenkt lurt og slikt som entiteter kan aksesseres som python variable istedenfor via funksjoner som i Appdaemon. Appdaemon sin sterke avhengighet av å bruke timere slipper en også i pyscript der det er mer naturlig å bruke waitfor eller sleep istedenfor. Føler en at en trenger noe mer enn Home Assistant sin innebygde automasjon så kan jeg anbefale pyscript. Det meste gjøres langt lettere i python. Her er et eksempel for "ringe på dørklokken" kode. @event_trigger("deconz_event", "id == 'bell' and input_boolean.sleeptime == 'off'") @time_active("range(00:00, 23:59:59)", hold_off=30) def doorbell(context, device_id, event_type, trigger_type, unique_id, id=None, event=None): log.info("Noen ringte paa") light.garasje.turn_on(flash = "short") light.bod.turn_on(flash = "short") light.vaskerom_tak.turn_on(flash = "short") light.bad_u_etg.turn_on(flash = "short") script.doorbell.turn_on() script.send_melding.turn_on(variables = {'title': 'Dør', 'message': 'Noen ringte på', 'channel': 'Info'}) camera.kamera1_cam.snapshot(filename = "/media/snapshot_bell1.jpg") camera.kamera2_cam.snapshot(filename = "/media/snapshot_bell2.jpg") camera.kamera3_cam.snapshot(filename = "/media/snapshot_bell3.jpg") camera.kamera4_cam.snapshot(filename = "/media/snapshot_bell4.jpg") notify.mobile_app_sm_g715fn(message = "Har dere besøk?", title = "Varme", data = {'actions': [{'action': 'nothing', 'title': 'Nei'}, {'action': 'SWITCH_ON_VISITORS', 'title': 'Ja'}]}) @event_trigger("mobile_app_notification_action") def handle_event(action=None): if action == "SWITCH_ON_VISITORS": input_boolean.visitors_comfort_temp.turn_on()
-
En Aqara dørsensor
-
Dette har vært diskutert før. Å stoppe ventilasjonen betyr lite for brannutviklingen. Derimot er det viktig å få ut røyk med hensyn til de som er i huset og sånn sett kan det være lurt å sette vifter på maks fart.
-
Wifi modul til EOmini ladestasjon
stigvi svarte på Ravn sitt emne i Strømsparing og strøm-overvåkning
Kult og et flott alternativ til en konkurrent som er avhengig av en skytjeneste for å virke optimalt -
Det tror jeg faktisk de færreste har
-
Hva med å ta strømmen kun hvis ingen er hjemme?
-
Det er vel derfor det er påbudt med utvendig og lett tilgjengelig skap med hovedsikring ute på nye hus. Genialt for gatas pøbelunger. Nå er det ikke "ring og spring", men "slå av og spring"
-
Det er ikke noe usikkerhet i det. Ballen er der rett foran ansiktet og å la bilen sige i mot i lav fart til den akkurat berører ballen er så lett at tilogmed jeg og kånå klarer det hver dag.