Samouczek: interakcja z urządzeniem IoT Plug and Play połączonym z rozwiązaniem
Usługa IoT Plug and Play upraszcza IoT, umożliwiając interakcję z możliwościami urządzenia bez znajomości podstawowej implementacji urządzenia. W tym samouczku pokazano, jak używać języka C# do nawiązywania połączenia z urządzeniem IoT Plug and Play połączonym z rozwiązaniem i sterowania nim.
Wymagania wstępne
Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.
Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/
", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\
".
Klonowanie repozytorium zestawu SDK przy użyciu przykładowego kodu
Jeśli ukończono Samouczek: łączenie przykładowej aplikacji urządzenia IoT Plug and Play działającej w systemie Windows z usługą IoT Hub (C#) zostało już sklonowane.
Sklonuj przykłady z repozytorium GitHub zestawu Azure IoT SDK dla języka C#. Otwórz wiersz polecenia w wybranym folderze. Uruchom następujące polecenie, aby sklonować repozytorium GitHub zestawu MICROSOFT Azure IoT SDK dla platformy .NET :
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Kompilowanie kodu urządzenia
Teraz możesz skompilować przykładowe urządzenie i uruchomić je. Uruchom następujące polecenia, aby skompilować przykład:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build
Uruchamianie przykładu urządzenia
Aby uruchomić przykład, uruchom następujące polecenie:
dotnet run
Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.
Uruchamianie przykładowego rozwiązania
W temacie Konfigurowanie środowiska dla przewodników Szybki start i samouczków dotyczących usługi IoT Plug and Play utworzono dwie zmienne środowiskowe w celu skonfigurowania przykładu w celu nawiązania połączenia z centrum IoT:
- IOTHUB_CONNECTION_STRING: centrum IoT hub parametry połączenia zanotował wcześniej.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
W tym samouczku użyjesz przykładowego rozwiązania IoT napisanego w języku C# do interakcji z właśnie skonfigurowanym i uruchomionym urządzeniem przykładowym.
W innym oknie terminalu przejdź do folderu azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat .
Uruchom następujące polecenie, aby skompilować przykładową usługę:
dotnet build
Uruchom następujące polecenie, aby uruchomić przykładową usługę:
dotnet run
Pobieranie bliźniaczej reprezentacji urządzenia
Poniższy fragment kodu przedstawia sposób pobierania bliźniaczej reprezentacji urządzenia przez aplikację usługi:
// Get a Twin and retrieves model Id set by Device client
Twin twin = await s_registryManager.GetTwinAsync(s_deviceId);
s_logger.LogDebug($"Model Id of this Twin is: {twin.ModelId}");
Uwaga
W tym przykładzie użyto przestrzeni nazw Microsoft.Azure.Devices.Client z klienta usługi IoT Hub. Aby dowiedzieć się więcej na temat interfejsów API, w tym interfejsu API cyfrowych reprezentacji bliźniaczych, zobacz przewodnik dewelopera usługi.
Ten kod generuje następujące dane wyjściowe:
[09/21/2020 11:26:04]dbug: Thermostat.Program[0]
Model Id of this Twin is: dtmi:com:example:Thermostat;1
Poniższy fragment kodu pokazuje, jak za pomocą poprawki zaktualizować właściwości za pośrednictwem bliźniaczej reprezentacji urządzenia:
// Update the twin
var twinPatch = new Twin();
twinPatch.Properties.Desired[PropertyName] = PropertyValue;
await s_registryManager.UpdateTwinAsync(s_deviceId, twinPatch, twin.ETag);
Ten kod generuje następujące dane wyjściowe z urządzenia, gdy usługa aktualizuje targetTemperature
właściwość:
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
Property: Received - { "targetTemperature": 60°C }.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
Property: Update - {"targetTemperature": 60°C } is InProgress.
...
[09/21/2020 11:26:17]dbug: Thermostat.ThermostatSample[0]
Property: Update - {"targetTemperature": 60°C } is Completed.
Wywoływanie polecenia
Poniższy fragment kodu pokazuje, jak wywołać polecenie:
private static async Task InvokeCommandAsync()
{
var commandInvocation = new CloudToDeviceMethod(CommandName) { ResponseTimeout = TimeSpan.FromSeconds(30) };
// Set command payload
string componentCommandPayload = JsonConvert.SerializeObject(s_dateTime);
commandInvocation.SetPayloadJson(componentCommandPayload);
CloudToDeviceMethodResult result = await s_serviceClient.InvokeDeviceMethodAsync(s_deviceId, commandInvocation);
if (result == null)
{
throw new Exception($"Command {CommandName} invocation returned null");
}
s_logger.LogDebug($"Command {CommandName} invocation result status is: {result.Status}");
}
Ten kod generuje następujące dane wyjściowe z urządzenia, gdy usługa wywołuje getMaxMinReport
polecenie:
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
Command: Received - Generating max, min and avg temperature report since 21/09/2020 11:25:58.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
Command: MaxMinReport since 21/09/2020 11:25:58: maxTemp=32, minTemp=32, avgTemp=32, startTime=21/09/2020 11:25:59, endTime=21/09/2020 11:26:04
Usługa IoT Plug and Play upraszcza IoT, umożliwiając interakcję z możliwościami urządzenia bez znajomości podstawowej implementacji urządzenia. W tym samouczku pokazano, jak za pomocą języka Java nawiązać połączenie z urządzeniem IoT Plug and Play połączonym z rozwiązaniem i sterować nim.
Wymagania wstępne
Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.
Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/
", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\
".
Aby ukończyć ten samouczek, zainstaluj następujące oprogramowanie w lokalnym środowisku programistycznym:
Klonowanie repozytorium zestawu SDK przy użyciu przykładowego kodu
Jeśli ukończono Samouczek: łączenie przykładowej aplikacji urządzenia IoT Plug and Play działającej w systemie Windows z usługą IoT Hub (Java) zostało już sklonowane.
Otwórz wiersz polecenia w wybranym katalogu. Wykonaj następujące polecenie, aby sklonować do tej lokalizacji repozytorium GitHub zestawy SDK usługi Microsoft Azure IoT dla języka Java :
git clone https://github.com/Azure/azure-iot-sdk-java.git
Kompilowanie i uruchamianie przykładowego urządzenia
Przejdź do folderu głównego przykładu termostatu w sklonowanym repozytorium zestawu Java SDK i skompiluj go:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package
W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:
- IOTHUB_DEVICE_SECURITY_TYPE z wartością
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
- IOTHUB_DEVICE_DPS_DEVICE_ID z wartością
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
- IOTHUB_DEVICE_DPS_ENDPOINT z wartością
global.azure-devices-provisioning.net
.
Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.
W folderze /device/iot-device-samples/pnp-device-sample/termostat-device-sample uruchom aplikację:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"
Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.
Uruchamianie przykładowego rozwiązania
W temacie Konfigurowanie środowiska dla przewodników Szybki start i samouczków dotyczących usługi IoT Plug and Play utworzono dwie zmienne środowiskowe w celu skonfigurowania przykładu w celu nawiązania połączenia z centrum IoT:
- IOTHUB_CONNECTION_STRING: centrum IoT hub parametry połączenia zanotował wcześniej.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
W tym samouczku użyjesz przykładowego rozwiązania IoT napisanego w języku Java do interakcji z właśnie skonfigurowanym przykładowym urządzeniem.
Uwaga
W tym przykładzie użyto przestrzeni nazw com.microsoft.azure.sdk.iot.service z klienta usługi IoT Hub. Aby dowiedzieć się więcej na temat interfejsów API, w tym interfejsu API cyfrowych reprezentacji bliźniaczych, zobacz przewodnik dewelopera usługi.
Otwórz inne okno terminalu, aby użyć go jako terminalu usługi .
W sklonowanym repozytorium zestawu Java SDK przejdź do folderu service/iot-service-samples/pnp-service-sample/termostat-service-sample .
Aby skompilować i uruchomić przykładową aplikację usługi, uruchom następujące polecenia:
mvn clean package mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.service.Thermostat"
Pobieranie bliźniaczej reprezentacji urządzenia
Poniższy fragment kodu przedstawia sposób pobierania bliźniaczej reprezentacji urządzenia w usłudze:
// Get the twin and retrieve model Id set by Device client.
DeviceTwinDevice twin = new DeviceTwinDevice(deviceId);
twinClient.getTwin(twin);
System.out.println("Model Id of this Twin is: " + twin.getModelId());
Aktualizowanie bliźniaczej reprezentacji urządzenia
Poniższy fragment kodu pokazuje, jak za pomocą poprawki zaktualizować właściwości za pośrednictwem bliźniaczej reprezentacji urządzenia:
String propertyName = "targetTemperature";
double propertyValue = 60.2;
twin.setDesiredProperties(Collections.singleton(new Pair(propertyName, propertyValue)));
twinClient.updateTwin(twin);
Dane wyjściowe urządzenia pokazują, jak urządzenie reaguje na tę aktualizację właściwości.
Wywoływanie polecenia
Poniższy fragment kodu przedstawia wywołanie polecenia na urządzeniu:
// The method to invoke for a device without components should be "methodName" as defined in the DTDL.
String methodToInvoke = "getMaxMinReport";
System.out.println("Invoking method: " + methodToInvoke);
Long responseTimeout = TimeUnit.SECONDS.toSeconds(200);
Long connectTimeout = TimeUnit.SECONDS.toSeconds(5);
// Invoke the command.
String commandInput = ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(5).format(DateTimeFormatter.ISO_DATE_TIME);
MethodResult result = methodClient.invoke(deviceId, methodToInvoke, responseTimeout, connectTimeout, commandInput);
if(result == null)
{
throw new IOException("Method result is null");
}
System.out.println("Method result status is: " + result.getStatus());
Dane wyjściowe urządzenia pokazują, jak urządzenie reaguje na to polecenie.
Usługa IoT Plug and Play upraszcza IoT, umożliwiając interakcję z możliwościami urządzenia bez znajomości podstawowej implementacji urządzenia. W tym samouczku pokazano, jak używać Node.js do nawiązywania połączenia z urządzeniem IoT Plug and Play połączonym z rozwiązaniem i sterowania nim.
Wymagania wstępne
Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.
Aby ukończyć ten samouczek, musisz Node.js na komputerze deweloperskim. Najnowszą zalecaną wersję dla wielu platform można pobrać z nodejs.org.
Możesz sprawdzić bieżącą wersję środowiska Node.js na komputerze deweloperskim przy użyciu następującego polecenia:
node --version
Klonowanie repozytorium zestawu SDK przy użyciu przykładowego kodu
Sklonuj przykłady z repozytorium zestawu Node SDK. Otwórz okno terminalu w wybranym folderze. Uruchom następujące polecenie, aby sklonować zestaw MICROSOFT Azure IoT SDK dla repozytorium Node.js GitHub:
git clone https://github.com/Azure/azure-iot-sdk-node
Uruchamianie przykładowego urządzenia
W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:
- IOTHUB_DEVICE_SECURITY_TYPE z wartością
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
- IOTHUB_DEVICE_DPS_DEVICE_ID z wartością
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
- IOTHUB_DEVICE_DPS_ENDPOINT z wartością
global.azure-devices-provisioning.net
.
Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.
W tym samouczku użyjesz przykładowego urządzenia termostatu napisanego w Node.js jako urządzenia IoT Plug and Play. Aby uruchomić przykładowe urządzenie:
Otwórz okno terminalu i przejdź do folderu lokalnego zawierającego zestaw SDK usługi Microsoft Azure IoT dla repozytorium Node.js sklonowanego z usługi GitHub.
To okno terminalu jest używane jako terminal urządzenia . Przejdź do folderu sklonowanego repozytorium i przejdź do folderu /azure-iot-sdk-node/device/samples/javascript . Zainstaluj wszystkie zależności, uruchamiając następujące polecenie:
npm install
Uruchom przykładowe urządzenie termostatu za pomocą następującego polecenia:
node pnp_simple_thermostat.js
Zostaną wyświetlone komunikaty z informacją, że urządzenie wysłało pewne informacje i zgłosiło się w trybie online. Te komunikaty wskazują, że urządzenie zaczęło wysyłać dane telemetryczne do centrum i jest teraz gotowe do odbierania poleceń i aktualizacji właściwości. Nie zamykaj tego terminalu, musisz upewnić się, że przykład usługi działa.
Uruchamianie przykładowego rozwiązania
W temacie Konfigurowanie środowiska dla przewodników Szybki start i samouczków dotyczących usługi IoT Plug and Play utworzono dwie zmienne środowiskowe w celu skonfigurowania przykładu w celu nawiązania połączenia z centrum IoT:
- IOTHUB_CONNECTION_STRING: centrum IoT hub parametry połączenia zanotował wcześniej.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
W tym samouczku użyjesz przykładowego rozwiązania Node.js IoT do interakcji z właśnie skonfigurowanym i uruchomionym urządzeniem przykładowym.
Otwórz inne okno terminalu, aby użyć go jako terminalu usługi .
W sklonowanym repozytorium zestawu Node SDK przejdź do folderu azure-iot-sdk-node/service/samples/javascript . Zainstaluj wszystkie zależności, uruchamiając następujące polecenie:
npm install
Odczytywanie właściwości
Po uruchomieniu przykładowego urządzenia termostatu w terminalu urządzenia zobaczysz następujące komunikaty wskazujące jego stan online:
properties have been reported for component sending telemetry message 0...
Przejdź do terminalu usługi i użyj następującego polecenia, aby uruchomić przykład na potrzeby odczytywania informacji o urządzeniu:
node twin.js
W danych wyjściowych terminalu usługi zwróć uwagę na odpowiedź bliźniaczej reprezentacji urządzenia. Zostanie wyświetlony identyfikator modelu urządzenia i zgłoszone skojarzone właściwości:
Model Id: dtmi:com:example:Thermostat;1 { "deviceId": "my-pnp-device", "etag": "AAAAAAAAAAE=", "deviceEtag": "Njc3MDMxNDcy", "status": "enabled", "statusUpdateTime": "0001-01-01T00:00:00Z", "connectionState": "Connected", "lastActivityTime": "0001-01-01T00:00:00Z", "cloudToDeviceMessageCount": 0, "authenticationType": "sas", "x509Thumbprint": { "primaryThumbprint": null, "secondaryThumbprint": null }, "modelId": "dtmi:com:example:Thermostat;1", "version": 4, "properties": { "desired": { "$metadata": { "$lastUpdated": "2020-10-05T11:35:19.4574755Z" }, "$version": 1 }, "reported": { "maxTempSinceLastReboot": 31.343640523762232, "serialNumber": "123abc", "$metadata": { "$lastUpdated": "2020-10-05T11:35:23.7339042Z", "maxTempSinceLastReboot": { "$lastUpdated": "2020-10-05T11:35:23.7339042Z" }, "serialNumber": { "$lastUpdated": "2020-10-05T11:35:23.7339042Z" } }, "$version": 3 } }, "capabilities": { "iotEdge": false }, "tags": {} }
Poniższy fragment kodu przedstawia kod w twin.js , który pobiera identyfikator modelu bliźniaczej reprezentacji urządzenia:
var registry = Registry.fromConnectionString(connectionString); registry.getTwin(deviceId, function(err, twin) { if (err) { console.error(err.message); } else { console.log('Model Id: ' + twin.modelId); //... } //... }
W tym scenariuszu zwraca wartość .Model Id: dtmi:com:example:Thermostat;1
Uwaga
Te przykłady usług używają klasy Registry z klienta usługi IoT Hub. Aby dowiedzieć się więcej na temat interfejsów API, w tym interfejsu API cyfrowych reprezentacji bliźniaczych, zobacz przewodnik dewelopera usługi.
Aktualizowanie właściwości zapisywalnej
Otwórz plik twin.js w edytorze kodu.
Zapoznaj się z przykładowym kodem, który pokazuje dwa sposoby aktualizowania bliźniaczej reprezentacji urządzenia. Aby użyć pierwszej metody, zmodyfikuj zmienną
twinPatch
w następujący sposób:var twinPatch = { tags: { city: "Redmond" }, properties: { desired: { targetTemperature: 42 } } };
Właściwość
targetTemperature
jest definiowana jako właściwość zapisywalna w modelu urządzenia Termostat.W terminalu usługi użyj następującego polecenia, aby uruchomić przykład aktualizacji właściwości:
node twin.js
W terminalu urządzenia zobaczysz, że urządzenie otrzymało aktualizację:
The following properties will be updated for the default component: { targetTemperature: { value: 42, ac: 200, ad: 'Successfully executed patch for targetTemperature', av: 2 } } updated the property
W terminalu usługi uruchom następujące polecenie, aby potwierdzić, że właściwość została zaktualizowana:
node twin.js
W danych wyjściowych terminalu
reported
usługi w sekcji właściwości zostanie wyświetlona zaktualizowana temperatura docelowa zgłoszona. Ukończenie aktualizacji na urządzeniu może zająć trochę czasu. Powtórz ten krok, aż urządzenie przetworzy aktualizację właściwości:"reported": { //... "targetTemperature": { "value": 42, "ac": 200, "ad": "Successfully executed patch for targetTemperature", "av": 4 }, //... }
Wywoływanie polecenia
Otwórz plik device_method.js i przejrzyj kod.
Przejdź do terminalu usługi . Użyj następującego polecenia, aby uruchomić przykład w celu wywołania polecenia :
set IOTHUB_METHOD_NAME=getMaxMinReport set IOTHUB_METHOD_PAYLOAD=commandpayload node device_method.js
Dane wyjściowe w terminalu usługi zawierają następujące potwierdzenie:
getMaxMinReport on my-pnp-device: { "status": 200, "payload": { "maxTemp": 23.460596940801928, "minTemp": 23.460596940801928, "avgTemp": 23.460596940801928, "endTime": "2020-10-05T12:48:08.562Z", "startTime": "2020-10-05T12:47:54.450Z" } }
W terminalu urządzenia zostanie wyświetlone potwierdzenie polecenia:
MaxMinReport commandpayload Response to method 'getMaxMinReport' sent successfully.
Usługa IoT Plug and Play upraszcza IoT, umożliwiając interakcję z modelem urządzenia bez znajomości podstawowej implementacji urządzenia. W tym samouczku pokazano, jak używać języka Python do nawiązywania połączenia z urządzeniem IoT Plug and Play połączonym z rozwiązaniem i kontrolowania go.
Wymagania wstępne
Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.
Do ukończenia tego samouczka potrzebny jest język Python zainstalowany na komputerze deweloperskim. Zapoznaj się z zestawem SDK języka Python usługi Azure IoT, aby zapoznać się z bieżącymi wymaganiami dotyczącymi wersji języka Python. Możesz sprawdzić wersję języka Python za pomocą następującego polecenia:
python --version
Najnowszą zalecaną wersję dla wielu platform można pobrać z python.org.
W lokalnym środowisku języka Python zainstaluj pakiet azure-iot-device w następujący sposób:
pip install azure-iot-device
Zainstaluj pakiet azure-iot-hub, uruchamiając następujące polecenie:
pip install azure-iot-hub
Uruchamianie przykładowego urządzenia
W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:
- IOTHUB_DEVICE_SECURITY_TYPE z wartością
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
- IOTHUB_DEVICE_DPS_DEVICE_ID z wartością
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
- IOTHUB_DEVICE_DPS_ENDPOINT z wartością
global.azure-devices-provisioning.net
.
Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.
W tym samouczku użyjesz przykładowego urządzenia termostatu napisanego w języku Python jako urządzenia IoT Plug and Play. Aby uruchomić przykładowe urządzenie:
Otwórz okno terminalu w wybranym folderze. Uruchom następujące polecenie, aby sklonować repozytorium GitHub zestawu SDK języka Python urządzenia usługi Azure IoT do tej lokalizacji:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
To okno terminalu jest używane jako terminal urządzenia . Przejdź do folderu sklonowanego repozytorium i przejdź do folderu azure-iot-sdk-python/samples/pnp .
Uruchom przykładowe urządzenie termostatu za pomocą następującego polecenia:
python simple_thermostat.py
Zostaną wyświetlone komunikaty z informacją, że urządzenie wysłało pewne informacje i zgłosiło się w trybie online. Te komunikaty wskazują, że urządzenie zaczęło wysyłać dane telemetryczne do centrum i jest teraz gotowe do odbierania poleceń i aktualizacji właściwości. Nie zamykaj tego terminalu, musisz upewnić się, że przykład usługi działa.
Uruchamianie przykładowego rozwiązania
W tym samouczku użyjesz przykładowego rozwiązania IoT w języku Python do interakcji z właśnie skonfigurowanym przykładowym urządzeniem.
Otwórz inne okno terminalu, aby użyć go jako terminalu usługi . Uruchom następujące polecenie, aby sklonować repozytorium GitHub zestawu SDK języka Python usługi Azure IoT Hub do tej lokalizacji:
git clone https://github.com/Azure/azure-iot-hub-python
Instalowanie narzędzia
Przejdź do folderu /azure-iot-hub-python/samples sklonowanego repozytorium zestawu SDK języka Python.
Otwórz plik registry_manager_pnp_sample.py i przejrzyj kod. W tym przykładzie pokazano, jak używać klasy IoTHubRegistryManager do interakcji z urządzeniem IoT Plug and Play.
Uwaga
Te przykłady usługi używają klasy IoTHubRegistryManager z klienta usługi IoT Hub. Aby dowiedzieć się więcej na temat interfejsów API, w tym interfejsu API cyfrowych reprezentacji bliźniaczych, zobacz przewodnik dewelopera usługi.
Pobieranie bliźniaczej reprezentacji urządzenia
W temacie Konfigurowanie środowiska dla przewodników Szybki start i samouczków dotyczących usługi IoT Plug and Play utworzono dwie zmienne środowiskowe w celu skonfigurowania przykładu w celu nawiązania połączenia z centrum IoT:
- IOTHUB_CONNECTION_STRING: centrum IoT hub parametry połączenia zanotował wcześniej.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
Użyj następującego polecenia w terminalu usługi, aby uruchomić ten przykład:
set IOTHUB_METHOD_NAME="getMaxMinReport"
set IOTHUB_METHOD_PAYLOAD="hello world"
python registry_manager_pnp_sample.py
Uwaga
Jeśli używasz tego przykładu w systemie Linux, użyj zamiast set
.export
Dane wyjściowe przedstawiają bliźniacze reprezentacje urządzenia i wyświetlają jego identyfikator modelu:
The Model ID for this device is:
dtmi:com:example:Thermostat;1
Poniższy fragment kodu przedstawia przykładowy kod z registry_manager_pnp_sample.py:
# Create IoTHubRegistryManager
iothub_registry_manager = IoTHubRegistryManager(iothub_connection_str)
# Get device twin
twin = iothub_registry_manager.get_twin(device_id)
print("The device twin is: ")
print("")
print(twin)
print("")
# Print the device's model ID
additional_props = twin.additional_properties
if "modelId" in additional_props:
print("The Model ID for this device is:")
print(additional_props["modelId"])
print("")
Aktualizowanie bliźniaczej reprezentacji urządzenia
W tym przykładzie pokazano, jak zaktualizować targetTemperature
właściwość zapisywalną na urządzeniu:
# Update twin
twin_patch = Twin()
twin_patch.properties = TwinProperties(
desired={"targetTemperature": 42}
) # this is relevant for the thermostat device sample
updated_twin = iothub_registry_manager.update_twin(device_id, twin_patch, twin.etag)
print("The twin patch has been successfully applied")
print("")
Możesz sprawdzić, czy aktualizacja jest stosowana w terminalu urządzenia , w którym są wyświetlane następujące dane wyjściowe:
the data in the desired properties patch was: {'targetTemperature': 42, '$version': 2}
Terminal usługi potwierdza, że poprawka zakończyła się pomyślnie:
The twin patch has been successfully applied
Wywoływanie polecenia
Następnie przykład wywołuje polecenie:
W terminalu usługi jest wyświetlany komunikat potwierdzający z urządzenia:
The device method has been successfully invoked
W terminalu urządzenia zobaczysz, że urządzenie otrzymuje polecenie:
Command request received with payload
hello world
Will return the max, min and average temperature from the specified time hello to the current time
Done generating
{"tempReport": {"avgTemp": 34.2, "endTime": "09/07/2020 09:58:11", "maxTemp": 49, "minTemp": 10, "startTime": "09/07/2020 09:56:51"}}
Czyszczenie zasobów
Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.
Następne kroki
W tym samouczku przedstawiono sposób łączenia urządzenia IoT Plug and Play z rozwiązaniem IoT. Aby dowiedzieć się więcej o modelach urządzeń usługi IoT Plug and Play, zobacz: