使用 MQTT 将真实设备连接到 Azure IoT Central
Connect real device to Azure IoT Central using MQTT
我正在摆弄 Azure IoT Central 并配置了一个设备。现在我想从真实设备(无代码)使用 MQTT 发送数据。
我似乎找不到有关 IoT Central 是否可行的信息。
对于 IoT 中心,我发现:Azure Iot Hub MQTT
由于内置仪表板,我想使用 IoT Central。 IoT 中心似乎不存在这些。
如果我无法将数据直接发送到 IoT Central,是否可以使用 IoT Central 中的 IoT 中心设备?
Azure IoT Central 在后台使用 IoT 中心,因此您仍然可以在端口 8883 上使用 MQTT 协议连接到 public 设备终结点。
要获取集线器的地址,您可以根据 Azure IoT Central 应用程序中的设备信息在任何计算机上使用下面的脚本(参见 the docs)
// 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);
}
});
输出:
Registration succeeded
Assigned 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 中心。它在注册时为设备分配一个物联网中心,但如果设备被重新分配到另一个中心,设备将失去连接。
我正在摆弄 Azure IoT Central 并配置了一个设备。现在我想从真实设备(无代码)使用 MQTT 发送数据。 我似乎找不到有关 IoT Central 是否可行的信息。
对于 IoT 中心,我发现:Azure Iot Hub MQTT
由于内置仪表板,我想使用 IoT Central。 IoT 中心似乎不存在这些。 如果我无法将数据直接发送到 IoT Central,是否可以使用 IoT Central 中的 IoT 中心设备?
Azure IoT Central 在后台使用 IoT 中心,因此您仍然可以在端口 8883 上使用 MQTT 协议连接到 public 设备终结点。
要获取集线器的地址,您可以根据 Azure IoT Central 应用程序中的设备信息在任何计算机上使用下面的脚本(参见 the docs)
// 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);
}
});
输出:
Registration succeeded
Assigned 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 中心。它在注册时为设备分配一个物联网中心,但如果设备被重新分配到另一个中心,设备将失去连接。