Как отключить Включить подключение к IoT Hub? - PullRequest
0 голосов
/ 05 августа 2020

Я успешно реистерирую устройство в Azure концентраторе Интернета вещей через службу подготовки устройств, но я хочу отключить свойство

Разрешить подключение к центру Интернета вещей * отключить для каждого зарегистрированного устройства.

Есть ли способ сделать это из кода.

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 12 августа 2020

Да, существует множество библиотек на разных языках.

Я использую класс RegistryManager C#. Вот ссылка !. Позвольте мне поделиться кодом C#, который я использую для того же,

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Devices;

public static class EnableDevice
{
    static RegistryManager registryManager;
    static string iotHubConnectionString = Environment.GetEnvironmentVariable("iotHubConnectionString");

    [FunctionName("EnableDevice")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
        ILogger log)
    {
        JObject response = new JObject();
        try
        {
            string deviceId = req.Query["device_id"];
            if (string.IsNullOrEmpty(deviceId))
            {
                response.Add("message", "Please provide valid device_id in request params or in the request body");
                response.Add("code", 400);
                return new BadRequestObjectResult(response);
            }

            registryManager = RegistryManager.CreateFromConnectionString(iotHubConnectionString);
            Device device = await registryManager.GetDeviceAsync(deviceId);
            if (device == null)
            {
                response.Add("message", $"Error while enabling device: Device with {deviceId} not found.");
                response.Add("code", 400);
                return new BadRequestObjectResult(response);
            }
            device.Status = DeviceStatus.Enabled;  // DeviceStatus.Disabled to Disable device
            await registryManager.UpdateDeviceAsync(device);

            response.Add("message", "Device enabled successfully");
            response.Add("code", 200);
            return new OkObjectResult(response);
        }
        catch (Exception e)
        {
            response.Add("message", e.Message);
            response.Add("stacktrace", e.StackTrace);
            response.Add("code", 500);
            return new BadRequestObjectResult(response);
        }
    }
}
0 голосов
/ 05 августа 2020

Вы можете использовать REST API, который позволяет создавать или обновлять регистрации (либо групповые регистрации или одиночные регистрации ), в частности флаг provisioningStatus. (есть аналогичный API для индивидуальных зачислений). В следующий раз, когда ваше устройство попытается использовать DPS для получения информации о подготовке, ему будет отказано в доступе. Если вы кэшируете учетные данные IoT Hub, вам нужно будет использовать IoT Hub REST API, чтобы отключить устройство (см. Флаг status), которое DPS подготовило в реестре.

...