Utveckling av IoT-enheter

Den här översikten beskriver viktiga begrepp kring utveckling av enheter som ansluter till en typisk Azure IoT-lösning. Varje avsnitt innehåller länkar till innehåll som ger mer information och vägledning.

Följande diagram visar en översikt över komponenterna i en typisk IoT-lösning. Den här artikeln fokuserar på de enheter och gatewayer som visas i diagrammet.

Diagram som visar den övergripande IoT-lösningsarkitekturen som belyser enhetsanslutningsområden.

I Azure IoT skriver en enhetsutvecklare koden som ska köras på enheterna i lösningen. Den här koden är vanligtvis:

  • Upprättar en säker anslutning till en molnslutpunkt.
  • Skickar telemetri som samlas in från anslutna sensorer till molnet.
  • Hanterar enhetens tillstånd och synkroniserar det tillståndet med molnet.
  • Svarar på kommandon som skickas från molnet.
  • Aktiverar installation av programuppdateringar från molnet.
  • Gör att enheten kan fortsätta fungera när den är frånkopplad från molnet.

Enhetstyper

IoT-enheter kan delas in i två breda kategorier, mikrostyrenheter (MCUs) och mikroprocessorer (MPU:er):

  • MCU:er är billigare och enklare att använda än MPU:er.
  • En MCU innehåller många av funktionerna, till exempel minne, gränssnitt och I/O på själva chipet. En MPU får åtkomst till den här funktionen från komponenter i stödchips.
  • En MCU använder ofta ett realtidsoperativsystem (RTOS) eller kör bare metal (inget operativsystem) och ger realtidssvar och mycket deterministiska reaktioner på externa händelser. MPU:er kör vanligtvis ett operativsystem för generell användning, till exempel Windows, Linux eller macOS som ger ett icke-förutbestämt realtidssvar. Det finns vanligtvis ingen garanti för när en uppgift ska slutföras.

Exempel på specialiserad maskinvara och operativsystem är:

Windows for IoT är en inbäddad version av Windows för MPU:er med molnanslutning som gör att du kan skapa säkra enheter med enkel etablering och hantering.

Eclipse ThreadX är ett realtidsoperativsystem för IoT- och edge-enheter som drivs av MCU:er. Eclipse ThreadX är utformat för att stödja mycket begränsade enheter som är batteridrivna och har mindre än 64 KB flashminne.

Azure Sphere är en säker programplattform på hög nivå med inbyggda kommunikations- och säkerhetsfunktioner för Internetanslutna enheter. Den består av en säker, ansluten, crossover-MCU, ett anpassat Linux-baserat operativsystem på hög nivå och en molnbaserad säkerhetstjänst som ger kontinuerlig och förnybar säkerhet.

Primitiver

En Azure IoT-enhet kan använda följande primitiver för att interagera med molnet:

  • Meddelanden från enhet till moln för att skicka telemetri för tidsserier till molnet. Till exempel temperaturdata som samlas in från en sensor som är ansluten till enheten.
  • Filuppladdningar för mediefiler som tagna bilder och video. Tillfälliga anslutna enheter kan skicka telemetribatch. Enheter kan komprimera uppladdningar för att spara bandbredd.
  • Enhetstvillingar för att dela och synkronisera tillståndsdata med molnet. En enhet kan till exempel använda enhetstvillingen för att rapportera det aktuella tillståndet för en ventil som den styr till molnet och för att få en önskad måltemperatur från molnet.
  • Digitala tvillingar som representerar en enhet i den digitala världen. En digital tvilling kan till exempel representera en enhets fysiska plats, dess funktioner och dess relationer med andra enheter.
  • Direkta metoder för att ta emot kommandon från molnet. En direktmetod kan ha parametrar och returnera ett svar. Molnet kan till exempel anropa en direktmetod för att begära att enheten startas om på 30 sekunder.
  • Meddelanden från moln till enhet för att ta emot enkelriktade meddelanden från molnet. Till exempel ett meddelande om att en uppdatering är redo att laddas ned.

Mer information finns i Vägledning för kommunikation från enhet till moln och vägledning för kommunikation från moln till enhet.

Enhets-SDK:er

Enhets-SDK:erna tillhandahåller abstraktioner på hög nivå som gör att du kan använda primitiverna utan att känna till de underliggande kommunikationsprotokollen. Enhets-SDK:erna hanterar också information om hur du upprättar en säker anslutning till molnet och autentiserar enheten.

För MPU-enheter är enhets-SDK:er tillgängliga för följande språk:

Information om MCU-enheter finns i:

