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.

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-REDProsty przykład połączenia MQTT z Node-RED

Jeśli Twoje nody MQTT pozostają w stanie "connecting", warto sprawdzić, czy flow MQTT authentication jest nadal obecny. Jeśli go brakuje, możesz pobrać go tutaj: mqttAuthenticationFlow.json. Zaimportuj ten flow do swojej instancji Node-RED, zaktualizuj node Users o wybrane przez siebie hasła i usuń zbędne komentarze według potrzeb.

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 MQTTFlow 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-red jest niezbędny do połączenia Node-RED z serwerem MQTT. Nie usuwaj tego użytkownika z konfiguracji.

Node użytkowników MQTTNode użytkowników MQTT

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.

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.

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 WebSocketPrzykł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.