Felsökning av NB-IoT
Det mesta av svårigheten med att få en NB-IoT-enhet att rapportera ligger mellan enheten och mobilnätet, innan Yggio är inblandat alls. Det är en klen tröst när en enhet inte vill ansluta, så den här sidan täcker hela kedjan, i den ordning fel faktiskt uppstår.
Den enskilt mest användbara vanan: ändra en inställning i taget och bekräfta effekten innan du ändrar nästa. Konfigurationsproblem här staplar på varandra, och en enhet med tre gissningsvisa ändringar är mycket svårare att resonera om än en med en.
För själva proceduren, se Ansluta NB-IoT-enheter.
Två saker att hålla i minnet under läsningen. Allt om SIM-kortet, konsolen och anslutningen till mobilnätet gäller varje NB-IoT-enhet, oavsett vilket protokoll den till slut talar. Allt om topics och inloggningsuppgifter förutsätter MQTT, som är det genomarbetade exemplet här; en enhet som rapporterar över CoAP eller HTTP adresserar och autentiserar sig annorlunda.
Ta reda på vilken halva felet ligger i
Innan något annat: fastställ om enheten har nått mobilnätet. De flesta moduler rapporterar signalstyrka löpande på konsolen, med ett bestämt värde som betyder "söker, inte ansluten". Leta upp det värdet i enhetens manual, eftersom det skiljer sig mellan tillverkare, och sedan:
- Om avläsningen aldrig lämnar det värdet ligger felet mellan enheten och operatören. Fortsätt med att ansluta till nätet.
- Om den visar något annat är enheten på nätet och felet ligger längre fram. Fortsätt med att nå Yggio.
SIM-leverantörens portal besvarar samma fråga från andra hållet, och gör det utan att du är på plats: den visar om SIM-kortet har anslutit och hur mycket data det har skickat.
Tillsammans sparar de här två kontrollerna mer tid än något annat på den här sidan.
På en Dragino D20S-NB eller D23-NB är värdet 99. Se
enhetsspecifikt beteende för resten av det vi har bekräftat på viss
hårdvara.
Enheten ansluter aldrig
Titta i SIM-leverantörens portal först
Innan du ändrar något på enheten, titta på SIM-kortet i din leverantörs webbportal. Den berättar, oberoende av enheten, om SIM-kortet är aktiverat, om det har anslutit till ett nät, vilket nät det anslöt till, och hur mycket data det har skickat.
Det besvarar flera frågor på en gång:
- Ingen aktivering betyder att ingenting på enheten hjälper förrän abonnemanget är ordnat.
- Aktiverat men aldrig anslutet pekar mot SIM-typen, APN:et eller täckningen där enheten sitter.
- Anslutet, med data räknad, betyder att enheten är på nätet och rapporterar. Felet ligger längre fram, så fortsätt med att nå Yggio.
- Anslutet men utan data betyder att den nådde nätet och sedan misslyckades med att publicera, vilket är ett konfigurationsproblem snarare än ett nätproblem.
Dataräknaren är också det snabbaste sättet att bekräfta att en enhet fortfarande lever efter att du lämnat platsen.
Är det rätt sorts SIM-kort?
En NB-IoT-enhet behöver ett NB-IoT-SIM. Ett vanligt SIM för mobilt bredband ansluter inte, och symtomet går inte att skilja från varje annat anslutningsfel. Bekräfta med leverantören i stället för att anta, särskilt om SIM-kortet kom från ett vanligt abonnemang.
Är APN rätt?
APN är den anslutningspunkt SIM-kortet ansluter genom, och den är specifik för SIM-leverantören, inte för enheten. Hämta den från den som levererade SIM-kortet. På många nät är det enda som behövs att sätta den rätt.
Söker modemet för brett?
Lämnat åt sig självt skannar ett modem varje band och varje operatör det kan, vilket är långsamt och ibland misslyckas helt där täckningen är svag. Att begränsa sökningen förvandlar ofta en enhet som aldrig ansluter till en som ansluter på en minut.
- Begränsa den till de band din operatör faktiskt använder lokalt. I Europa är band 8 och 20 de vanliga NB-IoT-banden.
- Öka tiden modemet får fortsätta försöka innan det ger upp. Standardvärdet är ofta optimistiskt för en enhet som sitter i en källare eller ett skåp.
- Välj operatör uttryckligen med operatörskod i stället för att låta modemet välja. På ett roaming-SIM spelar det roll, eftersom modemet annars kan fortsätta försöka mot ett nät med dålig lokal täckning.
Din operatör publicerar sin operatörskod, och SIM-leverantören kan tala om vilka nät SIM-kortet har rätt att roama på.
Är det ett täckningsproblem snarare än ett konfigurationsproblem?
Om inställningarna är rätt och den ändå inte ansluter, flytta enheten. En meter eller två, eller tillfälligt utomhus, räcker för att avgöra om du felsöker konfiguration eller fysik. NB-IoT tränger in i byggnader väl men inte oändligt, och ett skåp, en källare eller en metallkapsling kostar alla signal.
Enheten ansluter men ingenting kommer fram till Yggio
Nu är enheten på nätet, så frågan är om den publicerar alls, och i så fall om den publicerar dit du tror.
Bevisa att enheten kan publicera, oberoende av Yggio
Det här är den mest värdefulla tekniken på sidan, och den skiljer två problem som annars ser likadana ut. Den är skriven för en enhet som rapporterar över MQTT; motsvarigheten för ett annat protokoll är vilken ändpunkt som helst som du styr över och kan titta på.
Rikta tillfälligt enheten mot en publik test-MQTT-broker och prenumerera sedan på samma topic från din dator med ett verktyg som MQTT Explorer. Du ser varje meddelande landa i samma ögonblick det landar.
En testbroker kräver inga inloggningsuppgifter och ingenting på Yggio-sidan. Om meddelanden dyker upp där är enheten och dess payload i sin ordning och felet ligger i Yggio-konfigurationen. Om de inte gör det ligger felet fortfarande på enheten.
Behåll topicen exakt som de är för Yggio. De fungerar oförändrade på en publik broker, och att låta dem vara betyder att det enda du ändrar är serveradressen, så att testet bevisar det du tror att det bevisar och att byta tillbaka är ett kommando.
Se först till att enheten är inställd på MQTT med JSON-payload, och starta om den så att protokollinställningen får effekt.
På en Dragino D20S-NB eller D23-NB är hela omvägen fyra kommandon:
AT+PRO=3,5
ATZ
AT+SERVADDR=<publik testbroker>,1883
Prenumerera på yggio/generic/v2/<ditt enhets-id> från
MQTT Explorer och titta. Återställ Yggios
serveradress med AT+SERVADDR när du är klar.
Skicka inget känsligt till en publik broker. Vem som helst kan prenumerera på den.
Matchar publiceringstopicet det reserverade topicet exakt?
En felstavning misslyckas tyst. Enheten rapporterar en lyckad publicering, och Yggio ser den aldrig, eftersom den publicerar till ett topic som ingen har reserverat. Jämför de två tecken för tecken i stället för att läsa dem; det här är den enskilt vanligaste orsaken när enheten väl är på nätet.
Matchar inloggningsuppgifterna ditt credential set?
Användarnamnet och lösenordet på enheten måste vara de som finns på ditt credential set, och
klientidentifieraren är normalt dess _id. Att få användarnamnet rätt men identifieraren fel ger ett
inloggningsfel som är lätt att misstolka som ett nätproblem.
Är det reserverade topicet kopplat till ditt credential set?
Att skapa båda men inte koppla dem lämnar ett topic som ingen kan publicera till. Kontrollera att det
reserverade topicet bär ditt credential sets id i basicCredentialsSetId.
Enheten slutar svara efter konfigurationen
Vissa enheter kräver att ett prenumerationstopic sätts även när ingenting någonsin skickas tillbaka till dem, och slutar svara om det lämnas tomt eller om det är identiskt med publiceringstopicet. Tillverkarens konvention är ofta publiceringstopicet med ett tillägg efter.
Om en enhet blir svarslös omedelbart efter att topicen sattes är det här det första att kontrollera.
Att komma tillbaka innebär oftast en strömcykling och att gå in i konsolen igen. På en Dragino
D20S-NB eller D23-NB är den form som krävs publiceringstopicet med /subtopic tillagt.
Data kommer fram men ser inte rätt ut
Payloaden innehåller arrayer
Yggio förväntar sig ett platt JSON-objekt. Enheter som lindar in mätvärden i arrayer behöver få sitt logg- eller payloadformat ändrat, vilket oftast är en separat inställning från protokollet och lätt att förbise. Symtomet är en enhet som dyker upp i Yggio med färre fält än väntat, eller inga alls.
Värdena är omöjliga
Många sensorer rapporterar ett fast värde utanför mätområdet när en givare saknas eller är
frånkopplad, i stället för att utelämna fältet. Lämnade som de är flyter de här värdena in i diagram,
medelvärden och larm som om de vore verkliga. På en Dragino D20S-NB eller D23-NB är värdet -409.5,
vilket ligger under absoluta nollpunkten och därför är ett markörvärde snarare än en avläsning.
Hantera dem i en translator: validera mot ett rimligt intervall, och där värdet inte håller, lämna fältet osatt och registrera en status i stället. En intervallkontroll fångar också avläsningar som är numeriskt rimliga men fysiskt orimliga, vilket är vad du får när en sensor flyttas, manipuleras eller lämnas i solen.
Fältnamnen är inte de Yggio förväntar sig
Tillverkare namnger sina fält som det passar dem, och Yggio känner igen sina egna namn. En enhet med
flera ingångar kan numrera dem i stället för att använda namnet Yggio letar efter. Kopiera den som
faktiskt används till det förväntade fältet i en translator, så beter den sig som vilken enhet som
helst i förhandsgranskningar, vyer och diagram. På en Dragino D20S-NB eller D23-NB heter de tre
ingångarna temperature1, temperature2 och temperature3, och ingen av dem läser Yggio som en
temperatur.
Säkerhetsfrågor
Är min data krypterad?
Bara om du har konfigurerat det så. Port 1883 är klartext. Yggio accepterar också TLS, men att
installera ett certifikat på en resursbegränsad enhet är avsevärt mer arbete än resten av
uppsättningen, och stödet varierar mellan modeller.
Behandla det som ett beslut snarare än en standardinställning. För en öppen miljömätning kan det vara en rimlig avvägning. För något personligt, kommersiellt eller verksamhetskritiskt är det inte det, och enheten bör då delvis väljas utifrån hur väl den hanterar certifikat.
Vad är risken med ett svagt enhetslösenord?
Lösenordet i ditt credential set ligger på enheten och passerar, på port 1883, nätet i klartext.
Använd ett separat credential set per anläggning eller enhetsgrupp i stället för ett som delas
överallt, så att en komprometterad uppgift blir avgränsad.
Enhetsspecifikt beteende
Allt ovanför är skrivet för att gälla NB-IoT-enheter generellt. Detaljerna nedan kommer från en spridd NB-IoT-enhet och tas med som ett genomarbetat exempel på den sortens sak att leta efter. Andra tillverkare gör samma saker på andra sätt, så stäm av dem mot din egen manual i stället för att kopiera värdena.
- Dragino D20S-NB och D23-NB
- Signalstyrka
99på konsolen betyder att modemet inte har anslutit. Varje annat värde betyder att det har det. - Prenumerationstopicet måste vara publiceringstopicet med
/subtopictillagt. Att lämna det tomt, eller sätta det lika med publiceringstopicet, gör att enheten slutar svara. - En ingång utan ansluten givare rapporterar
-409.5, ett markörvärde snarare än en avläsning. - De tre ingångarna heter
temperature1,temperature2ochtemperature3. - Payloadformatet måste sättas till platt JSON separat från protokollet, och enheten behöver en omstart innan en protokolländring får effekt.
- Konsolen nås över Bluetooth med tillverkarens app, med en PIN-kod tryckt på förpackningen. Enheten annonserar sig under sitt IMEI.
- Signalstyrka
AT-kommandona för den här sekvensen finns i Ansluta NB-IoT-enheter, och tillverkaren dokumenterar hela kommandouppsättningen i Draginos wiki för NB-IoT-konfiguration.
Praktiska noteringar
Det tar längre tid första gången
Räkna med att den första enheten tar ett arbetspass och att resten tar minuter. Nästan hela svårigheten ligger i att hitta rätt APN, band och operatörsinställningar för ditt SIM-kort och din plats, och de är desamma för varje efterföljande enhet på samma nät.
Konfigurera enheter från fil där du kan
De flesta enheter som tar emot AT-kommandon kan också läsa in en sparad konfiguration, så en flotta behöver inte matas in ett kommando i taget. När den första enheten fungerar, spara dess konfiguration och återanvänd den, och ändra bara topic och inloggningsuppgifter.
Välj rapportintervall medvetet
Standardvärden ligger ofta på varannan timme. Att rapportera oftare kostar oproportionerligt mycket batteri, eftersom radion dominerar förbrukningen. Utgå från hur snabbt värdet faktiskt behöver åtgärdas, inte från vad som känns responsivt.
Innan du kontaktar supporten
Det finns en kontroll som avgör om vi kan hjälpa dig över huvud taget, och den tar ett par minuter.
Anslut MQTT Explorer till Yggios MQTT-broker, autentisera med samma credential set som enheten använder, och prenumerera på ditt topic. Utlös sedan en sändning från enheten.
Om meddelandet inte dyker upp där har datan aldrig nått oss. Ingenting i Yggio kan vara felkonfigurerat på ett sätt som skulle förklara det, eftersom meddelandet inte ens kommer fram till brokern. Felet ligger någonstans mellan enheten och brokern, och den här sidan är den snabbare vägen: SIM-leverantörens portal, anslutningskontrollerna, topicet och inloggningsuppgifterna.
Om meddelandet dyker upp där men ingen enhet syns i Yggio är kedjan hel ända fram till vår sida och något efter brokern är fel. Det är vårt att utreda, och det är den punkt där ett supportärende är värt att skapa. Kontakta Sensative support och ta med topicet, tidsstämpeln för ett meddelande du såg komma fram, och vad MQTT Explorer visade.
För fel före den punkten är de som kan lösa dem snabbast SIM-leverantören för APN och roamingrättigheter, operatören för lokala band och täckning, och enhetstillverkaren för kommandouppsättningen.