Comunicaciones
La sección Comunicaciones de la interfaz de usuario agrupa todas las interfaces y protocolos en seis pestañas: LAN, Serial y Modbus, Módem, Bluetooth / NTP, MQTT y LoRa.
LAN
En la pestaña LAN se configuran el access point propio del equipo y la conexión a una red WiFi o Ethernet existente.
Access Point
- Habilitar AP — activa o desactiva el access point propio del equipo.
- SSID AP / Contraseña AP — nombre y contraseña de la red que crea el RTU-X. La contraseña de fábrica es
password; se recomienda cambiarla antes de instalar el equipo en campo. Si la contraseña se deja vacía, el access point queda abierto sin seguridad. - Ocultar — oculta el SSID para que no sea visible al escanear redes, aunque sigue siendo accesible si se conoce el SSID y la contraseña.
En esta configuración, la dirección del RTU-X es siempre 192.168.4.1 y DHCP se encuentra habilitado: el equipo le asigna una IP a cada dispositivo que se conecte al access point.
Interfaz de Red WiFi
- Station WiFi / Ethernet — se pueden habilitar ambas interfaces a la vez, además del access point. La opción Ethernet solo está disponible en el modelo DIN.
- SSID / Contraseña — credenciales de la red a la que se conecta el equipo.
- IP fija — si no se marca, el equipo toma la IP por DHCP de la red a la que se conecta; si se marca, se puede configurar una IP estática.
Serial y Modbus
La pestaña Serial y Modbus agrupa la configuración de las interfaces seriales RS-485 (módulos de expansión opcionales) y del servidor Modbus del equipo.
RS-485 Extensión 1 / Extensión 2
Para cada interfaz serial se puede configurar el Baudrate y la Paridad.
Servidor Modbus local
- Modbus Slave ID — el número de esclavo Modbus del RTU-X (por defecto 1).
- Puerto Modbus TCP — el puerto TCP a utilizar para conexiones Modbus TCP (por defecto 502).
Gateway Modbus
Define la interfaz a la que se reenvían los mensajes Modbus cuyo destinatario no coincide con el Slave ID del RTU-X: Sin gateway (responde error a esos mensajes), RS-485 Ext1 o RS-485 Ext2. Mediante esta funcionalidad el RTU-X puede actuar de intermediario para que un cliente se comunique de forma transparente con un dispositivo conectado al bus RS-485 en los módulos de expansión.
Módem
En la pestaña Módem se configuran los parámetros del módem celular, un módulo opcional.
- Tecnología — según el módulo instalado, soporta distintas tecnologías de comunicación y bandas.
- Quectel BG95: LTE Cat-NB1 o LTE Cat-M1 con “down grade” a 2G.
- Cat M1 / NB-IoT - B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B25/B26/B27/B28/B31/B66/B71/B72/B73/B85
- EGPRS 850/900/1800/1900 MHz
- Quectel EG91: LTE con “down grade” a 3G / 2G.
- LTE - B1/B2/B3/B4/B5/B7/B8/B28/B66
- WCDMA - B1/B2/B5/B8
- EGPRS 850/900/1800/1900 MHz
- Quectel BG95: LTE Cat-NB1 o LTE Cat-M1 con “down grade” a 2G.
- Encender módulo al encender RTU-X — modo de funcionamiento normal cuando el RTU-X está siempre encendido y conectado a una fuente estable de alimentación. Si se deshabilita, es posible controlar el encendido y apagado del módem desde el script con la variable
modem_on; se suele usar en aplicaciones de consumo crítico, para encender el módem por períodos cortos y enviar solo la información almacenada en el log. - Aceptar conexiones entrantes — permite que el RTU-X acepte conexiones entrantes en el puerto 502 usado por la interfaz de usuario. Deshabilitada por defecto.
- PIN — el PIN de la SIM, si ésta lo requiere.
- Utilizar GPS — habilita el GPS; la información queda disponible en variables del script.
- Utilizar SMS — habilita el envío y recepción de SMS (ver sección SMS).
- Utilizar datos — habilita la conexión de datos con el APN configurado (APN, usuario y contraseña).
- Bandas — bandas habilitadas para la tecnología seleccionada; los botones Seleccionar todas / Ninguna aceleran la configuración.
Bluetooth / NTP
La pestaña Bluetooth / NTP agrupa la configuración de la conectividad BLE y la sincronización horaria.
Bluetooth
El RTU-X cuenta de base con conectividad BLE 4.2, que puede utilizarse para conectarse al equipo desde la interfaz de usuario y también para actuar como maestro de otros dispositivos BLE, como sensores de temperatura y humedad.
- Habilitar Bluetooth — activa la interfaz.
- Nombre — nombre con el que el equipo se anuncia (por defecto
RTU-X-YYYYYY). - PIN — código solicitado al emparejar. El PIN de fábrica es
123456; se recomienda cambiarlo antes de instalar el equipo en campo.
NTP
- Interfaz — WiFi/Ethernet, módem, o la misma interfaz que se utiliza para la conexión MQTT.
- Servidor — URL o dirección IP del servidor NTP.
- Huso — huso horario relativo a UTC.
MQTT
El protocolo MQTT es un protocolo de comunicaciones sobre TCP/IP que ha sido adoptado como uno de los estándares más utilizados para dispositivos de IoT.
El RTU-X utiliza MQTT para el envío de los registros del log a un servidor en la nube, pero también se utiliza para realizar otras funciones más complejas cuando el RTU-X se encuentra conectado a Thingsboard: la actualización de toda la configuración, la sincronización de variables compartidas o el envío de comandos RPC.
Configuración MQTT
Los parámetros a configurar para la conexión MQTT son los siguientes:
- Interfaz - El RTU-X implementa el protocolo MQTT sobre WiFi/Ethernet y la conexión de datos del módem. Se debe seleccionar la interfaz física a utilizar.
- Formato – Se encuentran disponibles las siguientes opciones, y la pantalla cambia según cuál se elija:
- JSON - Utiliza el formato JSON para el envío de los registros del log.
- Ultralight - Utiliza el formato Ultralight 2.0 para el envío de los registros de log.
- Predix - Utiliza el formato JSON compatible con el MQTT Data Collector de General Electric de acuerdo a lo establecido aquí.
- Thingsboard - En esta opción, el RTU-X se configura para establecer la conexión con un servidor Thingsboard. Telemetry+ de Nettra es una instancia profesional de Thingsboard gestionada por Nettra.
Formato Thingsboard
Formato JSON, Ultralight o Predix
- URI – Define el tipo de conexión, el servidor y el puerto. El URI debe tener el formato “esquema://host:puerto” donde esquema puede ser
mqttomqttsdependiendo si se quiere o no establecer una conexión SSL. Un ejemplo de URI esmqtts://myhost.com:8883. - Access token / Usuario, contraseña y Client ID – Con formato Thingsboard (primera imagen), el campo se simplifica a un único Access token: el mismo valor se usa como usuario y como Client ID, y la contraseña queda vacía (tal como lo exige ThingsBoard). En los demás formatos (segunda imagen) se completan los tres campos Usuario, Contraseña y Client ID por separado, de acuerdo al protocolo MQTT.
- Tópicos (telemetría, atributos, RPC) – Con formato Thingsboard los tópicos son fijos y quedan ocultos; el botón Configuración Telemetry+ completa automáticamente URI y certificado con los valores por defecto de la instancia de Nettra. En los demás formatos, los campos Telemetry Topic, Attribute Topic y Tópico de RPC quedan visibles y son definidos por el usuario.
- Watchdog – En minutos. Permite implementar un mecanismo de seguridad en caso de falla de comunicación: si no se logra establecer la conexión MQTT en el tiempo configurado, el RTU-X se reinicia automáticamente. Con el valor en cero, esta funcionalidad queda deshabilitada.
- Certificado – Certificado del servidor en formato PEM en caso de utilizar SSL para la conexión MQTT. Dejar en blanco si no se usa.
Cuando se utilice la instancia Telemetry+ de Nettra, se debe seleccionar el formato Thingsboard y presionar Configuración Telemetry+ para completar automáticamente URI y certificado; solo resta completar el Access token que será proporcionado por Nettra.
Cuando se habilita MQTT, los datos registrados mediante las sentencias log y report son transmitidos utilizando este protocolo de transporte. Esto no es compatible con la habilitación del protocolo LoraWan.
Ambas funciones se pueden usar con variables de tipo telemetry o attribute.
Integración con Thingsboard
Cuando se selecciona Thingsboard como formato para la conexión MQTT, el RTU-X implementa funcionalidades adicionales además del envío del log por MQTT.
A continuación, se describen estas funcionalidades.
Atributos compartidos
Cuando una variable del script se define con el prefijo shared, el valor de la variable se sincroniza con el valor del atributo compartido en Thingsboard con el mismo nombre si existe.
Esto se logra sin que el usuario tenga que hacer nada especial porque al establecer la conexión MQTT, el RTU-X se suscribe automáticamente a los topicos.
Reporte periódico de atributos internos
El RTU-X publica automáticamente al servidor una lista de variables internas de utilidad. Las mismas son registradas en el sistema como atributos de cliente.
Las siguientes variables se publican cada vez que se establece la conexión con el servidor:
| Variable | Detalle |
| model | RTU-X model (DIN o IP68) y versión de hardware |
| mac_wifi | Dirección MAC del módulo wifi. |
| ext1 | Información del módulo conectado en el sócalo de extensión 1. |
| ext2 | Información del módulo conectado en el sócalo de extensión 2. |
| modem_imei | IMEI del módem (si hay un módem presente en el sócalo de comunicación). |
| modem_imsi | IMSI de la SIM (si hay un módem presente en el sócalo de comunicación). |
Las siguientes variables se envían periódicamente cada 10 minutos:
| Variable | Detalle |
| battery | Porcentaje de batería. |
| battery_status | Estado de funcionamiento de la batería. Puede ser Charged, Charging o No power. |
| internal_temperature | Temperatura interna del RTU-X |
| modem_signal | Nivel de señal del módem en dBm. |
| wifi_signal | Nivel de señal wifi en dBm. |
Publicación de telemetría
En la tabla siguiente se describe el formato de JSON que se publica la telemetría mediante MQTT para cada formato posible.
| Formato | Variable telemetry |
| JSON y Thingsboard | donde XXX es el timestamp en UTC en formato unix en milisegundos de los registros |
| Ultralight 2.0 | ts|TTT|variable1|value|variable2|value
donde TTT es el timestamp en UTC en formato ISO8601 |
| Predix |
|
Todos los registros de log creados con una misma fecha/hora se envían en un mismo paquete MQTT.
Si la conexión se pierde, todos los registros quedan almacenados en el log y se envían cuando se reestablece la conexión.
Publicación de atributos
| Formato | Variable attribute |
| JSON y Thingsboard |
|
| Ultralight 2.0 | variable1|value1|variable2|value2
|
| Predix |
|
Comandos RPC
RPC significa “Remote Procedure Call” y se utiliza para enviar comandos y consultas desde un servidor. El formato de envío de comandos y l respuesta a dichos comandos depende del formato utilizado. A continuación se detallan los comandos disponibles.
Formato Thingsboard
| Función | Descripción | Comando | Respuesta |
| set | Modifica una variable de tipo telemetry, attribute o shared, donde NAME es el nombre de la variable y VALUE el valor |
| OK
|
| get | Consulta una variable telemetry, attribute o shared, donde NAME es el nombre de la variable |
| VALUE
|
| resend_log | Solicita reenvío de los últimos N registros almacenados en el log de eventos |
| OK
|
| unixtime | Define la hora del RTU-X en GMT-0. T es el instante actual en formato unix |
|
|
| localtime | Define la hora local del RTU-X a partir de año, mes, día, horas, minutos y segundos del instante actual |
|
|
| timezone | Define el timezone del RTU-X, donde N es el nuevo huso horario |
| OK
|
| reset | Produce un reset del RTU-X |
| Sin respuesta |
| calendarEvents | Define eventos de calendario que dan valor a las variables calendar declaradas en el script. Cuando |
| Sin respuesta |
El comando RPC calendarEvents no es la única forma de definir eventos de calendario. Hay dos:
- Eventos en la nube — se cargan desde la plataforma Telemetry+, que por detrás envía este mismo comando RPC al RTU-X.
- Eventos locales — se cargan directamente desde la sección Eventos de la interfaz de usuario, sin depender de Telemetry+ ni de conexión a internet.
Los modos Nube y Local son excluyentes: solo una de las dos fuentes de eventos está activa a la vez.
Formato JSON
| Función | Descripción | Comando | Respuesta |
| set | Modifica una variable de tipo telemetry, attribute o shared, donde NAME es el nombre de la variable y VALUE el valor |
|
|
| get | Consulta una variable telemetry, attribute o shared, donde NAME es el nombre de la variable |
|
|
| resend_log | Solicita reenvío de los últimos N registros almacenados en el log de eventos |
|
|
| unixtime | Define la hora del RTU-X en GMT-0. T es el instante actual en formato unix |
|
|
| localtime | Define la hora local del RTU-X a partir de año, mes, día, horas, minutos y segundos del instante actual |
|
|
| timezone | Define el timezone del RTU-X, donde N es el nuevo huso horario |
|
|
| reset | Produce un reset del RTU-X |
| Sin respuesta |
Formato Ultralight
| Función | Descripción | Comando | Respuesta |
| set | Modifica una variable de tipo telemetry, attribute o shared, donde NAME es el nombre de la variable y VALUE el valor | setNAME|VALUE
|
|
| get | Consulta una variable telemetry, attribute o shared, donde NAME es el nombre de la variable | getNAME
|
|
| resend_log | Solicita reenvío de los últimos N registros almacenados en el log de eventos | resend_log|N
|
|
| unixtime | Define la hora del RTU-X en GMT-0. T es el instante actual en formato unix | unixtime|T
|
|
| localtime | Define la hora local del RTU-X a partir de año, mes, día, horas, minutos y segundos del instante actual | localtime|Y/m/d,H:M:S
|
|
| timezone | Define el timezone del RTU-X, siendo N el nuevo huso horario | timezone|N
|
|
| reset | Produce un reset del RTU-X | reset
| Sin respuesta |
LoraWan
El RTU-X puede conectarse a una red LoraWan desde la pestaña LoRa. Para ello, en el zócalo WAN se instala un módulo RAK3172 al que se le puede conectar una antena externa.
General
- Encender módulo al encender RTU-X — modo de funcionamiento normal cuando el RTU-X está siempre encendido y conectado a una fuente estable de alimentación. Si se deshabilita, es posible controlar el encendido y apagado del módulo desde el script con la variable
modem_on. - Banda — es posible seleccionar entre US915 y AU915.
- Subbandas — habilitan canales tomados de a ocho: la subbanda 1 habilita los canales 0 a 7, la 2 habilita los canales de 8 a 15, etc.
- Modo de activación — es posible seleccionar entre OTAA y ABP.
- Clase — dependiendo de las restricciones de consumo eléctrico de la solución, es posible seleccionar entre clase A y C.
- Data Rate — el data rate a utilizar, de acuerdo a la banda seleccionada.
- ADR (Adaptive Data Rate) — habilita o no esta funcionalidad.
- Potencia TX — índice de potencia de transmisión según el estándar LoRaWAN: 0 es la potencia máxima permitida por la banda, y cada valor superior la reduce un paso.
- Confirmación — habilita o no el envío de mensajes con solicitud de confirmación.
Credenciales
Las claves y direcciones necesarias para establecer conexión con una red LoraWan deben ser definidas por el usuario: AppEUI y AppKEY en modo OTAA, o DevADDR, NwksKEY y AppsKEY en modo ABP (los campos que no aplican al modo de activación elegido quedan deshabilitados). El DevEUI del dispositivo es el definido por el fabricante del módulo y se muestra de solo lectura una vez que el módulo está habilitado.
Envío y recepción de datos
Al igual que con MQTT, cuando se utiliza LoraWan existen mecanimos de intercambio de datos con una plataforma de IoT.
Para lograr la diferenciación entre tipos de datos y comandos, se utilizan varios puertos según se muestra en la siguiente tabla
| Puerto | Descripción |
| 100 | Es utilizado para la publicación de datos almacenados en el log de eventos cuando se ejecutan las funciones log y report en el script |
| 101 | Se utiliza para publicar atributos de cliente, es decir, las variables declaradas como attribute en el script. |
| 102 | Se utiliza para recibir valores de atributos compartidos. |
| 103 | Se utiliza para solicitar la actualización de atributos compartidos |
| 104 | Se utiliza para la implementación de comandos RPC y las respuestas que correspondan |
Codificación de datos
Dado que los nombes de las variables que se transmiten son definidos por el usuario en el script del RTU-X (variables tipo telemetry), es necesario incluir los nombres de las variables reportadas además de sus valores. Entonces, a los efectos de enviar y recibir datos minimizando el overhead se utiliza una variante del formato Ultralight.
En todos los paquetes de datos que contienen más de un elemento, dichos elementos son separados por el caracter “|”. Por ejemplo, los atributos son reportados como nombre|valor.
Publicación de telemetría
Cuando en el script se ejecuta la sentencia log o report utilizando variables de tipo telemetry, los valores son almacenados en el log de eventos del RTU-X. Si está establecidad la conexión con un gateway, los datos son transmitidos inmediatamente con usando un payload con el formato
ts|key1|value1|key2|value2|...|keyN|valueN
Siendo ts la estampa de tiempo en formato unix correspondiente al instante en que se ejecutó la sentencia log.
keyn y valuen son el nombre y valor de cada una de las variables reportadas
Publicación de atributos
Si la sentencia log se utiliza con variables tipo attribute, el formato utilizado es el mismo pero sin estampa de tiempo
key1|value1|key2|value2|...|keyN|valueN
Comandos RPC
Es posible ejecutar comandos RPC via LoraWan. La tabla siguente muestra los comandos implementados
| Función | Descripción | Comando | Respuesta |
| set | Modifica una variable de tipo telemetry, attribute o shared, donde NAME es el nombre de la variable y VALUE el valor | setNAME|VALUE
|
|
| get | Consulta una variable telemetry, attribute o shared, donde NAME es el nombre de la variable | getNAME
| NAME|VALUE
|
| resend_log | Solicita reenvío de los últimos N registros almacenados en el log de eventos | resend_log|N
|
|
| unixtime | Define la hora del RTU-X en GMT-0. T es el instante actual en formato unix (*) | unixtime|T
|
|
| localtime | Define la hora local del RTU-X a partir de año, mes, día, horas, minutos y segundos del instante actual (*) | localtime|Y/m/d,H:M:S
|
|
| timezone | Define el timezone del RTU-X, siendo N el nuevo huso horario | timezone|N
|
|
| reset | Produce un reset del RTU-X (*) | reset
| Sin respuesta |
(*) solo tiene sentido su utilización si se configura operación en clase C.
Testing con gateway Milesight y Node-Red
A continuación está disponible un flow de Node-Red utilizado para testear el envío y recepción de datos.
En el mismo se utiliza un nodo HTTP para ejecutar un método POST que pone los datos en la cola de datos de envío al dispositivo conectado vía LoraWan.
Para que el flow funcione correctamente es necesario configurar el DEVEUI del RTU-X. El RTU-X debe estar configurado en el gateway para que los datos recibidos ingresen al flow. También es necesario configurar la dirección ip del gateway y las credenciales correctas para obtener el jwt necesario para que el HTTP POST funcione correctamente.