DEV Community

Marcela Sabogal Guerrero
Marcela Sabogal Guerrero

Posted on

Proyecto IoT con azure - RaspberryPi IoT simulator + IOT Hub + Stream Analytics + Blob Storage

Monitoreo en Tiempo Real de Temperatura y Humedad con Azure IoT

Este proyecto es una excelente oportunidad para explorar cómo la nube y el Internet de las cosas (IoT) se interconectan de manera práctica, especialmente en aplicaciones relacionadas con el monitoreo en tiempo real.

¿Por qué es interesante?

  1. Introducción al IoT y sus aplicaciones prácticas: Permite aprender cómo los dispositivos IoT (en este caso simulados) se integran con plataformas en la nube, como Azure IoT Hub, para transmitir datos en tiempo real.
  2. Análisis de datos en tiempo real: Con Azure Stream Analytics, se comprende cómo procesar datos en flujo, una habilidad esencial para sistemas que dependen de la inmediatez en la toma de decisiones.
  3. Gestión y almacenamiento de grandes volúmenes de datos: A través de Azure Blob Storage, se obtiene experiencia en el manejo de datos históricos, esenciales para análisis posteriores o auditorías.
  4. Aplicación de servicios en la nube: Ofrece un contexto realista para aprender cómo desplegar, configurar y utilizar servicios en Azure.

Arquitectura del Proyecto

  1. Simulador de Dispositivos IoT:
    • Genera datos dinámicos que replican las condiciones reales de sensores físicos de temperatura y humedad.
  2. Azure IoT Hub:
    • Actúa como un puente entre los dispositivos IoT y la nube, recibiendo y gestionando los datos enviados.
  3. Azure Stream Analytics:
    • Analiza los datos en tiempo real para identificar tendencias, anomalías o condiciones específicas.
  4. Azure Blob Storage:
    • Guarda los datos procesados, facilitando su uso para análisis más detallados o visualización futura.

Contenido del Proyecto

  1. Simulador de Dispositivos IoT:
    • Genera datos aleatorios de temperatura y humedad de forma continua.
  2. Configuración de Azure IoT Hub:
    • Configura el IoT Hub para recibir datos de los dispositivos simulados.
  3. Implementación de Azure Stream Analytics:
    • Procesa los datos en tiempo real a medida que llegan desde el IoT Hub.
  4. Almacenamiento de Datos:
    • Utiliza Azure Blob Storage para guardar los datos.

Potencial del Proyecto

Este sistema tiene aplicaciones prácticas en múltiples industrias, como la agricultura de precisión, la logística y la manufactura inteligente. También es un excelente punto de partida para quienes deseen construir soluciones avanzadas que incluyan:

  • Visualización de datos.
  • Alertas en tiempo real.
  • Implementación de aprendizaje automático para predecir comportamientos basados en los datos históricos almacenados.

Image dIAGRAMA


Paso 1: Simulador de Dispositivos IoT

La generación de los datos para el proyecto puede realizarse de dos maneras principales:

1. Mediante el Simulador Online de Raspberry Pi

Puedes utilizar el simulador proporcionado por Microsoft para generar datos de sensores de manera sencilla. Sigue la guía disponible en Microsoft Learn para configurar y usar este simulador.

Image simulador

2. Generación de Datos Aleatorios con un Script en Python

Esta opción utiliza un archivo Python (simulador.py) para generar y enviar datos aleatorios de temperatura y humedad al servicio de Azure IoT Hub.

Código del Simulador

import random
import time
import json
from azure.iot.device import IoTHubDeviceClient, Message  # type: ignore

# Reemplaza con tu cadena de conexión del IoT Hub
connection_string = "HostName=IoT-proyect.azure-devices.net;DeviceId=SensoreTempyHum;......."
client = IoTHubDeviceClient.create_from_connection_string(connection_string)

def generate_random_data():
    """Genera datos aleatorios de temperatura y humedad."""
    temperature = random.uniform(15.0, 30.0)  # Temperatura en °C
    humidity = random.uniform(30.0, 70.0)      # Humedad en %
    return {
        "deviceId": "SensoreTempyHum",
        "temperature": round(temperature, 2),
        "humidity": round(humidity, 2)
    }

try:
    while True:
        data = generate_random_data()
        message = Message(json.dumps(data))  # Formatea el mensaje como JSON

        # Intentar enviar el mensaje
        try:
            client.send_message(message)
            print(f"Sent message: {json.dumps(data, indent=2)}")  # Salida formateada
        except Exception as e:
            print(f"Error sending message: {e}")

        time.sleep(5)  # Envía cada 5 segundos
except KeyboardInterrupt:
    print("Simulación detenida.")
finally:
    client.shutdown()
Enter fullscreen mode Exit fullscreen mode

Paso 2: Simulador de Dispositivos IoT

Configuración de Azure IoT Hub para Datos Simulados

1. Crear una Cuenta de Azure

Si no tienes una cuenta, regístrate en Azure.

2. Crear un IoT Hub

  1. Accede al portal de Azure: Ve a portal.azure.com.
  2. Crear un nuevo recurso:
    • Haz clic en "Crear un recurso".
    • Busca "Centro IoT" y selecciónalo.
    • Haz clic en "Crear".

Image description

  1. Configura el IoT Hub:

    • Suscripción: Selecciona tu suscripción de Azure.
    • Grupo de recursos: Crea uno nuevo o selecciona uno existente.
    • Nombre: Proporciona un nombre único para tu IoT Hub.
    • Ubicación: Selecciona la región más cercana a ti.
    • Nivel de precios: Escoge un nivel de precios adecuado (por ejemplo, el nivel gratuito para pruebas).
  2. Configura opciones adicionales: Puedes dejar las opciones predeterminadas o configurarlas según tus necesidades.

  3. Revisar y crear: Revisa la configuración y haz clic en "Crear".

3. Registrar un Dispositivo

  1. Accede al IoT Hub: Ve al IoT Hub que acabas de crear.
  2. Dispositivos: En el menú de la izquierda, selecciona "IoT devices".
  3. Agregar un nuevo dispositivo:
    • Haz clic en "+ New" o "Agregar".
    • Proporciona un ID de dispositivo único.
    • (Opcional) Configura otras opciones como el nombre, el grupo de seguridad, etc.
    • Haz clic en "Guardar".

Image description

4. Obtener la Cadena de Conexión del Dispositivo

  1. Selecciona el dispositivo que acabas de crear en la lista de dispositivos.
  2. Conexión: Copia la "Connection String" (cadena de conexión) que necesitarás para simular el envío de datos.

5. Enlazar el Dispositivo Simulador Creado en el Paso 1

Debes enlazar la cadena de conexión ("Connection String") en el script de Python, en el simulador de Raspberry Pi o en tu dispositivo físico creado.

Asegúrate de seguir estos pasos:

  1. Obtener la Cadena de Conexión:

    • Accede al IoT Hub en el portal de Azure.
    • Selecciona el dispositivo que registraste en el paso 1.
    • Copia la "Connection String" desde la sección de propiedades del dispositivo.
  2. Actualizar el Código para Enlazar el Dispositivo:

    • Si estás utilizando el script de Python, abre el archivo simulador.py.
    • Busca la línea que define connection_string y reemplázala con la cadena de conexión que copiaste.
   connection_string = "Tu_cadena_de_conexión_aquí"
> **Nota:** Si usas un simulador diferente o un entorno de desarrollo integrado (IDE) para un dispositivo físico, asegúrate de que el código también incluya esta cadena de conexión y las librerías requeridas.
Enter fullscreen mode Exit fullscreen mode

Image description


Paso 3: Implementación de Azure Stream Analytics:

  • Configura un proceso en Azure Stream Analytics que permite procesar los datos en tiempo real a medida que llegan desde el IoT Hub.

### Pasos para la Implementación

  1. Crear un Trabajo de Stream Analytics:

    • Accede al portal de Azure.
    • Busca "Stream Analytics Job" en el menú de servicios.
    • Haz clic en "Crear" y completa la información básica del trabajo:
      • Nombre del trabajo
      • Suscripción
      • Grupo de recursos
      • Ubicación
  2. Definir las Entradas:

    • Una vez creado el trabajo, ve a la sección "Entradas".
    • Haz clic en "Agregar entrada" y selecciona "IoT Hub" como fuente.
    • Configura los detalles de la entrada, como:
      • Nombre de la entrada
      • Conexión al IoT Hub
      • Elige el tipo de datos (JSON, por ejemplo).
  3. Definir las Salidas:

    • Dirígete a la sección "Salidas".
    • Haz clic en "Agregar salida" y selecciona el destino (puede ser Azure Blob Storage, Power BI, etc.).
    • Configura los detalles de la salida, como:
      • Nombre de la salida
      • Conexión a la cuenta de almacenamiento o Power BI.
  4. Crear la Consulta:

    • Ve a la sección "Consulta" del trabajo.
    • Escribe la consulta que procesará los datos en tiempo real. Por ejemplo, podrías querer calcular promedios de temperatura y humedad.
    • Un ejemplo de consulta podría ser:

      SELECT 
          AVG(temperature) AS AverageTemperature, 
          AVG(humidity) AS AverageHumidity 
      INTO 
          [NombreDeLaSalida] 
      FROM 
          [NombreDeLaEntrada] 
      GROUP BY 
          TumblingWindow(second, 10)
      
  5. Iniciar el Trabajo:

    • Una vez configuradas las entradas, salidas y consultas, ve a la sección "Resumen".
    • Haz clic en "Iniciar" para comenzar a procesar los datos en tiempo real.
  6. Monitoreo y Ajustes:

    • Utiliza la sección de "Monitoreo" para verificar el estado del trabajo y realizar ajustes si es necesario.
    • Asegúrate de que los datos se estén procesando correctamente y de que las salidas estén recibiendo los datos.

Resultados Esperados

  • Los datos procesados aparecerán en la salida seleccionada (como Power BI o Blob Storage).
  • Podrás visualizar los resultados en tiempo real, facilitando la toma de decisiones basada en datos.

Paso 4: Guía para Crear un Azure Blob Storage

Paso 1: Crear una Cuenta de Almacenamiento

  1. Iniciar Sesión en Azure Portal:

    • Abre tu navegador y ve al Portal de Azure.
    • Inicia sesión con tus credenciales de Azure.
  2. Crear un Recurso:

    • En el panel de navegación izquierdo, selecciona "Crear un recurso".
    • Busca "Almacenamiento" y selecciona "Cuenta de almacenamiento".
    • Haz clic en "Crear".

Paso 2: Configurar la Cuenta de Almacenamiento

  1. Suscripción: Elige la suscripción en la que deseas crear la cuenta.
  2. Grupo de Recursos:
    • Selecciona un grupo existente o crea uno nuevo haciendo clic en "Crear nuevo".
  3. Nombre de la Cuenta: Introduce un nombre único para la cuenta de almacenamiento. Debe ser entre 3 y 24 caracteres y contener solo letras y números.
  4. Región: Selecciona la región donde se almacenarán tus datos. Escoge una ubicación cercana para mejorar el rendimiento.
  5. Tipo de Cuenta:
    • Para un uso general, selecciona "StorageV2" (Recomendado).
  6. Redundancia: Elige el nivel de redundancia deseado, como "LRS" (Locally Redundant Storage) para alta disponibilidad.

Paso 3: Configuraciones Adicionales (Opcional)

  1. Opciones de Rendimiento: Elige entre "Estándar" o "Premium" según tus necesidades.
  2. Características Avanzadas: Configura opciones como la habilitación de Azure Files o Azure Data Lake Storage según sea necesario.

Paso 4: Revisión y Creación

  1. Revisa la configuración en la pestaña de "Revisar + crear".
  2. Si todo está correcto, haz clic en "Crear".
  3. Espera a que se complete la implementación.

Paso 5: Crear un Contenedor en Blob Storage

  1. Una vez que la cuenta de almacenamiento esté creada, haz clic en "Ir a recurso".
  2. En el menú de la izquierda, selecciona "Contenedores".
  3. Haz clic en "Agregar contenedor".
  4. Introduce un nombre para el contenedor (debe ser en minúsculas y puede incluir números).
  5. Selecciona el nivel de acceso público (por ejemplo, "Ninguno", "Contenido público", o "Lista pública").
  6. Haz clic en "Crear".

Paso 6: Iniciar el proceso en Stream Analytics

Top comments (0)