# Sesión 4: La red Helium
## Introducción
La red Helium es un proyecto de infraestructura inalámbrica que se distingue por su descentralización y su base en la tecnología blockchain. Fue diseñada para permitir a individuos y organizaciones desplegar y operar sus propias redes inalámbricas, con un enfoque particular en la conectividad para dispositivos del Internet de las Cosas (IoT).
La red Helium utiliza la blockchain de Solana como su infraestructura subyacente. Solana es una blockchain de alto rendimiento conocida por su escalabilidad, baja latencia y seguridad robusta. Estas características hacen que Solana sea una elección ideal para soportar la creciente cantidad de participantes y transacciones en la red Helium.
El token principal que alimenta la red Helium es el HNT, que se utiliza para incentivar a los participantes de la red y facilitar las transacciones. Los participantes de la red, como los propietarios de puntos de acceso, pueden ganar tokens HNT al proporcionar cobertura de red y validar las transmisiones de los dispositivos IoT.
Además del token HNT, la red Helium también utiliza tokens específicos para sus subredes LoRaWAN y 5G, denominados tokens IOT y MOBILE respectivamente. Estos tokens facilitan la conectividad y la transmisión de datos en sus respectivas redes.
La red Helium emplea un algoritmo de consenso único llamado Proof-of-Coverage (PoC). Este algoritmo recompensa a los participantes por verificar la cobertura de la red inalámbrica. A diferencia de otros algoritmos de consenso que dependen de la capacidad de procesamiento o la cantidad de tokens poseídos, el PoC se basa en la validación de la cobertura de la red física.
## Historia de la red Helium
La red Helium tiene una historia rica y fascinante que ha contribuido a su posición actual como una infraestructura inalámbrica descentralizada líder para el Internet de las Cosas (IoT).
- **Fundación y visión temprana**: La red Helium fue fundada en 2013 por Amir Haleem, Shawn Fanning y Sean Carey. Los fundadores tenían la visión de crear una infraestructura inalámbrica descentralizada que pudiera soportar la creciente industria del IoT. Su objetivo era reducir las barreras de entrada para la conectividad del IoT creando una red impulsada por las personas y motivada por incentivos económicos.
- **Lanzamiento del Helium Hotspot**: En 2019, Helium lanzó su producto estrella, el Helium Hotspot. Este dispositivo permitió a los usuarios proporcionar cobertura inalámbrica para dispositivos IoT a través de un nuevo protocolo llamado LongFi, que combinaba las capacidades de largo alcance de LoRaWAN con la blockchain de Helium. Los primeros adoptantes comenzaron a desplegar Hotspots para ganar tokens HNT como recompensa por proporcionar cobertura de red.
- **Expansión y adopción**: A medida que se desplegaban más Hotspots en todo el mundo, la red Helium continuó creciendo, atrayendo el interés de desarrolladores, empresas y usuarios individuales. La red Helium expandió su cobertura a varios países, habilitando nuevos casos de uso y consolidando aún más su posición como proveedor de infraestructura inalámbrica descentralizada.
- **Transición a la blockchain de Solana**: Para mejorar la escalabilidad, la seguridad y la descentralización, la red Helium migró a la blockchain de Solana. Esta transición permitió a Helium aprovechar las capacidades de alto rendimiento de Solana, que eran cruciales para soportar el creciente número de participantes en la red y las transacciones.
- **Introducción de subredes y nuevos tokens**: A medida que la red Helium maduraba, diversificó sus ofertas introduciendo subredes para diferentes tecnologías inalámbricas, como LoRaWAN y 5G. Estas subredes empleaban sus propios tokens, IOT y MOBILE, y utilizaban el algoritmo de consenso único Proof-of-Coverage para recompensar a los participantes por la cobertura de la red.
- **Presente y futuro**: Hoy en día, la red Helium es una infraestructura inalámbrica descentralizada en rápido crecimiento con una presencia global. Continúa atrayendo a nuevos usuarios, desarrolladores y organizaciones, allanando el camino para aplicaciones y servicios innovadores. A medida que la red se expande, tiene como objetivo revolucionar el panorama de las comunicaciones inalámbricas y democratizar aún más el acceso a la conectividad.
## Componentes de la red
La red Helium consta de varios componentes clave que trabajan juntos para proporcionar una infraestructura inalámbrica descentralizada y segura. Estos componentes incluyen:
- **Blockchain de Solana**: Esta es la infraestructura blockchain subyacente que proporciona seguridad, escalabilidad y descentralización a la red Helium.
- **Token HNT**: Este es el token nativo de la red Helium. Se utiliza para incentivar a los participantes de la red y facilitar las transacciones dentro de la red.
- **Token IOT**: Este es un token específico para la red LoRaWAN. Facilita la conectividad de red de bajo consumo y amplio alcance para los dispositivos del Internet de las Cosas (IoT).
- **Token MOBILE**: Este es un token específico para la red 5G. Facilita la conectividad móvil de alta velocidad y la transmisión de datos.
Además de estos componentes, la red Helium también incluye varios participantes clave, como:
- **Propietarios de Hotspots**: Los individuos u organizaciones que despliegan y mantienen dispositivos inalámbricos compatibles con Helium (Hotspots) para proporcionar cobertura de red.
- **Propietarios de dispositivos IoT**: Usuarios, organizaciones y empresas que utilizan dispositivos IoT que aprovechan la red Helium para la conectividad.
- **Usuarios de dispositivos móviles**: Son usuarios de dispositivos móviles que acceden a la red 5G a través de la infraestructura de la red Helium.
- **Desarrolladores**: Son individuos u organizaciones que construyen aplicaciones y servicios utilizando la infraestructura de la red Helium.
## Relevancia de Helium: Presente y futuro en IoT
La red Helium tiene una relevancia significativa para los proyectos del Internet de las Cosas (IoT) debido a su diseño único y a su modelo de incentivos.
- **Descentralización y Propiedad de la Red**: A diferencia de las redes tradicionales que son propiedad y están operadas por un número limitado de proveedores de telecomunicaciones, la red Helium es descentralizada y está impulsada por individuos y organizaciones que despliegan y mantienen sus propios Hotspots. Esto puede facilitar la rápida expansión de la cobertura de la red y reducir los costos de conectividad para los dispositivos IoT.
- **Protocolo LongFi**: La red Helium utiliza el protocolo LongFi, que combina las capacidades de largo alcance de LoRaWAN con la blockchain de Helium. Esto permite a los dispositivos IoT conectarse a la red a través de Hotspots Helium, lo que puede ser más eficiente y rentable que utilizar las redes celulares tradicionales.
- **Incentivos Económicos**: Los participantes en la red Helium pueden ganar tokens HNT por proporcionar cobertura de red y validar las transmisiones de los dispositivos IoT. Esto incentiva a los participantes a desplegar y mantener Hotspots, lo que puede resultar en una cobertura de red más amplia y confiable para los dispositivos IoT.
- **Adopción y Crecimiento**: Desde su lanzamiento en 2019, la red Helium ha experimentado un rápido crecimiento y adopción. Por ello, existe un fuerte interés en la red y sugiere que puede desempeñar un papel cada vez más importante en la infraestructura de IoT en el futuro.
- **5G y Más Allá**: Recientemente, Helium ha anunciado su expansión hacia la conectividad 5G, lo que podría abrir nuevas oportunidades para los proyectos de IoT que requieren velocidades de transmisión de datos más altas.
# Uso práctico: Consola de Helium
Aqui ponemos una introduccion al uso de la consola de helium
## Usuarios y dispositivos
En la consola de Helium, los usuarios pueden registrar y gestionar dispositivos. Cada usuario se registra en la consola con su dirección de correo electrónico y puede formar parte de cualquier número de organizaciones. El primer usuario que registra una nueva organización se le asigna el rol de Administrador.
### Roles de usuario
Los roles de usuario definen los permisos y privilegios de los usuarios en la consola de Helium. Los roles de usuario son los siguientes:
- **Administrador**: Este es el rol más alto y se le otorga al primer usuario que registra una nueva organización. Los administradores pueden gestionar dispositivos, flujos, etiquetas, créditos de datos, usuarios y claves API.
- **Manager**: Los managers pueden gestionar dispositivos, flujos y etiquetas.
- **Read-Only**: Los usuarios de solo lectura pueden ver los dispositivos.
Los administradores pueden gestionar los usuarios de sus organizaciones. Para añadir un nuevo usuario, una vez iniciada la sesión, se puede navegar a la página de Usuarios y hacer clic en + Añadir usuario en la parte superior derecha. Se presentará un pop-up que pide que se proporcione el correo electrónico del nuevo usuario y que se seleccione su nivel de acceso deseado. Una vez hecho esto, se puede hacer clic en Enviar y el nuevo usuario será invitado a unirse a la organización por correo electrónico.
### Organizaciones
Una organización se crea cuando se registra una cuenta por primera vez. Todas las organizaciones de las que se es miembro se pueden ver y gestionar desde aquí. Desde esta pantalla se puede cambiar entre organizaciones, eliminar organizaciones (con los permisos apropiados), ver los saldos de DC y hacer que todos los dispositivos de una organización sean activos o inactivos (con los permisos apropiados).
Los usuarios pueden añadir organizaciones adicionales navegando a la página del Dashboard usando la navegación del lado izquierdo, y luego haciendo clic en + Añadir organización en la parte superior derecha. Para cambiar a otra organización, se puede hacer clic en el botón Cambiar en la lista de organizaciones en la página del Dashboard.
### Añadir un dispositivo
Para añadir un dispositivo, los usuarios deben ir a la sección de Dispositivos y hacer clic en el icono + Añadir dispositivo. Cada dispositivo tiene un identificador único (DevEUI) que se utiliza para su identificación en la red. Los dispositivos pueden ser añadidos manualmente o importados en lote a través de un archivo CSV.
#### Campos a rellenar
Al añadir un dispositivo, se deben rellenar los siguientes campos:
- **Nombre del dispositivo**: Este es un nombre que el usuario asigna al dispositivo para su identificación en la consola. Los nombres de los dispositivos no tienen que ser únicos, ya que cada dispositivo tendrá un identificador único generado por la consola.
- **DevEUI**: Este es el identificador único del dispositivo, también conocido como el identificador del fabricante del dispositivo. Es un identificador de 64 bits que se utiliza para identificar el dispositivo en la red. El DevEUI es autogenerado por la consola de Helium cuando se crea un nuevo dispositivo, pero el usuario puede introducir su propio DevEUI si el dispositivo ya está provisto de estas credenciales.
- **AppEUI**: Este es el identificador de la aplicación, un identificador de 64 bits que se utiliza para identificar la aplicación a la que está asociado el dispositivo. Al igual que el DevEUI, el AppEUI es autogenerado por la consola de Helium, pero el usuario puede introducir su propio AppEUI si el dispositivo ya está provisto de estas credenciales.
- **AppKey**: Esta es la clave AES de 128 bits que se utiliza para asegurar la comunicación entre el dispositivo y la red. Al igual que los EUIs, la AppKey es autogenerada por la consola de Helium, pero el usuario puede introducir su propia AppKey si el dispositivo ya está provisto de estas credenciales.
Una vez añadido, se mostrará una vista consolidada de todos los detalles del dispositivo, así como el Método de Activación (sólo se admite OTAA actualmente).
#### Importación de dispositivos
La consola proporciona una forma sencilla de añadir en lote varios dispositivos utilizando un archivo CSV. Para añadir un dispositivo, se debe ir a Dispositivos y hacer clic en el icono + Añadir dispositivo. Bajo Importar Dispositivos, se debe elegir un archivo .csv que contenga la información de los dispositivos importados. El archivo .csv necesita incluir los siguientes campos como columnas requeridas: DevEUI, AppEUI, AppKey, y Nombre. Opcionalmente, se puede incluir una columna LabelID para añadir etiquetas a los dispositivos importados.
#### Información importante al añadir dispositivos
Cuando se copian los EUIs y las claves en el software del dispositivo o en la consola, es importante asegurarse de que se está utilizando el orden de bytes correcto, conocido como "endianness". Esto a menudo se etiqueta como MSB (Most Significant Bit) y LSB (Least Significant Bit). Invertir el orden de los bytes es un error muy común al añadir un nuevo dispositivo a la red. En la página de detalles del dispositivo en la consola, se puede cambiar fácilmente el orden de bytes de los EUIs y la clave haciendo clic en la etiqueta lsb o msb junto a ellos.
## Etiquetas
Las etiquetas se utilizan para agrupar dispositivos para una mejor organización, lo que permite flexibilidad a medida que tus proyectos se escalan y crecen. Puedes pensar en una etiqueta simplemente como un grupo de dispositivos.
### Organización con etiquetas
Las etiquetas son simplemente identificadores definidos por el usuario que pueden ser adjuntados a uno o más dispositivos. Además, se pueden añadir múltiples etiquetas a un solo dispositivo, por lo que los usuarios pueden elegir identificar los dispositivos en función de atributos como la geografía (por ejemplo, SF) y el tipo de dispositivo (por ejemplo, temperatura o humedad).
### Añadir etiquetas
Durante la creación del dispositivo, puedes añadir una etiqueta existente o crear una nueva. Alternativamente, puedes crear etiquetas de antemano. Para añadir una nueva etiqueta, en la página de Dispositivos, haz clic en el icono Añadir nueva etiqueta.
### Adjuntar etiquetas
Las etiquetas pueden ser adjuntadas a los dispositivos durante o después de su creación. Si deseas adjuntar una etiqueta a un dispositivo durante su creación, asegúrate de crear la etiqueta de antemano, y estará disponible para ser seleccionada.
Para adjuntar una etiqueta después de crear un nuevo dispositivo, ve a la página de detalles del dispositivo específico y haz clic en el botón Añadir etiqueta. Puedes elegir una etiqueta existente de la lista desplegable o crear una etiqueta.
### Configuraciones de etiquetas
#### ADR (Adaptive Data Rate)
ADR es un mecanismo para adaptar la tasa de datos de los dispositivos en una red LoRaWAN. Esto permite que el tiempo de aire y el consumo de energía del dispositivo sean optimizados por el Servidor de Red. ADR solo funcionará si tu dispositivo solicita ADR.
El servidor de red detrás de la consola implementa un algoritmo específico para determinar la tasa de datos óptima y la potencia de transmisión para enviar al dispositivo. ADR no solo aumenta la tasa de datos del dispositivo, sino que también aumenta o disminuye la potencia de transmisión según sea necesario. El servidor de red solo calcula las correcciones de tasa de datos/potencia después de que recoge 20 paquetes de subida contiguos con el bit ADR establecido en 1.
#### CF List
La CF List de Join-Accept configura los canales de acuerdo con la especificación LoRaWAN para usar la sub-banda 2. Los dispositivos que no han implementado correctamente la especificación LoRaWAN pueden experimentar problemas de transferencia cuando esta configuración está habilitada.
Habilitado, el servidor enviará una CF List con cada otra unión. Deshabilitado, el servidor no enviará una CF List. La máscara de canal todavía se transmite a través del comando ADR.
#### Receive Window Delay
Este ajuste permite a los usuarios especificar el número de segundos que comienza la primera ventana de recepción del dispositivo después de que termina la transmisión.
El rango de la ventana puede ser ajustado de 1 (por defecto) a 15 segundos. Un número más alto aumenta la ventana de retardo de recepción y generalmente puede aumentar la fiabilidad de la bajada ya que se tolerarán latencias más altas entre la pasarela LoRaWAN y el servidor de red.
Sin embargo, los dispositivos que sufren de deriva pueden no funcionar tan bien y un retardo más largo reduce la tasa máxima teórica de comunicación ya que una transmisión subsiguiente solo puede ser realizada después de ambas ventanas de recepción.
## Depuración
La herramienta de depuración de la consola te permite examinar rápidamente y con facilidad los mensajes de los dispositivos. Esto te permite verificar y depurar problemas de manera mucho más sencilla sin requerir que los datos sean enviados a un punto final de la aplicación primero. Por razones de seguridad y privacidad, la herramienta de depuración no persiste los datos. En su lugar, se acumulan los 40 eventos más recientes desde el momento en que se abre la ventana de depuración.
### Uso de la herramienta de depuración
La herramienta de depuración se encuentra en la parte superior derecha de cada página del dispositivo. Para acceder a ella, simplemente haz clic en la pestaña de Depuración y se abrirá una ventana.
Al principio verás una rueda giratoria y el mensaje esperando por datos. Esto se debe a que la herramienta de depuración solo muestra paquetes que llegan mientras la ventana está abierta.
Una vez que los paquetes son recibidos o enviados a tu dispositivo, los verás mostrar inmediatamente en la ventana de depuración.
### Tipos de paquetes de depuración
La herramienta de depuración mostrará un mensaje para cada enlace ascendente o descendente. Para obtener información detallada sobre el contenido de los mensajes, consulta la documentación del esquema JSON.
Los PAYLOADS mostrados en los mensajes de depuración están codificados en BASE64, al igual que los mensajes JSON recibidos por las integraciones. Necesitarás decodificar las cadenas de carga útil para interpretar correctamente los datos de la carga útil. Una forma de hacer esto es utilizar un decodificador de funciones.
### Activación
Cuando tu dispositivo se une por primera vez a la red, verás un mensaje de enlace ascendente especial solo para la activación, que no tendrá una carga útil, y solo incluirá un solo hotspot.
### Enlace ascendente (uplink)
Para los paquetes de enlace ascendente, se mostrará un mensaje similar al de abajo. Además de los datos originales del mensaje de enlace ascendente, estos tipos de paquetes también mostrarán un mensaje para cada integración adjunta al dispositivo, para que puedas examinar lo que se está enviando a esos puntos finales. Para el mensaje mostrado a continuación, puedes ver que hay un mensaje para una integración de RequestBin y Cayenne adjunta a este dispositivo. Puedes diferenciar los mensajes de enlace ascendente por el conteo de frame_up.
### Enlace descendente (downlink) / ACK
Los mensajes de enlace descendente y ACK solo mostrarán un solo hotspot, similar al mensaje de activación. Puedes diferenciar los mensajes de enlace descendente por el conteo de frame_down.
## Funciones
Las funciones en la Consola de Helium permiten ejecutar funciones personalizadas en los datos de los dispositivos. Con la Función Decodificadora, los usuarios pueden transformar y/o analizar una carga útil cruda antes de que se publique en un punto final.
Cuando se aplica una Función Decodificadora a un dispositivo o integración, el código de la Función Decodificadora se ejecuta en la carga útil enviada por el dispositivo, y el resultado se pasa a la Integración. La Función Decodificadora puede ser escrita usando código JavaScript personalizado proporcionado por el usuario o seleccionada de decodificadores preconstruidos.
Las funciones decodificadoras de la Consola son compatibles con los decodificadores de The Things Network (TTN), que ya están disponibles para una amplia variedad de dispositivos.
Además de crear un decodificador personalizado, Helium mantiene una creciente lista de funciones creadas por la comunidad.
### Creando una Función Decodificadora (decoder)
Si has comprado un dispositivo comercial, es probable que ya exista un decodificador que puedas usar. Helium tiene un repositorio que contiene decodificadores para una serie de dispositivos populares.
Para empezar a crear una nueva función dentro de la Consola de Helium, selecciona Funciones en la navegación lateral. Luego, crea una nueva Función haciendo clic en el icono Añadir Nueva Función +.
Nombra tu nueva Función, selecciona "Decoder" como Tipo de Función, y "Custom Script" como Formato si quieres introducir tu propio script, o selecciona de los decodificadores predefinidos.
A continuación, necesitamos introducir el JavaScript que decodificará nuestras cargas útiles para nosotros. El Validador de Scripts te permite probar fácilmente las entradas en forma hexadecimal para asegurarte de que tu script se ejecutará con éxito.
### Definición de la Función Decodificadora
La función decodificadora incluirá la carga útil de subida del dispositivo como un array de bytes y el puerto de subida. Puedes devolver cualquier valor de tipo válido que será utilizado en la salida del decodificador.
```
function Decoder(bytes, port) {
//Codigo JavaScript que decodifique los datos
//y los devuelva estructurados como un objeto JSON
return decoded;
}
```
### Salida de la Función Decodificadora
Los datos devueltos por tu función decodificadora se incluirán en un campo adicional decoded.payload en el mensaje JSON estándar, no alterará el campo de carga útil (payload) original.
### Asociando Funciones
Necesitas asociar funciones a:
* Un dispositivo o un grupo de dispositivos (a través de una etiqueta): la función solo se aplica a la carga útil del dispositivo en la utilidad de Depuración.
* Un dispositivo o grupo de dispositivos (a través de una etiqueta) y una integración: la función se aplica a las cargas útiles antes de ser enviadas a la integración.
* Puedes adjuntar fácilmente funciones a dispositivos, etiquetas e integraciones en el Espacio de trabajo de Flujos.
## Integraciones
Las integraciones permiten a los dispositivos conectarse a aplicaciones basadas en la nube preconfiguradas o enviar datos directamente a través de HTTP o MQTT.
### Añadir Integración
Para añadir una nueva integración, navega a la página de Integraciones usando la navegación lateral, haz clic en Añadir Nueva Integración + y luego selecciona de las integraciones disponibles. Sigue las guías de integración específicas para más detalles.
### Conectar Integraciones a Dispositivos
Los dispositivos o grupos de dispositivos (a través de etiquetas) pueden ser conectados directamente a las integraciones en el Espacio de trabajo de Flujos. Las etiquetas son identificadores utilizados para agrupar dispositivos para una fácil gestión. Para conectar uno o más dispositivos a una o más integraciones, simplemente conecta los nodos de Dispositivo e Integración en el Espacio de trabajo de Flujos.
Los elementos de nodo (dispositivos, etiquetas, integraciones) necesitan ser creados antes de que estén disponibles en el Espacio de trabajo de Flujos.
### Esquema JSON
Las integraciones soportan varios formatos y servicios, incluyendo HTTP, MQTT, Microsoft Azure IoT Hub/Central, AWS IoT Core, Cargo, Datacake, MyDevices Cayenne, Adafruit IO, Ubidots, Tago.IO, Google Sheets, Microshare, Akenza, entre otros.
### Integración HTTP
La integración HTTP permite enviar datos desde los dispositivos a un punto final HTTP de tu elección. Para añadir una integración HTTP, ve a Integraciones en el menú de la izquierda y selecciona la integración HTTP. A continuación, pega el punto final HTTP. Si todavía estás probando, puedes encontrar sitios populares que pueden crear puntos finales HTTP para ti e inspeccionar paquetes. Requestbin y Beeceptor proporcionan herramientas para hacer un punto final HTTP de forma rápida y fácil.
#### Ejemplo de Uso
Una aplicación en la nube que recibe y procesa datos de tus dispositivos LoRaWAN. Puedes configurar una integración HTTP en la Consola de Helium para enviar los datos de tus dispositivos a tu aplicación a través de un endpoint HTTP. Los datos se enviarán en formato JSON y podrás personalizar la estructura del mensaje JSON.
### Integración MQTT
La integración MQTT permite enviar datos desde los dispositivos a un broker MQTT de tu elección. Para añadir una integración MQTT, ve a Integraciones en el menú de la izquierda y selecciona la integración MQTT. A continuación, pega el punto final de tu broker MQTT y un prefijo de tema opcional.
#### Ejemplo de Uso
Imagina que tienes una aplicación que utiliza MQTT para la comunicación entre dispositivos y servidores. Puedes configurar una integración MQTT en la Consola de Helium para enviar los datos de tus dispositivos a tu broker MQTT. Los datos se enviarán como mensajes MQTT a los temas correspondientes. Por ejemplo, los datos de uplink se enviarán al tema `{optional_prefix}/helium/{Device ID}/rx` y los datos de downlink se enviarán al tema `{optional_prefix}/helium/{Device ID}/tx`.
## Flujos
Los Flujos son una vista centrada en lo visual de los elementos clave en la Consola y permiten a los usuarios entender instantáneamente la relación entre dispositivos, funciones e integraciones. Los Flujos permiten a los usuarios conectar visualmente nodos y controlar el flujo de datos.
### Elementos principales de los Flujos
Los elementos principales de los Flujos son:
- **Espacio de trabajo (Workspace)**: Es donde accedes y manipulas nodos, haces conexiones entre nodos y haces ajustes de configuración de nodos usando el Inspector. El Espacio de trabajo está optimizado para la manipulación de elementos visuales, y hay un subconjunto de cambios de configuración que pueden hacerse a través del Inspector.
- **Nodos y bordes (Edges)**: Los nodos son representaciones gráficas de los elementos de la Consola y para una identificación rápida están codificados por colores. Los puntos de conexión se utilizan para crear relaciones entre nodos. Los bordes representan el flujo de datos desde los nodos de dispositivos o etiquetas moviéndose de izquierda a derecha.
- **Inspector**: El Inspector proporciona la capacidad de inspeccionar visualmente los detalles del nodo y hacer cambios comunes en la configuración del nodo. Para acceder al Inspector simplemente haz clic en un nodo y aparecerán diferentes opciones.
- **Modo de depuración (Debug Mode)**: La herramienta de depuración de la Consola te permite examinar rápidamente y con facilidad los mensajes de los dispositivos. Esto te permite verificar y depurar problemas de manera mucho más sencilla sin requerir que los datos sean enviados a un punto final de la aplicación primero.
### Acciones comunes en los Flujos
Las acciones frecuentes realizadas desde el espacio de trabajo de los Flujos incluyen:
- Crear elementos de nodo
- Añadir nodos al espacio de trabajo
- Acceder al modo de depuración
- Ver el Inspector
Para usar los Flujos, los elementos del nodo (dispositivos, etiquetas, integraciones y funciones) deben haber sido creados previamente. Para crear cualquier elemento de nodo desde el espacio de trabajo de los Flujos, haz clic en el círculo + y elige el elemento de nodo deseado.
Para añadir nodos al espacio de trabajo, ve a la lista de Nodos, haz clic en +. Aparecerá el panel de Nodos.
Para acceder al modo de depuración desde el espacio de trabajo de los Flujos, selecciona un dispositivo o etiqueta y haz clic en la pestaña del modo de depuración.
El Inspector permite a los usuarios ver los detalles del nodo, eliminar nodos/bordes, así como hacer cambios limitados.
### Flujo de ejemplo
Imaginemos que tenemos un despliegue de múltiples sensores LoRaWAN en un entorno de agricultura inteligente. Tenemos dos tipos de sensores: sensores de temperatura y humedad (SensorTH) y sensores de nivel de agua (SensorNL). Cada tipo de sensor tiene su propia función decodificadora para interpretar los datos de la carga útil.
#### Dispositivos
- SensorTH1, SensorTH2, SensorTH3: Sensores de temperatura y humedad.
- SensorNL1, SensorNL2: Sensores de nivel de agua.
#### Etiquetas
- EtiquetaTH: Etiqueta para agrupar los sensores de temperatura y humedad.
- EtiquetaNL: Etiqueta para agrupar los sensores de nivel de agua.
#### Funciones
- FunciónTH: Función decodificadora para interpretar los datos de los sensores de temperatura y humedad.
- FunciónNL: Función decodificadora para interpretar los datos de los sensores de nivel de agua.
#### Integraciones
- IntegraciónAWS: Integración con AWS IoT Core para enviar los datos de los sensores a una aplicación en la nube.
- IntegraciónAzure: Integración con Microsoft Azure IoT Hub para enviar los datos de los sensores a otra aplicación en la nube.
#### Flujo
1. Los dispositivos SensorTH1, SensorTH2 y SensorTH3 están asociados con la EtiquetaTH y la FunciónTH. Los dispositivos SensorNL1 y SensorNL2 están asociados con la EtiquetaNL y la FunciónNL.
2. La EtiquetaTH está conectada a la IntegraciónAWS y la EtiquetaNL está conectada a la IntegraciónAzure. Esto significa que los datos de los sensores de temperatura y humedad se enviarán a AWS IoT Core y los datos de los sensores de nivel de agua se enviarán a Microsoft Azure IoT Hub.
3. En el espacio de trabajo de Flujos, los nodos de los dispositivos están conectados a sus respectivas funciones y etiquetas, y las etiquetas están conectadas a sus respectivas integraciones.
Este flujo permite una gestión eficiente de los dispositivos y los datos, y proporciona flexibilidad para añadir o eliminar dispositivos, cambiar funciones o integraciones, y reorganizar el flujo según sea necesario.
## Envío de Downlinks
Los downlinks se refieren a los datos enviados desde la red para ser recibidos por tu dispositivo. Con respecto a la integración HTTP, estos serán datos enviados a una URL única llamada `downlink_url` proporcionada por la Consola.
### Formato de la URL de Downlink
La URL de downlink tiene el siguiente formato:
https://console.helium.com/api/v1/down/{Integration_ID}/{Downlink_Key}/{:optional_device_id}
Puedes enviar downlinks a todos los dispositivos a los que está adjunta tu integración HTTP o solo a un dispositivo específico incluyendo el UUID del dispositivo al final. Puedes encontrar esta `downlink_url` con la clave de downlink requerida en la página de integración HTTP en la sección de detalles.
### Ejemplo de Mensaje de Downlink JSON
Para enviar el mensaje de downlink, realiza una solicitud POST que incluya un cuerpo JSON con los siguientes campos:
```
{
"payload_raw": "SGVsbG8sIHdvcmxkIQ==",
"port": 1,
"confirmed": false
}
```
### Ejemplo de Herramienta de Downlink
La forma más fácil de enviar un downlink a tu dispositivo es utilizar la herramienta de downlink incorporada en la Consola. La encontrarás en el lado derecho de cada página del dispositivo. Para utilizar la herramienta de downlink, debes tener una Integración HTTP adjunta al dispositivo.
Cuando tengas abierta la herramienta de downlink, introduce el payload que vayas a enviar en el downlink en el campo Payload. Selecciona "Encoded" si estás introduciendo una cadena que ya está codificada en Base64, y "Plain" si es texto plano. Por último, selecciona tu puerto FPort (el puerto al que vayas a enviar el downlink. Este valor puede cambiar en cada dispositivo), si quieres enviar un downlink confirmado o no, y luego haz clic en el botón de envío de downlink.
Una vez que has iniciado el downlink, deberías ver el evento de downlink en el registro de eventos.