Node-RED: Serwer MQTT
Jak połączyć Node-RED z serwerem Mosquitto MQTT
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Node-RED cloud, które zapewnia wiele korzyści, w tym:
- Serwer MQTT w zestawie (Mosquitto).
- Pełny dostęp do interfejsu administracyjnego Node-RED.
- Dashboard Node-RED w zestawie.
- Nieograniczony i dedykowany serwer SMTP do e-maili w zestawie.
- Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
- Dostosowywalna nazwa domeny zabezpieczona HTTPS (na przykład, https://node-red.twoja-firma.com).
- Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Node-RED cloud hosting Stackhero!
Usługa Node-RED od Stackhero posiada wbudowany serwer MQTT, co ułatwia integrację urządzeń IoT poprzez bezpieczne i niezawodne kanały komunikacyjne.
Aby rozpocząć, wystarczy przejść do panelu Stackhero, odnaleźć swoją usługę Node-RED i w ustawieniach konfiguracji usługi włączyć opcję "MQTT Server".
Po aktywacji serwera można się z nim połączyć przez port 8883. Wszystkie połączenia są zabezpieczone szyfrowaniem TLS, co gwarantuje ochronę przesyłanych danych.
Prosty przykład: użycie Node-RED z serwerem MQTT
Jeśli dopiero zaczynasz pracę z MQTT w Node-RED, poniżej znajdziesz prosty przykład, który pomoże Ci szybko rozpocząć. Przykład pokazuje, jak wysłać wiadomość do tematu (topic) oraz odbierać z niego wiadomości. Możesz pobrać przykładowy flow i zaimportować go do swojej instancji Node-RED za pomocą menu "Import".
Prosty przykład połączenia MQTT z Node-RED
Jeśli Twoje nody MQTT pozostają w stanie "connecting", warto sprawdzić, czy flow
MQTT authenticationjest nadal obecny. Jeśli go brakuje, możesz pobrać go tutaj: mqttAuthenticationFlow.json. Zaimportuj ten flow do swojej instancji Node-RED, zaktualizuj nodeUserso wybrane przez siebie hasła i usuń zbędne komentarze według potrzeb.
Uwierzytelnianie użytkowników MQTT w Node-RED
Zarządzanie uwierzytelnianiem użytkowników MQTT jest proste dzięki dedykowanemu flow w Node-RED. Flow "MQTT Authentication" znajdziesz bezpośrednio w panelu administracyjnym Node-RED.
Flow uwierzytelniania MQTT
W tym flow uwierzytelniania znajdź node szablonu Users. Ten node zawiera tablicę, w której możesz zdefiniować dane dostępowe dla każdego użytkownika. Możesz dodać tylu użytkowników, ilu wymaga Twój projekt.
Uwaga: Użytkownik
node-redjest niezbędny do połączenia Node-RED z serwerem MQTT. Nie usuwaj tego użytkownika z konfiguracji.
Node użytkowników MQTT
Połączenie z MQTT przez WebSockets
Masz możliwość połączenia się z serwerem Mosquitto MQTT zarówno przez protokół MQTT, jak i przez WebSockets.
Protokół MQTT jest lekki i doskonale sprawdza się w urządzeniach IoT, jednak nie jest natywnie obsługiwany przez przeglądarki internetowe. Jeśli chcesz komunikować się z serwerem MQTT z poziomu przeglądarki, zalecane jest użycie WebSockets. Pozwala to na przesyłanie ruchu MQTT w ramach protokołu WebSocket i działa bezproblemowo z usługami Stackhero.
Aby włączyć obsługę WebSocket, wystarczy aktywować opcję "WebSocket Support" w panelu Stackhero. Po jej włączeniu skonfiguruj swojego klienta, aby korzystał z adresu URL WebSocket: wss://<XXXXXX>.stackhero-network.com:443/mqtt. Pamiętaj, aby dla połączeń z przeglądarki zastąpić domyślny adres mqtts://<XXXXXX>.stackhero-network.com tym adresem WebSocket.
Wybór biblioteki MQTT
Do celów deweloperskich szczególnie polecana jest biblioteka "MQTT.js". To solidna biblioteka JavaScript, kompatybilna zarówno z Node.js, jak i środowiskami przeglądarkowymi. Więcej informacji znajdziesz w jej oficjalnym repozytorium.
Przykład połączenia przeglądarka–MQTT przez WebSockets
Jeśli szukasz praktycznego przykładu połączenia z serwerem MQTT przez WebSockets z poziomu przeglądarki, możesz skorzystać z tego repozytorium: https://github.com/stackhero-io/mqttWebSocketGettingStarted. W pliku src/index.html możesz podmienić url, username oraz password na dane swojego serwera, aby dostosować konfigurację do własnych potrzeb.
Przykład MQTT WebSocket
Przed przetestowaniem tej konfiguracji upewnij się, że obsługa WebSocket jest włączona w Twoim panelu Stackhero. Dzięki temu połączenia z poziomu przeglądarki będą działać prawidłowo.