<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcela Sabogal Guerrero</title>
    <description>The latest articles on DEV Community by Marcela Sabogal Guerrero (@marcelasabogue).</description>
    <link>https://dev.to/marcelasabogue</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2461815%2F797720e9-6f09-4401-92b4-f26849fad039.jpeg</url>
      <title>DEV Community: Marcela Sabogal Guerrero</title>
      <link>https://dev.to/marcelasabogue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcelasabogue"/>
    <language>en</language>
    <item>
      <title>Proyecto IoT con azure - RaspberryPi IoT simulator + IOT Hub + Stream Analytics + Blob Storage</title>
      <dc:creator>Marcela Sabogal Guerrero</dc:creator>
      <pubDate>Mon, 25 Nov 2024 04:31:16 +0000</pubDate>
      <link>https://dev.to/marcelasabogue/azure-raspberrypi-iot-simulator-iot-hub-stream-analytics-blob-storage-52h2</link>
      <guid>https://dev.to/marcelasabogue/azure-raspberrypi-iot-simulator-iot-hub-stream-analytics-blob-storage-52h2</guid>
      <description>&lt;h2&gt;
  
  
  Monitoreo en Tiempo Real de Temperatura y Humedad con Azure IoT
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  ¿Por qué es interesante?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Introducción al IoT y sus aplicaciones prácticas&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Análisis de datos en tiempo real&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestión y almacenamiento de grandes volúmenes de datos&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aplicación de servicios en la nube&lt;/strong&gt;: Ofrece un contexto realista para aprender cómo desplegar, configurar y utilizar servicios en Azure.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Arquitectura del Proyecto
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simulador de Dispositivos IoT&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Genera datos dinámicos que replican las condiciones reales de sensores físicos de temperatura y humedad.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure IoT Hub&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Actúa como un puente entre los dispositivos IoT y la nube, recibiendo y gestionando los datos enviados.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Stream Analytics&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Analiza los datos en tiempo real para identificar tendencias, anomalías o condiciones específicas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Blob Storage&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Guarda los datos procesados, facilitando su uso para análisis más detallados o visualización futura.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contenido del Proyecto
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simulador de Dispositivos IoT&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Genera datos aleatorios de temperatura y humedad de forma continua.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuración de Azure IoT Hub&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Configura el IoT Hub para recibir datos de los dispositivos simulados.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementación de Azure Stream Analytics&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Procesa los datos en tiempo real a medida que llegan desde el IoT Hub.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Almacenamiento de Datos&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Utiliza Azure Blob Storage para guardar los datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Potencial del Proyecto
&lt;/h2&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visualización de datos.&lt;/li&gt;
&lt;li&gt;Alertas en tiempo real.&lt;/li&gt;
&lt;li&gt;Implementación de aprendizaje automático para predecir comportamientos basados en los datos históricos almacenados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhkocyuc0wokc2koromu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhkocyuc0wokc2koromu.png" alt="Image dIAGRAMA" width="642" height="420"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Paso 1: Simulador de Dispositivos IoT&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;La generación de los datos para el proyecto puede realizarse de dos maneras principales:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;strong&gt;Mediante el Simulador Online de Raspberry Pi&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Puedes utilizar el simulador proporcionado por Microsoft para generar datos de sensores de manera sencilla. Sigue la guía disponible en &lt;a href="https://learn.microsoft.com/es-es/azure/iot-hub/raspberry-pi-get-started" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt; para configurar y usar este simulador.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7r2kpzgjrb3038ojprg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7r2kpzgjrb3038ojprg.png" alt="Image simulador" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;strong&gt;Generación de Datos Aleatorios con un Script en Python&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Esta opción utiliza un archivo Python (&lt;code&gt;simulador.py&lt;/code&gt;) para generar y enviar datos aleatorios de temperatura y humedad al servicio de Azure IoT Hub.&lt;/p&gt;

&lt;h3&gt;
  
  
  Código del Simulador
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.iot.device&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;IoTHubDeviceClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;  &lt;span class="c1"&gt;# type: ignore
&lt;/span&gt;
&lt;span class="c1"&gt;# Reemplaza con tu cadena de conexión del IoT Hub
&lt;/span&gt;&lt;span class="n"&gt;connection_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HostName=IoT-proyect.azure-devices.net;DeviceId=SensoreTempyHum;.......&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IoTHubDeviceClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_from_connection_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_random_data&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Genera datos aleatorios de temperatura y humedad.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uniform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;15.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Temperatura en °C
&lt;/span&gt;    &lt;span class="n"&gt;humidity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uniform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;30.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;70.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="c1"&gt;# Humedad en %
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deviceId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SensoreTempyHum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;humidity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;humidity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generate_random_data&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# Formatea el mensaje como JSON
&lt;/span&gt;
        &lt;span class="c1"&gt;# Intentar enviar el mensaje
&lt;/span&gt;        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sent message: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Salida formateada
&lt;/span&gt;        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error sending message: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Envía cada 5 segundos
&lt;/span&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;KeyboardInterrupt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Simulación detenida.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;Paso 2: Simulador de Dispositivos IoT&lt;/strong&gt;
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Configuración de Azure IoT Hub para Datos Simulados
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Crear una Cuenta de Azure
&lt;/h2&gt;

&lt;p&gt;Si no tienes una cuenta, regístrate en &lt;a href="https://azure.microsoft.com/" rel="noopener noreferrer"&gt;Azure&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Crear un IoT Hub
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Accede al portal de Azure&lt;/strong&gt;: Ve a &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;portal.azure.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crear un nuevo recurso&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Haz clic en "Crear un recurso".&lt;/li&gt;
&lt;li&gt;Busca "Centro IoT" y selecciónalo.&lt;/li&gt;
&lt;li&gt;Haz clic en "Crear".&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q8du60rufnc4v3w293w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q8du60rufnc4v3w293w.png" alt="Image description" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configura el IoT Hub&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Suscripción&lt;/strong&gt;: Selecciona tu suscripción de Azure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grupo de recursos&lt;/strong&gt;: Crea uno nuevo o selecciona uno existente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nombre&lt;/strong&gt;: Proporciona un nombre único para tu IoT Hub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ubicación&lt;/strong&gt;: Selecciona la región más cercana a ti.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nivel de precios&lt;/strong&gt;: Escoge un nivel de precios adecuado (por ejemplo, el nivel gratuito para pruebas).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configura opciones adicionales&lt;/strong&gt;: Puedes dejar las opciones predeterminadas o configurarlas según tus necesidades.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Revisar y crear&lt;/strong&gt;: Revisa la configuración y haz clic en "Crear".&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Registrar un Dispositivo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Accede al IoT Hub&lt;/strong&gt;: Ve al IoT Hub que acabas de crear.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dispositivos&lt;/strong&gt;: En el menú de la izquierda, selecciona "IoT devices".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agregar un nuevo dispositivo&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Haz clic en "+ New" o "Agregar".&lt;/li&gt;
&lt;li&gt;Proporciona un ID de dispositivo único.&lt;/li&gt;
&lt;li&gt;(Opcional) Configura otras opciones como el nombre, el grupo de seguridad, etc.&lt;/li&gt;
&lt;li&gt;Haz clic en "Guardar".&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm15tycuv3n6ue8v0m9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm15tycuv3n6ue8v0m9s.png" alt="Image description" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Obtener la Cadena de Conexión del Dispositivo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Selecciona el dispositivo&lt;/strong&gt; que acabas de crear en la lista de dispositivos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conexión&lt;/strong&gt;: Copia la "Connection String" (cadena de conexión) que necesitarás para simular el envío de datos.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  5. Enlazar el Dispositivo Simulador Creado en el Paso 1
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Asegúrate de seguir estos pasos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Obtener la Cadena de Conexión&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accede al IoT Hub en el portal de Azure.&lt;/li&gt;
&lt;li&gt;Selecciona el dispositivo que registraste en el paso 1.&lt;/li&gt;
&lt;li&gt;Copia la "Connection String" desde la sección de propiedades del dispositivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar el Código para Enlazar el Dispositivo&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Si estás utilizando el script de Python, abre el archivo &lt;code&gt;simulador.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Busca la línea que define &lt;code&gt;connection_string&lt;/code&gt; y reemplázala con la cadena de conexión que copiaste.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="n"&gt;connection_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tu_cadena_de_conexión_aquí&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Nota&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;Si&lt;/span&gt; &lt;span class="n"&gt;usas&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;simulador&lt;/span&gt; &lt;span class="n"&gt;diferente&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;entorno&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;desarrollo&lt;/span&gt; &lt;span class="nf"&gt;integrado &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IDE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;dispositivo&lt;/span&gt; &lt;span class="n"&gt;físico&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;asegúrate&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;código&lt;/span&gt; &lt;span class="n"&gt;también&lt;/span&gt; &lt;span class="n"&gt;incluya&lt;/span&gt; &lt;span class="n"&gt;esta&lt;/span&gt; &lt;span class="n"&gt;cadena&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;conexión&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;las&lt;/span&gt; &lt;span class="n"&gt;librerías&lt;/span&gt; &lt;span class="n"&gt;requeridas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h729xqrlag6uo3ypq96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h729xqrlag6uo3ypq96.png" alt="Image description" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Paso 3: Implementación de Azure Stream Analytics&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configura un proceso en Azure Stream Analytics que permite procesar los datos en tiempo real a medida que llegan desde el IoT Hub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;### Pasos para la Implementación&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crear un Trabajo de Stream Analytics&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accede al portal de Azure.&lt;/li&gt;
&lt;li&gt;Busca "Stream Analytics Job" en el menú de servicios.&lt;/li&gt;
&lt;li&gt;Haz clic en "Crear" y completa la información básica del trabajo:

&lt;ul&gt;
&lt;li&gt;Nombre del trabajo&lt;/li&gt;
&lt;li&gt;Suscripción&lt;/li&gt;
&lt;li&gt;Grupo de recursos&lt;/li&gt;
&lt;li&gt;Ubicación&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Definir las Entradas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Una vez creado el trabajo, ve a la sección "Entradas".&lt;/li&gt;
&lt;li&gt;Haz clic en "Agregar entrada" y selecciona "IoT Hub" como fuente.&lt;/li&gt;
&lt;li&gt;Configura los detalles de la entrada, como:

&lt;ul&gt;
&lt;li&gt;Nombre de la entrada&lt;/li&gt;
&lt;li&gt;Conexión al IoT Hub&lt;/li&gt;
&lt;li&gt;Elige el tipo de datos (JSON, por ejemplo).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Definir las Salidas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dirígete a la sección "Salidas".&lt;/li&gt;
&lt;li&gt;Haz clic en "Agregar salida" y selecciona el destino (puede ser Azure Blob Storage, Power BI, etc.).&lt;/li&gt;
&lt;li&gt;Configura los detalles de la salida, como:

&lt;ul&gt;
&lt;li&gt;Nombre de la salida&lt;/li&gt;
&lt;li&gt;Conexión a la cuenta de almacenamiento o Power BI.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crear la Consulta&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ve a la sección "Consulta" del trabajo.&lt;/li&gt;
&lt;li&gt;Escribe la consulta que procesará los datos en tiempo real. Por ejemplo, podrías querer calcular promedios de temperatura y humedad.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Un ejemplo de consulta podría ser:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; 
    &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;AverageTemperature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;humidity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;AverageHumidity&lt;/span&gt; 
&lt;span class="k"&gt;INTO&lt;/span&gt; 
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;NombreDeLaSalida&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
&lt;span class="k"&gt;FROM&lt;/span&gt; 
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;NombreDeLaEntrada&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; 
    &lt;span class="n"&gt;TumblingWindow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;second&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Iniciar el Trabajo&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Una vez configuradas las entradas, salidas y consultas, ve a la sección "Resumen".&lt;/li&gt;
&lt;li&gt;Haz clic en "Iniciar" para comenzar a procesar los datos en tiempo real.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoreo y Ajustes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utiliza la sección de "Monitoreo" para verificar el estado del trabajo y realizar ajustes si es necesario.&lt;/li&gt;
&lt;li&gt;Asegúrate de que los datos se estén procesando correctamente y de que las salidas estén recibiendo los datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Resultados Esperados
&lt;/h3&gt;

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




&lt;h1&gt;
  
  
  Paso 4: Guía para Crear un Azure Blob Storage
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Paso 1: Crear una Cuenta de Almacenamiento
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Iniciar Sesión en Azure Portal&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abre tu navegador y ve al &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Portal de Azure&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Inicia sesión con tus credenciales de Azure.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crear un Recurso&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;En el panel de navegación izquierdo, selecciona &lt;strong&gt;"Crear un recurso"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Busca &lt;strong&gt;"Almacenamiento"&lt;/strong&gt; y selecciona &lt;strong&gt;"Cuenta de almacenamiento"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Haz clic en &lt;strong&gt;"Crear"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Paso 2: Configurar la Cuenta de Almacenamiento
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Suscripción&lt;/strong&gt;: Elige la suscripción en la que deseas crear la cuenta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grupo de Recursos&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Selecciona un grupo existente o crea uno nuevo haciendo clic en &lt;strong&gt;"Crear nuevo"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nombre de la Cuenta&lt;/strong&gt;: Introduce un nombre único para la cuenta de almacenamiento. Debe ser entre 3 y 24 caracteres y contener solo letras y números.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Región&lt;/strong&gt;: Selecciona la región donde se almacenarán tus datos. Escoge una ubicación cercana para mejorar el rendimiento.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tipo de Cuenta&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Para un uso general, selecciona &lt;strong&gt;"StorageV2"&lt;/strong&gt; (Recomendado).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redundancia&lt;/strong&gt;: Elige el nivel de redundancia deseado, como &lt;strong&gt;"LRS"&lt;/strong&gt; (Locally Redundant Storage) para alta disponibilidad.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Paso 3: Configuraciones Adicionales (Opcional)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Opciones de Rendimiento&lt;/strong&gt;: Elige entre "Estándar" o "Premium" según tus necesidades.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características Avanzadas&lt;/strong&gt;: Configura opciones como la habilitación de Azure Files o Azure Data Lake Storage según sea necesario.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Paso 4: Revisión y Creación
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Revisa la configuración en la pestaña de &lt;strong&gt;"Revisar + crear"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Si todo está correcto, haz clic en &lt;strong&gt;"Crear"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Espera a que se complete la implementación.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Paso 5: Crear un Contenedor en Blob Storage
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Paso 6: Iniciar el proceso en Stream Analytics
&lt;/h2&gt;

</description>
      <category>azure</category>
      <category>iot</category>
      <category>iothub</category>
      <category>data</category>
    </item>
  </channel>
</rss>
