Подключите реальное устройство к Azure IoT Central с помощью MQTT

Я возился с Azure IoT central и настроил устройство. Теперь я хочу отправлять данные с помощью MQTT с реального устройства (без кода). Я не могу найти информацию, если это возможно для центра Интернета вещей.

Для концентратора Интернета вещей я нашел: Azure Iot Hub MQTT

Я хочу использовать IoT Central из-за встроенных панелей мониторинга. Похоже, что для Центра Интернета вещей их не существует. Если я не могу отправить данные напрямую в Центр Интернета вещей, есть ли способ использовать устройства Центра Интернета вещей в Центре Интернета вещей?


person Sebastian S    schedule 22.07.2020    source источник
comment
Привет, Себастьян, когда вы говорите «настоящее устройство» (без кода), что именно вы имеете в виду? Как и в ответе Питера, вы можете запрограммировать устройство для подключения к встроенному концентратору IoT Central.   -  person Matthijs van der Veer    schedule 22.07.2020
comment
Это устройство, которое нельзя запрограммировать. Вы можете только настроить параметры MQTT. Мое устройство работает при использовании Центра Интернета вещей, и я думал, что то же самое возможно и с Центром Интернета вещей. Цитата со страницы, которую я упомянул.Если устройство не может использовать SDK устройства, оно все равно может подключаться к конечным точкам общедоступных устройств, используя протокол MQTT на порту 8883, и это возможно для концентратора Интернета вещей.   -  person Sebastian S    schedule 23.07.2020


Ответы (1)


Azure IoT Central использует Центр Интернета вещей в фоновом режиме, поэтому вы по-прежнему можете подключаться к конечным точкам общедоступных устройств с помощью протокола MQTT через порт 8883.

Чтобы получить адрес концентратора, вы можете использовать приведенный ниже сценарий на любом компьютере на основе информации об устройстве в приложении Azure IoT Central (см. документы)

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

// npm install azure-iot-device azure-iot-device-mqtt azure-iot-provisioning-device-mqtt azure-iot-security-symmetric-key --save

"use strict";

// Use the Azure IoT device SDK for devices that connect to Azure IoT Central.
var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
var Client = require('azure-iot-device').Client;
var Message = require('azure-iot-device').Message;
var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
var SymmetricKeySecurityClient = require('azure-iot-security-symmetric-key').SymmetricKeySecurityClient;
var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;

var provisioningHost = 'global.azure-devices-provisioning.net';
var idScope = '{your Scope ID}';
var registrationId = '{your Device ID}';
var symmetricKey = ''{your Primary Key}';
var provisioningSecurityClient = new SymmetricKeySecurityClient(registrationId, symmetricKey);
var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), provisioningSecurityClient);

provisioningClient.register((err, result) => {
    if (err) {
      console.log('Error registering device: ' + err);
    } else {
      console.log('Registration succeeded');
      console.log('Assigned hub=' + result.assignedHub);
      console.log('DeviceId=' + result.deviceId);
      var connectionString = 'HostName=' + result.assignedHub + ';DeviceId=' + result.deviceId + ';SharedAccessKey=' + symmetricKey;
      console.log(connectionString);
    }
  });

Выход:

Регистрация прошла успешно
Назначенный хаб = iotc-xxx.azure-devices.net
DeviceId = xxx
HostName = xxx.azure-devices.net; DeviceId = xxx; SharedAccessKey = xxx =

Кроме того, как заявил Маттейс ван дер Вир, обратите внимание, что IoT Central использует Служба подготовки устройств, чтобы ваше устройство могло подключиться к центру Интернета вещей. Он назначает концентратор Интернета вещей устройству при регистрации, но если устройство будет переназначено другому концентратору, устройство потеряет соединение.

person Peter Bons    schedule 22.07.2020
comment
Я собираюсь дать тот же ответ, что и @ mathijs-van-der-veer, поскольку я не знаю, получите ли вы уведомление об этом: это устройство, которое вы не можете программировать. Вы можете только настроить параметры MQTT. Мое устройство работает при использовании Центра Интернета вещей, и я думал, что то же самое возможно и с Центром Интернета вещей. Цитата со страницы, которую я упомянул.Если устройство не может использовать SDK устройства, оно все равно может подключаться к конечным точкам общедоступных устройств с помощью протокола MQTT на порту 8883, и это возможно для концентратора Интернета вещей. - person Sebastian S; 23.07.2020
comment
@SebastianS Понятно. Обновил мой ответ - person Peter Bons; 23.07.2020
comment
Отличный ответ! Я думаю, это требует отказа от ответственности, поскольку IoT Central Microsoft продвигает использование DPS на устройствах. Хотя это может не сработать для устройства Себастьяна, если устройство будет переназначено другому концентратору, устройство потеряет соединение. - person Matthijs van der Veer; 23.07.2020
comment
@MatthijsvanderVeer - хорошее замечание, спасибо, что указали на это. Я добавил это к ответу - person Peter Bons; 23.07.2020