Open sw para analítica y monitorizacion


En efecto vamos  a   hablar de Grafana ,un software de  código abierto, rico en muchas características, potente, elegante ideal par analytics  y monitorizacion  que se puede ejecutar en Linux, Windows y MacOS.

Tal es su aceptación  que de hecho es un software de facto para el análisis de datos,  utilizado  en DStack overflow, eBay, PayPal, Uber y Digital  Ocean – sólo por mencionar algunos.

Soporta más  de 30 código abierto así como fuentes de datos bases de datos comerciales incluyendo MySQL, PostgreSQL, Graphite, Elasticsearch, OpenTSDB, Prometheus y InfluxDB . Le permite  digerir profundamente en grandes volúmenes de datos en tiempo real, datos operativos; visualizaciones, consultas, establecer alertas y obtener ideas de sus métricas desde ubicaciones de almacenamiento diferentes.

Es de destacar  que, Grafana permite la creación de múltiples configuraciones   independientes  teniendo su propio entorno de uso (administradores, fuentes de datos, paneles y usuarios).

Grafana Analytics Monitoring Software

Algunas características de Grafana

  • Elegantes gráficos para visualización de datos.
  • Gráficos rápidos y flexibles con muchas opciones.
  • Cuadros de mando dinámicos y reutilizables.
  • Es altamente extensible en cientos de paneles de control y plugins de la biblioteca oficial.
  • Ayudas de alimentación las preferencias del usuario.
  • Soporta multi tenancy, configuración de múltiples organizaciones independientes.
  • Compatible con la autenticación via LDAP, Google Auth, Grafana.com y Github.
  • Soporta notificaciones via Slack, PagerDuty y mas
  • Apoya notable colaboración que permite compartir datos y cuadros de mando a través de equipos y mucho más.
  • Una demostración en línea está disponible para probar antes de instalar Grafana en tu distribución Linux.: Demo URL: http://play.grafana.org/

 

En este post vamos a explicar cómo instalar software Grafana – visualización de datos y monitoreo en las distribuciones CentOS, Debian y Ubuntu .

Instalar Grafana en sistemas Linux

1. Vamos a instalar Grafana desde sus repositorios YUM o APT para que usted pueda actualizar con su administrador de paquetes predeterminado.

Instalar Grafana en Debian y Ubuntu

$ echo "deb https://packagecloud.io/grafana/stable/debian/ stretch main" | sudo tee -a /etc/apt/sources.list
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install grafana

Instalar Grafana en RHEL, CentOS y Fedora

# echo "[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt" | sudo tee /etc/yum.repos.d/grafana.repo
# yum install grafana

2. Después de instalar Grafana, puede encontrar archivos importantes en las siguientes ubicaciones:

  • El Binario se instala en /usr/sbin/grafana-server
  • Instala el script de Init.d para /etc/init.d/grafana-server
  • Crea archivo predeterminado (entorno vars) a /etc/default/grafana-server
  • Instala el archivo de configuración para /etc/grafana/grafana.ini
  • Instala servicio systemd service  grafana-server.service
  • La configuración predeterminada establece el archivo de registro en /var/log/grafana/grafana.log
  • La configuración predeterminada especifica un db de sqlite3 en /var/lib/grafana/grafana.db
  • Instala JS/HTML/CSS y otros archivos de Grafana en /usr/share/grafana

3. A continuación, iniciar el servicio Grafana , y  comprobar si esta levantado  y funcionando, habitándolo  para el inicio automático en el arranque siguiente. De forma predeterminada, el proceso se ejecuta como el usuario grafana (creado durante el proceso de instalación) y escucha en el puerto HTTP  3000.

Iniciar servidor de Grafana (a través de Systemd)

# systemctl daemon-reload
# systemctl start grafana-server
# systemctl status grafana-server
# systemctl enable grafana-server

Iniciar servidor de Grafana (a través de init.d)

# service grafana-server start
# service grafana-server status
# sudo update-rc.d grafana-server defaults  [On Debian/Ubuntu]
# /sbin/chkconfig --add grafana-server      [On CentOS/RHEL/Fedora]

4. Si su sistema tiene un firewall activado por defecto, necesita abrir el puerto 3000 en el firewall para permitir las solicitudes de cliente para el proceso de grafana.

-----------  [On Debian/Ubuntu] -----------
$ sudo ufw allow 3000/tcp
$ sudo ufw reload
-----------  [On CentOS/RHEL/Fedora] -----------  
# firewall-cmd --permanent --add-port=3000/tcp
# firewall-cmd --reload

5. Ahora utilice la siguiente URL para acceder a la Grafana, que le redirigirá a la página de inicio de sesión, las credenciales de usuario como username: admin y contraseña: admin)

http://Your-Domain.com:3000
OR
http://IP-Address:3000

Grafana Admin Login

6. Después del inicio de sesión, usted accederá a la consola casera, como se muestra en la imagen de abajo.

Grafana Home Dashboard

7. A continuación, agregar un origen de datos o base de datos, haga clic en “Agregar origen de datos“. Por ejemplo vamos a añadir una base de datos MySQL ; especificar los parámetros de nombre, tipo y conexión de fuente de datos. Haga clic en Guardar y probar.

Add Grafana Data Source

Se le notificará si la conexión de base de datos es exitosa o ha fracasado, como se muestra en la captura de pantalla.

Luego volver a la consola Inicio para añadir un panel nuevo.

Grafana Data Source Connection

8. En el panel de Inicio , haga clic en tablero de instrumentos nuevo para añadir un nuevo panel para visualizar parámetros de origen de datos.

Add Grafana New Dashboard

Desde aquí, puede agregar más fuentes de datos, dashboards, invitar a los miembros de su equipo, instalar aplicaciones y plugins para extender las funcionalidades por defecto y hacer más.

Puede encontrar más información de la Grafana Homepage: https://grafana.com/

 

Fuente tecmint.com

Anuncios

Tres servicios gratuitos de transcripción de voz a texto


Puede parecer algo futurista, pero lo cierto es que probablemente el teclado y ratón tal como los conocemos hoy en día tenga sus días contados gracias al espectacular avance sufrido estos años en el apartado de reconocimiento de voz usando redes neuronales  y las técnicas de aprendizaje automático

En efecto ,gracias a  la tecnología del aprendizaje automático ,se aplican los algoritmos más avanzados de redes neuronales del aprendizaje profundo al audio de sus ficheros o del procedente de un micrófono  para conseguir un reconocimiento de voz de máxima precisión.

Mencionar que en todos los  sistemas de aprendizaje con redes neuronales la precisión de la API Speech mejora con el tiempo, es decir conforme perfeccionan la tecnología interna de reconocimiento de voz que usa los diferentes productos que vamos   a ver , lo cual significa que en realidad usando estos servicios estamos “entrenado”a estos sistemas para que su porcentaje  de aciertos sea cada vez mayor

Veamos algunas soluciones de reconocimiento de voz liderados por grandes proveedores como pueden ser Google ,Microsoft o IBM.

Reconocimiento de voz de bing

En efecto,   mediante la  nube  de Microsoft ( Azure)   y el servicio Bing Search  se puede convertir audio con voz en texto mediante streaming en tiempo real mediante la cual, al mismo tiempo que se envía el audio al servidor, se devuelven resultados parciales de reconocimiento.

De igual modo podría reconocer el texto a partir del audio almacenado en un archivo pero desde la pagina de demostración no es posible,pero como  “truco” casero para  probar   la funcionalidad  se  puede inyectar  el audio  ya grabado desde un dispositivo externo  por  medio de un cable de audio que lo  introduciría en el pc  pero no olvide seleccionar como dispositivo grabador la entrada de audio donde conecte la señal de audo externa .De este modo regulando adecuadamente el nivel de esta señal  debería funcionar exactamente igual que si habláramos por un micrófono

Para probar el servicio vaya a la url   https://azure.microsoft.com/es-es/services/cognitive-services/speech/

No olvide  seleccionar el idioma de destino en Language, haga clic en el micrófono en Iniciar grabación y empiece a hablar.

bibg

También tiene la opción de hacer clic en las dos frases de voz de ejemplo para ver cómo funciona el reconocimiento de voz.

Como en todos estos tipos de servicios ,si usa esta demostración, significa que consiente ofrecer datos de entrada de voz a Microsoft para fines de mejora del servicio.De  hecho al cargar datos para esta demostración, acepta que Microsoft puede guardarlos y usarlos para mejorar los servicios Microsoft, entre los que se encuentra el  API. A fin de facilitar la protección de la privacidad, se adoptan medidas para desperzonalizar los datos y protegerlos. Los datos no se publicarán ni se permitirá que terceros los usen.

IBM

También esta disponible para efectos de pruebas  la version de IBM por Watson  que permite  igualmente el dictado de voz a texto

El servicio IBM Watson Speech to Text utiliza capacidades de reconocimiento de voz para convertir el árabe, el inglés, el español, el francés, el portugués de Brasil, el japonés y el mandarín en texto.

Lo mas destacable de  Watson es asimismo la capacidad de transcribir audio done se puede usa su micrófono para grabar audio o cargar audio pregrabado (.mp3, .mpeg, .wav, .flac o .opus solamente).

Incluso puede subir  archivos de audio o probar ficheros de muestra para probar el servicio , ( los archivos de audio de muestra  son en inglés de EE. UU y están cubiertos por la licencia de Creative Commons.)

El resultado devuelto incluye el texto reconocido, las alternativas de palabras y las palabras clave moteadas. Algunos modelos pueden detectar múltiples altavoces; lo cual  puede ralentizar el rendimiento.

A continuación esta es la url para probar el servicio en modo  demo: https://speech-to-text-demo.ng.bluemix.net/

No olvide  seleccionar el idioma de destino(Voice Model ) , haga clic en el micrófono(record Audio)   y empiece a hablar.

En unos instantes en tiempo real debería ir viendo las transcripciones  directamente desde esta pagina

Este sistema por el momento se usa  para fines de demostración y no está destinado a procesar datos personales ,así  que no se deben ingresar datos personales en este sistema, ya que puede no tener los controles necesarios para cumplir con los requisitos del Reglamento general de protección de datos (UE) 2016/679.

En teoría los primeros 1000 minutos al mes son gratis en el servicio estándar,   así que el limite es muy superior de uso gratuito al de Google o al  de Microsft .

Reconocmiento  de voz de Google

Tambien  Google dispone de su propio servicio de reconocimiento de voz  , el cual por cierto es el usado por  ejemplo desde los terminales Android.

En el caso de que este validado contra Google  y  tenga cuenta en Google Cloud , incluso se pueden subir directamente los ficheros que deseamos transcribir mediante la opción File Upload  teniendo en cuenta la limitación de 60 minutos en caso de no querer pasar por caja.

Si quiere probar esta funcionalidad esta es la url : https://cloud.google.com/speech-to-text/

No olvide  seleccionar el idioma de destino(Languaje ) ,seleccione el micrófono(Microphone)    y empiece a hablar.

En unos instantes ,en tiempo real debería ir viendo las transcripciones  directamente desde esta pagina:

Como no podía ser de otra manera, también  es posible reconocer el audio subido en la solicitud e integrarlo en su almacenamiento de audio de Google Cloud Storage

¿Pero cual elegimos?

Como hemos podido  ver todos estos servicios de reconocimiento de voz  están en fase de pruebas para demostrar por  ahora incluso en el estado inicial  lo que pueden llegar  a poder hacer.

De todas las opciones ,en caso de tener necesidad de usarlo por mucho tiempo,  el servicio de IBM tiene una oferta mas que generosa de 1000 minutos frente a los 100 de Google  , pero no olvidemos que si queremos integrar este servicio con una aplicación albergada en Azure o en la infraestructura de Google  entonces necesitaremos usar sus propios servicios  .

 

Creación de una aplicación web de Node.js en Azure


Es relativamente sencillo como vamos a ver , implementar una aplicación en App Service en Windows  gracias  a queAzure Web Apps proporciona un servicio de hospedaje web muy escalable y con aplicación de revisiones de un modo automático.

 

Aplicación de ejemplo que se ejecuta en Azure

Estos pasos se pueden realizar con una máquina Mac, Windows o Linux,pero lo importante de la magia del Cloud, una vez instalados los requisitos previos, tardará aproximadamente cinco minutos en completar los pasos.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar. Asimismo  tambien necesitará  completar esta guía de inicio rápido :instalación de Node.js y NPM

Descarga del ejemplo

Descargue el proyecto de ejemplo de Node.js de https://github.com/Azure-Samples/nodejs-docs-hello-world/archive/master.zip y extraiga el archivo ZIP.

En una ventana de terminal, vaya al directorio raíz del proyecto de ejemplo de Node.js (el que contiene index.php).

Ejecución de la aplicación de forma local

Ejecute la aplicación localmente abriendo una ventana de terminal y utilizando el script npm start para iniciar el servidor HTTP de Node.js integrado.

npm start

Abra un explorador web y vaya a la aplicación de ejemplo en http://localhost:1337.

Verá el mensaje Hola mundo de la aplicación de ejemplo que aparece en la página.

Aplicación de ejemplo que se ejecuta localmente

En la ventana de terminal, presione Ctrl + C para salir del servidor web.

Creación de un archivo ZIP de proyecto

Cree un archivo ZIP con todo el contenido del proyecto. El siguiente comando usa la herramienta predeterminada de su terminal:

# Bash
zip -r myAppFiles.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath myAppFiles.zip

Posteriormente, cargue el archivo ZIP en Azure e impleméntelo en App Service.

Inicio de Azure Cloud Shell

Azure Cloud Shell proporcina  un shell interactivo gratuito que puede usar para ejecutar los pasos que vamos a ver .  Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta. Simplemente haga clic en el botón Copiar para copiar el código, péguelo en la instancia de Cloud Shell y, a continuación, presione Entrar para ejecutarlo.

 

Hay varias  maneras de iniciar Cloud Shell:

Haga clic en Probarlo en la esquina superior derecha de un bloque de código. Cloud Shell en este artículo
Abra Cloud Shell en el explorador. https://shell.azure.com/bash
Haga clic en el botón Cloud Shell en el menú de la parte superior derecha de Azure Portal. Cloud Shell en el portal

Crear un grupo de recursos

Un grupo de recursos es un contenedor lógico en el que se implementan y administran recursos de Azure como aplicaciones web, bases de datos y cuentas de almacenamiento. Por ejemplo, más adelante puede elegir eliminar todo el grupo de recursos en un solo paso.

En Cloud Shell, cree un grupo de recursos con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación Europa Occidental. Para ver todas las ubicaciones que se admiten en App Service en el nivel Gratis, ejecute el comando az appservice list-locations --sku F1.

Desde Azure CLI   pruebe el comando:
az group create --name myResourceGroup --location "West Europe"

Generalmente se crean el grupo de recursos y los recursos en una región cercana.

Cuando finaliza el comando, una salida de JSON muestra las propiedades del grupo de recursos.

Crear un plan de Azure App Service

En Cloud Shell, cree un plan de App Service con el comando az appservice plan create.

En el siguiente ejemplo se crea un plan de App Service denominado myAppServicePlan con el plan de tarifa Gratis:

Desde Azure CLI   pruebe el comando:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE

Cuando se ha creado el plan de App Service, la CLI de Azure muestra información en formato json similar al ejemplo siguiente :

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "app",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Creación de una aplicación web

En Cloud Shell, cree una aplicación web en el plan de App Service myAppServicePlan con el comando az webapp create.

En el siguiente ejemplo, reemplace  por un nombre único global de aplicación (los caracteres válidos son a-z0-9 y -). El tiempo de ejecución se establece en NODE|6.9. Para ver todos los entornos en tiempo de ejecución admitidos, ejecute az webapp list-runtimes.

Desde Azure CLI   pruebe el comando:
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name  --runtime "NODE|6.9"

Cuando se haya creado la aplicación web, la CLI de Azure mostrará información  en formato json similar a la del ejemplo siguiente:

{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": ".azurewebsites.net",
  "enabled": true,
  < JSON data removed for brevity. >
}

Vaya a la aplicación web recién creada. Reemplace  por el  nombre de su aplicación único.

http://xxxxxxx.azurewebsites.net

Este es el aspecto que debería tener su nueva aplicación web:

Página de la aplicación web vacía

Implementación de un archivo ZIP

En el explorador, vaya a https://xxxx.scm.azurewebsites.net/ZipDeploy.

Cargue el archivo ZIP que creó en Creación de un archivo ZIP de proyecto arrastrándolo al área del explorador de archivos en la página web.

Cuando la implementación está en curso, un icono en la esquina superior derecha muestra el progreso como un porcentaje. La página también muestra mensajes detallados para la operación debajo del área del explorador. Cuando se haya completado, el último mensaje de implementación debe indicar Deployment successful.

Navegación hasta la aplicación

Vaya a la aplicación implementada mediante el explorador web.

http://xxxxx.azurewebsites.net

El código de ejemplo de Node.js se está ejecutando en una aplicación web de Azure App Service.

Aplicación de ejemplo que se ejecuta en Azure

¡Enhorabuena! Ha implementado la primera aplicación de Node.js en App Service.

Actualización del código y nueva implementación

Con un editor de texto, abra el archivo index.js en la aplicación de Node.js puede realizar un pequeño cambio en el texto en la llamada a response.end:

response.end("Hello Azure!");

En la ventana de terminal local, desplácese al directorio raíz de la aplicación y cree un nuevo archivo ZIP para el proyecto actualizado.

# Bash
zip -r myUpdatedAppFiles.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath myUpdatedAppFiles.zip

Implemente este nuevo archivo ZIP en App Service utilizando los mismos pasos que en Cargar el archivo ZIP.

Vuelva a la ventana del explorador que se abrió en el paso Navegación hasta la aplicación y actualice la página.

Aplicación de ejemplo actualizada que se ejecuta en Azure

Administración de la nueva aplicación web de Azure

Vaya al portarl de  Azure  para administrar la aplicación web que ha creado.

En el menú izquierdo, haga clic en App Services y, a continuación, haga clic en el nombre de la aplicación web de Azure.

Navegación desde el portal a la aplicación web de Azure

Podrá ver la página de información general de la aplicación web. En este caso, puede realizar tareas de administración básicas como examinar, detener, iniciar, reiniciar y eliminar.

Página de App Service en Azure Portal

El menú izquierdo proporciona distintas páginas para configurar la aplicación.

Limpieza de recursos

En los pasos anteriores, creó en Azure en un grupo de recursos. Si prevé que no necesitará estos recursos en el futuro, elimine el grupo de recursos ejecutando el siguiente comando en Cloud Shell:

az group delete --name myResourceGroup

Este comando puede tardar varios segundos en ejecutarse.

Fuente https://docs.microsoft.com/es-es/azure/app-service/app-service-web-get-started-nodejs

Google Cloud IoT Core


En post anteriores hemos visto la potencia de Microsft Azure en torno al Universo del Edge Iot Computing  mostrando de una forma clara como es posible con una Raspeberry Pi 3 o un ESP8266   empezar a utilizar con muy buenos resultados dicha plataforma, pues bien como no podía ser de otra forma Google también ha desarrollado su propia plataforma denominada Google Cloud Iot Core

 

Cloud IoT Core es un servicio completamente administrado que le permite conectar, administrar e ingerir datos de manera fácil y segura desde millones de dispositivos dispersos a nivel mundial. Cloud IoT Core, en combinación con otros servicios en la plataforma Google Cloud IoT, proporciona una solución completa para recopilar, procesar, analizar y visualizar datos de IoT en tiempo real para admitir una mejor eficiencia operativa.

loud IoT Core, que utiliza Cloud Pub / Sub debajo, puede agregar datos de dispositivos dispersos en un solo sistema global que se integra perfectamente con los servicios de análisis de datos de Google Cloud. Por ejemplo puede usarse el  flujo de datos de IoT para análisis avanzados, visualizaciones, aprendizaje automático y más para ayudarlo a mejorar la eficiencia operativa, anticipar problemas y crear modelos completos que describan y optimicen mejor su negocio.

Cloud IoT Core es compatible con los protocolos estándar MQTT y HTTP, por lo que se pueden usar dispositivos existentes con mínimos cambios de firmware.Asimismo Google Cloud IoT Core se ejecuta en la infraestructura sin servidores de Google, que se amplía automáticamente en respuesta a los cambios en tiempo real y se adhiere a los estrictos protocolos de seguridad estándar de la industria que protegen los datos de su empresa

 

En este post  veremos  Google Cloud Platform Console para crear un registro de dispositivos Cloud IoT Core y registrar un dispositivo. También veremos  cómo conectar un dispositivo y publicar eventos de telemetría del dispositivo.

Como siempre antes de empezar se requiere cumplir ciertos requisitos:

  • Inicie sesión en su cuenta de Google. (si aún no tiene uno, regístrese para obtener una cuenta nueva) .
  • En la consola de GCP, vaya a la página Administrar recursos y seleccione o cree un nuevo proyecto.Vaya a la página Administrar recursos
  • Asegúrese de que la facturación esté habilitada para su proyecto.Desde aqui se puede  habilitar la facturación
  • Habilite las API Cloud IoT Core y Cloud Pub / Sub.Habilita las API

Configure Google Cloud SDK y gcloud

  1. Instale Google Cloud SDK . Cloud IoT Core requiere la versión 173.0.0 o superior del SDK.
  2. Ejecute el siguiente comando para actualizar la CLI de gcloud que se incluye en el SDK:
    gcloud components update
    

    Si está utilizando una máquina virtual de Compute Engine con la instalación predeterminada de gcloud, no podrá actualizar los componentes. Para habilitar Cloud IoT Core en una máquina virtual de Compute Engine, reinstale gcloud ejecutando los siguientes comandos:

    sudo apt-get remove google-cloud-sdk
        curl https://sdk.cloud.google.com | bash
        exec -l $SHELL
        gcloud init
    

Para obtener más detalles, consulte la documentación de referencia de los comandos de gcloud iot .

Introducción al Cloud IoT Core

Registro del dispositivo

Para que un dispositivo se conecte, primero debe registrarse con Cloud IoT Core. El registro consiste en agregar un dispositivo a una colección (el registro) y definir algunas propiedades esenciales. Puede registrar un dispositivo con Cloud Platform Console, comandos gcloud o la API REST-style.  En conjunto, las funciones que le permiten registrar, monitorear y configurar dispositivos se llaman administrador de dispositivos.

Protocolos (MQTT y HTTP)

Cloud IoT Core admite dos protocolos para la conexión y comunicación del dispositivo: MQTT y HTTP. Los dispositivos se comunican con Cloud IoT Core a través de un “puente”, ya sea el puente MQTT o el puente HTTP. Cuando crea un registro de dispositivo, selecciona protocolos para habilitar: MQTT, HTTP o ambos.

MQTT es un protocolo de publicación / suscripción estándar que los dispositivos integrados usan y soportan con frecuencia, y también es común en las interacciones máquina a máquina.

HTTP es un protocolo “sin conexión”: con el puente HTTP, los dispositivos no mantienen una conexión con el Núcleo Cloud IoT. En cambio, envían solicitudes y reciben respuestas.

Autenticación de dispositivo

Cloud IoT Core utiliza autenticación de clave pública (o asimétrica):

  • El dispositivo usa una clave privada para firmar un JSON Web Token (JWT) . El token se pasa al Cloud IoT Core como prueba de la identidad del dispositivo.
  • El servicio utiliza la clave pública del dispositivo (cargada antes de que se envíe el JWT) para verificar la identidad del dispositivo.

Control del dispositivo desde la nube

Con Cloud IoT Core, puede controlar un dispositivo modificando su configuración. Una configuración de dispositivo es una acumulación arbitraria de datos definidos por el usuario que pueden estructurarse o no. Si sus dispositivos usan MQTT, las configuraciones se propagan automáticamente a ellos. Si sus dispositivos se conectan a través de HTTP, deben solicitar configuraciones explícitamente.

Configurando dispositivos

Con Cloud IoT Core, puede controlar un dispositivo modificando su configuración. La configuración de un dispositivo es una burbuja de datos arbitraria y definida por el usuario. Después de que se haya aplicado una configuración a un dispositivo, el dispositivo puede informar su estado a Cloud IoT Core.

La configuración del dispositivo funciona de manera diferente en los puentes MQTT y HTTP. Ver abajo para más detalles.

Límites

Las actualizaciones de configuración están limitadas a 1 actualización por segundo, por dispositivo. Sin embargo, para obtener los mejores resultados, la configuración del dispositivo debe actualizarse con mucha menos frecuencia, como máximo, una vez cada 10 segundos.

La tasa de actualización se calcula como el tiempo entre el acuse de recibo más reciente del servidor y la próxima solicitud de actualización.

Diferencias de protocolo

MQTT

Los dispositivos que usan MQTT pueden suscribirse a un tema especial de MQTT para actualizaciones de configuración:

 / devices / {device-id} / config

Cuando un dispositivo se suscribe al tema de configuración, el puente MQTT responde con un mensaje SUBACK MQTT, que contiene la QoS concedida para el tema de configuración (0 o 1) o 128 si se produce un error.

Después de suscribirse inicialmente, el dispositivo recibe la configuración más reciente en la carga útil de un mensaje y recibirá actualizaciones de configuración adicionales a medida que se envíen a Cloud IoT Core.

Las siguientes muestras ilustran cómo recuperar las actualizaciones de configuración en un dispositivo a través de MQTT usando Python:

def get_client(
project_id
, cloud_region, registry_id, device_id, private_key_file,
algorithm
, ca_certs, mqtt_bridge_hostname, mqtt_bridge_port):
“””Create our MQTT client. The client_id is a unique string that identifies
this device. For Google Cloud IoT Core, it must be in the format below.”””

client
= mqtt.Client(
client_id
=(‘projects/{}/locations/{}/registries/{}/devices/{}’
.format(
project_id
,
cloud_region
,
registry_id
,
device_id
)))

# With Google Cloud IoT Core, the username field is ignored, and the
# password field is used to transmit a JWT to authorize the device.
client
.username_pw_set(
username
=‘unused’,
password
=create_jwt(
project_id
, private_key_file, algorithm))

# Enable SSL/TLS support.
client
.tls_set(ca_certs=ca_certs, tls_version=ssl.PROTOCOL_TLSv1_2)

# Register message callbacks. https://eclipse.org/paho/clients/python/docs/
# describes additional callbacks that Paho supports. In this example, the
# callbacks just print to standard out.
client
.on_connect = on_connect
client
.on_publish = on_publish
client
.on_disconnect = on_disconnect
client
.on_message = on_message

# Connect to the Google MQTT bridge.
client
.connect(mqtt_bridge_hostname, mqtt_bridge_port)

    # This is the topic that the device will receive configuration updates on.
    mqtt_config_topic = ‘/devices/{}/config’.format(device_id)

    # Subscribe to the config topic.
    client.subscribe(mqtt_config_topic, qos=1)

return client

HTTP

Si está utilizando el puente HTTP , los dispositivos deben solicitar explícitamente nuevas configuraciones .

El  siguiente ejemplo en python ilustran cómo recuperar las actualizaciones de configuración en un dispositivo a través de HTTP:

def get_config(
version
, message_type, base_url, project_id, cloud_region, registry_id,
device_id
, jwt_token):
headers
= {
‘authorization’: ‘Bearer {}’.format(jwt_token),
‘content-type’: ‘application/json’,
‘cache-control’: ‘no-cache’
}

basepath = ‘{}/projects/{}/locations/{}/registries/{}/devices/{}/’
template
= basepath + ‘config?local_version={}’
config_url
= template.format(
base_url
, project_id, cloud_region, registry_id, device_id, version)

resp = requests.get(config_url, headers=headers)

if (resp.status_code != 200):
print(‘Error getting config: {}, retrying’.format(resp.status_code))
raise AssertionError(‘Not OK response: {}’.format(resp.status_code))

return resp

Actualización de la configuración del dispositivo

Puede actualizar la configuración del dispositivo utilizando Cloud Platform Console, Cloud IoT Core API o gcloud.

Por Consola

  1. Vaya a la página Registros del dispositivo en la Consola GCP.
  2. Haga clic en el ID del registro que contiene el dispositivo.
  3. En la página de detalles del registro , haga clic en el ID del dispositivo cuya configuración desea actualizar.
  4. En la parte superior de la página, haz clic en Actualizar config.
  5. Seleccione un formato para la configuración y pegue los datos en el cuadro Configuración .
  6. Haga clic en Enviar al dispositivo .

Usando gcloud

Para actualizar la configuración de un dispositivo, ejecute el gcloud iot devices configs update :

 gcloud iot dispositivos configs update \
   (--config-data = CONFIG_DATA | --config-file = CONFIG_FILE ) \
   --device = DEVICE_ID \
   --registry = REGISY_ID \
   --region = REGION \
   [--version-to-update = VERSION_TO_UPDATE ]

Los dispositivos se actualizarán de acuerdo con el protocolo que usan .

Usando Cloud iot Core API

Para actualizar la configuración del dispositivo a través de la API, use el método Device modifyCloudToDeviceConfig , especificando la nueva configuración en el campo config . También puede especificar una configuración al crear un dispositivo y luego usar modifyCloudToDeviceConfig para cambiarla más tarde.

El siguiente ejemplo en Pythoon  ilustran cómo actualizar la configuración de un dispositivo:

def set_config(
service_account_json
, project_id, cloud_region, registry_id, device_id,
version
, config):
print(‘Set device configuration’)
client
= get_client(service_account_json)
device_path
= ‘projects/{}/locations/{}/registries/{}/devices/{}’.format(
project_id
, cloud_region, registry_id, device_id)

config_body = {
‘versionToUpdate’: version,
‘binaryData’: base64.urlsafe_b64encode(
config
.encode(‘utf-8’)).decode(‘ascii’)
}

return client.projects(
).locations().registries(
).devices().modifyCloudToDeviceConfig(
name
=device_path, body=config_body).execute()

Revisando la configuración del dispositivo

Por ultimo  tambien uede revisar las últimas 10 versiones de la configuración de un dispositivo mediante Cloud Platform Console, la API o gcloud.

Consola

  1. Vaya a la página Registros del dispositivo en la Consola GCP.
  2. Haga clic en el ID del registro que contiene el dispositivo cuya configuración desea actualizar.
  3. En la página de detalles del registro , haga clic en el ID del dispositivo cuya configuración desea actualizar.
  4. Haga clic en Configuración e historial de estado.

Utilice las casillas de verificación para controlar si se muestra el historial de configuración o el historial de estado, o ambos. Haga clic en Comparar para ver si la configuración y el estado coinciden como espera.

gcloud

Para obtener configuraciones recientes, ejecute la gcloud iot devices configs list y describe comandos:

 Configuración de dispositivos de gcloud iot list DEVICE_ID \
   --registry = REGISY_ID \
   --region = REGION \
   [--filter = EXPRESIÓN ]
   [--limit = LIMIT ]
   [--sort-by = [ CAMPO , ...]]
 Las configuraciones de dispositivos gcloud iot describen DEVICE_ID \
   --registry = REGISY_ID \
   --region = REGION

Fuentes:   https://cloud.google.com/iot/docs/how-tos/getting-startedhttps://cloud.google.com/iot/docs/how-tos/config/configuring-devices

Monitorizacion remota de IoT con notificaciones desde Azure en conexión de su hub de IoT


Azure Logic Apps proporciona una forma de automatizar procesos como una serie de pasos. Una aplicación lógica se puede conectar a través de varios servicios y protocolos. Comienza con un activador como ‘Cuando se agrega una cuenta’, y luego una combinación de acciones, una como ‘enviar una notificación de inserción’. Esta característica hace que Logic Apps sea una solución de IoT perfecta para la monitorización de dispositivos IoT, como por ejemplo para alerta ante anomalías, entre otros escenarios de uso.  

 

Resumidamente   estas son las cosas  que necesitaremos  hacer par lograr nuestro objetivo:

  • Crear un espacio de nombres del autobús de servicio y añadir una cola a él.
  • Añadir un punto final y una regla de enrutamiento a su hub de IoT.
  • Crear, configurar y probar una aplicación de la lógica.

Necesitaremos para ello como siempre tener configurado  un dispositivo de Iot enviando mensajes a la nube de Azure de Iot Hub.

 

Crear espacio de nombres de Servicio del Bus y añadirle una cola

Crear un espacio de nombres del bus de servicio

  1. En el portal de Azure, haga clic en crear un recurso >Enterprise Integration(Integración empresarial )> Service Bus.
  2. Proporcione la siguiente información:Nombre: el nombre del bus de servicios.Pricing tier  déjelo en Standard .
  3. En suscripción dejelo  en Evaluación gratuitaGrupo de recursos: utilizar el mismo grupo de recursos que utiliza el hub de IoT.

    Ubicación: utilizar la misma ubicación que utiliza el hub de IoT.

  4. Pinchar Anclar al panel
  5. Haga clic en crear.

Añadir una cola de autobús de servicio

  1. Abrir el espacio de nombres del Bus de servicio y haga clic en + Quue(cola.)
  2. Introduzca un nombre para la cola y haga clic en crear.
  3. Abrir la cola del Bus de servicio(entities-Queues-el nombre del la nueva cola )   y haga clic en CONFIGURACION  –Shared access policies (directivas de acceso compartido) > + añadir.
  4. Introduzca un nombre para la política de controlar administrar y haga clic en create (crear).

Añadir un punto final y una regla de enrutamiento a su hub de IoT

Añadir un punto final

  • Abrir su centro de IoT, haga clic en MensajeriaPuntos de conexión > + Añadir.
  • Introduzca la siguiente información:                                                                                 Nombre: el nombre del extremo.Tipo de punto final: seleccione Cola de autobús servicio.Espacio de nombres del servicio de bús: seleccionar el espacio de nombres que creó.

    Cola de Service Bus: seleccione la cola creada.

  • Haga clic en Aceptar.

Add an endpoint to your IoT hub in the Azure portal

Agregar una regla de enrutamiento

  1. En su centro de Internet, haga clic en  MENSAJERIA  – rutas > + añadir.
  2. Introduzca la siguiente información:Nombre: el nombre de la regla de enrutamiento.Fuente de datos: seleccionar DeviceMessages.Punto final: seleccione el punto final de ha creado.

    Cadena de consulta: entrar.temperatureAlert = "true"

  3. Haga clic en Guardar.

Add a routing rule in the Azure portal

Crear y configurar una aplicación de lógica

Crear una aplicación de lógica

  1. En el portal de Azure, haga clic en crear un recurso >Enterprise Integration( Integración empresarial )> Lógic app.
  2. Introduzca la siguiente información:Nombre: el nombre de la aplicación de la lógica.Grupo de recursos: utilizar el mismo grupo de recursos que utiliza el hub de IoT.Ubicación: utilizar la misma ubicación que utiliza el hub de IoT.
  3. Haga clic en crear.

Configurar la aplicación de la lógica

  1. Abra la lógica de la aplicación que se abre en el diseñador de aplicaciones de la lógica.
  2. En el diseñador de aplicaciones de lógica, haga clic en BlanK Logic App
  3. Haga clic en Service Bus.
  4. Haga clic en el Servicio de Bus cuando uno o varios mensajes en una cola (Autocompletar).
  5. Crear una conexión de bus de servicio.
    1. Introduzca un nombre de conexión.
    2. Haga clic en el espacio de nombres de servicio bus > la política de autobús servicio > crear.
    3. Haga clic en continuar después de la conexión de bus de servicio.
    4. Seleccione la cola que creó e introduzca para recuento de mensajes máximo175
    5. Haga clic en “Guardar” el botón para guardar los cambios.
  6. Crear una conexión de servicio de SMTP.
    1. Haga clic en nuevo paso > Agregar una acción.
    2. Tipo, haga clic en el servicio SMTP en el resultado de la búsqueda y haga clic en SMTP – envíe correo electrónico.SMTP
    3. Introduzca la información de SMTP del buzón y haga clic en crear.Obtenga la información de SMTP para Hotmail/Outlook.com, Gmaily Yahoo Mail. ( Nota :Su proveedor de servicios de correo electrónico necesitará verificar la identidad de remitente para asegurarse de que eres tú quien envía el correo electrónico9.
    4. Introduzca su dirección de correo electrónico para de y ay para asunto y el cuerpo.High temperature detected
    5. Haga clic en Guardar.

 

La aplicación de la lógica estará   en orden de funcionamiento en cuanto se guarde así que ya podemos probar su funcionalidad  así que :

  1. Inicie la aplicación cliente que implementa en el dispositivo en ESP8266 conectar a Azure IoT.
  2. Aumentar la temperatura del ambiente alrededor del Sensor por encima de 30 C.(por ejemplo, encendiendo una vela cerca del sensor ).
  3. Usted debe recibir una notificación por correo electrónico enviada por la aplicación .

     

Hemos visto lo relativamente sencillo que es  crear  una aplicación lógica que conecta el hub de IoT y buzón para monitorizar  temperatura y enviar notificaciones.

Fuente https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-monitoring-notifications-with-azure-logic-apps

Como usar la extensión de IoT para Azure CLI 2.0 para gestionar dispositivos de Azure IoT Hub


La Extensión de la IoT para Azure CLI 2.0 es una nueva extensión para IoT en código  abierto que añade a las capacidades de Azure CLI 2.0, la cual como vamos a ver  incluye comandos para interactuar con el administrador de recursos Azure como por ejemplo, puede utilizar Azure CLI 2.0 para crear una VM de Azure o un IoT Hub.

Una extensión CLI permite un servicio de Azure incrementar el Azure CLI dando  acceso a funciones adicionales específicas de servicio como vamos a ver.

La extensión de IoT da IoT permite a los  desarrolladores y aficionados acceso desde línea de comandos a todos los  IoT Hub, IoT Edge, y las capacidades  de  IoT Hub Device Provisioning Service

Algunos ejemplos de posibilidades que ofrece esta extension:

Opción de manejo Tarea
Métodos directos Hacer un dispositivo actuar como arrancar o parar el envío de mensajes o reiniciar el dispositivo.
Propiedades de dos deseadas Poner un dispositivo en algunos estados, tales como poner establecer un LED a verde o establecer el intervalo de enviar telemetría cada 30 minutos.
Doble registrados propiedades Obtener el estado que informó  un dispositivo. Por ejemplo, el dispositivo informa que el LED parpadea ahora.
Etiquetas de doble funcion Almacenar metadatos específicos del dispositivo en la nube. Por ejemplo, la situación de la implementación de una máquina expendedora.
Consultas de doble dispositivo Consulta todos los gemelos de dispositivo para recuperarlas condiciones arbitrarias, tales como identificar los dispositivos que están disponibles para su uso.

Device twins (Gemelos de dispositivo) son documentos JSON que almacenan información de estado del dispositivo (metadatos, configuraciones y condiciones). Eje de IoT persiste a una doble dispositivo de cada dispositivo que se conecta a él.

Extensión de IoT para Azure CLI 2.0

Vamos   a ver  usar  la extensión de IoT para Azure CLI 2.0 con varias opciones de manejo en nuestra máquina de desarrollo ejecutando Azure CLI 2.0 y la extensión de IoT para Azure CLI 2.0 con varias opciones de gestión.

Para poder usar esta extensión necesitaremos  haber configurado el dispositivo completo  de Iot  cubriendo los siguientes requisitos:

    • Una suscripción activa de Azure.
    • Un centro de Azure IoT bajo su suscripción.
    • Una aplicación de cliente que envíe mensajes a su hub de IoT de Azure.

Debemos asegurarnos de que el dispositivo se está ejecutando con la aplicación de cliente .Por ejemplo un método muy cómodo de comprobarlo es usando la herramienta  Microsoft Azure Storage siempre que hayamos vinculado nuestro  Hub de Iot a Azure Storage (como vimos es este post) ,pues desde esta herramienta podremos ver fácilmente el contenido de los mensajes enviados por el dispositivo

azurestorage

Microsoft Azure IoT Extension for Azure CLI 2.0  proporciona nuevos y emocionantes comandos y capacidades de IoT centrados en los servicios IoT Hub y IoT Device Provisioning. La funcionalidad se proporciona como un paquete de extensión CLI de Azure para una integración perfecta con la funcionalidad de línea de comandos existente.

La extensión aumenta el Azure CLI IoT de Azure agregando o modificando el espacio de comando existente. La extensión incluye capacidades en las siguientes categorías:

  • IoT Hub
  • IoT Edge
  • IoT Device Provisioning Service (DPS)

Instalación  

Paso1; Instalación de Python.

Como requisito previo se necesita instalar Python en el equipo de desarrollo. Podemos instalar  Python 2.7 x o Python 3.x. Python 3.65 es la ultima version disponible y que podemos instalar. Simplemente ir a   https://www.python.org/downloads/  pinchar sobre enlace para descargar la ultima version  y después ejecutar el instalable para lanzar la instalación.

Paso 3:Instalar Azure CLI 2.0 

Tambien necesitamos instalar el cliente de Azure CLI 2.0  para  agregar despuesla extensión IoT. Podemos instalar  directamente con un  instalador desde  Windows  el cliente CLI , para ello descargaremos MSI y luego lo  instalaremos en nuestro equipo de desarrollo

azure cli.PNG

Como mínimo, la versión Azure CLI 2.0 debe ser 2.0.24 o superior. Esta versión admite los comandos de extensión az e introduce el marco de comandos knack, es por eso que podemos utilizar para comprobarlo el comando desde linea de comandos (cmd): 

 az --version .

Por ejemplo este el resultado de la ejecución de este comando con la ultima version instalada (2.0.31) del cliente de Azure:

C:\Users\Carlos>az –version
azure-cli (2.0.31)
acr (2.0.23)
acs (2.0.31)
advisor (0.5.1)
appservice (0.1.31)
backup (1.1.1)
batch (3.2.0)
batchai (0.2.0)
billing (0.1.8)
cdn (0.0.14)
cloud (2.0.13)
cognitiveservices (0.1.12)
command-modules-nspkg (2.0.1)
configure (2.0.15)
consumption (0.3.0)
container (0.1.22)
core (2.0.31)
cosmosdb (0.1.20)
dla (0.0.19)
dls (0.0.21)
eventgrid (0.1.12)
eventhubs (0.1.2)
extension (0.0.12)
feedback (2.1.1)
find (0.2.9)
interactive (0.3.19)
iot (0.1.19)
keyvault (2.0.21)
lab (0.0.21)
monitor (0.1.5)
network (2.0.28)
nspkg (3.0.2)
profile (2.0.22)
rdbms (0.2.1)
redis (0.2.12)
reservations (0.1.2)
resource (2.0.27)
role (2.0.22)
servicebus (0.1.2)
servicefabric (0.0.12)
sql (2.0.25)
storage (2.0.31)
vm (2.0.30)
Python location ‘C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe’
Extensions directory ‘C:\Users\Carlos\.azure\cliextensions’
Python (Windows) 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
Legal docs and information: aka.ms/AzureCliLegal

También puede seguir las instrucciones de instalación en Microsoft Docs configurar Azure CLI 2.0 en su entorno.

Paso 4: Instalación  de la extensión de cliente de Azureo pare IoTI

Finalmente también  tenemos que instalar la extensión de la IoT ahora que tiene una extensión de  cliente de Azure compatible instalado.

Cuando se instala una extensión, cualquier dependencia adicional de Python requerida se descarga  y se instala automáticamente.
Hay múltiples opciones para la instalación. Después de instalar la extensión, puede usar una lista de extensiones az para validar las extensiones instaladas actualmente o la extensión az show – nombre azure-cli-iot-ext para ver detalles sobre la extensión IoT.
En todos los casos, asegúrese de que la extensión IoT sea la versión 0.3.2 o superior.

La extensión está diseñada para ser plug-and-play con Azure CLI. Incluso si tiene Azure CLI instalado, asegúrese de que esté actualizado.La forma más sencilla es ejecutar el siguiente comando.

az extension add --name azure-cli-iot-ext

Puede usar el comando  az list list-available para ver todas las extensiones disponibles en el índice y es posible tambien actualizar una extensión en su lugar utilizando la extensión az update –name, Asimismo El IoT extensión archivo Léame describe varias maneras de instalar la extensión.

Paso 5:Inicie sesión  en Azure

Inicie sesión su cuenta Azure ejecutando el siguiente comando:

az login

Ahora  vaya a la  pagina   https://microsoft.com/devicelogin  e    introduzca el código que devuelve el comando    en  la  pagina anterior   para validarse.

 

inicioazure.PNG

Una vez aceptada en la página nos pide nuestro login de la cuenta de Azure  y tras aceptarse  ya  no es necesario continuar en el navegador   y a partir de aqui ya estan disponible los comandos  posibles de Azure  CLI

login.PNG

Una  validado  nos dará un mensaje de finalizacioó

fin.PNG

 

Ahora desde linea de comando tenemos muchas posibilidades :

Hub

Command group: az iot hub

az iot hub query

az iot hub generate-sas-token
az iot hub show-connection-string

az iot hub apply-configuration

az iot hub invoke-device-method
az iot hub invoke-module-method

Hub Device Identity

Command group: az iot hub device-identity

az iot hub device-identity create
az iot hub device-identity show
az iot hub device-identity list
az iot hub device-identity update
az iot hub device-identity delete

az iot hub device-identity show-connection-string

az iot hub device-identity import
az iot hub device-identity export

Hub Device Twin

Command group: az iot hub device-twin

az iot hub device-twin show
az iot hub device-twin replace
az iot hub device-twin update

Hub Module Identity

Command group: az iot hub module-identity

az iot hub module-identity create
az iot hub module-identity show
az iot hub module-identity list
az iot hub module-identity update
az iot hub module-identity delete

az iot hub module-identity show-connection-string

Hub Module Twin

Command group: az iot hub module-twin

az iot hub module-twin show
az iot hub module-twin replace
az iot hub module-twin update

Edge Deployment

Command group: az iot edge deployment

az iot edge deployment create
az iot edge deployment show
az iot edge deployment list
az iot edge deployment update
az iot edge deployment delete

Device

Command group: az iot device

az iot device send-d2c-message
az iot device simulate
az iot device upload-file

Device c2d-message

Command group: az iot device c2d-message

az iot device c2d-message receive

az iot device c2d-message complete
az iot device c2d-message abandon
az iot device c2d-message reject

DPS Enrollment

Command group: az iot dps enrollment

az iot dps enrollment create
az iot dps enrollment show
az iot dps enrollment list
az iot dps enrollment update
az iot dps enrollment delete

DPS Enrollment Group

Command group: az iot dps enrollment-group

az iot dps enrollment-group create
az iot dps enrollment-group show
az iot dps enrollment-group list
az iot dps enrollment-group update
az iot dps enrollment-group delete

DPS Registration

Command group: az iot dps registration

az iot dps registration show
az iot dps registration list
az iot dps registration delete

 

Importante:

Añada –help o -h a un grupo de comandos o comando para obtener más información.
Para grupos de comandos, esto revelará los comandos del grupo objetivo
Para los comandos, esto revelará información sobre los parámetros y puede incluir ejemplos de uso.

 

Algunos ejemplos de uso prácticos:

  • Metodos directos :  Se puede invocar directamente desde linea de comandos:                az iot hub invoke-device-method –device-id –hub-name –method-name –method-payload
  • Propiedades del dispositivo gemelo deseado: Por ejemplo se puede establecer una  propiedad de  intervalo = 3000 ejecutando el siguiente comando: az iot hub device-twin update -n -d –set properties.desired.interval = 3000                                  Esta propiedad  puede ser leída tamnbien  desde  su dispositivo.
  • Propiedades del doble dispositivo registrados : se pueden obtener las propiedades divulgadas del dispositivo ejecutando el siguiente comando: az iot hub device-twin update -n -d –set properties.reported.interval = 3000 .  Una de las propiedades es $metadata. $lastUpdated que muestra la última vez que este dispositivo envía o recibe un mensaje.
  • Etiquetas de doble dispositivo: Se pueden mostrar las etiquetas y propiedades del dispositivo ejecutando el siguiente comando: az iot hub device-twin show –hub-name –device-id                                                                                                            Agregar una función de campo = temperatura & humedad al dispositivo ejecutando el siguiente comando:az iot hub device-twin update –hub-name –device-id –set tags = ‘{“role”:”temperature&humidity”}}’
  • Consultas de doble dispositivo :Consulta de dispositivos con una etiqueta de papel = ‘temperatura & humedad’ ejecutando el siguiente comando:az iot hub query –hub-name –query-command “SELECT * FROM devices WHERE tags.role = ‘temperature&humidity’
  • Consulta todos los dispositivos excepto los que tienen una etiqueta de papel = ‘temperatura & humedad’ ejecutando el siguiente comando:az iot hub query –hub-name –query-command “SELECT * FROM devices WHERE tags.role != ‘temperature&humidity'”

 

 

 

Hemos visto por tanto cómo controlar mensajes de dispositivo a nube y enviar mensajes de dispositivo de nube entre su dispositivo de IoT y Azure IoT Hub.

Fuente https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-device-management-iot-extension-azure-cli-2-0

Cómo visualizar datos de sensores en tiempo real desde su hub de IoT Azure


Vimos  en  un post anterior  cómo es  posible usar Power BI de Azure  para visualizar datos de los sensores en tiempo real desde Azure IoT, pues bien,  existe otra posibilidad para  visualizar datos de los sensores en tiempo real que el hub de IoT recibe , que es  ejecutando una aplicación web que está alojada en la nube de Azure .

Para  cumplir con nuestro propósito de ver los datos de telemetría de nuestro dispositivo de Iot conectado a la nube de Iot Azure Edge ,    veremos como crear una aplicación web en el portal de  Azure preparando su hub de IoT para acceso a datos mediante la adición de un grupo de consumidores. Hecho esto configuraremos una aplicación web para leer datos del sensor de su hub de IoT y subiremos  esta aplicación web  a la nube de Azure ,la cual  nos permitirá  ver desde un navegador los datos de telemetría enviados  desde su hub de IoT ¿le interesa el tema? pues si es así empezemos.

Antes de empezar   deberíamos   tener configurado  un dispositivo Iot de Azure como por ejemplo  algunos que hemos visto como puede ser una Raspberry Pi 3  , un ESP8266  o incluso un dispositivo simulado.  Como hemos comentado en otros  posts todos esos  dispositivos de Azure IoT  hub  deben implementar una aplicación de ejemplo la cual  enviará  datos que  los sensores recogen del mundo físico ( humedad , temperatura, presencia, etc  ) a su hub de IoT.

Asimismo  teniendo dispositivos IoT enviando mensajes  de telemetría a la nube de Azure Iot Edge, para lograr persistencia en la nube de Azure  necesitamos una cuenta de Azure storage  así como  una aplicación Azure  para poder almacenar los mensajes de hub de IoT en el almacenamiento blob  como hemos visto en otros posts

Crear una aplicación web

  1. En el portal de Azure, haga clic en Crear un recurso > Web y móvilAplicación Web > Aplicación web
  2. Escriba un nombre único para la aplicacion  y anotar pues nos sera util para acceder a esta
  3. Verificar la suscripción  que para este ejmeplo pude ser “Evaluacion gratuita” si no dispone de otro recurso de este tipo
  4. Especifique un grupo de recursos  pinchando en Usar existente y  pinchando en el disponible
  5. Finalmente  seleccione Anclar al  panel y a continuación, haga clic en Crear.hestiaweb.PNG
  6. Este proceso puede tardar varios minutos dada la complejidad de  su realización ( localizar una máquina virtual disponible , obtener permisos , crear la instancia web ,etc)
  7. En este momento  , copie vaya nuevamente al servidor web –>introducción y copie el valor del campo URL ( sera del tipo   https://xxxx.azurewebsites.net/)    de modo que como debería estar  corriendo  su web se obtendrá una respuesta  parecida  la siguiente si copiamos dicha url en un navegador:azureweb.PNG

 

Añadir un grupo de consumidores a su hub de IoT

Los grupos de consumidores son utilizados por las aplicaciones para extraer datos desde Azure IoT, por ello necesitamos crear un grupo de consumidores para ser utilizado por un servicio de Azure para  leer los  datos de su centro de IoT.

Para agregar un grupo de consumidores a su hub de IoT, siga estos pasos:

  1. En el portal de Azure, abra su hub de IoT.
  2. En el panel izquierdo  casi en la parte más inferior en el apartado Mensajería , seleccione Puntos de conexión y  haga clic en este.
  3. Seleccione en el panel central  events  , introduzca un nombre en grupos de consumidores en el panel derecho y haga clic en Guardar.stream.PNG

Configurar la aplicación web para leer datos de su centro de IoT

  1. Abra en Azure la aplicación web que ha aprovisionado.
  2. Haga clic en el marco izquierdo casi  al final en CONFIGURACION->Configuración de la aplicación, y luego en configuración de la aplicación, agregue los siguientes pares clave/valor:
    Clave Valor
    Azure.IoT.IoTHub.ConnectionString Obtenidos desde el explorador de iothub  en  Azure IOT HUB >xx – Explorador de dispositivos–>OD del Dispositivo xxx –>cadena de conexion clave principal
    Azure.IoT.IoTHub.ConsumerGroup El nombre del grupo de consumidores que se agrega a su hub de IoT cumplimentado en el  apartado anterior

    hestiaweb_configuracion.PNG

  3. Haga clic en configuración de la aplicación, debajo de configuración General, activar la opción de  Web  Sockets  ( esta desactivado por defecto ) y a continuación, haga clic en Guardar.

Subir una aplicación web

En GitHub, Microsoft ha puesto a nuestra disposición muchas aplicaciones web de ejemplo para desplegar en Azure . Nos interesa  el código en node.js  de una aplicación  web completa que puede mostrar los  datos de telemetría  en tiempo real desde su hub de IoT .

Todo lo que se  necesita hacer es configurar la aplicación web para trabajar con un repositorio Git, descargar la aplicación web de GitHub y luego subir a Azure de la aplicación web al host.

El repositorio web-apps-node-iot-hub-data-visualization contiene el código en node para desplegar una aplicación web en la nube de Azure, que puede leer los datos de temperatura y humedad del IoT hub y mostrar los datos en tiempo real en un gráfico de líneas en una página web.

Los navegadores compatibles son

Navegador La menor versión
Internet Explorer 10
Borde 14
Firefox 50
Cromo 49
Safari 10
Ópera 43
iOS Safari 9.3
mini Opera TODAS
Navegador de Android 4.3
Chrome para Android 56

Los pasos  a seguir para desplegar esta aplicación son los siguientes:

  1. En la aplicación web, haga clic en IMPLEMENTACION ->Opciones de implementación > Elegir origen > Repositorio de Git Local y haga clic en Aceptar.Configure your web app deployment to use the local Git repository
  2. Tenga en cuenta que para modificar o eliminar  el origen de implementación  que acaba de crear is fuera el caso , primero necesitara desconectar este origen   por lo si lo hace tendrá  que volver a  ir a  IMPLEMENTACION ->Opciones de implementación   y volver a empezar con el proceso
  3. Haga clic en Credenciales de implementación, crear un nombre de usuario y contraseña para conectarse con el repositorio de Git en Azure y a continuación, haga clic en Guardar.
  4. Haga clic en Introducción y anote el valor de Git clone url (a la izquierda justo debajo de Git/nombre de usuario de implementación).Get the Git clone URL of your web app
  5. Abra una ventana de terminal en el equipo local o un comando.
  6. Descargar la aplicación web de GitHub y subirlo a Azure de la aplicación web al host. Para ello, ejecute los siguientes comandos:

giti clone.PNG

  • cd web-apps-node-iot-hub-data-visualization
  • git remote add webapp uri  (uri es la url del repositorio Git obtenida  en la página de Resumen de la aplicación web que se obtiene al pulsar Introducción).
  • git push webapp master:master  (se pedirán las credenciales  de Git que introdujo en en el apartado anterior en  la página de Overview , tenga en cuenta la Git clone url .)gitmanager
  • En resumen  estos son todos los comandos desde el interfaz  delñinea de comandos (cmd)    lanzados asi como la salida de esta:
C:\Users\Carlos>git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git
Cloning into ‘web-apps-node-iot-hub-data-visualization’…
remote: Counting objects: 35, done.
remote: Total 35 (delta 0), reused 0 (delta 0), pack-reused 35
Unpacking objects: 100% (35/35), done.
C:\Users\Carlos>cd web-apps-node-iot-hub-data-visualization
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>git remote add webapp https://[email protected]:443/Webestia.git
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>git push webapp master:master
Counting objects: 35, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (30/30), done.
Writing objects: 100% (35/35), 77.64 KiB | 3.23 MiB/s, done.
Total 35 (delta 6), reused 0 (delta 0)
remote: Updating branch ‘master’.
remote: Updating submodules.
remote: Preparing deployment for commit id ‘4b9c09be9b’.
remote: Generating deployment script.
remote: Generating deployment script for node.js Web Site
remote: Generated deployment script files
remote: Running deployment command…
remote: Handling node.js deployment.
remote: KuduSync.NET from: ‘D:\home\site\repository’ to: ‘D:\home\site\wwwroot’
remote: Deleting file: ‘hostingstart.html’
remote: Copying file: ‘.eslintignore’
remote: Copying file: ‘.eslintrc’
remote: Copying file: ‘.gitignore’
remote: Copying file: ‘.travis.yml’
remote: Copying file: ‘LICENSE’
remote: Copying file: ‘package.json’
remote: Copying file: ‘README.md’
remote: Copying file: ‘server.js’
remote: Copying file: ‘IoThub\iot-hub.js’
remote: Copying file: ‘public\index.html’
remote: Copying file: ‘public\javascripts\Chart.min.js’
remote: Copying file: ‘public\javascripts\index.js’
remote: Copying file: ‘public\javascripts\jquery-2.1.4.min.js’
remote: Copying file: ‘public\stylesheets\style.css’
remote: Using start-up script server.js from package.json.
remote: Generated web.config.
remote: The package.json file does not specify node.js engine version constraints.
remote: The node.js application will run with the default node.js version 6.9.1.
remote: Selected npm version 3.10.8
remote: ….
remote: npm WARN deprecated [email protected]: This package is no longer supported. It’s now a built-in Node module. If you’ve depended on crypto, you should switch to the one that’s built-in.
remote: …………………………………………..
remote: [email protected] D:\home\site\wwwroot
remote: +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | +– [email protected]
remote: | | | | `– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | `– [email protected]
remote: +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | +– [email protected]
remote: | | | +– [email protected]
remote: | | | `– [email protected]
remote: | | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | +– [email protected]
remote: | | `– [email protected]
remote: | +– [email protected]
remote: | `– [email protected]
remote: +– [email protected]
remote: `– [email protected]
remote: +– [email protected]
remote: `– [email protected]
remote:
remote: Finished successfully.
remote: Running post deployment command(s)…
remote: Deployment successful.
To https://webestia.scm.azurewebsites.net:443/Webestia.git
* [new branch] master -> master
C:\Users\Carlos\web-apps-node-iot-hub-data-visualization>
  • Ahora  ya puede abrir la aplicación web para ver los datos de temperatura y humedad en tiempo real desde su hub de IoT. En este momento  ,  vaya nuevamente al servidor web –>introducción y copie el valor del campo URL ( sera del tipo   https://xxxx.azurewebsites.net/)    de modo que como debería estar  corriendo  su web se obtendrá una respuesta  parecida  la siguiente si copiamos dicha url en un navegador:

 

En la página de su aplicación web, haga clic en la URL para abrir la aplicación web.

Get the URL of your web app

Debería ver los datos de temperatura y humedad en tiempo real desde su hub de IoT.

Web app page showing real-time temperature and humidity

Metodo alternativo sin usar los servicios web de Azure

Se necesita tener el  servidor node.js instalado.

  • Necesitara  dos  valores: valor1 y valor2:
    • El valor1 para  Azure.IoT.IoTHub.ConnectionString  se  obtiene  desde el explorador de iothub  en  Azure IOT HUB >CONFIGURACION -Directivas  de acceso compartido  –>cadena de conexión clave principal
    • El valor2 para  Azure.IoT.IoTHub.ConsumerGroup  se obtiene de del nombre del grupo de consumidores que se agrega a su hub de IoT cumplimentado en el  apartado anterior
  • Vaya al interfaz de comandos  , situase en el directorio donde descargo el ejemplo  y ejecute los siguintes comandos:
    • set Azure.IoT.IoTHub.ConnectionString=  valor1
    • set Azure.IoT.IoTHub.ConsumerGroup= valor 2
    • npm install
    • npm start​nodejsiothub
  • En este momento  ,simplemente acceda al fichero html y ejecútelos  de modo que como debería estar  corriendo el servidor node,js  se obtendrá  respuesta en un navegador similar a la anterior

 

 

.

 

Fuente :  https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps