Jak kontrolować urządzenia przy użyciu interfejsu API REST usługi IoT Central
Interfejs API REST usługi IoT Central umożliwia tworzenie aplikacji klienckich, które integrują się z aplikacjami usługi IoT Central. Interfejs API REST umożliwia sterowanie urządzeniami w aplikacji usługi IoT Central. Interfejs API REST umożliwia:
- Odczytaj ostatnią znaną wartość telemetrii z urządzenia.
- Odczytywanie wartości właściwości z urządzenia.
- Ustaw właściwości zapisywalne na urządzeniu.
- Wywołaj polecenia na urządzeniu.
W tym artykule opisano sposób używania interfejsu API do kontrolowania /devices/{device_id}
poszczególnych urządzeń. Zadania można również użyć do zbiorczego sterowania urządzeniami.
Urządzenie może grupować właściwości, dane telemetryczne i polecenia, które obsługuje w składnikach i modułach.
Każde wywołanie interfejsu API REST usługi IoT Central wymaga nagłówka autoryzacji. Aby dowiedzieć się więcej, zobacz Jak uwierzytelniać i autoryzować wywołania interfejsu API REST usługi IoT Central.
Aby uzyskać dokumentację referencyjną interfejsu API REST usługi IoT Central, zobacz Dokumentacja interfejsu API REST usługi Azure IoT Central.
Aby dowiedzieć się, jak kontrolować urządzenia przy użyciu interfejsu użytkownika usługi IoT Central, zobacz
- Użyj właściwości w rozwiązaniu usługi Azure IoT Central.
- Jak używać poleceń w rozwiązaniu usługi Azure IoT Central().
Składniki i moduły
Składniki umożliwiają grupowanie i ponowne używanie możliwości urządzenia. Aby dowiedzieć się więcej na temat składników i modeli urządzeń, zobacz Przewodnik modelowania technologii IoT Plug and Play.
Nie wszystkie szablony urządzeń używają składników. Poniższy zrzut ekranu przedstawia szablon urządzenia dla prostego termostatu, w którym wszystkie możliwości są zdefiniowane w jednym interfejsie nazywanym składnikiem głównym:
Poniższy zrzut ekranu przedstawia szablon urządzenia kontrolera temperatury, który używa składników. Kontroler temperatury ma dwa składniki termostatu i składnik informacji o urządzeniu:
W usłudze IoT Central moduł odwołuje się do modułu usługi IoT Edge działającego na połączonym urządzeniu usługi IoT Edge. Moduł może mieć prosty model, taki jak termostat, który nie używa składników. Moduł może również używać składników do organizowania bardziej złożonego zestawu możliwości. Poniższy zrzut ekranu przedstawia przykład szablonu urządzenia, który używa modułów. Urządzenie czujnika środowiska ma moduł o nazwie SimulatedTemperatureSensor
i dziedziczony interfejs o nazwie management
:
Pobieranie składnika urządzenia
Użyj następującego żądania, aby pobrać składniki z urządzenia o nazwie temperature-controller-01
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components?api-version=2022-07-31
Odpowiedź na to żądanie wygląda podobnie do poniższego przykładu. Tablica value
zawiera szczegóły każdego składnika urządzenia:
{
"value": [
{
"@type": "Component",
"name": "thermostat1",
"displayName": "Thermostat One",
"description": "Thermostat One of Two."
},
{
"@type": "Component",
"name": "thermostat2",
"displayName": "Thermostat Two",
"description": "Thermostat Two of Two."
},
{
"@type": "Component",
"name": "deviceInformation",
"displayName": "Device Information interface",
"description": "Optional interface with basic device hardware information."
}
]
}
Pobieranie modułu urządzenia
Użyj następującego żądania, aby pobrać listę modułów uruchomionych na połączonym urządzeniu usługi IoT Edge o nazwie environmental-sensor-01
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/environmental-sensor-01/modules?api-version=2022-07-31
Odpowiedź na to żądanie wygląda podobnie do poniższego przykładu. Tablica modułów obejmuje tylko moduły niestandardowe uruchomione na urządzeniu usługi IoT Edge, a nie wbudowane $edgeAgent
i $edgeHub
moduły:
{
"value": [
{
"@type": [
"Relationship",
"EdgeModule"
],
"name": "SimulatedTemperatureSensor",
"displayName": "SimulatedTemperatureSensor"
}
]
}
Użyj następującego żądania, aby pobrać listę składników w module o nazwie SimulatedTemperatureSensor
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/environmental-sensor-01/modules?api-version=2022-07-31
Odczytywanie danych telemetrycznych
Użyj następującego żądania, aby pobrać ostatnią znaną wartość telemetrii z urządzenia, które nie używa składników. W tym przykładzie urządzenie jest wywoływanethermostat-01
, a dane telemetryczne są nazywane :temperature
GET https://{your app subdomain}.azureiotcentral.com/api/devices/thermostat-01/telemetry/temperature?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"timestamp": "2021-03-24T12:33:15.223Z",
"value": 40.10993804456927
}
Użyj następującego żądania, aby pobrać ostatnią znaną wartość telemetrii z urządzenia, które korzysta ze składników. W tym przykładzie urządzenie nosi nazwę temperature-controller-01
, składnik jest nazywany , a telemetria nosi nazwę thermostat2
temperature
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components/thermostat2/telemetry/temperature?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"timestamp": "2021-03-24T12:43:44.968Z",
"value": 70.29168040339141
}
Jeśli urządzenie jest urządzeniem usługi IoT Edge, użyj następującego żądania, aby pobrać ostatnią znaną wartość telemetrii z modułu. W tym przykładzie użyto urządzenia o nazwie environmental-sensor-01
z modułem o nazwie SimulatedTemperatureSensor
i telemetrii o nazwie ambient
. Typ ambient
telemetrii ma wartości temperatury i wilgotności:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/environmental-sensor-01/modules/SimulatedTemperatureSensor/telemetry/ambient?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"timestamp": "2021-03-25T15:44:34.955Z",
"value": {
"temperature": 21.18032378129676,
"humidity": 25
}
}
Napiwek
Aby uzyskać dostęp do danych telemetrycznych ze składnika w module, użyj polecenia /api/devices/{deviceId}/modules/{moduleName}/components/{componentName}/telemetry/{telemetryName}
.
Odczytywanie właściwości
Użyj następującego żądania, aby pobrać wartości właściwości z urządzenia, które nie używa składników. W tym przykładzie urządzenie nosi nazwę thermostat-01
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/thermostat-01/properties?api-version=2022-07-31
Odpowiedź na to żądanie wygląda podobnie do poniższego przykładu. Pokazuje, że urządzenie zgłasza pojedynczą wartość właściwości:
{
"maxTempSinceLastReboot": 93.95907131817654,
"$metadata": {
"maxTempSinceLastReboot": {
"lastUpdateTime": "2021-03-24T12:47:46.7571438Z"
}
}
}
Użyj następującego żądania, aby pobrać wartości właściwości ze wszystkich składników. W tym przykładzie urządzenie nosi nazwę temperature-controller-01
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/properties?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"serialNumber": "Explicabo animi nihil qui facere sit explicabo nisi.",
"$metadata": {
"serialNumber": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
}
},
"thermostat1": {
"maxTempSinceLastReboot": 79.7290121339184,
"$metadata": {
"maxTempSinceLastReboot": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
}
}
},
"thermostat2": {
"maxTempSinceLastReboot": 54.214860556320424,
"$metadata": {
"maxTempSinceLastReboot": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
}
}
},
"deviceInformation": {
"manufacturer": "Eveniet culpa sed sit omnis.",
"$metadata": {
"manufacturer": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"model": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"swVersion": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"osName": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"processorArchitecture": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"processorManufacturer": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"totalStorage": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
},
"totalMemory": {
"lastUpdateTime": "2021-03-24T13:58:52.5999859Z"
}
},
"model": "Necessitatibus id ab dolores vel eligendi fuga.",
"swVersion": "Ut minus ipsum ut omnis est asperiores harum.",
"osName": "Atque sit omnis eum sapiente eum tenetur est dolor.",
"processorArchitecture": "Ratione enim dolor iste iure.",
"processorManufacturer": "Aliquam eligendi sit ipsa.",
"totalStorage": 36.02825898541592,
"totalMemory": 55.442695395750505
}
}
Użyj następującego żądania, aby pobrać wartość właściwości z pojedynczego składnika. W tym przykładzie urządzenie jest wywoływanetemperature-controller-01
, a składnik jest nazywany :thermostat2
GET https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components/thermostat2/properties?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"maxTempSinceLastReboot": 24.445128131004935,
"$metadata": {
"maxTempSinceLastReboot": {
"lastUpdateTime": "2021-03-24T14:03:53.787491Z"
}
}
}
Jeśli urządzenie jest urządzeniem usługi IoT Edge, użyj następującego żądania, aby pobrać wartości właściwości z modułu. W tym przykładzie użyto urządzenia o nazwie environmental-sensor-01
z modułem o nazwie SimulatedTemperatureSensor
:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/environmental-sensor-01/modules/SimulatedTemperatureSensor/properties?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"$metadata": {
"SendData": {
"desiredValue": true,
"desiredVersion": 1
},
"SendInterval": {
"desiredValue": 10,
"desiredVersion": 1
}
}
}
Napiwek
Aby uzyskać dostęp do właściwości z składnika w module, użyj polecenia /devices/{deviceId}/modules/{moduleName}/components/{componentName}/properties
.
Właściwości zapisu
Niektóre właściwości można zapisywać. W przykładowym modelu termostatu targetTemperature
właściwość jest właściwością zapisywalną.
Użyj następującego żądania, aby zapisać pojedynczą wartość właściwości na urządzeniu, które nie używa składników. W tym przykładzie urządzenie nosi nazwę thermostat-01
:
PATCH https://{your app subdomain}.azureiotcentral.com/api/devices/thermostat-01/properties?api-version=2022-07-31
Treść żądania wygląda podobnie do następującego przykładu:
{
"targetTemperature": 65.5
}
Odpowiedź na to żądanie wygląda następująco:
{
"$metadata": {
"targetTemperature": {
"desiredValue": 65.5
}
}
}
Napiwek
Aby zaktualizować wszystkie właściwości na urządzeniu, użyj polecenia PUT
zamiast PATCH
.
Użyj następującego żądania, aby zapisać pojedynczą wartość właściwości na urządzeniu, które używa składników. W tym przykładzie urządzenie jest wywoływanetemperature-controller-01
, a składnik jest nazywany :thermostat2
PATCH https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components/thermostat2/properties?api-version=2022-07-31
Treść żądania wygląda podobnie do następującego przykładu:
{
"targetTemperature": 65.5
}
Odpowiedź na to żądanie wygląda następująco:
{
"$metadata": {
"targetTemperature": {
"desiredValue": 65.5
}
}
}
Napiwek
Aby zaktualizować wszystkie właściwości składnika, użyj polecenia PUT
zamiast PATCH
.
Jeśli urządzenie jest urządzeniem usługi IoT Edge, użyj następującego żądania, aby zapisać pojedynczą wartość właściwości w module. W tym przykładzie użyto urządzenia o nazwie , modułu o environmental-sensor-01
nazwie i właściwości o nazwie SimulatedTemperatureSensor
SendInterval
:
PUT https://{your app subdomain}.azureiotcentral.com/api/devices/environmental-sensor-01/modules/SimulatedTemperatureSensor/properties?api-version=2022-07-31
Treść żądania wygląda podobnie do następującego przykładu:
{
"SendInterval": 20
}
Odpowiedź na to żądanie wygląda następująco:
{
"$metadata": {
"SendInterval": {
"desiredValue": 20
}
}
}
Napiwek
Aby zaktualizować wszystkie właściwości modułu, użyj polecenia PUT
zamiast PATCH
.
Aktualizowanie właściwości modułu
Jeśli używasz urządzenia usługi IoT Edge, użyj następującego żądania, aby pobrać wartości właściwości z modułu:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/{deviceId}/modules/{moduleName}/properties?api-version=2022-07-31
Jeśli używasz urządzenia usługi IoT Edge, użyj następującego żądania, aby pobrać wartości właściwości ze składnika w module:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/{deviceId}/modules/{moduleName}/components/{componentName}/properties?api-version=2022-07-31
Wywołanie poleceń
Interfejs API REST umożliwia wywoływanie poleceń urządzenia i pobieranie historii poleceń.
Użyj następującego żądania, aby wywołać polecenie na urządzeniu, które nie używa składników. W tym przykładzie urządzenie jest wywoływane thermostat-01
, a polecenie nosi nazwę getMaxMinReport
:
POST https://{your app subdomain}.azureiotcentral.com/api/devices/thermostat-01/commands/getMaxMinReport?api-version=2022-07-31
Treść żądania wygląda podobnie do następującego przykładu:
{
"request": "2021-03-24T12:55:20.789Z"
}
Odpowiedź na to żądanie wygląda następująco:
{
"response": {
"maxTemp": 21.002000799562367,
"minTemp": 73.09674605264892,
"avgTemp": 59.54553991653756,
"startTime": "2022-02-28T15:02:56.789Z",
"endTime": "2021-05-05T03:50:56.412Z"
},
"responseCode": 200
}
Aby wyświetlić historię tego polecenia, użyj następującego żądania:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/thermostat-01/commands/getMaxMinReport?api-version=2022-07-31
Odpowiedź na to żądanie wygląda następująco:
{
"value": [
{
"response": {
"maxTemp": 71.43744908819954,
"minTemp": 51.29986610160005,
"avgTemp": 39.577384387771744,
"startTime": "2021-06-20T00:38:17.620Z",
"endTime": "2022-01-07T22:30:41.104Z"
},
"responseCode": 200
}
]
}
Użyj następującego żądania, aby wywołać polecenie na urządzeniu, które używa składników. W tym przykładzie urządzenie nosi nazwę temperature-controller-01
, składnik nosi nazwę thermostat2
, a polecenie nosi nazwę getMaxMinReport
:
POST https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components/thermostat2/commands/getMaxMinReport?api-version=2022-07-31
Formaty ładunku żądania i odpowiedzi są takie same jak w przypadku urządzenia, które nie używa składników.
Aby wyświetlić historię tego polecenia, użyj następującego żądania:
GET https://{your app subdomain}.azureiotcentral.com/api/devices/temperature-controller-01/components/thermostat2/commands/getMaxMinReport?api-version=2022-07-31
Napiwek
Aby wywołać polecenia w składniku w module, użyj polecenia /devices/{deviceId}/modules/{moduleName}/components/{componentName}/commands/{commandName}
.
Następne kroki
Teraz, gdy wiesz już, jak kontrolować urządzenia za pomocą interfejsu API REST, sugerowanym następnym krokiem jest nauczenie się , jak używać interfejsu API REST usługi IoT Central do tworzenia zadań i zarządzania nimi.