Exempel och vägledning

Alla enhets-SDK:er innehåller exempel som visar hur du använder SDK:n för att ansluta till molnet, skicka telemetri och använda de andra primitiverna.

IoT-enhetsutvecklingswebbplatsen innehåller självstudier och instruktionsguider som visar hur du implementerar kod för en rad olika enhetstyper och scenarier.

Du hittar fler exempel i kodexemplets webbläsare.

Mer information om hur du implementerar automatiska återanslutningar till slutpunkter finns i Hantera enhetsåteranslutningar för att skapa motståndskraftiga program.

Enhetsutveckling utan enhets-SDK

Även om du rekommenderas att använda en av enhetens SDKS kan det finnas scenarier där du föredrar att inte göra det. I dessa scenarier måste enhetskoden direkt använda något av de kommunikationsprotokoll som IoT Hub och DPS -stöd (Device Provisioning Service).

Mer information finns i:

Enhetsmodellering

Med IoT Plug and Play kan lösningsbyggare integrera IoT-enheter med sina lösningar utan någon manuell konfiguration. Kärnan i IoT Plug and Play är en enhetsmodell som en enhet använder för att annonsera sina funktioner till ett IoT Plug and Play-aktiverat program som IoT Central. Den här modellen är strukturerad som en uppsättning element som definierar:

  • Egenskaper som representerar skrivskyddat eller skrivbart tillstånd för en enhet eller annan entitet. Ett enhetsserienummer kan till exempel vara en skrivskyddad egenskap och en måltemperatur på en termostat kan vara en skrivbar egenskap.
  • Telemetri som är de data som genereras av en enhet, oavsett om data är en vanlig ström av sensoravläsningar, ett tillfälligt fel eller ett informationsmeddelande.
  • Kommandon som beskriver en funktion eller åtgärd som kan utföras på en enhet. Ett kommando kan till exempel starta om en gateway eller ta en bild med hjälp av en fjärrkamera.

Du kan gruppera dessa element i gränssnitt för återanvändning mellan modeller för att underlätta samarbetet och påskynda utvecklingen.

Modellen anges med hjälp av DTDL (Digital Twins Definition Language).

Användning av IoT Plug and Play, modellering och DTDL är valfritt. Du kan använda IoT-enhetens primitiver utan att använda IoT Plug and Play eller modellering. Azure Digital Twins-tjänsten använder också DTDL-modeller för att skapa tvillingdiagram baserade på digitala modeller av miljöer som byggnader eller fabriker.

Som enhetsutvecklare finns det en uppsättning konventioner att följa när du implementerar en IoT Plug and Play-enhet. Dessa konventioner är ett standardsätt för att implementera enhetsmodellen i kod med hjälp av de primitiver som är tillgängliga i enhets-SDK:erna.

Mer information finns i:

Kod för containerbaserad enhet

Om du använder containrar, till exempel i Docker, för att köra enhetskoden kan du distribuera kod till dina enheter med hjälp av funktionerna i containerinfrastrukturen. Med containrar kan du också definiera en körningsmiljö för koden med alla nödvändiga biblioteks- och paketversioner installerade. Containrar gör det enklare att distribuera uppdateringar och hantera livscykeln för dina IoT-enheter.

Azure IoT Edge kör enhetskod i containrar. Du kan använda Azure IoT Edge för att distribuera kodmoduler till dina enheter. Mer information finns i Utveckla egna IoT Edge-moduler.

Dricks

Azure IoT Edge möjliggör flera scenarier. Förutom att köra IoT-enhetskoden i containrar kan du använda Azure IoT Edge för att köra Azure-tjänster på dina enheter och implementera fältgatewayer. Mer information finns i Vad är Azure IoT Edge?

Utvecklingsverktyg

I följande tabell visas några av de tillgängliga IoT-utvecklingsverktygen:

Verktyg beskrivning
Azure IoT Hub (VS Code-tillägg) Med det här VS Code-tillägget kan du hantera dina IoT Hub-resurser och -enheter inifrån VS Code.
Azure IoT Explorer Med det här plattformsoberoende verktyget kan du hantera dina IoT Hub-resurser och -enheter från ett skrivbordsprogram.
Azure IoT-tillägg för Azure CLI Det här CLI-tillägget innehåller kommandon som az iot device simulate, az iot device c2d-messageoch az iot hub monitor-events som hjälper dig att testa interaktioner med enheter.

Nästa steg

Nu när du har sett en översikt över enhetsutveckling i Azure IoT-lösningar kan några föreslagna nästa steg vara: