使用MQTT将真实设备连接到Azure IoT Central

时间:2020-07-22 11:55:48

标签: azure iot azure-iot-hub azure-iot-central

我正在摆弄Azure IoT Central,并配置了设备。现在,我想使用MQTT从真实设备发送数据(无代码)。 如果对于IoT中心来说,我似乎找不到信息。

对于物联网中心,我发现:Azure Iot Hub MQTT

由于内置仪表板,我想使用IoT Central。物联网中心似乎不存在那些。 如果我无法直接将数据发送到IoT中心,是否可以在IoT中心中使用IoT中心设备?

1 个答案:

答案 0 :(得分:1)

Azure IoT Central在后台使用IoT中心,因此您仍然可以使用端口8883上的MQTT协议连接到公共设备终结点。

要获取集线器的地址,您可以根据Azure IoT中心应用程序中的设备信息在任何计算机上使用以下脚本(请参见the docs

enter image description here

// 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);
    }
  });

输出:

注册成功
分配的hub = iotc-xxx.azure-devices.net
DeviceId = xxx
HostName = xxx.azure-devices.net; DeviceId = xxx; SharedAccessKey = xxx =

此外,正如Matthijs van der Veer所述,请注意IoT Central使用Device Provisioning Service来使您的设备连接到IoT中心。注册时会为该设备分配一个IoT集线器,但是如果将该设备重新分配给另一个集线器,则该设备将失去连接。