Cześć, biorę się za kolejny studencki projekt do cv i mam kilka pytań na początku. Chciałbym zrobić coś w stylu aplikacji webowej SmartHome postawionej na raspberryPi zarządzającej urządzeniami na mikrokontrolerach. Do aplikacji użyję Razor Pages/Blazor z SignalR, ponieważ jestem ciekaw tych bibliotek.
- Do komunikacji z urządzeniami chciałbym użyć protokołu MQTT, zainstalowałem RabbitMQ na raspberry i sprawdziłem za pomocą skryptów w Pythonie. Wszystko działa na mqtt 3.1.1, jednak nie wiem jak zaimplementować całą warstwę w aplikacji. Domyślam się żeby użyć EventHandler na każdą wiadomość, ale nie wiem jak asynchronicznie subskrybować tematy w mqtt(w tle aplikacji webowej). Próbowałem znaleźć przykłady, ale jakoś trudno do samego mqtt, dlatego proszę o podpowiedź.
- Na tym forum padła raz odpowiedź żeby użyć Mosquitto zamiast RabbitMQ do samej komunikacji między urządzeniami. Znalazłem tylko, że rabbit nie obsługuje QoS 2, ale są większe różnice dla mqtt?
- Jest jakaś biblioteka która umożliwiałaby subskrybowanie tematu jako attribute routing jako client? Zależy mi żeby uzyskać z tematu wiadomości np. devices/{deviceID}/temperature, ponieważ chciałbym aby użytkownik jako administrator mógł dodawać urządzenia do bazy danych i aplikacja później sprawdzała czy istnieje dane urządzenie. Czy po prostu aplikacja ma subskrybować wszystkie devices/temperature i w polu wiadomości będzie przesyłane id urządzenia?
- Całą warstwę(jako oddzielny projekt) udostępnić pozostałym, żeby w odpowiedzi na http mogły wysłać wiadomość mqtt typu włącz lampkę?
Z góry dziękuję za każde podpowiedzi jak zaimplementować komunikację z tym protokołem.