Este artículo surgió de la necesidad de tener una guía paso a paso para los principiantes de Azure sobre la integración de IoT y de la guía de Ranga Vadlamudi.

Objetivos

  • Transmitir datos a Time Series Insights
  • Transmitir datos a cosmos db usando Stream Analytics
  • Código para cosmos db y utilizar Azure Functions

alt text

Introducción

alt text

  1. Conectar a Wifi:
  • Ponga el dispositivo en modo AP haciendo lo siguiente:
  • Mantén presionado el botón B
  • Con el botón B presionado, presione y suelte el botón Restablecer
  • Suelte el botón B
  • Verifiquemos que un SSID y una dirección IP aparezcan en la pantalla del dispositivo. La dirección IP es la que usaremos para conectarnos al dispositivo desde nuestra computadora portátil.

alt text alt text alt textalt text

Creando IoT Hub:

  1. Vaya al Portal de Azure, haga clic en Crear nuevo recurso y escriba Iot Hub,

alt text

  1. Seleccione IoT Hub y haga clic en crear,

alt text

  1. Seleccione Crear concentrador de IoT,

alt text

alt text

Configurar Time Series Insight

Ahora crearemos un servicio de Time Series Insight.

  1. Vaya al Portal de Azure, haga clic en Crear nuevo recurso y escriba Time series insights como se muestra a continuación:

alt text

  1. Seleccionamos Time Series Insights: 


  1. Click en crear: 

alt text

4. Ahora proporcionaremos los parámetros de entorno de la siguiente manera:

    Nombre del entorno: gab2018-cdmx
    Suscripción: su pase / suscripción Azure
    Grupo de recursos: gab2018-cdmx
    Ubicación: Europa occidental
    SKU: S1

alt text

**Nota: En caso de que estemos usando un Pase Azure, revise el costo de $ 150 por mes!

alt text

Luego, compruebe el pin en el tablero y haga clic en crear.

  1. Es importante tener un grupo de consumidores para TSI (Time Series Insights), ir al IoT Hub, hacer clic en Endpoints, seleccionar Events alt text

  2. Ahora crearemos un nuevo grupo de consumidores y luego haremos clic en Guardar:

alt text

  1. Ahora vuelve a Time Series Insights, haz clic en Fuentes de eventos y haz clic en Añadir:

alt text

  1. Proporcionaremos los siguientes parámetros para crear el Origen del evento:
  • Event source name: gab2018cdmx
  • source: IoT Hub
  • Import Option: user IoT Hub from available subscription
  • Subscription ID. VS Enterprise / Azure Pass
  • IoT Hub name: gab2018-cdmx
  • IoT Hub policy name: iothubowner
  • IoT consumer group: gabevents
  • Serialization format: json

Click Crear

alt text alt text

  1. Ahora ve a la descripción general y haz clic en ir al entorno:

alt text

**Nota: Añadiremos políticas de acceso a datos más tarde. No podremos acceder a los datos en el entorno sin políticas de acceso a datos definidas.

Veremos una pantalla como la siguiente:

alt text

Creae Stream analytics Job

  1. Ahora regrese al portal de Azure, crearemos un trabajo de análisis de flujo. Vaya a Crear nuevo recurso, escriba Stream analytics:alt text

  2. Seleccionemos stream analytics job: 

alt text
  1. Proporcione los siguientes parámetros:

  • Job Name: gab2018-cdmx
  • Subscription: VS enterprise / Azure Pass
  • Resource Group: gab2018-cdmx
  • Location: West Europe
  • Hosting environment: cloud

Nota: si ya conectamos el dispositivo a Wifi, podemos probar Cloud; de lo contrario, intentemos usar Edge y conectar el dispositivo a Wifi más adelante.

alt text

Creación de cuenta cosmos db.

Ahora crearemos una cuenta cosmo db.

  1. Seleccione crear nuevo recurso, escriba cosmos db, seleccione Azure Cosmos DB:

alt text

alt text

alt text

  1. Click crear:

Proporcione los siguientes parámetros:
 • ID: gab2018cdmx
 • API: SQL 
 • Subscription: VS Enterprise / Azure Pass
 • Resource group: gab2018cdmx 
 • Location: West Europe

Click Crear

  • Es importante destacar que debemos tratar de desplegar todos los recursos en la misma ubicación para evitar problemas futuros dentro de la disponibilidad del servicio.

alt text

Crear Logic App.

Ahora crearemos una logic ap.

  1. Vaya a Crear nuevo recurso, escriba la logic app

alt text

  1. Select Logic App:

alt text

  1. Click en Logic App, Crear:

alt text

  1. Ahora proporciona los siguientes parámetros:
  • Name. gab2018cdmx
  • Subscription: VS Enterprise
  • Resource Group. Gab2018 cdmx
  • Location: West Europe
  • Log Analytics: Off (for this case we are going to enable them later on)

Click Crear

alt text

  1. Ahora regrese a stream analytics job, desde la entrada de selección de blade:

alt text

  1. La entrada para esto será el IoTHub que creamos en el grupo de recursos

Seleccione Agregar entrada de transmisión, luego seleccione IoT Hub:

alt text

  1. Proporcione los siguientes parámetros:
  • Input alias
  • Select IoT Hub from the subscription
  • Subscription
  • IoT Hub (Azure will automatically provide us the available IoT Hub)
  • Endpoint
  • Shared access policy name
  • Shared access policy key
  • Consumer Group
  • Event serialization format (we could select None, CSV, Json, etc.) Then click save

alt text

  1. Ahora generaremos la Salida.

Este resultado será el Cosmos DB que creamos en el grupo de recursos

8.1 Vaya al blade de stream analytics job y seleccione Salida/Output:

alt text

8.2 Ahora haga clic en Agregar y seleccione Cosmos DB.

alt text

Proporcione los siguientes parámetros:

  • Output alias
  • Select the Option: "Select Cosmos DB from your subscription"
  • Select the subscription
  • Account ID
  • Account key
  • Database
  • Collection name pattern
  • Document ID

alt text

Por favor revise:

Si el recurso elegido y el trabajo de análisis de flujo están ubicados en diferentes regiones, se nos facturará mover datos entre regiones.

8.3 Ahora definiremos una función de trabajo de flujo.

Vaya a la hoja de trabajo de la secuencia y haga clic en Descripción general, luego haga clic en Editar consulta:

alt text

8.4 Copie y pegue la siguiente consulta:

SELECT [deviceId] AS [deviceId], avg(temperature) AS avgtemp INTO CosmosDB FROM mvp-iothub GROUP BY deviceId, TumblingWindow(second, 15);

8.5 Damos click guardar:

alt text

Creae Event Hub para recibir datos de nuestra Azure Function.

Ahora crearemos un Hub de eventos que recibirá datos de la Función Azure.

TIP: Tome nota de las llaves y el nombre.

  1. Vaya a crear Recursos y escriba Event hub:

alt text

  1. Ahora seleccione los centros de eventos y haga clic en crear:

alt text

alt text

  1. Proporcione los siguientes parámetros y haga clic en crear:
  • Name
  • Pricing tier
  • Subscription
  • Resource Group
  • Location
  • Throughput units
  • Enable auto-inflate
  • Specify upper limit to 20

alt text

  1. Una vez aprovisionado, crearemos un nuevo centro de eventos:

alt text

  1. Además, cree una política SAS para este centro de eventos:

alt text

Crear Azure Function.

Ahora crea una función de Azure.

  1. Vaya a crear un nuevo recurso, escriba funciones:

alt text

  1. Seleccione Functions App: alt text

  2. Click crear: alt text

  3. Ahora proporciona los siguientes parámetros:

  • App name
  • Subscription
  • Resource Group
  • OS: Windows
  • Hosting Plan: Consumption Plan
  • Location: West US
  • Storage: Create New
  • Application Insights: ON

alt text

Use Azure Functions en el Portal de Azure.

  1. Vaya al portal de Azure, seleccionaremos la función y haremos clic en Agregar, luego seleccionaremos Azure Cosmos DB Trigger:

alt text

alt text

  1. Ahora haga clic en Nuevo y confirme que esta nueva conexión de cuenta está relacionada con nuestra base de datos Cosmos creada anteriormente.

alt text

alt text

  1. Reemplace con el siguiente código:
#r "D:\home\site\wwwroot\CosmosTriggerCSharp1\bin\Microsoft.Azure.Documents.Client.dll"
#r "D:\home\site\wwwroot\CosmosTriggerCSharp1\bin\Microsoft.Azure.EventHubs.dll"
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using Microsoft.Azure.Documents;
using Microsoft.Azure.EventHubs;
public static void Run(IReadOnlyList<Document> documents, TraceWriter log){
if (documents != null && documents.Count > 0) {
string connectionString = ConfigurationManager.ConnectionStrings["EventHubConnection"].ConnectionString;
log.Verbose(connectionString);
var connectionStringBuilder = new EventHubsConnectionStringBuilder(connectionString) {
EntityPath = "eventhub"
};
var client = Microsoft.Azure.EventHubs.EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
foreach (var doc in documents) {
string json = string.Format("{{\"iotid\":\"{0}\",\"temp\":{1}}}", doc.GetPropertyValue<string>("iotid"),
doc.GetPropertyValue<string>("temp"));
EventData data = new Microsoft.Azure.EventHubs.EventData(Encoding.UTF8.GetBytes(json));
client.SendAsync(data);
}
}
}
  1. Ahora haga clic en la función, luego seleccione las características de la plataforma, luego haga clic en Kudu Console:

alt text

  1. Seremos redirigidos a otra pestaña en nuestro navegador para administrar nuestra función Azure:

https://gab2018-cdmx.scm.azurewebsites.net/

  1. Haga clic en la consola de depuración, cmd:

alt text

  1. Navega al directorio de funciones haciendo doble clic en wwwroot y luego crea un directorio bin usando el signo "+".

alt text

alt text

  1. Vaya al directorio Bin haciendo doble clic en él y luego agregue la siguiente DLL. Obtenga estos DLL de nuget

alt text

alt text

Repita esto para cada uno de los siguientes:

Microsoft.Azure.DocumentDB Version="1.21.0" https://www.nuget.org/packages/Microsoft.Azure.DocumentDB/
Microsoft.Azure.EventHubs Version="1.1.0" https://www.nuget.org/packages/Microsoft.Azure.EventHubs/https://www.nuget.org/packages/Microsoft.Azure.Amqp/

https://www.nuget.org/packages/Newtonsoft.Json

*Nota: Podemos usar 7zip y extraer el nupkg para obtener rápidamente los archivos DLLs.

  1. Una vez que hayamos descargado estos paquetes, regresemos a AppSettings. Haga clic en AppSettings.

  2. En otra pestaña abra Event Hub y obtenga la cadena de conexión: alt text

  3. Copie la conexión-clave primaria:

alt text

  1. Ahora regrese a nuestra función de Azure, seleccione Configuración de la aplicación y haga clic en agregar cadena de conexión:

alt text

  1. A continuación, proporcione un Nombre de conexión, luego pegue la cadena de conexión y seleccione Tipo de conexión como personalizado.

alt text

  1. Now go up and click Save:

alt text

  1. Ahora regrese a nuestra aplicación lógica. Seleccione "Cuando los eventos están disponibles en EventHub"

alt text

  1. A continuación, proporcione un nombre y seleccione el Centro de eventos. alt text

  2. Click en crear.

  3.  alt text

  4. Ahora proporcione el intervalo y la frecuencia para verificar si hay eventos que están siendo recibidos:

alt text

  1. Ahora haga clic en un nuevo paso y luego en agregar acción alt text

  2. Busque "Enviar un correo electrónico"

alt text

  1. Tendremos que autorizar nuestra cuenta, Office 365 para este caso, y luego configurar los detalles para el correo electrónico.:

alt text