远程控制/监控 - Azure IoT 中心

Remote Controlling / Monitoring - Azure IoT hub

我正在做一个小项目,我使用 Raspberry PI 来监控温度并使用 Azure IOT Hub 控制 LED。温度通过仪表板门户可视化,您还可以在其中控制 LED。我已经彻底阅读了文档,但我仍然不确定一些事情:

远程监控:

Raspberry PI 当前将温度发送到我的物联网中心 (Device2Cloud),那部分一切正常。为了显示从 Raspberry PI 发送的值,我从我的 NodeJS 后端读取事件总线,其方式与他们在此示例中所做的方式相同: https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization/blob/master/IoThub/iot-hub.js

这是读取设备到云消息的正确方法吗?

远程控制

这是我非常不确定的部分,我想通过仪表板页面中的 Cloud2Device 通信来控制连接到 Raspberry PI 的 LED。我不太确定如何在我的 Node JS 后端中实现它,而且我真的找不到任何好的例子。如有任何建议,我们将不胜感激。

关于远程监控问题:是的,这会起作用,但我想指出,用于 ​​Node 的事件中心 SDK 仍处于预览状态(并且将来可能会有所变化),因此您应该期待一些怪癖。

关于 "remote controlling":为了发送 cloud-to-device 消息,您应该使用 Azure IoT Hub Service SDK for Node,这里是如何将云发送到设备消息的示例(复制来自 here)

'use strict';

var Client = require('azure-iothub').Client;
var Message = require('azure-iot-common').Message;

var connectionString = '[IoT Hub Connection String]';
var targetDevice = '[Target device that will receive the message]';

var client = Client.fromConnectionString(connectionString);

client.open(function (err) {
  if (err) {
    console.error('Could not connect: ' + err.message);
  } else {
    console.log('Client connected');

    // Create a message and send it to the IoT Hub every second
    var data = JSON.stringify({ text : 'foo' });
    var message = new Message(data);
    console.log('Sending message: ' + message.getData());
    client.send(targetDevice, message, function (err) {
      if (err) {
        console.error('Could not send: ' + err.message);
      } else {
        console.log('Message sent');
      }
    });
  }
});

您有几个远程控制设备的选项。您应该查看这篇文章 (https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance) 以确定哪个选项最适合您的情况。

您可以在此处找到 cloud-to-device 消息教程:https://docs.microsoft.com/azure/iot-hub/iot-hub-node-node-c2d

您可以在这里找到直接的方法教程:https://docs.microsoft.com/azure/iot-hub/iot-hub-node-node-direct-methods