Självstudie: Ansluta ett exempel på ett IoT Plug and Play-enhetsprogram som körs på Linux eller Windows till IoT Hub
Den här självstudien visar hur du skapar ett exempelprogram för IoT Plug and Play-enheter, ansluter det till din IoT-hubb och använder verktyget Azure IoT Explorer för att visa telemetrin som skickas. Exempelprogrammet är skrivet i C och ingår i Azure IoT-enhets-SDK för C. En lösningsbyggare kan använda Verktyget Azure IoT Explorer för att förstå funktionerna i en IoT Plug and Play-enhet utan att behöva visa någon enhetskod.
Förutsättningar
Innan du fortsätter kontrollerar du att du har konfigurerat din miljö, inklusive din IoT-hubb.
Du kan köra den här självstudien i Linux eller Windows. Shell-kommandona i den här självstudien följer Linux-konventionen för sökvägsavgränsare ,/
om du följer med i Windows måste du växla dessa avgränsare mot "\
".
Förutsättningarna skiljer sig åt beroende på operativsystem:
Linux
Den här självstudien förutsätter att du använder Ubuntu Linux. Stegen i den här självstudien har testats med Ubuntu 18.04.
Slutför den här självstudien om Linux genom att installera följande programvara i din lokala Linux-miljö:
Installera GCC, Git, cmake och alla nödvändiga beroenden apt-get
med kommandot :
sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
Kontrollera att versionen av cmake
är över 2.8.12 och att versionen av GCC är över 4.4.7.
cmake --version
gcc --version
Windows
Slutför den här självstudien i Windows genom att installera följande programvara i din lokala Windows-miljö:
- Visual Studio (Community, Professional eller Enterprise) – se till att du inkluderar skrivbordsutveckling med C++ -arbetsbelastning när du installerar Visual Studio.
- Git.
- CMake.
Ladda ned koden
I den här självstudien förbereder du en utvecklingsmiljö som du kan använda för att klona och skapa Azure IoT Hub Device C SDK.
Öppna en kommandotolk i valfri katalog. Kör följande kommando för att klona GitHub-lagringsplatsen azure IoT C SDK:er och bibliotek till den här platsen:
git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init
Förvänta dig att den här åtgärden tar flera minuter att slutföra.
Skapa koden
Du kan skapa och köra koden med hjälp av Visual Studio eller cmake
på kommandoraden.
Använda Visual Studio
Öppna rotmappen för den klonade lagringsplatsen. Efter ett par sekunder skapar CMake-stödet i Visual Studio allt du behöver för att köra och felsöka projektet.
När Visual Studio är klart går du till Solution Explorer och går till exempel iothub_client/samples/pnp/pnp_simple_thermostat/.
Högerklicka på filen pnp_simple_thermostat.c och välj Lägg till felsökningskonfiguration. Välj Standard.
Visual Studio öppnar filen launch.vs.json . Redigera den här filen enligt följande kodfragment för att ange de miljövariabler som krävs. Du antecknade primärnyckeln för omfångs-ID och registrering när du slutförde konfigurationen av din miljö för snabbstarter och självstudier för IoT Plug and Play:
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c", "projectTarget": "", "name": "pnp_simple_thermostat.c", "env": { "IOTHUB_DEVICE_SECURITY_TYPE": "DPS", "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>", "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device", "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>" } } ] }
Högerklicka på filen pnp_simple_thermostat.c och välj Ange som startobjekt.
Om du vill spåra kodkörningen i Visual Studio lägger du till
main
en brytpunkt i funktionen i filen pnp_simple_thermostat.c .Nu kan du köra och felsöka exemplet från felsökningsmenyn.
Enheten är nu redo att ta emot kommandon och egenskapsuppdateringar och har börjat skicka telemetridata till hubben. Se till att exemplet körs när du slutför nästa steg.
Använda cmake för att skapa koden
Du använder kommandoradsverktyget cmake för att skapa koden:
Skapa en cmake-underkatalog i rotmappen för enhetens SDK och gå till den mappen:
cd azure-iot-sdk-c mkdir cmake cd cmake
Kör följande kommandon för att skapa SDK och exempel:
cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF .. cmake --build .
Kör enhetsexemplet
I Konfigurera din miljö skapade du fyra miljövariabler för att konfigurera exemplet för att använda Device Provisioning Service (DPS) för att ansluta till din IoT-hubb:
- IOTHUB_DEVICE_SECURITY_TYPE med värdet
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE med DPS-ID-omfånget.
- IOTHUB_DEVICE_DPS_DEVICE_ID med värdet
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY med den primära registreringsnyckeln.
- IOTHUB_DEVICE_DPS_ENDPOINT med värdet
global.azure-devices-provisioning.net
.
Mer information om exempelkonfigurationen finns i exempelläsningen.
Så här kör du exempelprogrammet i SDK som simulerar en IoT Plug and Play-enhet som skickar telemetri till din IoT-hubb:
Från mappen cmake navigerar du till mappen som innehåller den körbara filen och kör den:
# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe
Dricks
Om du vill spåra kodkörningen i Visual Studio i Windows lägger du till main
en brytpunkt i funktionen i filen pnp_simple_thermostat.c .
Enheten är nu redo att ta emot kommandon och egenskapsuppdateringar och har börjat skicka telemetridata till hubben. Se till att exemplet körs när du slutför nästa steg.
Använda Azure IoT Explorer för att verifiera koden
När enhetsklientexemplet har startat använder du Azure IoT Explorer-verktyget för att kontrollera att det fungerar.
Öppna Azure IoT Explorer.
Om du inte redan har lagt till en anslutning till din IoT-hubb på sidan IoT-hubbar väljer du + Lägg till anslutning. Ange anslutningssträng för den IoT-hubb som du skapade tidigare och välj Spara.
På sidan Inställningar för IoT Plug and Play väljer du + Lägg till > lokal mapp och väljer mappen lokala modeller där du sparade dina modellfiler.
På sidan IoT-hubbar klickar du på namnet på den hubb som du vill arbeta med. Du ser en lista över enheter som är registrerade på IoT-hubben.
Klicka på Enhets-ID för den enhet som du skapade tidigare.
Menyn till vänster visar de olika typerna av information som är tillgängliga för enheten.
Välj IoT Plug and Play-komponenter för att visa modellinformationen för din enhet.
Du kan visa de olika komponenterna på enheten. Standardkomponenten och eventuella extra komponenter. Välj en komponent att arbeta med.
Välj sidan Telemetri och välj sedan Start för att visa telemetridata som enheten skickar för den här komponenten.
Välj sidan Egenskaper (skrivskyddad) för att visa de skrivskyddade egenskaper som rapporterats för den här komponenten.
Välj sidan Egenskaper (skrivbar) för att visa de skrivbara egenskaper som du kan uppdatera för den här komponenten.
Välj en egenskap efter dess namn, ange ett nytt värde för den och välj Uppdatera önskat värde.
Om du vill se det nya värdet väljer du knappen Uppdatera .
Välj sidan Kommandon för att visa alla kommandon för den här komponenten.
Välj det kommando som du vill testa för att ange parametern om det finns någon. Välj Skicka kommando för att anropa kommandot på enheten. Du kan se att enheten svarar på kommandot i kommandotolken där exempelkoden körs.
Granska koden
Det här exemplet implementerar en enkel IoT Plug and Play-termostatenhet. Termostatmodellen använder inte IoT Plug and Play-komponenter. DTDL-modellfilen för termostatenheten definierar telemetri, egenskaper och kommandon som enheten implementerar.
Enhetskoden använder standardfunktionen för att ansluta till din IoT-hubb:
deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)
Enheten skickar modell-ID:t för den DTDL-modell som den implementerar i anslutningsbegäran. En enhet som skickar ett modell-ID är en IoT Plug and Play-enhet:
static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";
...
IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)
Koden som uppdaterar egenskaper, hanterar kommandon och skickar telemetri är identisk med koden för en enhet som inte använder IoT Plug and Play-konventionerna.
Koden använder Parson-biblioteket för att parsa JSON-objekt i nyttolaster som skickas från din IoT-hubb:
// JSON parser
#include "parson.h"
Rensa resurser
Om du är klar med snabbstarterna och självstudierna kan du läsa Rensa resurser.
Den här självstudien visar hur du skapar ett exempelprogram för IoT Plug and Play-enheter, ansluter det till din IoT-hubb och använder verktyget Azure IoT Explorer för att visa telemetrin som skickas. Exempelprogrammet är skrivet i C# och ingår i Azure IoT SDK för C#. En lösningsbyggare kan använda Verktyget Azure IoT Explorer för att förstå funktionerna i en IoT Plug and Play-enhet utan att behöva visa någon enhetskod.
Förutsättningar
Innan du fortsätter kontrollerar du att du har konfigurerat din miljö, inklusive din IoT-hubb.
Du kan köra den här självstudien i Linux eller Windows. Shell-kommandona i den här självstudien följer Linux-konventionen för sökvägsavgränsare ,/
om du följer med i Windows måste du växla dessa avgränsare mot "\
".
Ladda ned koden
I den här självstudien förbereder du en utvecklingsmiljö som du kan använda för att klona och skapa Azure IoT SDK för C#-lagringsplatsen.
Öppna en kommandotolk i valfri mapp. Kör följande kommando för att klona GitHub-lagringsplatsen Microsoft Azure IoT SDK för C# (.NET) till den här platsen:
git clone https://github.com/Azure/azure-iot-sdk-csharp
Skapa koden
Nu kan du skapa exemplet och köra det. Kör följande kommandon för att skapa exemplet:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build
Kör enhetsexemplet
Kör följande kommando för att köra exemplet:
dotnet run
Enheten är nu redo att ta emot kommandon och egenskapsuppdateringar och har börjat skicka telemetridata till hubben. Se till att exemplet körs när du slutför nästa steg.
Använda Azure IoT Explorer för att verifiera koden
När enhetsklientexemplet har startat använder du Azure IoT Explorer-verktyget för att kontrollera att det fungerar.
Öppna Azure IoT Explorer.
Om du inte redan har lagt till en anslutning till din IoT-hubb på sidan IoT-hubbar väljer du + Lägg till anslutning. Ange anslutningssträng för den IoT-hubb som du skapade tidigare och välj Spara.
På sidan Inställningar för IoT Plug and Play väljer du + Lägg till > lokal mapp och väljer mappen lokala modeller där du sparade dina modellfiler.
På sidan IoT-hubbar klickar du på namnet på den hubb som du vill arbeta med. Du ser en lista över enheter som är registrerade på IoT-hubben.
Klicka på Enhets-ID för den enhet som du skapade tidigare.
Menyn till vänster visar de olika typerna av information som är tillgängliga för enheten.
Välj IoT Plug and Play-komponenter för att visa modellinformationen för din enhet.
Du kan visa de olika komponenterna på enheten. Standardkomponenten och eventuella extra komponenter. Välj en komponent att arbeta med.
Välj sidan Telemetri och välj sedan Start för att visa telemetridata som enheten skickar för den här komponenten.
Välj sidan Egenskaper (skrivskyddad) för att visa de skrivskyddade egenskaper som rapporterats för den här komponenten.
Välj sidan Egenskaper (skrivbar) för att visa de skrivbara egenskaper som du kan uppdatera för den här komponenten.
Välj en egenskap efter dess namn, ange ett nytt värde för den och välj Uppdatera önskat värde.
Om du vill se det nya värdet väljer du knappen Uppdatera .
Välj sidan Kommandon för att visa alla kommandon för den här komponenten.
Välj det kommando som du vill testa för att ange parametern om det finns någon. Välj Skicka kommando för att anropa kommandot på enheten. Du kan se att enheten svarar på kommandot i kommandotolken där exempelkoden körs.
Granska koden
Det här exemplet implementerar en enkel IoT Plug and Play-termostatenhet. Modellen som det här exemplet implementerar använder inte IoT Plug and Play-komponenter. DTDL-modellfilen (Digital Twins Definition Language) för termostatenheten definierar telemetri, egenskaper och kommandon som enheten implementerar.
Enhetskoden ansluter till din IoT-hubb med standardmetoden CreateFromConnectionString
. Enheten skickar modell-ID:t för den DTDL-modell som den implementerar i anslutningsbegäran. En enhet som skickar ett modell-ID är en IoT Plug and Play-enhet:
private static void InitializeDeviceClientAsync()
{
var options = new ClientOptions
{
ModelId = ModelId,
};
s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
}
Modell-ID:t lagras i koden enligt följande kodfragment:
private const string ModelId = "dtmi:com:example:Thermostat;1";
Koden som uppdaterar egenskaper, hanterar kommandon och skickar telemetri är identisk med koden för en enhet som inte använder IoT Plug and Play-konventionerna.
Exemplet använder ett JSON-bibliotek för att parsa JSON-objekt i nyttolaster som skickas från din IoT-hubb:
using Newtonsoft.Json;
...
DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);
Rensa resurser
Om du är klar med snabbstarterna och självstudierna kan du läsa Rensa resurser.
Den här självstudien visar hur du skapar ett exempelprogram för IoT Plug and Play-enheter, ansluter det till din IoT-hubb och använder verktyget Azure IoT Explorer för att visa telemetrin som skickas. Exempelprogrammet är skrivet i Java och ingår i Azure IoT-enhetens SDK för Java. En lösningsbyggare kan använda Verktyget Azure IoT Explorer för att förstå funktionerna i en IoT Plug and Play-enhet utan att behöva visa någon enhetskod.
Förutsättningar
Innan du fortsätter kontrollerar du att du har konfigurerat din miljö, inklusive din IoT-hubb.
Du kan köra den här självstudien i Linux eller Windows. Shell-kommandona i den här självstudien följer Linux-konventionen för sökvägsavgränsare ,/
om du följer med i Windows måste du växla dessa avgränsare mot "\
".
Slutför den här självstudien genom att installera följande programvara i din lokala utvecklingsmiljö:
Ladda ned koden
I den här självstudien förbereder du en utvecklingsmiljö som du kan använda för att klona och skapa Azure IoT Hub Device Java SDK.
Öppna en kommandotolk i valfri katalog. Kör följande kommando för att klona GitHub-lagringsplatsen Azure IoT Java SDK:er och bibliotek till den här platsen:
git clone https://github.com/Azure/azure-iot-sdk-java.git
Skapa koden
Gå till rotmappen för termostatexemplet i den klonade Java SDK-lagringsplatsen och skapa den:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package
Kör enhetsexemplet
I Konfigurera din miljö skapade du fyra miljövariabler för att konfigurera exemplet för att använda Device Provisioning Service (DPS) för att ansluta till din IoT-hubb:
- IOTHUB_DEVICE_SECURITY_TYPE med värdet
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE med DPS-ID-omfånget.
- IOTHUB_DEVICE_DPS_DEVICE_ID med värdet
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY med den primära registreringsnyckeln.
- IOTHUB_DEVICE_DPS_ENDPOINT med värdet
global.azure-devices-provisioning.net
.
Mer information om exempelkonfigurationen finns i exempelläsningen.
Kör programmet från mappen /device/iot-device-samples/pnp-device-sample/thermostat-device-sample:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"
Enheten är nu redo att ta emot kommandon och egenskapsuppdateringar och har börjat skicka telemetridata till hubben. Se till att exemplet körs när du slutför nästa steg.
Använda Azure IoT Explorer för att verifiera koden
När enhetsklientexemplet har startat använder du Azure IoT Explorer-verktyget för att kontrollera att det fungerar.
Öppna Azure IoT Explorer.
Om du inte redan har lagt till en anslutning till din IoT-hubb på sidan IoT-hubbar väljer du + Lägg till anslutning. Ange anslutningssträng för den IoT-hubb som du skapade tidigare och välj Spara.
På sidan Inställningar för IoT Plug and Play väljer du + Lägg till > lokal mapp och väljer mappen lokala modeller där du sparade dina modellfiler.
På sidan IoT-hubbar klickar du på namnet på den hubb som du vill arbeta med. Du ser en lista över enheter som är registrerade på IoT-hubben.
Klicka på Enhets-ID för den enhet som du skapade tidigare.
Menyn till vänster visar de olika typerna av information som är tillgängliga för enheten.
Välj IoT Plug and Play-komponenter för att visa modellinformationen för din enhet.
Du kan visa de olika komponenterna på enheten. Standardkomponenten och eventuella extra komponenter. Välj en komponent att arbeta med.
Välj sidan Telemetri och välj sedan Start för att visa telemetridata som enheten skickar för den här komponenten.
Välj sidan Egenskaper (skrivskyddad) för att visa de skrivskyddade egenskaper som rapporterats för den här komponenten.
Välj sidan Egenskaper (skrivbar) för att visa de skrivbara egenskaper som du kan uppdatera för den här komponenten.
Välj en egenskap efter dess namn, ange ett nytt värde för den och välj Uppdatera önskat värde.
Om du vill se det nya värdet väljer du knappen Uppdatera .
Välj sidan Kommandon för att visa alla kommandon för den här komponenten.
Välj det kommando som du vill testa för att ange parametern om det finns någon. Välj Skicka kommando för att anropa kommandot på enheten. Du kan se att enheten svarar på kommandot i kommandotolken där exempelkoden körs.
Granska koden
Det här exemplet implementerar en enkel IoT Plug and Play-termostatenhet. Modellen som det här exemplet implementerar använder inte IoT Plug and Play-komponenter. DTDL-modellfilen för termostatenheten definierar telemetri, egenskaper och kommandon som enheten implementerar.
Enhetskoden använder standardklassen DeviceClient
för att ansluta till din IoT-hubb. Enheten skickar modell-ID:t för den DTDL-modell som den implementerar i anslutningsbegäran. En enhet som skickar ett modell-ID är en IoT Plug and Play-enhet:
private static void initializeDeviceClient() throws URISyntaxException, IOException {
ClientOptions options = new ClientOptions();
options.setModelId(MODEL_ID);
deviceClient = new DeviceClient(deviceConnectionString, protocol, options);
deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);
if (throwable != null) {
log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
throwable.printStackTrace();
}
}, deviceClient);
deviceClient.open();
}
Modell-ID:t lagras i koden enligt följande kodfragment:
private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";
Koden som uppdaterar egenskaper, hanterar kommandon och skickar telemetri är identisk med koden för en enhet som inte använder IoT Plug and Play-konventionerna.
Exemplet använder ett JSON-bibliotek för att parsa JSON-objekt i nyttolaster som skickas från din IoT-hubb:
import com.google.gson.Gson;
...
Date since = new Gson().fromJson(jsonRequest, Date.class);
Rensa resurser
Om du är klar med snabbstarterna och självstudierna kan du läsa Rensa resurser.
Den här självstudien visar hur du skapar ett exempelprogram för IoT Plug and Play-enheter, ansluter det till din IoT-hubb och använder verktyget Azure IoT Explorer för att visa telemetrin som skickas. Exempelprogrammet är skrivet i Node.js och ingår i Azure IoT-enhets-SDK för Node.js. En lösningsbyggare kan använda Verktyget Azure IoT Explorer för att förstå funktionerna i en IoT Plug and Play-enhet utan att behöva visa någon enhetskod.
Förutsättningar
Innan du fortsätter kontrollerar du att du har konfigurerat din miljö, inklusive din IoT-hubb.
Du kan köra den här självstudien i Linux eller Windows. Shell-kommandona i den här självstudien följer Linux-konventionen för sökvägsavgränsare ,/
om du följer med i Windows måste du växla dessa avgränsare mot "\
".
För att slutföra den här självstudien behöver du Node.js på utvecklingsdatorn. Du kan ladda ned den senaste rekommenderade versionen för flera plattformar från nodejs.org.
Du kan kontrollera den aktuella versionen av Node.js på utvecklingsdatorn med följande kommando:
node --version
Ladda ned koden
I den här självstudien förbereder du en utvecklingsmiljö som du kan använda för att klona och skapa Azure IoT Hub Device SDK för Node.js.
Öppna en kommandotolk i valfri katalog. Kör följande kommando för att klona Microsoft Azure IoT SDK för Node.js GitHub-lagringsplats till den här platsen:
git clone https://github.com/Azure/azure-iot-sdk-node
Installera nödvändiga bibliotek
Du använder enhets-SDK:n för att skapa den inkluderade exempelkoden. Programmet du skapar simulerar en enhet som ansluter till en IoT-hubb. Programmet skickar telemetri och egenskaper och tar emot kommandon.
I ett lokalt terminalfönster går du till mappen för den klonade lagringsplatsen och navigerar till mappen /azure-iot-sdk-node/device/samples/javascript . Kör sedan följande kommando för att installera de bibliotek som krävs:
npm install
Kör exempelenheten
Det här exemplet implementerar en enkel IoT Plug and Play-termostatenhet. Modellen som det här exemplet implementerar använder inte IoT Plug and Play-komponenter. DTDL-modellfilen för termostatenheten definierar telemetri, egenskaper och kommandon som enheten implementerar.
Öppna filen pnp_simple_thermostat.js . I den här filen kan du se hur du:
- Importera de gränssnitt som krävs.
- Skriv en egenskapsuppdateringshanterare och en kommandohanterare.
- Hantera önskade egenskapskorrigeringar och skicka telemetri.
- Du kan också etablera din enhet med hjälp av Azure Device Provisioning Service (DPS).
I huvudfunktionen kan du se hur allt kommer ihop:
- Skapa enheten från din anslutningssträng eller etablera den med DPS.)
- Använd alternativet modelID för att ange enhetsmodellen IoT Plug and Play.
- Aktivera kommandohanteraren.
- Skicka telemetri från enheten till din hubb.
- Hämta enhetstvillingen och uppdatera de rapporterade egenskaperna.
- Aktivera önskad egenskapsuppdateringshanterare.
I Konfigurera din miljö skapade du fyra miljövariabler för att konfigurera exemplet för att använda Device Provisioning Service (DPS) för att ansluta till din IoT-hubb:
- IOTHUB_DEVICE_SECURITY_TYPE med värdet
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE med DPS-ID-omfånget.
- IOTHUB_DEVICE_DPS_DEVICE_ID med värdet
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY med den primära registreringsnyckeln.
- IOTHUB_DEVICE_DPS_ENDPOINT med värdet
global.azure-devices-provisioning.net
.
Mer information om exempelkonfigurationen finns i exempelläsningen.
Kör exempelprogrammet för att simulera en IoT Plug and Play-enhet som skickar telemetri till din IoT-hubb. Om du vill köra exempelprogrammet använder du följande kommando:
node pnp_simple_thermostat.js
Du ser följande utdata som anger att enheten har börjat skicka telemetridata till hubben och nu är redo att ta emot kommandon och egenskapsuppdateringar.
Se till att exemplet körs när du slutför nästa steg.
Använda Azure IoT Explorer för att verifiera koden
När enhetsklientexemplet har startat använder du Azure IoT Explorer-verktyget för att kontrollera att det fungerar.
Öppna Azure IoT Explorer.
Om du inte redan har lagt till en anslutning till din IoT-hubb på sidan IoT-hubbar väljer du + Lägg till anslutning. Ange anslutningssträng för den IoT-hubb som du skapade tidigare och välj Spara.
På sidan Inställningar för IoT Plug and Play väljer du + Lägg till > lokal mapp och väljer mappen lokala modeller där du sparade dina modellfiler.
På sidan IoT-hubbar klickar du på namnet på den hubb som du vill arbeta med. Du ser en lista över enheter som är registrerade på IoT-hubben.
Klicka på Enhets-ID för den enhet som du skapade tidigare.
Menyn till vänster visar de olika typerna av information som är tillgängliga för enheten.
Välj IoT Plug and Play-komponenter för att visa modellinformationen för din enhet.
Du kan visa de olika komponenterna på enheten. Standardkomponenten och eventuella extra komponenter. Välj en komponent att arbeta med.
Välj sidan Telemetri och välj sedan Start för att visa telemetridata som enheten skickar för den här komponenten.
Välj sidan Egenskaper (skrivskyddad) för att visa de skrivskyddade egenskaper som rapporterats för den här komponenten.
Välj sidan Egenskaper (skrivbar) för att visa de skrivbara egenskaper som du kan uppdatera för den här komponenten.
Välj en egenskap efter dess namn, ange ett nytt värde för den och välj Uppdatera önskat värde.
Om du vill se det nya värdet väljer du knappen Uppdatera .
Välj sidan Kommandon för att visa alla kommandon för den här komponenten.
Välj det kommando som du vill testa för att ange parametern om det finns någon. Välj Skicka kommando för att anropa kommandot på enheten. Du kan se att enheten svarar på kommandot i kommandotolken där exempelkoden körs.
Rensa resurser
Om du är klar med snabbstarterna och självstudierna kan du läsa Rensa resurser.
Den här självstudien visar hur du skapar ett exempelprogram för IoT Plug and Play-enheter, ansluter det till din IoT-hubb och använder verktyget Azure IoT Explorer för att visa telemetrin som skickas. Exempelprogrammet är skrivet för Python och ingår i Azure IoT Hub Device SDK för Python. En lösningsbyggare kan använda Verktyget Azure IoT Explorer för att förstå funktionerna i en IoT Plug and Play-enhet utan att behöva visa någon enhetskod.
Förutsättningar
Innan du fortsätter kontrollerar du att du har konfigurerat din miljö, inklusive din IoT-hubb.
För att slutföra den här självstudien behöver du Python installerat på utvecklingsdatorn. Kontrollera Azure IoT Python SDK för aktuella versionskrav för Python. Du kan kontrollera Python-versionen med följande kommando:
python --version
Du kan ladda ned den senaste rekommenderade versionen för flera plattformar från python.org.
Installera paketet på följande sätt i din lokala Python-miljö:
pip install azure-iot-device
Klona Python SDK IoT-lagringsplatsen:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
Kör exempelenheten
Mappen azure-iot-sdk-python/samples/pnp innehåller exempelkoden för IoT Plug and Play-enheten. I den här självstudien används filen simple_thermostat.py . Den här exempelkoden implementerar en IoT Plug and Play-kompatibel enhet och använder Azure IoT Python-enhetsklientbiblioteket.
Öppna filen simple_thermostat.py i en textredigerare. Lägg märke till hur det:
Definierar en modellidentifierare för en enskild enhetstvilling (DTMI) som unikt representerar termostaten. En DTMI måste vara känd för användaren och varierar beroende på scenariot med enhetsimplementering. För det aktuella exemplet representerar modellen en termostat som har telemetri, egenskaper och kommandon som är associerade med övervakningstemperaturen.
Har funktioner för att definiera implementeringar av kommandohanterare. Du skriver dessa hanterare för att definiera hur enheten svarar på kommandobegäranden.
Har en funktion för att definiera ett kommandosvar. Du skapar kommandosvarsfunktioner för att skicka tillbaka ett svar till din IoT-hubb.
Definierar en indatafunktion för tangentbordslyssnare så att du kan avsluta programmet.
Har en huvudfunktion . Huvudfunktionen:
Använder enhetens SDK för att skapa en enhetsklient och ansluta till din IoT-hubb.
Uppdaterar egenskaper. Termostatmodellen definierar
targetTemperature
ochmaxTempSinceLastReboot
som de två egenskaperna för termostaten. Egenskaperna uppdateras med hjälp av denpatch_twin_reported_properties
metod som definierats idevice_client
.Börjar lyssna efter kommandobegäranden med hjälp av funktionen execute_command_listener . Funktionen konfigurerar en lyssnare för att lyssna efter kommandon som kommer från tjänsten. När du konfigurerar lyssnaren anger du en
method_name
,user_command_handler
ochcreate_user_response_handler
.- Funktionen
user_command_handler
definierar vad enheten ska göra när den tar emot ett kommando. - Funktionen
create_user_response_handler
skapar ett svar som ska skickas till din IoT-hubb när ett kommando körs. Du kan visa det här svaret i portalen.
- Funktionen
Börjar skicka telemetri. Pnp_send_telemetry definieras i filen pnp_methods.py. Exempelkoden använder en loop för att anropa den här funktionen var åttonde sekund.
Inaktiverar alla lyssnare och uppgifter och finns i loopen när du trycker på Q eller q.
I Konfigurera din miljö skapade du fyra miljövariabler för att konfigurera exemplet för att använda Device Provisioning Service (DPS) för att ansluta till din IoT-hubb:
- IOTHUB_DEVICE_SECURITY_TYPE med värdet
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE med DPS-ID-omfånget.
- IOTHUB_DEVICE_DPS_DEVICE_ID med värdet
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY med den primära registreringsnyckeln.
- IOTHUB_DEVICE_DPS_ENDPOINT med värdet
global.azure-devices-provisioning.net
.
Mer information om exempelkonfigurationen finns i exempelläsningen.
Nu när du har sett koden använder du följande kommando för att köra exemplet:
python simple_thermostat.py
Du ser följande utdata som anger att enheten skickar telemetridata till hubben och nu är redo att ta emot kommandon och egenskapsuppdateringar:
Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message
Se till att exemplet körs när du slutför nästa steg.
Använda Azure IoT Explorer för att verifiera koden
När enhetsklientexemplet har startat använder du Azure IoT Explorer-verktyget för att kontrollera att det fungerar.
Öppna Azure IoT Explorer.
Om du inte redan har lagt till en anslutning till din IoT-hubb på sidan IoT-hubbar väljer du + Lägg till anslutning. Ange anslutningssträng för den IoT-hubb som du skapade tidigare och välj Spara.
På sidan Inställningar för IoT Plug and Play väljer du + Lägg till > lokal mapp och väljer mappen lokala modeller där du sparade dina modellfiler.
På sidan IoT-hubbar klickar du på namnet på den hubb som du vill arbeta med. Du ser en lista över enheter som är registrerade på IoT-hubben.
Klicka på Enhets-ID för den enhet som du skapade tidigare.
Menyn till vänster visar de olika typerna av information som är tillgängliga för enheten.
Välj IoT Plug and Play-komponenter för att visa modellinformationen för din enhet.
Du kan visa de olika komponenterna på enheten. Standardkomponenten och eventuella extra komponenter. Välj en komponent att arbeta med.
Välj sidan Telemetri och välj sedan Start för att visa telemetridata som enheten skickar för den här komponenten.
Välj sidan Egenskaper (skrivskyddad) för att visa de skrivskyddade egenskaper som rapporterats för den här komponenten.
Välj sidan Egenskaper (skrivbar) för att visa de skrivbara egenskaper som du kan uppdatera för den här komponenten.
Välj en egenskap efter dess namn, ange ett nytt värde för den och välj Uppdatera önskat värde.
Om du vill se det nya värdet väljer du knappen Uppdatera .
Välj sidan Kommandon för att visa alla kommandon för den här komponenten.
Välj det kommando som du vill testa för att ange parametern om det finns någon. Välj Skicka kommando för att anropa kommandot på enheten. Du kan se att enheten svarar på kommandot i kommandotolken där exempelkoden körs.
Rensa resurser
Om du är klar med snabbstarterna och självstudierna kan du läsa Rensa resurser.
Om du utvecklar för begränsade enheter kan du använda IoT Plug and Play med:
Den här artikeln innehåller länkar och resurser för dessa begränsade scenarier.
Förutsättningar
Många av exemplen nedan kräver en specifik maskinvaruenhet och förutsättningarna är olika för vart och ett av exemplen. Följ länken till det relevanta exemplet för detaljerade krav, konfiguration och bygginstruktioner.
Använda SDK:t för Embedded C
SDK för inbäddad C erbjuder en enkel lösning för att ansluta begränsade enheter till Azure IoT-tjänster, inklusive användning av IoT Plug and Play-konventionerna. Följande länkar innehåller exempel för MCU-baserade enheter och i utbildnings- och felsökningssyfte.
Använda en MCU-baserad enhet
En fullständig självstudiekurs från slutpunkt till slutpunkt med hjälp av SDK för Embedded C, Device Provisioning Service och IoT Plug and Play på en MCU finns i Repurpose PIC-IoT Wx Development Board to Connect to Azure through IoT Hub Device Provisioning Service (Återanvända PIC-IoT Wx Development Board för att ansluta till Azure via IoT Hub Device Provisioning Service).
Introduktionsexempel
SDK för inbäddad C-lagringsplats innehåller flera exempel som visar hur du använder IoT Plug and Play:
Kommentar
De här exemplen visas när de körs i Windows och Linux i utbildnings- och felsökningssyfte. I ett produktionsscenario är exemplen endast avsedda för begränsade enheter.
Använda Eclipse ThreadX
Eclipse ThreadX innehåller ett enkelt lager som lägger till intern anslutning till Azure IoT-molntjänster. Det här lagret ger en enkel mekanism för att ansluta begränsade enheter till Azure IoT när du använder de avancerade funktionerna i Eclipse ThreadX. Mer information finns i Översikt över Eclipse ThreadX.
Verktygskedjor
Eclipse ThreadX-exemplen är försett med olika typer av IDE- och verktygskedjakombinationer, till exempel:
- IAR: IAR's Embedded Workbench IDE
- GCC/CMake: Bygg ovanpå CMake-byggsystemet med öppen källkod och GNU Arm Embedded-verktygskedjan.
- MCUExpresso: NXP:s MCUXpresso IDE
- STM32Cube: STMicroelectronics STM32Cube IDE
- MPLAB: Microchips MPLAB X IDE
Exempel
I följande tabell visas exempel som visar hur du kommer igång på olika enheter med Eclipse ThreadX och IoT Plug and Play:
Tillverkare | Enhet | Exempel |
---|---|---|
Mikrochip | ATSAME54-XPRO | GCC/CMake • IAR • MPLAB |
MXCHIP | AZ3166 | GCC/CMake |
NXP | MIMXRT1060-EVK | GCC/CMake • IAR • MCUXpresso |
STMicroelectronics | 32F746GDISCOVERY | IAR • STM32Cube |
STMicroelectronics | B-L475E-IOT01 | GCC/CMake • IAR • STM32Cube |
STMicroelectronics | B-L4S5I-IOT01 | GCC/CMake • IAR • STM32Cube |
Nästa steg
I den här självstudien har du lärt dig hur du ansluter en IoT Plug and Play-enhet till en IoT-hubb. Mer information om hur du skapar en lösning som interagerar med dina IoT Plug and Play-enheter finns i: