Napisz do mnie

Wyślij prywatną wiadomość

ORGANIZACJA PRZEPŁYWÓW W NODE-RED

opublikowano: 6 kwi 2020 wyświetleń: 97 komentarzy: 0

#DARIA #dariahomesystem #Node-RED #Philips HUE #MQTT #Cache

Jak ogarnąć te wszystkie przepływy aby się w nich nie utopić? O tym jak podzieliłem różne części systemu DARIA w panelu Node-RED.

Zakładki w NODE-RED

Jak zapewne zauważyłeś, panel konfiguracyjny Node-Red ma możliwość dodawania zakładek z osobnymi przepływami. Pojedyncza zakładka nie jest ograniczona do pojedynczego przepływu, zatem naturalne okazało się stworzenie zakładek tak aby grupowały przepływy pod pewnymi względami.

Tworząc bardziej zaawansowane i skomplikowane rozwiązanie w oparciu o Node-Red od tego trzeba zacząć. I tak prezentuje się podział w moim systemie. Jest on wynikiem wielu miesięcy testów różnych rozwiązań. Nie będę obecnie dokładnie omawiał co się na nich znajduje, tylko przytoczę ogólnie ich przeznaczenie wraz z tym co jest istotne z punktu widzenia użyteczności. Zakładki grupują również pewne funkcje konkretnych serwisów dostarczających pewne dane bądź je przetwarzające. Dokładny ich opis znajdzie się w osobnych wpisach. Jakieś linki zapewne wtedy się pojawią w tym artykule.

Usługi i zakładki podstawowe

Są to, w mojej ocenie, zakładki które tworzą podstawę do dalszego rozwoju systemu.

MAIN

Pierwsza zakładka o nazwie MAIN, czyli główna. Tutaj znajdują się bloczki inicjalizujące pracę różnych usług, serwisów itp. Warto mieć taką zakładkę, ze względu na to, że łatwo ustalić w niej kolejność inicjowania różnych usług, wczytywania danych po uruchomieniu Node-RED.

MQTT STATUS

Tutaj znajdują się wszelkie przepływy przechwytujące statusy przesyłane przez urządzenia pracujące w systemie. Statusy te publikowane są na serwerze MQTT pod odpowiednimi tematami, tak aby reszta systemu mogła dostawać powiadomienia o zmianach statusu.

Dodatkowo status każdego urządzenia i usługi zapamiętywany jest w pamięci Node-RED, w tzw. kontekście globalnym. Dzięki temu aktualny status jest możliwy do odczytania w dowolnym miejscu Node-RED.

MQTT CONTROL

Zakładka analogiczna do poprzedniej, z tym że tutaj odbierane są powiadomienia z serwera MQTT, które następnie kierowane są do odpowiednich urządzeń. Wszelkie mapowanie pomiędzy wirtualną nazwą tematu MQTT a fizycznym urządzeniem znajdują się właśnie w tych dwóch zakładkach. Każde polecenie sterujące, które kierowane jest do dowolnego urządzenia przechodzi przez przepływ w tej zakładce. Daje to możliwość przechwytywania tych poleceń i wpływania na nie.

Zasada jaką przyjąłem jest taka, że żadna inna zakładka nie może sterować bezpośrednio jakimś urządzeniem. Jeśli chce nim sterować, musi wysłać wiadomość sterującą do serwer MQTT, która z pewnością przejdzie przez tę zakładkę.

BRIDGE

Czyli most łączący różne podsystemy. Część mojego systemu oparta jest o przewodowy system HAPCAN, np. odbiornik pilota podczerwieni. Aby tym pilotem można było sterować światłami działającymi w technologii zigbee (Philips HUE) konieczne jest połączenie obu systemów. To połączenie jest realizowane właśnie w zakładce Bridge. Nie ma tutaj jednak odnośników do konkretnych urządzeń, lecz są zrobione powiązania pomiędzy statusami i wiadomościami kontrolnymi poprzez serwer MQTT — takie jest założenie, że tylko zakładki MQTT STATUS oraz MQTT CONTROL mają dostęp bezpośrednio do urządzeń.

GENERATORS

Przepływy generujące notyfikacje dotyczące zdarzeń słonecznych (wschód, zachód, itp) oraz aktualną godzinę.

SCHEDULER

Czyli wszystko co jest związane z wywoływaniem różnych działań w systemie o określonych porach lub co określony czas. Dlaczego tutaj a nie w każdym serwisie osobno? Bo łatwiej nad tym zapanować gdy widać w jednym miejscu kiedy jaka usługa się uruchamia. Gdyby wykorzystać w każdym przepływie osobny timer uruchamiający zadania to prędzej czy później stanie się to mocno nieczytelne.

NOTIFICATIONS

Serwis zajmujący się przesyłaniem powiadomień do wybranego użytkownika systemu.

NLP

Natural Language Processing — czyli przetwarzanie języka naturalnego. Serwis ten wprowadza nieco (bardzo) sztucznej inteligencji do systemu. Pozwala on rozumieć tekst pisany  w języku polskim i wykonywać odpowiednie operacje w systemie. Serwis nie korzysta przy tym z zewnętrznych usług, wszystko przetwarzane jest na maszynie lokalnej. Oczywiście powoduje to konieczność rozwijania jego możliwości rozumienia treści wraz z rosnącym zapotrzebowaniem na kolejne funkcje.

Usługi i zakładki dodatkowe

Usługi dopełniające, które z pewnością przydadzą się w każdym domu :).

SCENES

Zarządzanie zaprogramowanymi scenami. Sceną może być np. procedura przyciemniająca światła na wybrany poziom, ustawianie świateł pod oglądanie TV, procedura kładzenia się spać :), wyjście z domu, powrót do domu, zapadnięcie zmroku i związane z tym cykliczne operacje jak zapalenie świateł i zamknięcie rolet.

WEB SERVICES

Usługi komunikujące się z serwisami webowymi, np. pobieranie informacji o pogodzie.

MAPS

Serwis (zakładka) zajmujący się mapami. Umożliwia między innymi definiowanie obszarów istotnych dla użytkowników systemu, jak np. dom, szkoła, praca, sklep X, sklep Y. Serwis zajmuje się również prezentowaniem mapy, na której umieszcza pozycje wszystkich użytkowników wpiętych do systemu. Coś takiego jak udostępnianie swojej lokalizacji znajomym w mapach Google, ale działające niezależnie.

USERS

Serwis zajmujący się przetwarzaniem danych użytkownika. Między innymi przetwarza pozycję każdego członka rodziny nadesłaną z telefonu, wylicza w jakim obszarze dany użytkownik się znajduje. Ustawia odpowiednio status tego użytkownika.

TODO

Lista rzeczy do zrobienia — czyli usługa, która potrafi przyjąć zlecenia, skierować je do odpowiedniego członka rodziny, przypomnieć mu o oczekujących zadaniach itp.


ZOBACZ RÓWNIEŻ POLECANE WPISY


Comments (0)


Allowed tags: <b><i><br>


PODOBAŁO SIĘ?

PODOBAŁO SIĘ?


1 like voting
is closed
thanks
for your vote

PODZIEL SIĘ

PODZIEL SIĘ