Automatyzacja przełącznika z MQTT
W ostatnim artykule udało nam się uruchomić przełącznik MQTT. Jednak jego sterowanie zostawiliśmy w pełni manualne. Co zrobić jeśli chcemy automatycznie nim sterować? Oczywiście automatycznie przy pomocy systemu Node-Red gdyż to właśnie tego systemu używamy do wszystkich mechanizmów automatyzacji. W takim przypadku będziemy mieli co najmniej trzy sposoby na sterowanie przełącznikiem:
- Sterowanie przez encję - możemy użyć nodu Call Service aby sterować encją przełącznika,
- Sterowanie przez MQTT w HA - możemy użyć usługi Publish z domeny MQTT jak a jest w systemie HA i publikować wiadomości na dany temat pomijając encję,
- Sterowanie przez MQTT w NR - używamy nodów Node-RED bezpośrednio komunikujących się z brokerem MQTT i w ten sposób pomijamy cały system HA.
Przy pomocy każdej z tych metod osiągniemy ten sam rezultat i nie ma jakiegoś jednego konkretnego faworyta jeśli idzie o stosowanie. Każdy może wybrać odpowiednią metodę do danej sytuacji. Ważne aby wiedzieć, że ma się wybór.
Ponieważ sposób 3 omówiłem na poniższym filmie:
wspomniałem
To w tym artykule omówimy metodę 1 i 2. No więc zaczynajmy.
Metoda 1 - sterowanie przez encję
Jest to najprostsza metoda gdyż używamy możliwości jakie daje nam dana encja. Przykładowy proces wygląda następująco:

Jak widać maksymalnie prosty. Oczywiście pierwszy nod inject można zastąpić dowolnym innym procesem/wyzwalaczem. Cała sztuka w tym procesie to poprawna konfiguracja nodu 2 - call service. A wygląda ona następująco:

wspomniałem
wspomniałem
Istotne w tej konfiguracji rzeczy to:
Domain: używamy domeny danej encji w naszym przypadku to switch
Service: tu wybieramy działanie jakie ma nastąpić gdy wywołamy ten nod. W przypadku przełącznika mamy trzy możliwości (turn_on - włączenie, turn_off - wyłączenie, toggle - zmiana stanu na przeciwny)
Entity ID: tu podajemy naszą encję, którą chcemy sterować.
Oczywiście po wywołaniu powyższego procesu przełącznik będzie zmieniał swój stan z włączony na wyłączony i odwrotnie. Jak widać przykład bardzo prosty ale wymaga od nas poprawnie skonfigurowanej encji w HA. Co natomiast jak jej nie mamy?
Metoda 2 - Sterowanie przez MQTT w HA
Jeżeli nie mamy encji w HA, a chcemy sterować urządzeniem mqtt to możemy obsłużyć protokół bezpośrednio w HA. Aby mieć taką możliwość musimy posiadać skonfigurowaną integrację pomiędzy HA, a brokerem MQTT. Tylko w takim przypadku będziemy mieli dostępną domenę mqtt i metodę publish. Proces dla takiego przypadku będzie wyglądał następująco:

Jak widać na powyższym przykładzie poprzedni proces rozbudowaliśmy o jeden nod typu function. Jest on konieczny aby zbudować w nim wiadomość, którą chcemy wysłać. Przykładowa wiadomość wygląda tak:

Właściwość topic - tu podajemy temat na który chcemy publikować wiadomość. Jest to temat na którym urządzenie nasłuchuje wiadomości sterujących. Właściwość payload zawiera natomiast właściwą wiadomość jaką chcemy wysłać.
Istnieją jeszcze inne właściwości, które możemy użyć jednak są one opcjonalne (qos, retain, payload_template). Oczywiście najczęściej używane to już kilkukrotnie przeze mnie opisywane retain - umożliwiające zachowanie ostatniej wiadomości na serwerze broker oraz rzecz nowa payload_template umożliwiające wykorzystanie mechanizmów tzw. szablonów w HA (np.: {{ states('sensor.temperature') }} jednak to osobny temat na osobny artykuł).
Myślę, że to tyle w temacie automatyzacji przełączników mqtt. Oczywiście podane rozwiązania można przenieść na każde inne urządzenie mqtt ale pamiętajcie, że niektóre mogą wymagać trochę bardziej rozbudowanego podejścia niż przełacznik. Jednak tak jak już pisałem w innym artykule - najlepiej się uczyć zaczynając od rzeczy prostych.
Tradycyjnie komentarze są Wasze i do następnego artykułu.
Cześć!
Komentarze