🛠 Automatización IoT con KNOT HL9: BLE a MQTT
Objetivos
Este tutorial avanzado tiene como objetivo configurar la pasarela MikroTik KNOT Gateway HL9 como un nodo de recolección IoT autónomo. La meta es capturar paquetes de anuncios Bluetooth Low Energy (BLE), filtrarlos localmente para reducir el ancho de banda y publicarlos en un broker MQTT mediante conexión LTE o Ethernet. Esta arquitectura permite un seguimiento robusto de activos al aire libre, aprovechando Wi-Fi HaLow para la gestión si es necesario, pero priorizando BLE para la recolección de datos de sensores.
Material Necesario
- 1x MikroTik KNOT Gateway HL9
- 1x Tarjeta SIM LTE Cat 1 bis (o eSIM configurada)
- 1x Fuente de alimentación PoE 802.3af/at o DC 12-57V
- 1x Switch PoE compatible
- 1x Broker MQTT accesible (ej: Mosquitto en VPS)
- Sensores BLE compatibles (iBeacon, Eddystone o personalizados)
- PC con Terminal SSH y Winbox
Pasos
Conecte la placa vía Ethernet/PoE. Acceda a RouterOS v7 vía Winbox o SSH. Actualice el firmware a la última versión estable para asegurar la estabilidad del módulo Quectel EG800Q y del SoC Morse Micro. ``bash /system package update install ``
- Conexión y Actualización
Configure la interfaz LTE para la transmisión de datos. Asegúrese de que el APN sea correcto para su operador. ``bash /interface lte set [find name=lte1] apn="internet" /ip address add address=192.168.88.1/24 interface=lte1 `` Nota: Si usa Ethernet, configure la interfaz ether1 con DHCP o IP estática.
- Configuración de Red de Retorno (LTE)
Active el módulo Bluetooth 5.1 LE para la detección pasiva de anuncios. Configure el modo en "scan" para minimizar el consumo. ``bash /interface bluetooth set [find name=bluetooth1] mode=scan ``
- Activación del Escáner BLE
Defina los parámetros de conexión hacia su broker MQTT. Use TLS para asegurar los intercambios en redes públicas. ``bash /tool mqtt set [find name=mqtt1] broker="mqtt.example.com" port=8883 user="user" password="pass" tls="yes" ``
- Configuración del Flujo MQTT
Cree un script que lea los datos BLE detectados y los formatee en JSON para MQTT. Este script se ejecuta en segundo plano. ``bash /system script add name=ble_to_mqtt source={ :local bleData [/interface bluetooth get [find name=bluetooth1] scan-results] :foreach item in=$bleData do={ :local payload "$($item->mac) : $($item->rssi)" /tool mqtt publish topic="knot/ble/data" message=$payload } } ``
- Creación del Script de Transferencia
Planifique la ejecución del script cada 10 segundos para una recolección casi en tiempo real. ``bash /system scheduler add name=ble_poll interval=10s on-event=ble_to_mqtt ``
- Planificación Automática
Verificación
Verifique que el script se ejecute sin errores en los registros. En su broker MQTT, suscríbase al topic knot/ble/data con un cliente como MQTTX o Mosquitto Sub. Debería ver aparecer las direcciones MAC y los RSSI de los sensores BLE cercanos. También verifique que la conexión LTE permanezca activa mediante /interface lte print.
Para Ir Más Allá
Considere usar Wi-Fi HaLow 915 MHz para crear una red de malla de pasarelas KNOT si despliega varias unidades en un sitio agrícola grande. También puede integrar reglas de filtrado más complejas en el script para transmitir solo sensores específicos, reduciendo así el consumo de datos LTE.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
gnss-position-tracking.pyPython-Bashble-advertising-sensor.inoRouterOS-Scriptlte-failover-monitor.pyPython-Bashnand-storage-cleanup.pyPython-Bashpoe-power-status.inoRouterOS-Scriptrouteros-mqtt-telemetry.inoRouterOS Script