Spisu treści:

ESPHOME SONOF S26 Czasowe światło: 11 kroków (ze zdjęciami)
ESPHOME SONOF S26 Czasowe światło: 11 kroków (ze zdjęciami)

Wideo: ESPHOME SONOF S26 Czasowe światło: 11 kroków (ze zdjęciami)

Wideo: ESPHOME SONOF S26 Czasowe światło: 11 kroków (ze zdjęciami)
Wideo: Ник Лейн: Происхождение жизни, эволюция, инопланетная жизнь 2024, Listopad
Anonim
ESPHOME SONOF S26 Czasowe światło
ESPHOME SONOF S26 Czasowe światło

Dobry dzień. Mam więc lampkę do akwarium, którą chcę włączać i wyłączać o określonej porze dnia. Po prostu musiałem to sobie skomplikować. Chcę mieć możliwość zmiany czasu włączania i wyłączania z pulpitu Home Assistant. Może nawet więcej.

Zobaczmy więc, o ile jeszcze mogę się zabrać do króliczej nory.

Krok 1: Krok 1: Potrzebuję sposobu na wysłanie czasu z Home Assistant

Trochę googlowania pomaga. Niektóre z wyrywania włosów pomagają, jeśli faktycznie masz jakiś dodatek:POtwórz mój Visual Studio Code Editor. W folderze Config znajdź plik configuration.yaml i skopiuj i wklej kilka rzeczy, które znalazłem ukryte na jakimś forum. Przepraszam, gdybym pamiętał, dałbym uznanie. Dodano kod i zrestartowałem asystenta domowego.

Krok 2: Krok 2: Dodano następujący kod do pliku Configuration.yaml

Krok 2: Dodano następujący kod do pliku Configuration.yaml
Krok 2: Dodano następujący kod do pliku Configuration.yaml

input_number:

ft_start_hr:

Nazwa: Godziny rozpoczęcia światła FT

ikona: mdi: start zegara

min: 0

max: 23

krok 1

# inicjał: 13

Pierwsza linia będzie numerem wejściowym identyfikatora jednostki.

Następnie potrzebujemy kilku szczegółów dotyczących tego małego gościa:

Nazwa będzie niesamowita: godziny startu FT Light dla tego jednego PS. FT to Fish Tank… Nie to, o czym myślałeś, prawda?

Dalej jest opcjonalna ikona. Jest tam wiele do wyboru, więc zaszalej… lub nie.

Następnie możemy podać wartość minimalną, maksymalną i kroku. Ponieważ są to godziny wybrałem 0 - 23 pojedynczymi krokami.

Początkowo miałem wartość początkową, a po ponownym uruchomieniu asystenta domowego zmieniono ją na tę początkową. Postanowiłem to skomentować, ponieważ chciałem, aby Home Assistant spróbował zapamiętać ostatnią wartość, którą dla niego ustawiłem.

Możesz wprowadzić tryb, aby wybrać pudełko. Ale domyślnie wybiera dla ciebie fajny suwak. Myślę, że na razie wystarczy suwak.

Uważaj na wcięcia, ponieważ są one bardzo ważne. Zobacz obraz

Więc to da ci istoty w asystencie domowym, aby móc się dostosować.

Oto link do dodatkowych informacji o numerach wejściowych:

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

Krok 3: Krok 3: Teraz musimy uzyskać informacje do ESPHOME API

Krok 3: Teraz musimy pobrać informacje do ESPHOME API
Krok 3: Teraz musimy pobrać informacje do ESPHOME API

czujnik:

- platforma: szablon

czujniki:

ft_start_hr:

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

n

To da ESPHome API wymagane połączenie, a teraz jest to liczba całkowita zamiast fantazyjnego suwaka tekstowego:-P

Tutaj pobiera stan numeru wejściowego i konwertuje go na liczbę całkowitą i przechowuje w czujniku.

Oto więcej informacji na temat szablonów:

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

Och, zmieniłem rozszerzenie pliku mojego pliku na tekst, aby móc go przesłać … Instrukcje mogą być zniszczalne za pomocą yaml …

Krok 4: Krok 4: Tak więc konfiguracja wtyczki ESPHome teraz

Krok 4: Więc konfiguracja wtyczki ESPHome teraz
Krok 4: Więc konfiguracja wtyczki ESPHome teraz

Zacząłem od podstawowej konfiguracji wtyczki s-on-off, a potem zacząłem majstrować.

Nie będę wchodzić w szczegóły jak flashować wtyczkę S26 za pomocą ESPHome, ponieważ google ma wszystkie odpowiedzi.

Mój pełny plik konfiguracyjny będzie dostępny do pobrania na końcu. Da Da Da…

Zacznijmy więc od połączonej części do Home Assistant:

Musimy stworzyć czujniki, które pasują do czujników w asystencie domowym, aby mogły ze sobą rozmawiać.

Krok 5: Krok 5: Połączenie ESPHome Home Assistant… Beam Me Up Scotty

Krok 5: Połączenie z ESPHome Home Assistant… Beam Me Up Scotty
Krok 5: Połączenie z ESPHome Home Assistant… Beam Me Up Scotty

czujnik:

- platforma: pomoc domowa

podmiot_id: sensor.ft_start_hr

id: id_ft_start_hr

Więc teraz tworzymy czujnik w ESPHome typu homeassistant. Kto by się domyślił?

Identyfikator jednostki będzie musiał odpowiadać temu, co ustawiłeś w pliku configuration.yaml.

Ustawiłem identyfikator, aby ESPHome mógł odnieść się do tego czujnika w jego obfitości myślenia.

Krok 6: Krok 6: Dodajmy trochę czasu

Krok 6: Dodajmy trochę czasu
Krok 6: Dodajmy trochę czasu

Więc z tym, że jest to wtyczka czasowa… Dodajmy trochę czasu… A może odejmijmy? Czy to już przeszłość?

Oto kilka podstawowych elementów składowych czasu. Możemy wybrać kilka innych, ale ja wybrałem pomoc domową. Zbyt łatwe?

esphome.io/components/time.html

Krok 7: Krok 7: Interwał

Krok 7: Interwał
Krok 7: Interwał

Nie, to nie jest przerwa, czy to prawda?

interwał:

- interwał: 1sek

następnie:

- lambda: |-

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

Ustawiłem więc interwał 1 sekundy, aby zapisać wartość czujnika z asystenta domowego do zmiennej globalnej.

Po prostu chcę to robić raz na sekundę, ponieważ czas ucieka… tik

Krok 8: Krok 8: Mamy czas i pieniądze… Co dalej?

Krok 8: Mamy więc czas i pieniądze… Co dalej?
Krok 8: Mamy więc czas i pieniądze… Co dalej?

Postanowiłem więc użyć szablonu czujnika binarnego, aby określić, czy nadszedł czas, aby włączyć przełącznik przełącznik przełącznik… przekaźnik

Stworzyłem trzy przełączniki o identyfikatorach: start_time_valid, stop_time_valid i run_time_valid

start_time_valid jest prawdziwe, gdy minął czas ustawiony na włączenie przekaźnika.

Użyłem zagnieżdżonych instrukcji if, aby sprawdzić, czy byliśmy więksi lub równi wymaganym sekundom, następnie minutom i wreszcie godzinom.

stop_time_valid jest prawdziwe, gdy jest teraz przed upływem czasu ustawionego na wyłączenie przełącznika. Jest to odwrócone w celu sprawdzenia, czy nie minął wymagany czas na wyłączenie przekaźnika

run_time_valid jest prawdziwe, gdy zarówno start_time_valid, jak i stop_time_valid są prawdziwe. Przypuszczam, że mogłem po prostu użyć normalnego i stanu do tego. Właśnie zacząłem szaleć z lambdami.

- platforma: szablon

nazwa: „Ważny czas rozpoczęcia”

id: start_time_valid

lambda: |-

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

zwróć prawdę;

}

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

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

zwróć prawdę;

}

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().second >= id(gl_ft_start_ss)){

zwróć prawdę;

}

w przeciwnym razie {

zwróć fałsz;

}

Krok 9: Krok 9: Teraz niektóre skrypty: „Być albo nie być: oto jest pytanie”

Krok 9: Teraz niektóre skrypty: „Być albo nie być: oto jest pytanie”
Krok 9: Teraz niektóre skrypty: „Być albo nie być: oto jest pytanie”

Hmm zły skrypt stary!

Więc jeśli podłączyłem przełącznik… lub zasilanie domowe właśnie wróciło, chciałem, aby przełącznik wiedział, czy ma być włączony, czy wyłączony i odpowiednio działał. (tak, wszyscy idziemy na lekcje aktorstwa)

Pierwszy id skryptu: sprawdzanie statusu, to sprawdzanie, czy mamy być włączone i odpowiednie działanie. Dołączyłem również globalną flagę z identyfikatorem: trackingon, aby upewnić się, że ten skrypt zostanie uruchomiony tylko raz i nie przeszkadza innym moim skryptom w odegraniu swojej roli w grze.

To ma 3 i warunki: przekaźnik jest wyłączony, ma być włączony, a ja jeszcze nie wykonałem swojej części. Spowoduje to wyłączenie wszystkich innych uruchomionych skryptów, włączenie przekaźnika i ustawienie flag śledzenia.

Drugi identyfikator skryptu: checkstatusoff, jest przeciwieństwem pierwszego. Sprawdzamy tylko, czy nie musimy teraz zamykać zasłon. Flaga śledzenia dla tego to trackingoff

Uruchamiam te dwa skrypty w odstępie 1 sekundy, aby sprawdzać co sekundę.

Krok 10: Krok 10: Niektóre skrypty bonusowe

Krok 10: Niektóre skrypty bonusowe
Krok 10: Niektóre skrypty bonusowe

Dwie dodatkowe funkcje, które chciałem dodać, to jeśli wyłączę światło przy zbiorniku, to włączy się ponownie po 5 sekundach, jeśli światło ma być włączone w tym czasie. Ponadto, jeśli światło było wyłączone i chciałem je włączyć, aby zobaczyć moje rybki, a nie było to zaplanowane na czas, włączyłoby się na 5 minut. Tak, 5 minut wystarczy… Wracaj do pracy.

Id pierwszego skryptu: relayisoff włączy światło na 5 minut, jeśli jest wyłączone zaplanowane na czas, a następnie zgaśnie.

Drugi identyfikator skryptu: relayison jest praktycznie odwrócony od pierwszego i ponownie włączy światło 5 sekund później, jeśli ma być włączone. Kto powiedział, że możesz wyłączyć moje światło, panie!

Oto więcej informacji o skryptach:

esphome.io/guides/automations.html

Niektóre dodatkowe informacje o skryptach to to, że nie blokują się. Chyba że umieścisz opóźnienie w lambda. Uh Nie Nie Nie

Krok 11: Krok 11: Kilka końcowych myśli

Krok 11: Kilka końcowych myśli
Krok 11: Kilka końcowych myśli
Krok 11: Kilka końcowych myśli
Krok 11: Kilka końcowych myśli

Od asystenta domowego chciałem, aby przełącznik działał tak samo jak przycisk.

Nie podałem nazwy dla lokalnego przełącznika czujnika binarnego, ponieważ nie musiałem widzieć go wciśniętego w asystenta domowego.

Nie umieszczałem nazwy dla przełącznika przekaźnika gdyż chciałem wykorzystać skrypty do robienia przełączenia z asystenta domowego.

Stworzyłem przełącznik szablonu z nazwą, abym mógł go użyć do przełączenia się z asystenta domowego. Uruchomi moje skrypty tak samo, jak lokalny przełącznik we wtyczce.

Nie testowałem, czy wyłączając mojego asystenta domowego, jeśli wtyczka nadal będzie działać poprawnie. Mam taką nadzieję. Widziałem kilka postów o problemach z utratą połączenia z API Home Assistant.

Naprawdę mam nadzieję, że ten mały samouczek pomoże ci i proszę, pomóż mi go ulepszyć. Nie jestem ekspertem i uczę się bardzo powoli. Pomyślałem tylko, że niektóre rzeczy, których się nauczyłem, mogą pomóc komuś, kto stara się to rozgryźć.

Teraz, aby zmienić godziny w asystencie domowym na podstawie wschodu i zachodu słońca…+ - kilka

Zalecana: