Como comunicar dos dispositivos sin la red movil


A veces, como lo demostró el gran apagón sufrido en España, es interesante tener un medio de transmisión donde aun sin la red de telefonia ( e incluso sin la rede de energia pública) podamos comunicarnos entre si. En este contexto si investigamos un poco es fácil encontrar una tecnologia surgida del mundo del IoT : Meshtastic una solución para una comunicación libre fuera de la red.

Meshtastic nació en 2020 gracias a Kevin Hester y hoy cuenta con miles de colaboradores que mantienen el firmware y las apps asociadas. De hecho existen comunidades muy activas en diversos países, incluida la comunidad española y latinoamericana, con grupos de soporte en Telegram y foros especializados.

Meshtastic es un proyecto de código abierto y descentralizado que permite crear redes de comunicación off‑grid usando radios LoRa de bajo coste, sin depender de Internet, cobertura móvil ni infraestructura externa. Solo necesitamos un transceptor de radio (normalmente basado en ESP32 con el fw de meshtastic) y enlazar este por bluetooth a un ordenador o a un smartphone mediante la app Meshtastic. Lógicamente si queremos comunicarnos con otra persona también necesitará este módulo para hacer posible la comunicación bidireccional y por supuesto que ambos nodos esten al alcance de la red.

En la siguiente imagen precisamente tenemos un modulo típico muy utilizado : el LoRa V3 para ESP-32.

¿Qué es Meshtastic?

Meshtastic transforma pequeños módulos LoRa (como LILYGO o Heltec) en dispositivos de comunicación de largo alcance, capaces de enviar y recibir mensajes de texto o datos a través de una red mallada.
Cada nodo actúa como repetidor, retransmitiendo la señal y extendiendo el alcance total de la red. Y si amigo lector si te estas preguntando como se gestiona, esto lo haremos a traves de un smartphone con la app Meshmastic vinculado al modulo Lora.

En efecto la app Meshtastic es una aplicación de código abierto que permite crear redes de comunicación LoRa en forma de malla (mesh), donde cada dispositivo actúa como nodo capaz de retransmitir mensajes a otros, extendiendo el alcance sin necesidad de cobertura móvil ni conexión a Internet. Está disponible para Android, iOS, Windows y Linux, y se conecta mediante Bluetooth o USB a placas compatibles como el ESP32 LoRa V3.

Su función principal es facilitar la mensajería y el intercambio de datos entre dispositivos en entornos donde no existe infraestructura de red, ofreciendo además opciones de geolocalización, configuración remota de parámetros y visualización en mapas. También puede integrarse con plataformas externas mediante MQTT o API REST, lo que lo hace útil tanto para comunicación entre usuarios como para proyectos IoT distribuidos.

Gracias a Meshtastic, los módulos LoRa se convierten en nodos inteligentes capaces de mantener una red de comunicación privada, autónoma y de largo alcance, ideal para actividades al aire libre, entornos rurales, redes de emergencia o experimentos tecnológicos donde la conectividad tradicional no está disponible.

Principales características

  • Comunicación cifrada de extremo a extremo.
  • Red completamente descentralizada: los nodos forman la malla sin routers ni antenas base.
  • Compatible con apps Android/iOS, cliente web y CLI de Python.
  • Alcance extraordinario: en pruebas se han registrado enlaces de hasta 331 km en condiciones ideales.
  • Autonomía prolongada, perfecta para dispositivos alimentados por batería o energía solar.
  • Opcionalmente, integración GPS para enviar la posición de cada nodo.

Usos más comunes

  • Excursiones y senderismo: comunicación fuera de cobertura móvil.
  • Eventos y festivales: redes alternativas cuando las móviles están saturadas.
  • Agricultura e IoT: monitoreo remoto de sensores de temperatura o humedad.
  • Emergencias y desastres naturales: comunicaciones de respaldo sin depender de Internet.

Cómo funciona Meshtastic

Cada nodo Meshtastic transmite mensajes vía LoRa P2P (peer‑to‑peer). Cuando recibe un mensaje, lo reenvía automáticamente, permitiendo múltiples saltos hasta alcanzar el destino.
Los nodos pueden emparejarse con un teléfono por Bluetooth o cable USB, aunque la comunicación entre ellos es independiente.

Bandas de frecuencia compatibles

Meshtastic utiliza bandas ISM (sin licencia) diferentes según la región y el hardware:

BandaRegiones principalesObservaciones
433 MHzEuropaUso limitado, reservada a radioaficionados.
868 MHzEuropaBanda ISM europea más común y recomendable.
915 MHzAmérica, OceaníaBanda ISM de 902‑928 MHz, muy extendida.

Frecuencia más usada en Europa

En Europa —y especialmente en España— la frecuencia 868 MHz es la estándar preferida, al ser legal, estable y compatible con la mayoría de nodos.
La frecuencia central más habitual según configuración LongFast es 869.525 MHz (slot 1).

Parámetros técnicos (EU 868)

ParámetroValor típicoReferencia
Rango de frecuencia863–870 MHzETSI EN 300 220
Potencia máxima+14 dBm (25 mW EIRP)ETSI/IR‑274
Duty cycle permitido1 % (10 % en subbandas 869.4‑869.65 MHz)ETSI EN 300 220
Ancho de banda típico125–500 kHz

Esto garantiza que Meshtastic funcione dentro de los límites legales europeos, manteniendo compatibilidad con LoRaWAN y otros sistemas IoT.

Configurar la frecuencia o canal de un nodo

  1. Conecta el nodo a tu móvil (app Meshtastic Android/iOS) o a un PC mediante terminal o puerto serie.
  2. Abre la configuración avanzada. En la app o terminal, accede a los parámetros de radio (radioConfig).
  3. Selecciona la región, por ejemplo EU_868.
  4. Cambia la ranura o canal con el parámetro primaryChannelFreq o channel.
    • Ejemplo CLI: bashmeshtastic --set channel 20
  5. Guarda y reinicia el nodo para aplicar cambios.

Importante: todos los nodos de una red deben operar en la misma frecuencia o canal para comunicarse correctamente.

Ejemplo de modulo Mesh: Módulo LoRa V3 para ESP32 – Potencia, conectividad y eficiencia para proyectos IoT

El LoRa V3 para ESP32 es una completa placa de desarrollo diseñada para proyectos IoT de largo alcance y bajo consumo. Combina la potencia del ESP32-S3FN8 con el chip LoRa SX1262, ofreciendo conectividad Wi-Fi, Bluetooth y LoRaWAN en un solo módulo.

Características destacadas

  • Compatibilidad total con Arduino IDE y Meshtastic, facilitando la programación y el despliegue de redes LoRa Mesh.
  • Chip LoRa SX1262, que garantiza gran alcance de comunicación y bajo consumo energético.
  • Procesador ESP32-S3FN8, con doble núcleo Xtensa LX7 de 240 MHz, 8 MB Flash y 512 KB SRAM, ideal para aplicaciones exigentes.
  • Conectividad Wi-Fi (802.11 b/g/n) y Bluetooth 5 / BLE Mesh, ampliando las posibilidades de comunicación inalámbrica.
  • Pantalla OLED de 0,96” (128×64) para visualizar datos, estado de red y nivel de batería en tiempo real.
  • Puerto USB-C con protección ESD y contra cortocircuitos, más gestión avanzada de batería de litio (carga/descarga segura y cambio automático entre batería y USB).
  • Frecuencia LoRa: 868–915 MHz (según versión).
  • Sensibilidad del receptor: hasta –139 dBm.
  • Consumo en modo de sueño profundo: < 10 μA.

Este módulo es Ideal para proyectos IoT, redes Meshtastic, sensores remotos, monitoreo ambiental, automatización y cualquier aplicación que requiera gran alcance de comunicación y bajo consumo energético.

Conclusión

Meshtastic es una alternativa libre y abierta para construir redes de comunicación privadas, ideal para entusiastas de la electrónica, exploradores, agricultores o equipos de emergencia.
Con tan solo unos módulos LoRa, es posible crear tu propia red descentralizada, resistente y completamente independiente de la infraestructura convencional.

¿Existe algún enchufe inteligente que pueda ser controlado por un script ?


En efecto sí, existen enchufes inteligentes basados en ESP32 que se pueden hackear para ser controlados con scripts en Python, especialmente aquellos que permiten cambiar su firmware o, directamente, los modelos DIY y genéricos que se encuentran en el mercado asiático.

Modelos y Alternativas Usados

  • Muchos enchufes inteligentes económicos, especialmente los compatibles con Tuya, Teckin, Sonoff y otros, utilizan chips ESP32 o ESP8266 y pueden «abrirse» para flashear un firmware personalizado como Tasmota, ESPHome o incluso MicroPython.
  • Hay marcas como SwitchBot mini que incluyen ESP32 y permiten flasheo OTA (over-the-air) según experiencias de usuarios. Esto facilita la modificación del firmware sin necesidad de abrir el dispositivo físicamente, en algunos casos.
  • Enchufes DIY o placas Smart Plug de Aliexpress que indican “ESP32 hack” o “ESP32 flashable” son buenas opciones, ya que suelen traer pines expuestos de programación UART y ejemplos de uso Python y MicroPython.

Control Desde Python

  • Si el enchufe permite ejecutar MicroPython (como muchos modelos basados en ESP32), es sencillo cargar un pequeño servidor web o script que pueda recibir comandos desde Python, ya sea usando sockets o HTTP.
  • Alternativamente, proyectos como Tasmota o ESPHome hacen que el enchufe sea controlable desde la red local, y existen bibliotecas en Python para interactuar con ellos por MQTT, HTTP REST o incluso desde Home Assistant.
  • Existen tutoriales y repos públicos (por ejemplo, “SmartUPy” en GitHub) que muestran cómo controlar enchufes inteligentes desde Python usando ESP32 y MicroPython—y explican cómo configurarlo y modificar el firmware.
  • Por tanto las opciones más accesibles son los enchufes basados en Tuya/Sonoff con ESP32, o los modelos de Aliexpress genéricos y DIY, flasheando Tasmota, ESPHome o MicroPython,

Cómo empezar

  • Para flashear estos dispositivos normalmente necesitas: conexión por USB-TTL al ESP32 (acceso físico), el firmware elegido (MicroPython, Tasmota, ESPHome, etc.), y una herramienta como esptool o similar para la carga.
  • Una vez flasheado, puedes desarrollar un script en Python que controle el enchufe por WiFi usando HTTP, MQTT, WebSocket o cualquier protocolo que soporte ese firmware personalizado.
  • Busca modelos en Aliexpress o Amazon que especifiquen ESP32 y tengan buena documentación para el flasheo y acceso a UART/GPIO.

Controlar enchufes inteligentes desde un PC con python

Y hablando de control también es totalmente posible controlar uno o varios enchufes inteligentes desde un PC usando scripts en Python, tanto para modelos comerciales (como TP-Link, Tuya, Sonoff) como para enchufes DIY con ESP32. Existen varias bibliotecas y métodos según la marca y el firmware del enchufe.

Opciones para control desde Python

  • Enchufes TP-Link (Kasa): Se pueden controlar localmente con la biblioteca python-kasa, que permite encender, apagar, y leer el estado fácilmente si están en la misma red.github+2
  • Enchufes compatibles con Tuya/Smart Life: Si el enchufe es compatible con la plataforma Tuya, existen herramientas como tinytuya y APIs Python que permiten el control local, siempre que consigas el Device ID, local key e IP. Esto es válido para marcas como Teckin y muchas otras económicas.isnum+2
  • Enchufes con firmware Tasmota o ESPHome: Si se flashea el enchufe con Tasmota/ESPHome, el dispositivo expone interfaces HTTP, MQTT o REST, lo cual facilita su control con cualquier script Python—esto aplica también para dispositivos basados en ESP32 y ESP8266.tinkeriot+3
  • MicroPython en ESP32: Para enchufes DIY o hackeados, si pueden ejecutar MicroPython, es posible cargar scripts personalizados y controlarlos por sockets, HTTP o MQTT, y enviar comandos desde Python en el PC.lemariva

Bibliotecas útiles

  • python-kasa: para TP-Link Kasa.
  • tinytuya: para enchufes Tuya/SmartLife.
  • Requests/MQTT: para dispositivos con Tasmota/ESPHome.

Consideraciones prácticas

  • Es recomendable configurar los enchufes con IP fija en tu red.
  • Necesitarás obtener credenciales básicas (ID/dispositivo y claves) para algunos enchufes.
  • Puedes controlar varios enchufes simultáneamente simplemente guardando sus datos (ID, IP, clave) y manejando cada uno desde tu script Python.

Ejemplos de código Python para enchufes Tuya usando tinytuya

Aquí tienes varios ejemplos de código en Python para controlar enchufes inteligentes Tuya usando la librería tinytuya. Debes obtener primero el Device ID, Local Key y la IP del enchufe (consulta la documentación oficial para extraerlos fácilmente):github . Para obtener el Device ID, Local Key y la IP de tu enchufe Tuya, existen varios métodos prácticos y accesibles:

Método oficial con cuenta Tuya Developer

  1. Regístrate en la plataforma Tuya IoT Developer y vincula tu cuenta de la app Tuya o Smart Life.
  2. En el panel de desarrollador, crea un proyecto y añade tus dispositivos (enchufes).
  3. En la sección «Devices» del proyecto, verás listados todos tus dispositivos con su Device ID y su IP si están conectados.
  4. Para obtener el Local Key, usa la API Explorer dentro de la plataforma Tuya, solicitando la información del dispositivo; la respuesta incluirá esa clave.

Este método es seguro y oficial para extraer las credenciales necesarias para control local de dispositivos Tuya.

Método manual y práctico (más simple)

  • Algunos usuarios extraen el Local Key con apps específicas o herramientas que interceptan el tráfico en la red local o acceden al almacenamiento de la app Tuya Smart o Smart Life en el móvil.
  • Hay tutoriales disponibles en video donde se explica paso a paso cómo usar versiones específicas de apps o herramientas externas para obtener estas claves directamente desde la app móvil o red local (requiere conocimientos técnicos y puede implicar riesgo de seguridad).

Información necesaria para control con tinytuya

  • Device ID: Identificador único del enchufe Tuya.
  • Local Key: Clave local para comunicación segura.
  • IP: Dirección local en red del enchufe (puedes obtenerla desde el router o la app Tuya).

Una vez que tengas estos datos, podrás controlar el enchufe con scripts Python usando tinytuya como en los ejemplos previos. Veamos los siguientes pasos para controlar uno o varios enchufes Tuya mediante Python:

Instalar la librería

python -m pip install tinytuya

Ejemplo básico: Leer estado y encender/apagar

import tinytuya

# Inicializa el enchufe
dev = tinytuya.OutletDevice('DEVICE_ID', 'IP_DEL_ENCHUFE', 'LOCAL_KEY')
dev.set_version(3.3) # Asegúrate de poner la versión correcta

# Leer estado actual
data = dev.status()
print("Estado del enchufe:", data)

# Encender el enchufe
dev.turn_on()

# Apagar el enchufe
dev.turn_off()

Ejemplo: Alternar estado

import tinytuya

dev = tinytuya.OutletDevice('DEVICE_ID', 'IP_DEL_ENCHUFE', 'LOCAL_KEY')
dev.set_version(3.3)
estado = dev.status()["dps"]["1"]
dev.set_status(not estado)

Múltiples enchufes en un solo script

import tinytuya

enchufes = [
{"id": "ID1", "ip": "192.168.1.50", "key": "LOCAL_KEY1"},
{"id": "ID2", "ip": "192.168.1.51", "key": "LOCAL_KEY2"}
]

for enchufe in enchufes:
dev = tinytuya.OutletDevice(enchufe["id"], enchufe["ip"], enchufe["key"])
dev.set_version(3.3)
dev.turn_on() # Enciende todos los enchufes

Encontrar dispositivos en la red (escaneo)

import tinytuya

devices = tinytuya.deviceScan()
for dev in devices:
print(devices[dev])

Estos ejemplos muestran cómo automatizar desde un PC el control de uno o varios enchufes inteligentes Tuya por red local usando Python, sin depender de la nube.github

  1. https://github.com/jasonacox/tinytuya