Innholdsfortegnelse:

ESPHOME SONOF S26 Timed Light: 11 trinn (med bilder)
ESPHOME SONOF S26 Timed Light: 11 trinn (med bilder)

Video: ESPHOME SONOF S26 Timed Light: 11 trinn (med bilder)

Video: ESPHOME SONOF S26 Timed Light: 11 trinn (med bilder)
Video: Ник Лейн: Происхождение жизни, эволюция, инопланетная жизнь 2024, Juli
Anonim
ESPHOME SONOF S26 Timed Light
ESPHOME SONOF S26 Timed Light

God dag. Så jeg har et akvarellampe som jeg vil slå av og på et bestemt tidspunkt på dagen. Jeg måtte bare gjøre det komplisert for meg selv. Jeg vil kunne endre tiden den slås på og av fra Home Assistant -dashbordet. Kanskje enda mer.

Så la oss bare se hvor mye mer jeg kan ta meg inn i et kaninhull.

Trinn 1: Trinn 1: Jeg trenger en måte å sende tidene hjemmefra -assistenten

Noe googling hjelper. Noen å trekke ut håret hjelper, hvis du faktisk har noen: POpen my Visual Studio Code Editor add-on. Under Config -mappen finner du filen config.yaml og kopierte og limte inn ting jeg fant skjult i et forum. Beklager hvis jeg husket at jeg ville bekrefte det. Lagt til koden og startet hjemmeassistenten på nytt.

Trinn 2: Trinn 2: Lagt til følgende kode i Configuration.yaml

Trinn 2: Lagt til følgende kode i Configuration.yaml
Trinn 2: Lagt til følgende kode i Configuration.yaml

input_number:

ft_start_hr:

navn: FT Light Start Hours

ikon: mdi: klokke-start

min: 0

maks: 23

trinn 1

# initial: 13

Den første linjen vil være inngangsnummeret enhets -ID.

Deretter trenger vi noen detaljer for denne lille fyren:

Et navn vil være fantastisk: FT Light Start Hours for denne P. S. FT er for Fish Tank … Ikke det du tenkte riktig?

Neste er et valgfritt ikon. Mange der ute å velge mellom, så bli gal … eller ikke.

Deretter kan vi sette inn en min, maks og trinnverdi. Siden dette er timer valgte jeg 0 - 23 med enkle trinn.

I utgangspunktet hadde jeg en startverdi, og når hjemmeassistenten startet på nytt, ville den endre den til denne opprinnelige verdien. Jeg bestemte meg for å kommentere det da jeg ønsket at Hjemmeassistent skulle prøve å huske den siste verdien jeg hadde satt for den.

Du kan sette i modus for å velge en boks. Men som standard velger den en fin glidebryter for deg. Jeg tror en glidebryter vil gjøre det for nå.

Vær oppmerksom på fordypningene, da de er veldig viktige. Se bildet

Så disse vil gi deg enheter i hjemmeassistent for å kunne justere.

Her er en lenke til mer informasjon om inndatatall:

www.home-assistant.io/integrations/input_n…

Trinn 3: Trinn 3: Nå trenger vi å få informasjonen til ESPHOME API

Trinn 3: Nå trenger vi å få informasjonen til ESPHOME API
Trinn 3: Nå trenger vi å få informasjonen til ESPHOME API

sensor:

- plattform: mal

sensorer:

ft_start_hr:

value_template: '{{states.input_number.ft_start_hr.state | int}} '

n

Dette vil gi ESPHome API tilkoblingen som kreves, så vel som det nå er et heltall i stedet for fancy tekstglider:-P

Her tar det inndatatallstilstanden og konverterer det til et heltall og lagrer det i en sensor.

Her er litt mer informasjon om malene:

www.home-assistant.io/integrations/templat…

Oh, jeg endret filtypen til filen min til tekst, slik at jeg kan laste den opp … Instrukserbare filer kan være ødeleggende med en yaml …

Trinn 4: Trinn 4: Så ESPHome -konfigurasjonen av pluggen nå

Trinn 4: Så ESPHome -konfigurasjonen av pluggen nå
Trinn 4: Så ESPHome -konfigurasjonen av pluggen nå

Jeg begynte med en basiskonfigurasjon for s-on-off pluggen og begynte deretter å tinke.

Jeg vil ikke gå i detalj om hvordan du blinker S26 -pluggen med ESPHome ettersom google har alle svarene.

Min fulle konfigurasjonsfil vil være tilgjengelig for nedlasting på slutten. Da Da Dah…

Så la oss begynne med den koblede delen til Home Assistant:

Vi må lage sensorer som matcher sensorene i hjemmeassistenten, slik at de kan snakke med hverandre.

Trinn 5: Trinn 5: Tilkoblingen til ESPHome Home Assistant … Beam Me Up Scotty

Trinn 5: Tilkoblingen til ESPHome Home Assistant … Beam Me Up Scotty
Trinn 5: Tilkoblingen til ESPHome Home Assistant … Beam Me Up Scotty

sensor:

- plattform: Hjelpeassistent

entity_id: sensor.ft_start_hr

id: id_ft_start_hr

Så nå lager vi en sensor i ESPHome av typen homeassistant. Hvem hadde gjettet?

Enhets -ID -en må samsvare med det du konfigurerte i filen config.yaml.

Jeg konfigurerte en ID slik at ESPHome kunne referere til denne sensoren i sin overflod av tenkning.

Trinn 6: Trinn 6: La oss legge til litt tid

Trinn 6: La oss legge til litt tid
Trinn 6: La oss legge til litt tid

Så ettersom dette er en tidsbestemt plugg … Lar oss faktisk legge til litt tid … Eller trekker det fra? Er det nå i fortiden?

Her er noen grunnleggende om tidskomponenten. Vi kan velge noen forskjellige, men jeg valgte hjemmeassistent. For enkelt?

esphome.io/components/time.html

Trinn 7: Trinn 7: Intervall

Trinn 7: Intervall
Trinn 7: Intervall

Nei, det er ikke en pause, eller er det?

intervall:

- intervall: 1 sek

deretter:

- lambda: |-

id (gl_ft_start_hr) = id (id_ft_start_hr). stat;

Så jeg satte et intervall på 1 sekund for å skrive sensorverdien fra hjemmeassistent til den globale variabelen.

Jeg vil bare gjøre dette en gang i sekundet ettersom tiden tikker … tick tock

Trinn 8: Trinn 8: Så vi har tid og penger … Hva neste?

Trinn 8: Så vi har tid og penger … Hva neste?
Trinn 8: Så vi har tid og penger … Hva neste?

Så jeg bestemte meg for å bruke en binær sensormal for å avgjøre om det er på tide å slå på bryterbryteren… relé

Jeg opprettet tre brytere med ID -ene: start_time_valid, stop_time_valid og run_time_valid

start_time_valid er sant når det nå er over tiden som er satt opp for å slå på reléet.

Jeg brukte nestede if -setninger for å sjekke om vi var større eller lik sekundene som kreves, deretter minutter og til slutt timer.

stop_time_valid er sant når det er nå før det er på tide å slå av bryteren. Dette er omvendt for å kontrollere at nå ikke har passert den nødvendige tiden for å slå av reléet

run_time_valid er sant når både start_time_valid og stop_time_valid er sanne. Jeg antar at jeg bare kunne ha brukt en normal og tilstand for denne. Jeg kom akkurat i gang med ting med lambdas.

- plattform: mal

name: "Start Time Gyldig"

id: start_time_valid

lambda: |-

if (id (homeassistant_time).now (). time> id (gl_ft_start_hr)) {

returner sant;

}

ellers hvis (id (homeassistant_time).now (). time == id (gl_ft_start_hr) &&

id (homeassistant_time).now (). minutt> id (gl_ft_start_mn)) {

returner sant;

}

ellers hvis (id (homeassistant_time).now (). time == id (gl_ft_start_hr) &&

id (homeassistant_time).now (). minutt == id (gl_ft_start_mn) &&

id (homeassistant_time).now (). second> = id (gl_ft_start_ss)) {

returner sant;

}

