Automatyzacja - ta pierwsza

Automatyzacja - ta pierwsza

Na wszystkich tych, którzy wytrwali do tej pory czeka teraz nagroda. Pierwsza automatyzacja! Czyli dodajemy do naszego domu odrobinę tej osławionej inteligencji.

Nie wiem jakie urządzenia dodaliście do tej pory do swojego HA dlatego przykład będzie zawierał scenariusz, który da się zrealizować raczej u większości z Was. Na bazie tego scenariusza postaram się wyjaśnić podstawy działania Node-Red'a więc w razie czego będziecie mieli wiedzę aby spróbować innych, własnych pomysłów jeżeli mój przykład Wam z jakiegoś powodu nie będzie pasował.

Tyle tytułem wstępu, zaczynajmy. Załóżmy, że mamy w pokoju telewizor i jakieś oświetlenie z funkcją przyciemniania którym możemy zarządzać z HA. W moim przypadku jest to telewizor Sony z AndroidTV oraz lampa sufitowa Xiaomi/Philips. Oba te urządzenia po odpowiedniej konfiguracji można dodać do HA i w pełni nimi zarządzać. Nasz przykładowy scenariusz będzie polegał na tym, że automatycznie przyciemnimy światło sufitowe w momencie włączenia telewizora i rozjaśnimy je gdy go wyłączymy. Co by oglądało się lepiej.

Pierwsze co musimy zrobić to poznać nazwy naszych encji którymi chcemy zarządzać. Oczywiście wszystko dostępne jest w HA. W moim przypadku dla lampy to light.lampa_sufitowa_u_artura (light to domena oświetlenia natomiast po kropce to moja nazwa). Dla telewizora to media_player.arturtv (media_player. to domena wszystkich urządzeń multimedialnych. Telewizorów, odtwarzaczy, głośników, itp.). W HA nazwy encji zawsze składają się z dwóch członów - domeny.i_faktycznej_nazwy.

Mając te informacje przechodzimy do Node-Red'a i zaczynamy konfigurację scenariusza. Po pierwsze musimy zastanowić się co i jak chcemy zrobić (ten krok warto realizować w każdym procesie. W sumie to warto go realizować w większości sytuacji). Zatem zastanówmy się. Z naszego scenariusza wynika, że chcemy przyciemnić światło gdy włączymy telewizor i rozjaśnić gdy go wyłączymy. Więc wychodzi, że wyzwalaczem naszego procesu jest włączenie/wyłączenie telewizora. To natomiast jest niczym innym jak zmianą stanu encji media_player.arturtv z off na on i odwrotnie.

Wiem, brzmi to skomplikowanie ale zobaczycie wcale takie nie jest. Dobrze zatem jeszcze raz. Wychodzi na to, że nasz proces startujemy po zmianie stanu. Co zatem w NR mówi nam o zmianie stanu encji? A no jest taki nod nazywa się events: state w grupie nodów home assistant. Zatem zaczynamy od niego. Przeciągamy go z lewej na na obszar roboczy tak jak na rysunku poniżej.

Następnie klikamy na nim dwa razy i jesteśmy w jego konfiguracji. W polu Name wpisujemy Stan telewizora (jest to zwykły opis aby wiedzieć o co chodzi w przyszłości bez szczegółowej analizy). W polu Entity ID uzupełniamy nazwę naszej encji odpowiadającej za telewizor czyli u mnie to media_player.arturtv (system będzie podpowiadał encje w trakcie pisania) i tyle. Konfiguracja powinna wyglądać podobnie do poniższej (z wyjątkiem nazwy encji).

Naciskamy czerwony przycisk Done i koniec z tym nodem. Co zrobiliśmy? Posiadamy start procesu który zareaguje na każdą zmianę stanu encji telewizora. Co dalej? Chcemy żeby na włączenie (on) światło się przyciemniło, a na wyłączenie (off) rozjaśniło. No więc potrzebujemy kolejny nod, który odfiltruje nam dokładnie te dwa stany i umożliwi ustalenie innych zachowań dla każdego z nich. Idealny do tego jest nod switch. No to jedziemy!

Tak jak wyżej znajdujemy go w lewym panelu i wystawiamy na obszar roboczy, wchodzimy do konfiguracji i w polu Name podajemy jakąś nazwę w polu Property wpisujemy msg.payload.

Następnie określam wartości tego stanu w oknie poniżej (mały przycisk add na dole okna umożliwia dodawanie kolejnych warunków). Tak jak to widać na poniższym rysunku.

Zatwierdzamy konfigurację przyciskiem Done. Kolejnym krokiem jest połączenie nodów ze sobą. Czyli przeciągam linie od wyjścia pierwszego noda do wejścia drugiego noda. Wyjścia są po prawej stronie nodów, a wejścia są po lewej. Dzięki temu zmiana stanu wykryta w nodzie pierwszym zostanie wysłana do drugiego. Tam zostanie ona przeanalizowana pod kątem naszych warunków i gdy stan będzie on to trafi do górnego wyjścia, a jak będzie off to do dolnego wyjścia gdyż każdy warunek dodaje swoje wyjście do noda (po najechaniu myszką na wyjście w chmurce pojawi się odpowiadająca mu wartość) .

No więc teraz dodajemy nod odpowiedzialny za sterowanie światłem. To oznacza zmianę stanu encji odpowiedzialnej za oświetlenie. W moim przypadku light.lamap_sufitowa_u_artura. Do takich działań służy nod call service.

Więc ponownie: wyszukujemy,  wystawiamy, wchodzimy do konfiguracji i ustawiamy zgodnie z poniższym ekranem. Czyli uzupełniamy nazwę, domenę, serwis (włącz/wyłącz/itp), id encji, dodatkowe parametry dotyczące oświetlenia (u nas np.: wartość jasności światła).

Następnie robimy kopię tego noda (film pokazuje jak) gdyż potrzebujemy innych ustawień na włączenie telewizora i innych na wyłączenie. Następnie łączymy odpowiedni nod z odpowiednim wyjściem. Cały proces powinien wyglądać podobnie do poniższego przykładu.

Robimy Deploy (czerwony przycisk w prawym górnym rogu) procesu do HA i testujemy. Jeżeli wszystko zrobiliśmy dobrze to od tej pory gdy włączymy lub wyłączymy telewizor zmieni się stan naszego oświetlenia.

Oczywiście jest to proces posiadający wady. Na przykład, nie bierzemy pod uwagę pory dnia co skutkuje tym, że oświetlenie włączy się nam zawsze bez względu na to czy jest widno czy ciemno w pokoju. No ale od czegoś trzeba zacząć.

Dla tych co chcą sami rozbudować ten proces mała wskazówka. HA w encji sun.sun pilnuje stanu słońca w miejscu gdzie stoi nasz dom (o ile w konfiguracji HA podaliśmy prawdziwą lokalizację domu). Więc można ten proces rozszerzyć o to aby uwzględniał faktyczną pozycję słońca i na przykład: włączał światło tylko po zachodzie. Dzięki temu zimą światło będzie włączać się w innych porach niż latem, a my nie musimy co chwilę zmieniać np.: godzin w procesie.

Zachęcam do obejrzenia filmu. Z racji innej charakterystyki medium podaje tam więcej informacji niż w poniższym artykule. Przypominam również o możliwości kontaktu ze mną oraz jednocześnie zapraszam na kolejny artykuł.