Czy wzorzec subskrybenta-wydawcy ma zastosowanie również do urządzeń wykonawczych?

16

W sieci istnieje mnóstwo samouczków, zwłaszcza dotyczących RabbitMQ , na temat publikowania danych z czujników; na przykład temperatura, wilgotność itp. Wystarczy opublikować wartość w kolejce wiadomości i każdy może ją wykorzystać.

Jak na razie dobrze. A co z siłownikami?

Weźmy na przykład włącznik światła. Przełącznik światła publikuje bieżący stan oprawy w kolejce. Subskrybuje również drugą kolejkę, aby nasłuchiwać zdarzeń. Umożliwiłoby to dwukierunkową komunikację. Jeśli ktoś / coś chce włączyć światło, w kolejce wiadomości, której słucha przełącznik światła, musi zostać opublikowane zdarzenie.

Mam nadzieję, że rozumiesz ten pomysł. Czy tak należy stosować siłowniki? Czy jest jakieś mądrzejsze rozwiązanie? Co powiesz na bezpieczeństwo, na przykład na użycie drzwi? Czy można opublikować wydarzenie otwarte drzwi z dowolnego miejsca? Jak łatwo można go zhakować?

Mata
źródło
1
Witamy w wersji beta. Chociaż temat pytania jest dobry, martwię się, że niektórzy mogą uważać go za zbyt szeroki. Jak zapewne wiesz z innych witryn SE, wolimy konkretne pytania - i tylko jedno pytanie na jedno pytanie. Przypadek użycia jest dobry, ale może być konkretny. Aspekt bezpieczeństwa (lepszy / gorszy niż łatwy) może być drugim pytaniem.
Sean Houlihane,

Odpowiedzi:

10

A co z siłownikami?

Tak wzorzec typu pub-sub dotyczy siłowników.

Czy tak należy stosować siłowniki?

Jest to jeden ze sposobów, aby przejść i rozwija się dzięki wielu dostawcom usług w chmurze

starając się zająć przestrzeń IoT w celu łatwego przenoszenia danych z czujników do chmury w różny sposób, a ponieważ urządzenia mają ograniczoną łączność, moc, szerokość pasma, potrzebują protokołu lżejszego, takiego jak MQTT i takiego, który jest oparty na modelu pub-sub.

Chodzi mi o to, że każde urządzenie, które może wykryć i ma dane, może korzystać z sub-pubów, ale sprytną rzeczą jest rodzaj implementacji, którą wykonują. Załóżmy, że jeśli nie używasz MQTT na jakimś zaszyfrowanym mechanizmie (TLS / SSL), dane mogą być wąchane.

Czy jest jakieś mądrzejsze rozwiązanie?

Zależy to od aplikacji i ograniczeń związanych z problemem, a tak zwane inteligentniejsze rozwiązanie zmienia się w miarę upływu czasu. Jeszcze jedną rzeczą wartą odnotowania jest to, że posiadanie inteligentniejszego rozwiązania nie jest najmądrzejszym sposobem na obejście, ponieważ najważniejsza jest implementacja, a nie wybrany protokół lub metoda.

Czy można opublikować wydarzenie otwarte drzwi z dowolnego miejsca? Jak łatwo można go zhakować?

Tak, można otworzyć drzwi z dowolnego miejsca, publikując wydarzenie, ale wszystko to zależy od aplikacji i uwierzytelnienia, które udostępniasz, na przykład możesz sprawić, że aplikacja subskrybuje / publikuje tematy tylko po uwierzytelnieniu.


Prawdziwy scenariusz:

Znam wiele firm, które używają tego dokładnego modelu do siłowników, ostatnio pracowałem dla zespołu, który jest częścią systemów Solar Tracking, w których panele słoneczne są kontrolowane, monitorowane za pomocą technologii bezprzewodowych.

W szczególności do przesuwania / obracania tablicy paneli zgodnie z pozycją słońca i w oparciu o różne algorytmy optymalizacji energii używamy siłowników liniowych , w tym systemie mamy również możliwość ręcznego sterowania panelami z pulpitów internetowych / mobilnych w przypadku awarii lub wszelkie cele konserwacji.

W powyższym scenariuszu do sterowania siłownikami stosuje się model Pub-Sub z uwierzytelnianiem / szyfrowaniem.

brawokeyl
źródło
8

Co powiesz na bezpieczeństwo, na przykład na użycie drzwi? Czy można opublikować wydarzenie otwarte drzwi z dowolnego miejsca? Jak łatwo można go zhakować?

Zgodnie z dokumentacją RabbitMQ korzysta z TLS / SSL . Poziom bezpieczeństwa jest tak dobry, jak te technologie. Jeśli zaznaczysz Pomoc RabbitMQ-TLS, oto twoje przykłady korzystania z SSL, uzyskiwania certyfikatów serwera i tak dalej.


Jeśli chodzi o twoje pytanie dotyczące włącznika światła.

To, co opisałeś, brzmi dość prosto. Przełącznik nasłuchuje (subskrybuje) potencjalne źródła, które chcą włączyć lub wyłączyć oprawę. A także powiadamia ich o zmianach w stanie oprawy, dzięki czemu mogą wiedzieć, kiedy i jak działać.

Bence Kaulics
źródło
5

Myślę, że twoje urządzenie przełączające powinno być podłączone do koncentratora (domotic box, kontroler zwave, ...), który obsługuje wszystkie te zdarzenia, więc przełącznik powinien być dedykowany do interakcji z obiektami na niskim poziomie (zwave, 433 MHz, ...)

Urządzenia inteligentne są bardzo ograniczone pod względem baterii, więc im mniej działają w sieci, tym dłużej działają.

Goufalite
źródło
Urządzenie przełączające moc dla światła jest prawdopodobnie zasilane z sieci, chyba że kontrolowane przez niego światło samo jest zasilane z baterii. Jeśli masz na myśli przełącznik „wejściowy”, który jest po prostu zasilanym bateryjnie pudełkiem przyklejonym do ściany bez okablowania sieciowego lub obciążeniowego, to tak, ale jest to skutecznie czujnik („wyczuwa” potrzeby użytkownika końcowego), a nie element wykonawczy.
Chris Stratton