annet {

return falsk;

}

Trinn 9: Trinn 9: Nå for noen skript: 'Å være, eller ikke å være: det er spørsmålet'

Trinn 9: Nå for noen skript: 'Å være, eller ikke å være: det er spørsmålet'
Trinn 9: Nå for noen skript: 'Å være, eller ikke å være: det er spørsmålet'

Hmm feil manus!

Så hvis jeg koblet til bryteren … eller om strømmen kom på igjen, ville jeg at bryteren skulle vite om den var tenkt å være på eller av og handle deretter. (ja, vi går alle på skuespillertimer)

Den første skript -id: kontrollstatus, sjekker om vi er ment å være på og handle deretter. Jeg inkluderte også et globalt flagg med id: trackingon, for å sikre at dette skriptet bare kjøres en gang og ikke hindrer de andre skriptene mine i å gjøre sitt i stykket.

Dette har 3 og betingelser: stafetten er av, den er tenkt å være på, og jeg har ikke allerede gjort mitt. Dette vil da slå av alle andre skript som kjører, slå på reléet og sette sporingsflaggene.

Den andre skript -id: checkstatusoff, er akkurat det motsatte av den første. Vi sjekker bare om vi må lukke gardinene nå. Sporingsflagget for denne er trackingoff

Jeg kjører disse to skriptene i intervallet på 1 sekund for å sjekke hvert sekund.

Trinn 10: Trinn 10: Noen bonusskript

Trinn 10: Noen bonusskript
Trinn 10: Noen bonusskript

Ytterligere to funksjoner jeg ønsket å legge til var hvis jeg slo av lyset på tanken som det vil slås på igjen etter 5 sekunder hvis lyset er tenkt å være på den tiden. Hvis lyset var slått av og jeg ønsket å slå det på for å se fiskene mine og det var ute av planlagt tid, ville det slå seg på i 5 minutter. Ja, 5 minutter er lenge nok … Kom tilbake på jobb.

Den første skript -ID: relayisoff vil slå på lyset i 5 minutter hvis det er slukket planlagt i tide og deretter slå seg av.

Den andre skript -id: relayison er praktisk talt reversert av den første og vil slå på lyset igjen 5 sekunder senere hvis den er tenkt å være på. Hvem sa at du kan slå av lysherren min!

Her er litt mer informasjon om skript:

esphome.io/guides/automations.html

Noe bonusinformasjon om skript er at de ikke blokkerer. Med mindre du setter en forsinkelse på en lambda

Trinn 11: Trinn 11: Noen siste tanker

Trinn 11: Noen siste tanker
Trinn 11: Noen siste tanker
Trinn 11: Noen siste tanker
Trinn 11: Noen siste tanker

Fra hjemmeassistent ønsket jeg at bryteren skulle fungere på samme måte som knappen.

Jeg la ikke navn på den lokale bryteren for binær sensor, da jeg ikke trengte å se at den ble presset inn i hjemmeassistenten.

Jeg la ikke navn på relébryteren, da jeg ønsket å bruke skriptene for å bytte fra hjemmeassistent.

Jeg opprettet en malbryter med et navn, slik at jeg kan bruke det til å bytte fra hjemmeassistent. Det vil kjøre skriptene mine på samme måte som den lokale bryteren på pluggen.

Jeg har ikke testet om jeg skulle slå av hjemmeassistenten hvis pluggen fortsatt fungerer som den skal. Jeg håper det. Jeg har sett noen innlegg om noen problemer når jeg mister forbindelsen til Home Assistant API.

Jeg håper virkelig at denne lille opplæringen vil hjelpe deg, og vær så snill å hjelpe meg med å gjøre det bedre. Jeg er ingen ekspert og lærer veldig sakte. Jeg tenkte bare at noen ting jeg lærte å gjøre, kan hjelpe noen der ute som sliter med å finne ut av det.

Nå for å endre tidene i hjemmeassistenten basert på soloppgang og solnedgang …+ - noen få

Anbefalt: