📡 Control a Distancia: Configurando el Shelly LoRa AddOn en Módulos Shelly 1 (Gen3)
En este artículo, vamos a sumergirnos en el fascinante mundo de la automatización de largo alcance. Te voy a mostrar detalladamente cómo configurar el Shelly LoRa AddOn en tus módulos Shelly 1 Gen3, permitiéndote controlar dispositivos a kilómetros de distancia.
El Shelly LoRa AddOn es un módulo de extensión de comunicación inalámbrica diseñado para acoplarse a dispositivos Shelly compatibles de las generaciones 3 y 4. Su principal función es dotar a estos dispositivos de la tecnología LoRa, la cual permite una comunicación de largo alcance y muy bajo consumo de energía, ideal para entornos donde la cobertura Wi-Fi o Bluetooth es insuficiente o inexistente.
Se utiliza principalmente para la automatización y el control remoto de dispositivos a grandes distancias, incluso hasta 5 km en campo abierto (con una antena externa). Esto lo convierte en una solución perfecta para la gestión de infraestructuras urbanas (como el alumbrado público), instalaciones agrícolas inteligentes, sistemas industriales o cualquier aplicación que requiera un monitoreo fiable en zonas remotas o de difícil acceso, permitiendo que los dispositivos Shelly intercambien información y comandos como si estuvieran en la misma red local.
Para la comunicación Shelly LoRa es necesario contar con al menos dos módulos compatibles (en este caso, utilizaremos dos Shelly 1 Gen3) y dos AddOn LoRa, uno para colocar en cada módulo. Es importante aclarar que los AddOn LoRa no son funcionales por sí solos. Solo sirven para sumar conectividad LoRa a los dispositivos Shelly compatibles.
¿Cómo funciona la comunicación LoRa de Shelly?
Como mencioné anteriormente, el AddOn LoRa es una "antena" que agrega a los módulos Shelly compatibles la capacidad de enviar y recibir mensajes mediante LoRa. Es importante remarcar que los AddOn LoRa Shelly no utilizan el protocolo LoRaWAN, sino que utilizan un protocolo propietario de Shelly que opera sobre la capa física LoRa.
Una vez que el complemento LoRa está colocado en nuestro módulo emisor, debemos generar en este un script que capture un evento (Por ejemplo, el encendido del relé en el módulo emisor). Este evento disparará un mensaje encriptado que será transmitido por LoRa al o los módulos receptores. De manera inversa, en el o los módulos receptores debemos generar un script que "interprete" ese mensaje LoRa recibido, y ejecute una acción. Por ejemplo, encender el relé del dispositivo.
En este caso práctico, vamos a utilizar un módulo Shelly 1 Gen 3 con un interruptor físico colocado, que encenderá un artefacto de iluminación local. Mediante un script, transmitiremos un mensaje LoRa a otro módulo remoto, que se encuentra fuera de la red Wi-Fi. El módulo remoto replicará el estado del módulo emisor: Si el relé está encendido, el receptor se encenderá. Cuando se apague, se apagará.
Si vas a incursionar en la comunicación LoRa de Shelly, es imprescindible que leas este documento hasta el final. Este documento esta destinado a usuarios con cierto nivel tecnico. Y damos por hecho que tenes conocimientos básicos de electricidad.
Que Necesitamos:
- 1 Kit Shelly LoRa AddOn x 2
- 2 Shelly 1 Gen3
- 1 Interruptor conectado en el módulo emisor
- 1 Artefacto de luz conectado en el módulo emisor y otro conectado en el módulo receptor.
- Tambien podes comprar el kit, y ahorrar unos pesos
Manos a la obra:
1. Montaje del AddOn (Sin Alimentación): Tomamos el primer módulo. Sin darle alimentación, colocamos el complemento LoRa.
2. Configuración del módulo Emisor: Damos alimentación eléctrica a nuestro módulo, y lo configuramos en nuestra cuenta Shelly. Nombramos el módulo como "LoRa Emisor" lo ubicamos en una habitacion de nuestra cuenta shelly. Le colocamos una etiqueta para identificarlo.
3. Actualización de Firmware: Actualizamos el firmware del módulo a la última versión disponible.
4. Registro de IP: Nos dirigimos a la solapa "Configuración", y en "Información del dispositivo" identificamos la dirección IP de nuestro módulo. Tomamos nota. En mi caso, la IP del módulo emisor es 192.168.1.83.
5. Configuración del Receptor: Repetimos los mismos pasos para el segundo módulo: colocamos el complemento LoRa, damos alimentación, lo configuramos en la cuenta Shelly, actualizamos el firmware, pero este lo nombraremos "LoRa Receptor". Identificamos la dirección IP del módulo receptor.
6. Acceso a Interfaz Local: En el explorador web de una compu conectada a la misma red Wi-Fi que nuestros módulos, colocamos la dirección IP del módulo "LoRa Emisor". Ingresaremos a su interfaz de configuración local.
7. Habilitar el AddOn: En el menú de la izquierda, nos dirigimos a "AddOn" (o "Periféricos Complementarios"), habilitamos la opción "LoRa" y hacemos clic en "Save And Reboot". El dispositivo se reiniciará.
8. Acceso a Configuración LoRa: Luego del reinicio, volvemos a ingresar a la IP del dispositivo "LoRa Emisor", vamos a "AddOn" y hacemos clic en el lápiz que se encuentra a la derecha de la opción LoRa.
9. Actualizar Firmware LoRa: Nos dirigimos a "LoRa firmware" y actualizamos a la última versión. Importante: ahora estás actualizando el firmware específico del AddOn LoRa, no del módulo principal.
10. Asegurar Coincidencia: Debemos prestar especial atención a la configuración LoRa por defecto (Región, Sub-Banda, etc.). Los valores en el módulo emisor y el receptor deben coincidir, caso contrario la comunicación no se llevará a cabo.
11. Creación del Script Emisor: En el menú de la izquierda hacemos clic en "Scripts", y luego en el botón "Crear nuevo Script". Colocamos el nombre "Emisor LoRa" y copiamos el código del archivo TXT sender. Hacemos Clic en "Save", y volvemos al menú scripts.
12. Ejecución Automática: Veremos que nuestro script está detenido (Stopped). Marcamos "Run on Startup"(Ejecutar al inicio) y hacemos clic en "Play" para que el script comience a ejecutarse. El estado cambiará a "Running".
13. Opcional - Habilitar Debug: Volvemos a ingresar al "Script". En la parte de abajo veremos la consola de "debug". Habilitamos el debug haciendo clic en "Enable". Esto nos permitirá monitorear los logs de ejecución.
14. Prueba de Emisión: Pulsamos el interruptor conectado a nuestro módulo, o lo encendemos desde la app en el celular. Veremos un mensaje de ejecución en la ventana de debug.
15. Configuración del Receptor: Repetimos los pasos desde el punto 6 en adelante para el módulo "LoRa Receptor". Ingresamos a su dirección IP, habilitamos LoRa y actualizamos el firmware del AddOn LoRa.
16. Creación del Script Receptor: Nos dirigimos al menú "Script" y creamos un script que llamaremos "Receptor LoRa". Copiamos el código del archivo TXT Receiver LoRa. Lo guardamos. Volvemos al menú scripts, marcamos "Run on Startup" y hacemos clic en "Play".
17. Conectamos el artefacto de iluminación y el interruptor en el modulo emisor.
18. Conectamos el artefacto de iluminación en el módulo receptor.
¡Listo! La comunicación LoRa ya está funcionando entre nuestros módulos. Si en este momento enciendes el interruptor conectado en el modulo Emisor LoRa, se encenderá el artefacto conectado, y luego de unos segundos se encenderá también el artefacto conectado en el modulo receptor.
Pero lo interesante, es que ahora podes alejar el módulo receptor hasta 5 km de distancia del emisor (Bueno, Según el fabricante ). Nosotros lo probamos, y en nuestro entorno hasta 2,5km funciona perfectamente. Y seguiremos haciendo pruebas.
Nota: La comunicacion LoRa no es inmediata, tal como estamos acostrumbrados en el control de dispositivos dentro de nuestra casa inteligente. El mensaje LoRa puede demorar unos segundo en ser recibido por nuestro modulo receptor. Modificando los parametros de configuración LoRa podemos lograr mejorar la velocidad, a costa de estar expuestos a más errores de comunicacion, o aumentar la fiabilidad de la comunicación, sacrificando la velocidad del mensaje. Mi experiencia es que lo mejor es dejar lo parametros como vienen configurados por defecto, aunque la comunicación demore unos segundos.
¿Pero cómo funciona esto que hicimos?
En el módulo "Emisor LoRa" cargamos un script que se ejecuta constantemente, y que se encarga de monitorear el estado del relé del dispositivo (Shelly 1 Gen3 emisor). Si el relé se enciende, envía un mensaje LoRa encriptado.
En el módulo "Receptor LoRa" creamos un script que también se ejecuta constantemente, y que se encarga de "escuchar" en la capa física LoRa. Cuando "identifica" un mensaje para él, lo captura y ejecuta la acción en el relé de su módulo (Shelly 1 Gen3 receptor), copiando el estado del relé en el dispositivo emisor.
De ese modo, cuando activamos el interruptor en el Shelly 1 Gen3 emisor y se activá el relé, el script Sender envía el mensaje LoRa encriptado, que es recibido por el módulo receptor. El script que se está ejecutando en el módulo receptor toma ese mensaje, evalúa y ajusta el estado del relé local segun corresponda al estado del rele emisor (On/Off).
¿Para qué sirve la clave de encriptación?
Si analizamos el código de los scripts, veremos que al inicio tenemos una clave de encriptación. Esta clave debe coincidir en ambos códigos (Emisor y Receptor) y funciona como la "credencial" que vincula al emisor con el o los receptores. El emisor controlará a todos los receptores que posean la misma clave.
- Control Múltiple: Por ejemplo, si deseas que un solo módulo emisor controle 2 relés remotos (p.ej., la iluminación de una tranquera y un galpón), simplemente utiliza la misma clave en el emisor y en los dos receptores remotos.
- Control Independiente: Si, por el contrario, necesitas controlar de manera independiente cada uno de los relés, debes utilizar un emisor para cada uno, con una clave particular asociada.
O también puedes utilizar un Shelly 2PM Gen3 como emisor, con dos interruptores, y cargar dos scripts separados, cada uno con su clave de encriptación particular, asociada a un relé remoto. Pero eso lo dejamos para que investigues.
Importante: Este es un codigo de ejemplo, y es necesario que reemplaces la clave por una clave propia. Si cerca de tu casa alguien tambien está utilizando un kit Shelly LoRa, con este mismo código original, posiblemete controles tambien sus dispositivos... o el los tuyos! ;) Por esa razón es importante que generes tus propias claves de encriptacion.
Con solo cambiar un caracter en la cadena, ya es suficiente para hacerla diferenciarla, pero te recomiendo crear una completamente nueva. Dentro del código, debes buscar "const aesKey =" y reemplazarlo por una nueva que tenga exactamente 24 caracteres de largo. Y también asegurarte de colocar exactamente la misma tanto en el script emisor como en el receptor.
Aclaraciones:
Los scripts que estamos usando no son de mi creación. Fueron tomados de la web "Shelly - The unofficial guide". Acá te dejo el link para que busques más información. También podrás encontrar más scripts, y de esa manera también utilizar LoRa para obtener el estado de sensores, controlar dispositivos dobles, dimmers, etc.
Scripts utilizados:
