Supervisión/control remoto: Azure IoT hub

Supervisión/control remoto: Azure IoT hub

Estoy haciendo un pequeño proyecto en el que uso una Raspberry PI para monitorear la temperatura y controlar un LED usando Azure IOT Hub. La temperatura se visualiza a través de un portal de tablero, donde también puede controlar el LED. He leído la documentación a fondo, pero todavía no estoy seguro de un par de cosas:

Supervisión remota:

La Raspberry PI actualmente envía temperatura a mi IoT Hub (Device2Cloud), todo se ve bien en esa parte. Para mostrar los valores enviados desde Raspberry PI, estoy leyendo el bus de eventos de mi backend de NodeJS, de la misma manera que lo hacen en este ejemplo: https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization/blob/master/IoThub/iot-hub.js

¿Es esta la forma correcta de leer los mensajes del dispositivo en la nube?

Control remoto

Esta es la parte de la que no estoy seguro, me gustaría controlar el LED que está conectado a la Raspberry PI a través de la comunicación Cloud2Device en mi página de panel. No estoy muy seguro de cómo implementar esto en mi backend de Node JS, y realmente no puedo encontrar ningún buen ejemplo donde se haya hecho esto. Cualquier consejo sería apreciado.

Mostrar la mejor respuesta

Con respecto a la pregunta de monitoreo remoto: sí, esto funcionará, aunque quiero señalar que el SDK de centros de eventos para Node todavía es una versión preliminar (y podría cambiar un poco en el futuro), por lo que debe esperar algunas peculiaridades.

Con respecto al "control remoto": para enviar mensajes de la nube al dispositivo, debe usar el SDK de Azure IoT Hub Service para Node, y aquí hay un ejemplo de cómo enviar un mensaje de la nube al dispositivo (copiado de aquí)

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

Tiene un par de opciones para controlar su dispositivo de forma remota. Debe revisar este artículo (https://docs. microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance) para determinar qué opción es la más adecuada para su escenario.

Puede encontrar un tutorial de mensajes de la nube al dispositivo aquí: https://docs.microsoft.com/azure/iot-hub/iot-hub-node-node-c2d

Puede encontrar un tutorial de métodos directos aquí: https://docs.microsoft.com/azure/iot-hub/iot-hub-node-node-direct-methods