MeshCore MQTT integracja
Połącz swoją sieć MeshCore z platformami IoT poprzez MQTT w celu eksportu danych, automatyzacji i integracji z systemami zewnętrznymi
Co to jest most MQTT?
Most MQTT w MeshCore umożliwia eksportowanie komunikatów i danych telemetrycznych do brokera MQTT. Stamtąd możesz przesyłać dane do platform IoT, takich jak Home Assistant, Node-RED, InfluxDB, Grafana i inne.
MQTT (Message Queuing Telemetry Transport) to lekki protokół publikowania/subskrypcji, idealny dla IoT. Węzły MeshCore mogą pełnić rolę bramy: odbierają wiadomości za pośrednictwem LoRa i publikują je w tematach MQTT. Otwiera to świat możliwości integracji.
W tym przewodniku wyjaśniamy, jak skonfigurować MQTT, jak działa formatowanie wiadomości i jakie są praktyczne zastosowania. Niezależnie od tego, czy chcesz podłączyć inteligentny dom, czy wizualizować dane w Grafanie, MQTT umożliwia to.
Jak działa most MQTT?
1. Węzeł odbiera komunikat LoRa
Twój węzeł MeshCore (bramka) odbiera komunikaty drogą radiową LoRa od innych węzłów w sieci mesh.
2. Konwertuj na JSON
Węzeł konwertuje wiadomość Protobuf na czytelny format JSON ze wszystkimi metadanymi i danymi ładunku.
3. Opublikuj w MQTT
Wiadomość JSON jest publikowana w temacie MQTT na Twoim brokerze. Inne systemy mogą subskrybować te tematy.
MQTT ustaw mostek
Aby użyć MQTT, potrzebujesz brokera MQTT (takiego jak Mosquitto) i węzła MeshCore, który działa jako brama. Wykonaj następujące kroki:
Krok 1: Zainstaluj brokera MQTT
Zainstaluj Mosquitto na Raspberry Pi lub serwerze. Możesz też skorzystać z brokera w chmurze, ale publiczne broker-y nie są zalecane (prywatność!). Dla większości osób najlepszy jest lokalny broker: sudo apt install mosquitto mosquitto-clients
Krok 2: Skonfiguruj ustawienia węzła MQTT
Za pomocą aplikacji MeshCore lub CLI skonfiguruj ustawienia MQTT: adres brokera (np. 192.168.1.100), port (1883), nazwę użytkownika/hasło (opcjonalnie) i włącz MQTT.
Krok 3: Wybierz temat główny MQTT
Struktura tematów zależy od regionu/presetu i konfiguracji bramy. Przykładowy format: msh/<region>/<channel>/c/<preset>/!nodeid. Dla Polski typowe ustawienia sieciowe bazują na presecie EU/UK Narrow - ważne, żeby wszystkie urządzenia w Twojej sieci używały tych samych ustawień.
Krok 4: Przetestuj połączenie
Subskrybuj wszystkie tematy: mosquitto_sub -h localhost -t "msh/#" -v. Wyślij wiadomość testową poprzez aplikację MeshCore. Powinieneś zobaczyć wiadomość w formacie JSON.
Praktyczne zastosowania
Integracja z Asystentem Domowym
Uruchamiaj automatyzacje w Home Assistant na podstawie komunikatów MeshCore. Na przykład: światło zapala się, gdy ktoś wysyła „do domu” za pośrednictwem siatki.
Panele Grafana
Eksportuj dane telemetryczne do InfluxDB i wizualizuj w Grafanie. Monitoruj poziom baterii, temperaturę, GPS ślady wszystkich węzłów.
Powiadomienia alarmowe
Wysyłaj powiadomienia push na swój telefon za pomocą Telegram, Discord lub Pushover, gdy nadejdą określone wiadomości.
Panele internetowe
Twórz niestandardowe interfejsy internetowe, które wyświetlają dane w czasie rzeczywistym z sieci mesh. Subskrybuj przez WebSocket tematy MQTT.
Rejestrowanie danych
Rejestruj wszystkie wiadomości w bazie danych w celu analizy historycznej. Zobacz aktywność sieci w czasie, śledź ruchy węzłów.
Mostkowanie wielu sieci
Połącz wiele sieci MeshCore przez MQTT. Węzły bramy mogą przekazywać wiadomości pomiędzy fizycznie oddzielonymi sieciami.
MQTT format wiadomości
MeshCore publikuje wiadomości jako ładunek JSON. Przykład wiadomości tekstowej:
{
"nadawca": "!a1b2c3d4",
„od”: 2748779476,
„id”: 123456789,
„znacznik czasu”: 1699123456,
„do”: 4294967295,
"kanał": 0,
"typ": "tekst",
„ładunek”: {
"text": "Witam przez MQTT!"
}
}
Każda wiadomość zawiera metadane (identyfikator nadawcy, znacznik czasu, kanał) oraz obiekt ładunku z rzeczywistymi danymi. W przypadku komunikatów telemetrycznych ładunek zawiera batteryLevel, voltage, temperature itd. W przypadku komunikatów o położeniu: latitude, longitude, altitude.
Korzyści z integracji MQTT
Uniwersalna kompatybilność
MQTT jest obsługiwany przez prawie wszystkie platformy IoT. Łatwa integracja z Home Assistant, Node-RED, Domoticz, OpenHAB itp.
Zdalny dostęp
Uzyskaj dostęp do swojej sieci MeshCore z dowolnego miejsca za pośrednictwem Internetu. Monitoruj węzły i wysyłaj wiadomości, nie będąc fizycznie w zasięgu.
Trwałość danych
Zapisz wszystkie wiadomości w bazie danych do długoterminowej analizy. Sam MeshCore nie ma pamięci, ale MQTT + baza danych tak.
Transmisja strumieniowa w czasie rzeczywistym
Model publikowania/subskrypcji zapewnia natychmiastowe aktualizacje. Nie jest wymagane odpytywanie, dane przychodzą automatycznie.
Wielu abonentów
Wiele systemów może subskrybować ten sam temat w tym samym czasie. Przykład: Grafana + Asystent Domowy + skrypt niestandardowy.
JSON jest łatwy
Format JSON jest czytelny dla człowieka i współpracuje z dowolnym językiem programowania. Łatwiejszy do analizy niż binarny Protobuf.
Często zadawane pytania
Czy potrzebuję lokalnego brokera MQTT?
Nie, możesz także skorzystać z publicznego brokera (np. broker testowy), ale to zwykle zły pomysł ze względu na prywatność (każdy może czytać dane). Do realnego użycia zalecany jest lokalny broker (Mosquitto na Raspberry Pi) lub prywatny broker w chmurze z TLS.
Którego węzła powinienem użyć jako bramy MQTT?
Dowolny węzeł MeshCore może działać jako brama, ale najlepiej użyć węzła stacjonarnego z dobrym zasilaniem (USB lub energią słoneczną). Węzeł Raspberry Pi + MeshCore to popularna konfiguracja. Brama musi być zawsze w trybie online.
Czy mogę wysyłać wiadomości poprzez MQTT do sieci mesh?
Tak! Opublikuj wiadomość JSON w odpowiednim temacie MQTT, a węzeł bramy przekazuje ją do siatki. Możesz wysyłać wiadomości do sieci z poziomu Home Assistant. Dokładny format można znaleźć w dokumentacji MQTT.
Jak bezpieczny jest MQTT?
MQTT sam w sobie jest nieszyfrowany (zwykły tekst). Użyj szyfrowania TLS (MQTTS na porcie 8883) i uwierzytelniania za pomocą nazwy użytkownika/hasła. Dla dodatkowego bezpieczeństwa: tunel VPN do Twojego brokera. Nigdy nie korzystaj z usług brokerów publicznych w przypadku wrażliwych danych!
Jaka jest różnica między tematami dotyczącymi łącza w górę i w dół?
Tematy Uplink (msh/.../c/...) dotyczą wiadomości z mesh do MQTT. Tematy Downlink (msh/.../2/c/...) dotyczą wiadomości od MQTT do mesh. Subskrybuj łącze w górę, publikuj w łączu w dół.
Czy mogę używać MQTT bez fizycznego węzła bramy?
Nie, zawsze potrzebujesz co najmniej jednego węzła podłączonego do brokera MQTT (przez WiFi/Ethernet lub USB do komputera). Węzeł ten pełni rolę pomostu pomiędzy siatką LoRa i MQTT. Dostęp zdalny przez MQTT bez węzła nie jest możliwy.
Zacznij od integracji MQTT
Gotowy do połączenia sieci MeshCore z platformami IoT? Zainstaluj brokera MQTT i skonfiguruj węzeł bramy.