Indholdsfortegnelse:

ESPHOME SONOF S26 Timed Light: 11 trin (med billeder)
ESPHOME SONOF S26 Timed Light: 11 trin (med billeder)

Video: ESPHOME SONOF S26 Timed Light: 11 trin (med billeder)

Video: ESPHOME SONOF S26 Timed Light: 11 trin (med billeder)
Video: Изучай английский через историю ★ история с субтитрам... 2024, November
Anonim
ESPHOME SONOF S26 tidsindstillet lys
ESPHOME SONOF S26 tidsindstillet lys

God dag. Så jeg har et akvariumslys, som jeg vil tænde og slukke på et bestemt tidspunkt på dagen. Jeg var bare nødt til at gøre det kompliceret for mig selv. Jeg vil gerne kunne ændre den tid, den tændes og slukkes fra mit Home Assistant -dashboard. Måske endnu mere.

Så lad os bare se, hvor meget mere jeg kan tage mig selv ind i et kaninhul.

Trin 1: Trin 1: Jeg har brug for en måde at sende tiderne hjemmefra -assistenten

Noget googling hjælper. Nogle hjælper med at trække dit hår ud, hvis du faktisk har nogen: POpen my Visual Studio Code Editor add-on. Under Config -mappen skal du finde filen config.yaml og kopiere og indsætte nogle ting, jeg fandt skjult i et eller andet forum. Undskyld hvis jeg huskede jeg ville give anerkendelse. Tilføjede koden og genstartede hjemmeassistent.

Trin 2: Trin 2: Tilføjede følgende kode til Configuration.yaml

Trin 2: Tilføjede følgende kode til Configuration.yaml
Trin 2: Tilføjede følgende kode til Configuration.yaml

input_number:

ft_start_hr:

navn: FT Light Start Hours

ikon: mdi: urstart

min: 0

maks: 23

trin 1

# initial: 13

Den første linje vil være input -id -enheds -id.

Dernæst har vi brug for nogle detaljer til denne lille fyr:

Et navn vil være fantastisk: FT Light Start Hours for denne ene P. S. FT er til Fish Tank … Ikke hvad du tænkte rigtigt?

Næste er et valgfrit ikon. Masser derude at vælge imellem, så gå amok … eller ej.

Derefter kan vi indsætte en min, max og trinværdi. Da dette er timer, valgte jeg 0 - 23 med enkelte trin.

Oprindeligt havde jeg en startværdi, og når hjemmeassistent genstartede, ville den ændre den til denne startværdi. Jeg besluttede at kommentere det, da jeg ville have Hjemassistent til at prøve at huske den sidste værdi, jeg havde angivet for det.

Du kan sætte i tilstand for at vælge en boks. Men som standard vælger den en god skyder til dig. Jeg tror, at en skyder vil gøre det nu.

Vær opmærksom på fordybningerne, da de er meget vigtige. Se billedet

Så disse vil give dig enheder i hjemmeassistent for at kunne justere.

Her er et link til mere information om inputnumre:

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

Trin 3: Trin 3: Nu skal vi hente oplysningerne til ESPHOME API

Trin 3: Nu skal vi hente informationen til ESPHOME API
Trin 3: Nu skal vi hente informationen til ESPHOME API

sensor:

- platform: skabelon

sensorer:

ft_start_hr:

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

n

Dette vil give ESPHome API den nødvendige forbindelse, såvel som det nu er et helt tal i stedet for fancy tekstskyder:-P

Her tager det input -nummeret tilstand og konverterer det til et helt tal og gemmer det i en sensor.

Her er mere information om skabelonerne:

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

Åh, jeg ændrede filtypen af min fil til tekst, så jeg kan uploade den … Instrukturer kan være ødelæggelige med en yaml …

Trin 4: Trin 4: Så ESPHome -konfiguration af stikket Now

Trin 4: Så ESPHome -konfigurationen af stikket nu
Trin 4: Så ESPHome -konfigurationen af stikket nu

Jeg startede med en basekonfiguration til s-on-off stikket og begyndte derefter at pille.

Jeg vil ikke gå i detaljer om, hvordan man blinker S26 -stikket med ESPHome, da google har alle svarene.

Min fulde konfigurationsfil kan downloades i slutningen. Da Da Dah…

Så lad os starte med den linkede del til Home Assistant:

Vi skal oprette sensorer, der matcher sensorerne i hjemmeassistenten, så de kan tale med hinanden.

Trin 5: Trin 5: forbindelsen til ESPHome Home Assistant … Beam Me Up Scotty

Trin 5: ESPHome Home Assistant Connection … Beam Me Up Scotty
Trin 5: ESPHome Home Assistant Connection … Beam Me Up Scotty

sensor:

- platform: Hjælpeassistent

entity_id: sensor.ft_start_hr

id: id_ft_start_hr

Så nu opretter vi en sensor i ESPHome af typen homeassistant. Hvem ville have gættet?

Enheds -id'et skal matche det, du har konfigureret i din configuration.yaml -fil.

Jeg konfigurerede et id, så ESPHome kunne referere til denne sensor i sin overflod af tænkning.

Trin 6: Trin 6: Lad os tilføje noget tid

Trin 6: Lad os tilføje noget tid
Trin 6: Lad os tilføje noget tid

Så da dette er et timet stik … Lad os faktisk tilføje lidt tid … Eller er det trukket fra? Er det nu i fortiden?

Her er nogle grundlæggende oplysninger om tidskomponenten. Vi kan vælge nogle forskellige, men jeg valgte hjemmeassistent. For nemt?

esphome.io/components/time.html

Trin 7: Trin 7: Interval

Trin 7: Interval
Trin 7: Interval

