Obsah:

Časované světlo ESPHOME SONOF S26: 11 kroků (s obrázky)
Časované světlo ESPHOME SONOF S26: 11 kroků (s obrázky)

Video: Časované světlo ESPHOME SONOF S26: 11 kroků (s obrázky)

Video: Časované světlo ESPHOME SONOF S26: 11 kroků (s obrázky)
Video: Ночник на esp8266, ws2812 и прошивке esp home... 2024, Červenec
Anonim
Časované světlo ESPHOME SONOF S26
Časované světlo ESPHOME SONOF S26

Dobrý den. Mám tedy světlo v akváriu, které chci zapnout a vypnout v určitou denní dobu. Jen jsem si to musel zkomplikovat. Chci mít možnost změnit čas zapnutí a vypnutí z ovládacího panelu Home Assistant. Možná ještě víc.

Pojďme se tedy podívat, o kolik víc se mohu dostat do králičí nory.

Krok 1: Krok 1: Potřebuji způsob, jak poslat asistenta z domova

Nějaké googlování pomáhá. Nějaké vytrhávání vlasů pomáhá, pokud vlastně nějaké máte: POpen můj doplněk Visual Code Code Editor. Ve složce Config najděte soubor configuration.yaml a zkopírujte a vložte některé věci, které jsem našel skryté v nějakém fóru. Omlouvám se, pokud jsem si vzpomněl, dal bych potvrzení. Přidán kód a restartován domácí asistent.

Krok 2: Krok 2: Přidán následující kód do souboru Configuration.yaml

Krok 2: Do Configuration.yaml byl přidán následující kód
Krok 2: Do Configuration.yaml byl přidán následující kód

vstupní_číslo:

ft_start_hr:

název: FT Light Start Hours

ikona: mdi: spuštění hodin

min: 0

max: 23

krok 1

# počáteční: 13

První řádek bude ID entity vstupního čísla.

Dále potřebujeme několik podrobností o tomto malém vole:

Název bude úžasný: FT Light Start Hours for this one P. S. FT je pro Fish Tank … Není to tak, jak jste si mysleli, že?

Další je volitelná ikona. Je jich spousta na výběr, takže se zblázněte … nebo ne.

Pak můžeme zadat hodnotu min, max a step. Protože se jedná o hodiny, vybral jsem 0 - 23 s jednotlivými kroky.

Zpočátku jsem měl počáteční hodnotu a když se domácí asistent restartoval, změnil by to na tuto počáteční hodnotu. Rozhodl jsem se to okomentovat, protože jsem chtěl, aby se Home Assistant pokusil zapamatovat si poslední hodnotu, kterou jsem pro něj nastavil.

Můžete přepnout do režimu a vybrat pole. Ale jako výchozí zvolí pro vás pěkný posuvník. Myslím, že prozatím poslouží posuvník.

Uvědomte si odsazení, protože jsou velmi důležitá. Viz obrázek

Díky tomu vám entity v domácím asistentovi umožní přizpůsobit se.

Zde je odkaz na další informace o vstupních číslech:

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

Krok 3: Krok 3: Nyní potřebujeme získat informace do rozhraní ESPHOME API

Krok 3: Nyní potřebujeme získat informace do ESPHOME API
Krok 3: Nyní potřebujeme získat informace do ESPHOME API

senzor:

- platforma: šablona

senzory:

ft_start_hr:

šablona hodnoty: '{{States.input_number.ft_start_hr.state | int}} '

n

To poskytne ESPHome API požadované připojení, stejně jako nyní je místo efektního posuvníku textu celé číslo:-P

Zde převezme stav vstupního čísla a převede jej na celé číslo a uloží jej do senzoru.

Zde je několik dalších informací o šablonách:

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

Ach, změnil jsem příponu souboru svého souboru na text, abych jej mohl nahrát … Instructables může být zničitelné pomocí yaml …

Krok 4: Krok 4: Takže konfigurace ESPHome Plug Now

Krok 4: Takže konfigurace ESPHome Plug Now
Krok 4: Takže konfigurace ESPHome Plug Now

Začal jsem se základní konfigurací zástrčky s-on-off a poté jsem začal šťourat.

Nebudu se podrobně zabývat tím, jak blikat zástrčku S26 pomocí ESPHome, protože Google má všechny odpovědi.

Můj úplný konfigurační soubor bude na konci k dispozici ke stažení. Da Da Dah…

Začněme tedy propojenou částí s Home Assistant:

Musíme vytvořit senzory, které odpovídají senzorům v domácím asistentovi, aby spolu mohli mluvit.

Krok 5: Krok 5: Připojení ESPHome Home Assistant… Beam Me Up Scotty

Krok 5: Připojení domovského asistenta ESPHome… Beam Me Up Scotty
Krok 5: Připojení domovského asistenta ESPHome… Beam Me Up Scotty

senzor:

- platforma: homeassistant

entity_id: sensor.ft_start_hr

id: id_ft_start_hr

Nyní tedy v ESPHome vytvoříme senzor typu homeassistant. Kdo by to byl tušil?

ID entity bude muset odpovídat tomu, co jste nastavili v souboru configuration.yaml.

Nastavil jsem ID, aby ESPHome mohl odkazovat na tento senzor v jeho množství myšlení.

Krok 6: Krok 6: Pojďme přidat nějaký čas

Krok 6: Pojďme přidat nějaký čas
Krok 6: Pojďme přidat nějaký čas

Takže s tím, že se jedná o časovanou zástrčku … Pojďme vlastně přidat nějaký čas … Nebo se to odečítá? Je to nyní v minulosti?

Zde jsou některé základy časové složky. Můžeme si vybrat různé, ale já jsem si vybral homeassistant. Příliš snadné?

esphome.io/components/time.html

Krok 7: Krok 7: Interval

Krok 7: Interval
Krok 7: Interval

Ne, není to přestávka, nebo ano?

časový úsek:

- interval: 1 s

pak:

- lambda: |-

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

Nastavil jsem tedy interval 1 sekundu pro zápis hodnoty senzoru z domácího asistenta do globální proměnné.

Chci to udělat jen jednou za sekundu, jak čas tiká … tik tock

Krok 8: Krok 8: Takže máme čas a peníze … Co dál?

Krok 8: Takže máme čas a peníze … Co dál?
Krok 8: Takže máme čas a peníze … Co dál?

Rozhodl jsem se tedy použít šablonu binárního senzoru k určení, zda je čas sepnout spínač spínače spínače … relé

Vytvořil jsem tři přepínače s ID: start_time_valid, stop_time_valid a run_time_valid

start_time_valid je true, když nyní uplynul čas nastavený pro zapnutí relé.

Použil jsem příkazy nested if, abych zkontroloval, zda jsme větší nebo rovni požadovaným sekundám, pak minutám a nakonec hodinám.

stop_time_valid je true, když je nyní, než je nastaven čas pro vypnutí přepínače. Toto je obráceno pro kontrolu, že nyní nepřekročil požadovaný čas pro vypnutí relé

run_time_valid je true, když start_time_valid i stop_time_valid jsou pravdivé. Předpokládám, že jsem na to mohl použít normální stav. Právě jsem se dostal do pohybu věcí s lambdy.

- platforma: šablona

název: "Čas zahájení platnosti"

id: start_time_valid

lambda: |-

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

return true;

}

else if (id (homeassistant_time).now (). hour == id (gl_ft_start_hr) &&

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

return true;

}

else if (id (homeassistant_time).now (). hour == id (gl_ft_start_hr) &&

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

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

return true;

}

jinak {

return false;

}

Krok 9: Krok 9: Nyní pro některé skripty: „Být nebo nebýt: To je otázka“

Krok 9: Nyní pro některé skripty: „Být nebo nebýt: To je otázka“
Krok 9: Nyní pro některé skripty: „Být nebo nebýt: To je otázka“

Hmm špatný scénář, kámo!

Pokud jsem tedy zapojil vypínač … nebo se právě vrátilo napájení domu, chtěl jsem, aby vypínač věděl, zda má být zapnutý nebo vypnutý, a podle toho se choval. (ano, všichni chodíme na hodiny herectví)

První id skriptu: checkingstatuson, je kontrola, zda máme být zapnuti a podle toho se chovat. Také jsem přidal globální vlajku s id: trackingon, abych zajistil, že tento skript bude spuštěn pouze jednou a nebude bránit mým dalším skriptům, aby dělaly svou roli ve hře.

To má 3 a podmínky: relé je vypnuto, má být zapnuto a já jsem ještě neudělal svou část. Tím se potom vypnou všechny ostatní spuštěné skripty, sepne relé a nastaví příznaky sledování.

Druhé ID skriptu: checkingstatusoff je pravým opakem prvního. Jen kontrolujeme, jestli teď musíme zatáhnout závěsy. Sledovací příznak pro tento je trackingoff

Tyto dva skripty spouštím v intervalu 1 sekundy, abych zkontroloval každou sekundu.

Krok 10: Krok 10: Některé bonusové skripty

Krok 10: Některé bonusové skripty
Krok 10: Některé bonusové skripty

Další dvě funkce, které jsem chtěl přidat, bylo, že když jsem vypnul světlo na nádrži, rozsvítí se znovu po 5 sekundách, pokud má světlo v té době svítit. Také, pokud by světlo zhaslo a chtěl jsem ho zapnout, abych viděl své ryby, a bylo to mimo plánovaný čas, zapne se to na 5 minut. Ano, 5 minut je dost dlouho … Vraťte se do práce.

První id skriptu: relayisoff rozsvítí světlo na 5 minut, pokud je vypnuto podle plánu včas, a poté se vypne.

Druhý skript id: reléison je prakticky obrácen k prvnímu a pokud má být zapnuto, světlo se znovu zapne o 5 sekund později. Kdo řekl, že můžeš vypnout můj světelný pane!

Zde je několik dalších informací o skriptech:

esphome.io/guides/automations.html

Některé bonusové informace o skriptech jsou, že neblokují. Pokud nedáte zpoždění v lambda. Uh Ne Ne Ne

Krok 11: Krok 11: Některé závěrečné myšlenky

Krok 11: Některé závěrečné myšlenky
Krok 11: Některé závěrečné myšlenky
Krok 11: Některé závěrečné myšlenky
Krok 11: Některé závěrečné myšlenky

Od domácího asistenta jsem chtěl, aby přepínač fungoval stejně jako tlačítko.

Nezadal jsem název místního přepínače binárních senzorů, protože jsem nemusel vidět, jak je tlačen v domácím asistentovi.

Nezadal jsem název reléového spínače, protože jsem chtěl použít skripty pro přepnutí z domácího asistenta.

Vytvořil jsem přepínač šablony se jménem, abych jej mohl použít k přepnutí z domácího asistenta. Spustí mé skripty stejně jako místní přepínač na zástrčce.

Netestoval jsem, zda vypnutí domácího asistenta, pokud bude zástrčka stále fungovat správně. Doufám, že ano. Při ztrátě připojení k Home Assistant API jsem viděl nějaké příspěvky o některých problémech.

Opravdu doufám, že vám tento malý návod pomůže a neváhejte mi ho pomoci vylepšit. Nejsem žádný odborník a učím se velmi pomalu. Jen jsem si myslel, že některé věci, které jsem se naučil dělat, mohou pomoci někomu tam venku, kdo se snaží přijít na to.

Nyní změňte časy v domácím asistentovi na základě východu a západu slunce …+ - několik

Doporučuje: