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ć?
Odpowiedzi:
Tak wzorzec typu pub-sub dotyczy siłowników.
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.
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.
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.
źródło
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ć.
źródło
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ą.
źródło