Innehållsförteckning:

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

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

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

God dag. Så jag har ett akvarellampa som jag vill tända och stänga av en viss tid på dygnet. Jag var bara tvungen att göra det komplicerat för mig själv. Jag vill kunna ändra tiden det slås på och av från min Home Assistant -instrumentpanel. Kanske ännu mer.

Så låt oss bara se hur mycket mer jag kan ta mig in i ett kaninhål.

Steg 1: Steg 1: Jag behöver ett sätt att skicka tiderna hemifrån -assistenten

En del googling hjälper. En del att dra ut håret hjälper, om du faktiskt har något: POpen my Visual Studio Code Editor add-on. Under Config -mappen hittar du filen configuration.yaml och kopierade och klistrade in saker jag hittade gömda i något forum. Förlåt om jag kom ihåg att jag skulle erkänna. Lade till koden och startade om hemassistenten.

Steg 2: Steg 2: Lade till följande kod i Configuration.yaml

Steg 2: Lade till följande kod i Configuration.yaml
Steg 2: Lade till följande kod i Configuration.yaml

input_number:

ft_start_hr:

namn: FT Light Starttimmar

ikon: mdi: klockstart

min: 0

max: 23

steg 1

# initial: 13

Den första raden kommer att vara inmatningsnummerets enhets -id.

Därefter behöver vi några detaljer för den här lilla killen:

Ett namn kommer att bli fantastiskt: FT Light Start Hours för den här P. S. FT är för Fish Tank … Inte vad du tänkte rätt?

Nästa är en valfri ikon. Massor där ute att välja mellan så bli galen … eller inte.

Sedan kan vi sätta in ett min, max och stegvärde. Eftersom det här är timmar valde jag 0 - 23 med enkla steg.

Inledningsvis hade jag ett initialvärde och när hemassistenten startade om skulle det ändra det till detta initialvärde. Jag bestämde mig för att kommentera det eftersom jag ville att Home Assistant skulle försöka komma ihåg det sista värdet jag hade satt för det.

Du kan sätta i läge för att välja en ruta. Men som standard väljer den en snygg reglage för dig. Jag tror att en reglera kommer att göra för nu.

Var medveten om fördjupningarna eftersom de är mycket viktiga. Se bilden

Så dessa kommer att ge dig enheter i hemassistent för att kunna justera.

Här är en länk till mer information om inmatningsnummer:

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

Steg 3: Steg 3: Nu behöver vi få informationen till ESPHOME API

Steg 3: Nu behöver vi få informationen till ESPHOME API
Steg 3: Nu behöver vi få informationen till ESPHOME API

sensor:

- plattform: mall

sensorer:

ft_start_hr:

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

n

Detta kommer att ge ESPHome API den anslutning som krävs, liksom det nu är ett heltal istället för snygg textreglage:-P

Här tar det inmatningsnumret och konverterar det till ett heltal och lagrar det i en sensor.

Här är lite mer information om mallarna:

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

Åh, jag har ändrat filtillägget för min fil till text så att jag kan ladda upp den … Instruktioner kan vara förstörbara med en yaml …

Steg 4: Steg 4: Alltså ESPHome -konfigurationen av Plug Now

Steg 4: Så ESPHome -konfiguration av plug -in nu
Steg 4: Så ESPHome -konfiguration av plug -in nu

Jag började med en baskonfiguration för s-on-off-kontakten och började sedan mixtra.

Jag kommer inte att gå in på detaljer om hur man blinkar S26 -kontakten med ESPHome eftersom google har alla svar.

Min fullständiga konfigurationsfil är tillgänglig för nedladdning i slutet. Da Da Dah …

Så låt oss börja med den länkade delen till Home Assistant:

Vi måste skapa sensorer som matchar sensorerna i hemassistenten så att de kan prata med varandra.

Steg 5: Steg 5: Anslutning till ESPHome Home Assistant … Beam Me Up Scotty

Steg 5: Anslutning till ESPHome Home Assistant … Beam Me Up Scotty
Steg 5: Anslutning till ESPHome Home Assistant … Beam Me Up Scotty

sensor:

- plattform: hemassistent

entity_id: sensor.ft_start_hr

id: id_ft_start_hr

Så nu skapar vi en sensor i ESPHome av typen homeassistant. Vem skulle ha gissat?

Entitets -id måste matcha det du ställde in i filen configuration.yaml.

Jag ställde in ett id så att ESPHome kunde referera till denna sensor i sitt överflöd av tänkande.

Steg 6: Steg 6: Låt oss lägga till lite tid

Steg 6: Låt oss lägga till lite tid
Steg 6: Låt oss lägga till lite tid

Så eftersom det här är en tidsinställd plug … Låter vi faktiskt lägga till lite tid … Eller är det subtraherat? Är det nu tidigare?

Här är några grunderna i tidskomponenten. Vi kan välja några olika men jag valde hemassistent. Alltför lätt?

esphome.io/components/time.html

Steg 7: Steg 7: Intervall

Steg 7: Intervall
Steg 7: Intervall

Nej det är inte en paus, eller är det?

intervall:

- intervall: 1sek

sedan:

- lambda: |-

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

Så jag ställde in ett intervall på 1 sekund för att skriva sensorvärdet från hemassistent till den globala variabeln.

Jag vill bara göra detta en gång i sekunden när tiden tickar … tick tock

Steg 8: Steg 8: Så vi har tid och pengar … Vad händer sedan?

Steg 8: Så vi har tid och pengar … Vad händer sedan?
Steg 8: Så vi har tid och pengar … Vad händer sedan?

Så jag bestämde mig för att använda en binär sensormall för att avgöra om det är dags att slå på omkopplaren … relä

Jag skapade tre switchar med id: erna start_time_valid, stop_time_valid och run_time_valid

start_time_valid är sant när det nu är över den tid som ställts in för att slå på reläet.

Jag använde kapslade if -uttalanden för att kontrollera om vi var större eller lika med de sekunder som krävs, sedan minuter och slutligen timmar.

stop_time_valid är sant när det är nu innan det är dags att ställa in strömbrytaren. Detta är omvänt för att kontrollera att nu inte har passerat den tid som krävs för att stänga av reläet

run_time_valid är sant när både start_time_valid och stop_time_valid är sanna. Jag antar att jag bara kunde ha använt en normal och skick för den här. Jag har precis kommit igång med lambdas.

- plattform: mall

name: "Starttid giltig"

id: start_time_valid

lambda: |-

if (id (hemassistant_tid).nu (). timme> id (gl_ft_start_hr)) {

återvända sant;

}

annars om (id (hemassistant_tid).now (). timme == id (gl_ft_start_hr) &&

id (hemassistant_tid).nu (). minut> id (gl_ft_start_mn)) {

återvända sant;

}

annars om (id (hemassistant_tid).now (). timme == id (gl_ft_start_hr) &&

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

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

återvända sant;

}

annat {

return falsk;

}

Steg 9: Steg 9: Nu för några skript: 'Att vara, eller inte vara: det är frågan'

Steg 9: Nu för några skript: 'Att vara, eller inte vara: det är frågan'
Steg 9: Nu för några skript: 'Att vara, eller inte vara: det är frågan'

Hmm fel manus!

Så om jag kopplade in strömbrytaren … eller om strömmen bara kom igen, ville jag att omkopplaren skulle veta om den är tänkt att vara på eller av och agera därefter. (ja vi går alla på skådespelarlektioner)

Det första skript -id: checkstatuson, är att kontrollera om vi är avsedda att vara på och agera därefter. Jag inkluderade också en global flagga med id: trackingon, för att se till att detta skript bara körs en gång och inte hindrar mina andra skript från att göra sin del i pjäsen.

Detta har tre och villkor: reläet är avstängt, det är tänkt att vara på och jag har inte redan gjort mitt. Detta kommer att stänga av alla andra skript som körs, slå på reläet och ställa in spårningsflaggor.

Det andra skript -id: checkstatusoff, är precis motsatsen till det första. Vi kontrollerar bara om vi behöver stänga gardinerna nu. Spårningsflaggan för den här är trackingoff

Jag kör dessa två skript i intervallet 1 sekund för att kontrollera varje sekund.

Steg 10: Steg 10: Några bonusskript

Steg 10: Några bonusskript
Steg 10: Några bonusskript

Ytterligare två funktioner jag ville lägga till var om jag släckte lampan vid tanken som den tänds igen efter 5 sekunder om lampan är tänkt att tändas vid den tiden. Dessutom, om lampan var släckt och jag ville slå på den för att se mina fishies och det var ur planerat i tid, skulle den slås på i 5 minuter. Ja 5 minuter är tillräckligt länge … Återgå till jobbet.

Det första skript -id: relayisoff kommer att tända lampan i 5 minuter om det är avstängt schemalagt i tid och sedan släckas.

Det andra skript -id: relayison är praktiskt taget omvänt från det första och tänds igen 5 sekunder senare om det är tänt. Vem har sagt att du kan stänga av min ljusa herre!

Här är lite mer information om skript:

esphome.io/guides/automations.html

Viss bonusinformation om skript är att de inte blockerar. Om du inte försenar en lambda. Nej nej nej

Steg 11: Steg 11: Några sista tankar

Steg 11: Några sista tankar
Steg 11: Några sista tankar
Steg 11: Några sista tankar
Steg 11: Några sista tankar

Från hemassistenten ville jag att omkopplaren skulle fungera på samma sätt som knappen.

Jag lade inte upp ett namn för den lokala switchens binära sensor eftersom jag inte behövde se att den trycktes in i hemassistenten.

Jag gav inget namn för reläomkopplaren eftersom jag ville använda skripten för att byta från hemassistent.

Jag skapade en mallomkopplare med ett namn så att jag kan använda det för att byta från hemassistent. Det kommer att köra mina skript på samma sätt som den lokala omkopplaren vid kontakten.

Jag har inte testat om jag vill stänga av min hemassistent om kontakten fortfarande fungerar korrekt. Jag hoppas det. Jag har sett några inlägg om vissa problem när jag förlorar anslutningen till Home Assistant API.

Jag hoppas verkligen att denna lilla handledning hjälper dig och du får gärna hjälpa mig att göra det bättre. Jag är ingen expert och lär mig väldigt långsamt. Jag tänkte bara att vissa saker jag lärde mig hur man gör kan hjälpa någon där ute som kämpar för att ta reda på det.

Nu för att ändra tiderna i hemassistenten baserat på soluppgång och solnedgång …+ - några

Rekommenderad: