Hoppa till huvudinnehåll

Lektion 3.4 MQTT Explorer

MQTT Explorer är ett kostnadsfritt skrivbordsverktyg för att publicera till och prenumerera på MQTT-ämnen. Det är det snabbaste sättet att testa IoT-plattformens MQTT-broker - att skicka data in i IoT-plattformen (skapa/uppdatera en enhet) och att se data som IoT-plattformen publicerar ut. Flera tidigare lektioner (2.0, 2.3, 2.9) använder det; denna lektion samlar den viktigaste användningen på ett ställe.

Innan du börjar​

  • Installera MQTT Explorer.
  • En Basic Credential Set (användarnamn + lösenord) - skapa en i Swagger (POST /api/basic-credentials-sets); se Lektion 2.3.
  • Ett reserverat MQTT-ämne av formen yggio/generic/v2/<ditt-unika-id> (POST till reserved-topic-endpointen i Swagger).

Anslut till IoT-plattformens MQTT-broker​

I MQTT Explorer, skapa en ny anslutning:

  1. Host: mqtt.beta.yggio.net
  2. Port: 8883
  3. Encryption (TLS): på, och Validate certificate: på.
  4. Username / Password: din Basic Credential Set.
  5. Fixa standardämnena (gör detta varje gång): öppna Advanced, ta bort posterna # och $SYS/#, och lägg till ditt eget ämne istället (ditt reserverade ämne, eller ditt användarutmatningsämne). IoT-plattformen ger inte åtkomst till brokerns rot, så att lämna kvar # / $SYS/# gör att prenumerationen misslyckas.
  6. Klicka på Connect.

MQTT connection

Det vanligaste MQTT Explorer-misstaget. Det levereras förprenumererat på # och $SYS/# som standard, men dessa kräver broker-rot-behörighet som IoT-plattformen inte beviljar - så anslutningen verkar "inte fungera". Gå alltid till Advanced, ta bort # och $SYS/#, och prenumerera istället på ditt eget ämne.

Publicering och prenumeration måste använda samma MQTT-uppgifter. För att använda en annan Basic Credential Set, skapa en separat anslutning.

Övning 1 - Publicera data in i IoT-plattformen (skapa en enhet)​

Att publicera till ett reserverat generiskt ämne skapar/uppdaterar en enhet automatiskt.

  1. I panelen Publish, sätt ämnet till ditt reserverade ämne, yggio/generic/v2/<ditt-unika-id>.
  2. Sätt typen till raw / JSON och ange en payload:
    { "temperature": 22, "relativeHumidity": 48 }
  3. Klicka på Publish.
  4. I IoT-plattformen dyker en enhet med namnet MQTT-<ditt reserverade ämne> upp inom en minut, och visar temperature och relativeHumidity.

Du behöver inte reservera underämnen. Om du publicerar till yggio/generic/v2/<id>/status blir status ett nästlat objekt på enheten.

Övning 2 - Prenumerera på data som IoT-plattformen publicerar​

För att se data som IoT-plattformen skickar ut via en Channel (se Lektion 2.9):

  1. Säkerställ att anslutningen är prenumererad på ditt ämne (inte #)
    • om du hoppade över Advanced-steget vid anslutning, redigera anslutningen och fixa det nu.
  2. Använd ditt reserverade/utmatningsämne, t.ex. yggio/generic/v2/<ditt reserverade ämne> (eller yggio/output/v2/<ditt userID>/# för användarutmatning - detta är begränsat till din egen användare, så det är tillåtet, till skillnad från broker-roten #).
  3. När plattformen publicerar visas meddelandena live i ämnesträdet - expandera ett ämne för att se den exakta JSON-datan och när den kom in.

MQTT topic tree

Felsökning - vilken sida tappar datan?​

MQTT Explorer är en känt fungerande MQTT-klient, så det är det snabbaste sättet att bevisa vilken sida av en integration som är felaktig. Använd det olika beroende på flödets riktning: data som går in i plattformen, eller data som kommer ut ur den.

Inkommande - ditt system publicerar, ingenting visas i plattformen​

Detta är det vanligaste MQTT-supportärendet. Prenumerera MQTT Explorer på samma ämne som ditt system publicerar till (yggio/generic/v2/<id>), med samma Basic Credential Set, och utlös sedan ditt system:

  • Ingenting visas i MQTT Explorer → ditt system publicerade aldrig faktiskt till brokern. Felet ligger i ditt system - fel ämne, fel autentiseringsuppgifter, fel port/TLS, eller det publicerar helt enkelt inte. Plattformen fungerar korrekt.
  • Det visas i MQTT Explorer, men ingen enhet eller inga värden visas i plattformen → datan nådde brokern, så det är ett payload-problem som plattformen avvisar: ogiltig JSON, en struktur plattformen inte accepterar, eller ett ogiltigt/okänt fältnamn. Fixa payloaden och publicera igen.

För att bekräfta att sträckan broker → plattform i sig är hälsosam, publicera ett känt fungerande test från panelen Publish - { "temperature": 22 } till det ämnet - och kontrollera plattformens enhetslista efter den automatiskt skapade MQTT-<ämne>-noden. Om det fungerar men ditt systems meddelanden inte gör det, ligger skillnaden i ditt systems payload.

Utgående - ditt system prenumererar, får ingenting​

Prenumerera MQTT Explorer på samma utmatningsämne som ditt system lyssnar på (t.ex. yggio/output/v2/<userID>/#), med samma autentiseringsuppgifter:

  • Meddelandena visas i MQTT Explorer → plattformen publicerar korrekt och brokersidan fungerar. Om ditt system fortfarande inte får något ligger felet i ditt system - fel ämne eller uppgifter, eller det hanterar inte det som kommer in.
  • Ingenting visas ens i MQTT Explorer → plattformen publicerar inte på det ämnet. Kontrollera att Channel/den publicerande Rule är konfigurerad (Lektion 2.9) och att du prenumererar på rätt ämne.

Oavsett vilket löser MQTT Explorer det på under en minut: om det kan se datan och ditt system inte kan, ligger felet i ditt system, inte i plattformen.

Sammanfattning av användning​

UppgiftÄmneAnteckningar
Skicka data in i IoT-plattformen (generisk enhet)yggio/generic/v2/<id>JSON-body; enheten skapas automatiskt
Se en Channels utmatningditt reserverade/utmatningsämnekräver en publicerande Rule (Lektion 2.9)
Se all användarutmatningyggio/output/v2/<userID>/#

Vad du lärde dig​

  • Hur man ansluter MQTT Explorer till IoT-plattformens MQTT-broker (mqtt.beta.yggio.net:8883, TLS, Basic Credential Set).
  • Hur man publicerar till ett yggio/generic/v2/...-ämne för att skapa/uppdatera en enhet.
  • Hur man prenumererar för att se exakt vad IoT-plattformen publicerar.
  • Hur man använder MQTT Explorer som en känt fungerande klient för att fastställa vilken sida - ditt system eller plattformen - som orsakar ett MQTT-fel, för både inkommande och utgående data.

Vart härnäst​