Nej det er ikke en pause, eller er det?

interval:

- interval: 1 sek

derefter:

- lambda: |-

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

Så jeg indstillede et interval på 1 sekund for at skrive sensorværdien fra hjemmeassistent til den globale variabel.

Jeg vil bare gøre dette en gang i sekundet, da tiden tikker … tick tock

Trin 8: Trin 8: Så vi har tid og penge … Hvad så?

Trin 8: Så vi har tid og penge … Hvad så?
Trin 8: Så vi har tid og penge … Hvad så?

Så jeg besluttede at bruge en binær sensor skabelon til at afgøre, om det er tid til at tænde kontakten switch switch … relæ

Jeg oprettede tre switches med id'erne: start_time_valid, stop_time_valid og run_time_valid

start_time_valid er sand, når det nu er forbi den tid, der er konfigureret til at tænde relæet.

Jeg brugte nestede hvis udsagn til at kontrollere, om vi var større eller lig med de nødvendige sekunder, derefter minutter og endelig timer.

stop_time_valid er sand, når det er nu, før det er tid til at slukke kontakten. Dette er omvendt for at kontrollere, at nu ikke er forbi den nødvendige tid til at slukke relæet

run_time_valid er sand, når både start_time_valid og stop_time_valid er sande. Jeg formoder, at jeg bare kunne have brugt en normal og tilstand til denne. Jeg kom lige i gang med tingene med lambdas.

- platform: skabelon

navn: "Starttid gyldig"

id: start_time_valid

lambda: |-

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

vende tilbage sandt;

}

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

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

vende tilbage sandt;

}

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

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

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

vende tilbage sandt;

}

andet {

return falsk;

}

Trin 9: Trin 9: Nu for nogle scripts: 'At være, eller ikke være: Det er spørgsmålet'

Trin 9: Nu til nogle scripts: 'At være eller ikke være: det er spørgsmålet'
Trin 9: Nu til nogle scripts: 'At være eller ikke være: det er spørgsmålet'

Hmm forkert script fyr!

Så hvis jeg tilsluttede kontakten … eller husstrømmen lige var tændt, ville jeg gerne have kontakten til at vide, om den er tænkt eller slukket og handle derefter. (ja vi går alle til skuespilstimer)

Det første script -id: checkstatuson, er at kontrollere, om vi er tænkt til at være tændt og handle i overensstemmelse hermed. Jeg inkluderede også et globalt flag med id: trackingon for at sikre, at dette script bare køres en gang og ikke forhindrer mine andre scripts i at gøre deres del i stykket.

Dette har 3 og betingelser: relæet er slukket, det er tænkt at være tændt, og jeg har ikke allerede gjort mit. Dette vil derefter slukke alle andre scripts, der kører, tænde relæet og indstille sporingsflaggene.

Det andet script -id: checkstatusoff, er lige det modsatte af det første. Vi tjekker bare, om vi skal lukke gardinerne nu. Sporingsflaget for denne er trackingoff

Jeg kører disse to scripts i intervallet på 1 sekund for at kontrollere hvert sekund.

Trin 10: Trin 10: Nogle bonusscripts

Trin 10: Nogle bonusscripts
Trin 10: Nogle bonusscripts

Yderligere to funktioner, jeg ønskede at tilføje, var, hvis jeg slukkede lyset på tanken, som det vil tænde igen efter 5 sekunder, hvis lyset er tænkt på det tidspunkt. Hvis lyset også var slukket, og jeg ville tænde det for at se mine fishies, og det var ude af planlagt til tiden, ville det tænde i 5 minutter. Ja 5 minutter er lang nok … Kom tilbage til arbejdet.

Det første script -id: relayisoff tænder lyset i 5 minutter, hvis det ikke er planlagt til tiden og derefter slukker.

Det andet script -id: relayison er praktisk talt omvendt af det første og vil tænde lyset igen 5 sekunder senere, hvis det er tænkt. Hvem sagde, at du kan slukke min lysmester!

Her er nogle flere oplysninger om scripts:

esphome.io/guides/automations.html

Nogle bonusoplysninger om scripts er, at de ikke blokerer. Medmindre du sætter en forsinkelse i en lambda. Uh Nej Nej Nej

Trin 11: Trin 11: Nogle sidste tanker

Trin 11: Nogle sidste tanker
Trin 11: Nogle sidste tanker
Trin 11: Nogle sidste tanker
Trin 11: Nogle sidste tanker

Fra hjemmeassistent ønskede jeg, at kontakten skulle fungere på samme måde som knappen.

Jeg lagde ikke et navn til den lokale sensor for den binære sensor, da jeg ikke behøvede at se den blive skubbet ind i hjemmeassistenten.

Jeg lagde ikke et navn til relækontakten, da jeg ville bruge scripts til at skifte fra hjemmeassistent.

Jeg oprettede en skabelonomskifter med et navn, så jeg kan bruge det til at skifte fra hjemmeassistent. Det kører mine scripts på samme måde som den lokale switch på stikket.

Jeg har ikke testet, om min hjemmeassistent skulle slukkes, hvis stikket stadig fungerer korrekt. Det håber jeg. Jeg har set nogle indlæg om nogle problemer, når jeg mister forbindelsen til Home Assistant API.

Jeg håber virkelig, at denne lille tutorial vil hjælpe dig, og du er velkommen til at hjælpe mig med at gøre det bedre. Jeg er ingen ekspert og lærer meget langsomt. Jeg tænkte bare, at nogle ting, jeg lærte at gøre, kan hjælpe nogen derude, der kæmper for at finde ud af det.

Nu for at ændre tiderne i hjemmeassistenten baseret på solopgang og solnedgang …+ - et par stykker

Anbefalede: