Una vez que tenemos un dispositivo compatible con Azure Iot ( como por ejemplo una Raspberry pi 3 como vimos , o desde un ESP8266 como vimos también recientemente ) , los hemos configurado y hemos implementado una aplicación de ejemplo para ejecutar en el dispositivo que envié envíe datos que los sensores recogen a su hub de IoT , puede que queramos intentar gestionar la mensajería en la nube del dispositivo IoT
Precisamente en este contexto surge iothub-explorer que pone a nuestra disposición varios comandos para facilitar la gestión de centro de IoT permitiéndonos supervisar mensajes de dispositivo a nube y enviar mensajes de dispositivo de nube.
Los mensajes de dispositivo a nube podrían ser datos de sensores de un dispositivo que recolecta y envía a su hub de IoT ( como por ejemplo una Raspberry pi 3 como vimos en este post , o desde un ESP8266 como vimos recientemente en este post ) o bien los mensajes hacia ese dispositivo de nube que podría ser comandos que IoT hub envía al dispositivo como por ejemplo hacer parpadear un LED conectado a ese dispositivo.
Resumidamente hay pues dos usos muy diferentes del explorador de iothub :
- Para supervisar mensajes de dispositivo a nube.
- Para enviar mensajes de dispositivo de nube.
Para ello necesitamos haber completado dos fases:
- Haber configurado el dispositivo , configuración completa que cubre los siguientes requisitos:
- Haber registrado una cuenta de suscripción a Azure ( la gratuita nos sirve) .
- Haber registrado un centro de Azure IoT ( una vez mas también existe una modalidad gratuita para probar el servicio).
- Una aplicación de cliente que envíe mensajes a su hub de IoT de Azure.
- Haber instalado el explorador de iothub. (Instalar explorer iothub)
Instalación de iothub-explorer
Iothub Explorer es pues una herramienta CLI para administrar las identidades de los dispositivos en su registro de IoT hub, enviar y recibir mensajes y archivos desde sus dispositivos, y monitorear sus operaciones de centros de IoT. Ademas iothub-explorer también permite simular un dispositivo conectado a su hub de IoT.
En post anteriores vimos como con una Raspberry pi 3 , o desde un ESP8266 los configurábamos e implementamos sendas aplicaciones para ejecutar en esos dispositivos procesos para enviar datos de telemetria procedente de sus sensores a un hub de IoT en la nube de Azure Iot Edge
Bien, tenemos nuestra aplicación corriendo en el dispositivo de Iot , por lo que necesitamos ahora instalar el explorador de iothub. Desgraciadamente no esta disponible para ambiente windows , es decir solo lo podemos ejecutar por el momento en equipos con Linux instalado. Ademas esta herramienta requiere la versión 4.x o superior de Node.js para que funcionen todas las características.
Para instalar la última versión de la herramienta iothub-explorer, ejecute el siguiente comando en su entorno de línea de comandos:
npm install -g iothub-explorer
En caso de querer instalar esta utilidad en una Raspberry pi desde Raspbian, al no estar disponible el comando npm instalarlo siguiendo estos pasos:
cd ~ git clone https://github.com/azure/iothub-explorer
Manejo de iothub-explorer
Una vez isntalada esta utilidad ,puede usar el siguiente comando para obtener ayuda adicional sobre todos los comandos de ihotub-explorer:
$ iothub-explorer help
Usage: iothub-explorer [options] <command> [command-options] [command-args] Commands: login start a session on your IoT hub logout terminate the current session on your IoT hub list list the device identities currently in your IoT hub device registry create <device-id|device-json> create a device identity in your IoT hub device registry delete <device-id> delete a device identity from your IoT hub device registry get <device-id> get a device identity from your IoT hub device registry import-devices import device identities in bulk: local file -> Azure blob storage -> IoT hub export-devices export device identities in bulk: IoT hub -> Azure blob storage -> local file send <device-id> <message> send a message to the device (cloud-to-device/C2D) monitor-feedback monitor feedback sent by devices to acknowledge cloud-to-device (C2D) messages monitor-events [device-id] listen to events coming from devices (or one in particular) monitor-uploads monitor the file upload notifications endpoint monitor-ops listen to the operations monitoring endpoint of your IoT hub instance sas-token <device-id> generate a SAS Token for the given device simulate-device <device-id> simulate a device with the specified id help [cmd] display help for [cmd] Options: -h, --help output usage information -V, --version output the version number
Cada comando iothub-explorer tiene su propia ayuda ,la cual se puede ver pasanDdo el argumento -help (ayuda) al nombre del comando:
$ iothub-explorer help create Usage: iothub-explorer create [options] [device-id|device-json] Create a device identity in your IoT hub device registry, either using the specified device id or JSON description. Options: -h, --help output usage information -a, --auto create a device with an auto-generated device id -cs, --connection-string show the connection string for the newly created device -d, --display <property-filter> comma-separated list of device properties that should be displayed -l, --login <connection-string> connection string to use to authenticate with your IoT Hub instance -k1, --key1 <key> specify the primary key for newly created device -k2, --key2 <key> specify the secondary key for newly created device -r, --raw use this flag to return raw JSON instead of pretty-printed output -x, --x509 generate an x509 certificate to authenticate the device -dv, --daysValid number of days the x509 certificate should be valid for -t1, --thumbprint1 <thumbprint> specify the primary thumbprint of the x509 certificate -t2, --thumbprint2 <thumbprint> specify the secondary thumbprint of the x509 certificate
Puede obtener mas información en https://github.com/azure/iothub-explorer
Monitor dispositivo a nube mensajes
Para supervisar los mensajes que se envían desde el dispositivo a su hub de IoT, siga estos pasos:
- Abra una ventana de consola.
- Ejecute el siguiente comando:
iothub-explorer monitor-events <device-id> --login "<IoTHubConnectionString>"
-
Obtener y de su hub de IoT. Asegúrese de que haya terminado el tutorial anterior. O puedes probar a utilizar si tienes, y.
<device-id>
<IoTHubConnectionString>
iothub-explorer monitor-events <device-id> --login "HostName=<my-hub>.azure-devices.net;SharedAccessKeyName=<my-policy>;SharedAccessKey=<my-policy-key>"
HostName
SharedAccessKeyName
SharedAccessKey
Enviar mensajes de dispositivo de nube
Para enviar un mensaje desde su hub de IoT en el dispositivo, siga estos pasos:
- Abra una ventana de consola.
- Iniciar una sesión en su hub de IoT ejecutando el siguiente comando:
Bash Copia
iothub-explorer login `<IoTHubConnectionString>`
- Enviar un mensaje a su dispositivo ejecutando el siguiente comando:
Bash Copia
iothub-explorer send <device-id> <message>
El comando hace parpadear el LED que está conectado a su dispositivo y envía el mensaje al dispositivo.
Nota:No es necesario para el dispositivo envie un comando ack separado a su hub de IoT al recibir el mensaje.