¿Buscas alguna otra cosa?
Table of Contents
Detalles del escenario
Los routers Titan y módems con firmware MTX-Tunnel disponen de la capacidad de envío de datos a plataformas web. Datos que pueden recogerse de sensores, pero también datos propios, como puede ser su dirección IP, su cobertura, versión de firmware, etc. También es posible comunicarse con ellos desde una plataforma web para ejecutar acciones, como puede ser un cambio de configuración o la ejecución de un reset.
Esta nota de aplicación pretende ser una utilidad para aquellos usuarios que pretendan construir una pequeña plataforma web de recogida de datos o, simplemente, de supervisión de sus propios equipos.
Envío de datos de los routers Titan y módems con MTX-Tunnel
Los routers Titan y los módems MTX-Tunnel disponen de 2 tipos de envío de datos. Por un lado los datos de estado propio (IP, cobertura, …). Por otro lado los datos de su datalogger interno. Ambos tipos de datos pueden ser enviados vía HTTP o HTTPS a la plataforma web.
Imaginemos que queremos realizar una sencilla página web donde se muestre una lista con los dispositivos MTX que tenemos instalados en campo. En dicha página mostraremos, para cada MTX, su nombre, su dirección IP actual, el nivel de cobertura GSM (rssi/csq), la fecha y hora de la última vez que el MTX se comunicó con la plataforma, el modelo de MTX y la versión de firmware.
Es decir, configuraremos los routers Titan y módems con firmware MTX-Tunnel para que periódicamente (o cada vez que éstos cambien de dirección IP) se comuniquen con una plataforma web para informar sobre su estado. A modo de ejemplo, queremos diseñar una página web como la mostrada en la siguiente figura:
Los Módems con firmware MTX-Tunnel y los Router Titan pueden enviar sus datos de estado a una Plataforma Web vía HTTP GET/ HTTPS GET. En ambos casos pueden enviarse los datos encapsulados en un objeto JSON, lo que simplifica el uso de los mismos así como permite la escalabilidad para nuevos datos enviados en futuras versiones de firmware.
Los datos de estado enviados por los Módems con firmware MTX-Tunnel y los Router Titan son muy similares. A continuación se muestra un ejemplo de envío de cada uno de ellos.
Ejemplo de envío de datos de estado de un módem con firmware MTX-Tunnel:
{IMEI:357973041110401,P:ID012345678,IP:ID1122334455,CSQ:20,VER:8.10, AUX:10,MOD:1}
Donde:
IMEI: identificativo interno del MTX
P: KEYID del dispositivo definido en el parámetro DNS_password
IP: IP actual del MTX
CSQ: Cobertura gsm del MTX (0 … 31)
VER: Versión de firmware del MTX-Tunnel
AUX: CustomData
MOD: modelo de módem MTX
Ejemplo de envío de datos de estado de un Router Titan:
{TYPE:DNS,IMEI:357044060009633,IP:95.126.36.167,P:ID12345678,RSSI:16,MOD:101,VER:3.00.3.15}
Donde:
TYPE: Indica el tipo de información enviada
IMEI: i dentificativo interno del MTX
P: KEYID del dispositivo definido en el parámetro DNS_password
IP: IP actual del MTX
RSSI: Cobertura gsm del MTX (0 … 31)
VER: Versión de firmware del MTX-Tunnel
MOD: modelo terminal MTX
Configuración de los routers Titan para envío de datos a la plataforma web
La configuración de un router Titan para enviar de forma periódica sus datos de estado a una Plataforma Web es muy sencilla. Tan sólo debe irse al menú de configuración “Other> Private DynDNS” y configurar el router de forma análoga a la siguiente figura:
Activamos la casilla “Enabled”, especificamos el modo “HTTP GET”, indicamos la URL completa donde volcar los datos (sin http / https) como, por ejemplo, “www.metering.es/json/set.asp?data=” y luego, en el campo ID podemos indicar el KEYID del dispositivo. Éste será usado por la plataforma para identificar el dispositivo. En el campo “Period” indicamos el periodo (en minutos) de envío de datos de estado a la Plataforma Web. Recuerde que en caso de producirse un cambio de IP en el Router también va a realizar un envío de datos de estado, informando de su nueva IP inmediatamente.
Con los datos configurados en la pantalla anterior, el router Titan, cada 60 minutos, enviará sus datos de estado a “www.metering.es/json/set.asp?data=” es decir, que de la variable “data” recuperaremos el objeto JSON con los datos de estado.
Configuración de los módems para envío de datos de estado a la plataforma web
Para la configuración de un módem con firmware MTX-Tunnel, en lugar de realizar la configuración de manera gráfica se realiza de la manera habitual MTX-Tunnel, a través de un fichero de configuración de nombre “config.txt”. Bastaría con añadir las siguientes líneas al fichero de configuración:
Donde:
DNS_enabled: a “on” indica que los datos de estado deben enviarse de forma periódica
DNS_mode: a “http” indica que debe usarse el método HTTP GET
DNS_httpMode: a “json” indica que los datos enviados deben tener el formato JSON
DNS_server: indica la URL completa a donde queremos enviar los datos
DNS_period: especifica el periodo (en segundos) de envío de datos de estado
DNS_aux: puede usarse para el envío de datos de usuario
DNS_extended: a “off” indicamos que no queremos que nos envíe las E/S digitales y analógicas. Si quisiéramos que el módem incorpore en el JSON dichos datos pondríamos “on”
Con esta configuración, el Módem con firmware MTX-Tunnel enviará sus datos de estado al www.metering.es/json/set.asp?data= cada 1800 segundos (30 minutos).
Envío de datos desde la plataforma web hacia un router Titan o un módem
En este punto ya estaríamos en disposición de crear una Plataforma Web de recogida del estado de los dispositivos remotos. Algo como la que se muestra a continuación. En ella, a partir de los datos recibidos periódicamente de cada dispositivo podremos listar dicha información, esto es, su última IP, el valor de cobertura, etc.
Esto es estupendo, podemos ver el estado de nuestros dispositivos remotos en tiempo real, detectar problemas (de comunicación, baja cobertura, etc). Pero probablemente necesitemos en alguna ocasión realizar alguna acción sobre el Módem / Router desde la propia plataforma web. Imaginemos que queremos conmutar un relé, ¿cómo lo haríamos?
Tanto los Router Titan como los Módems con firmware MTX-Tunnel disponen de una API propia para realizar ciertas acciones. Este API consiste básicamente en un conjunto de comandos AT. Si usted es usuario de los Router Titan y módems con firmawre MTX-Tunnel sabrá que dichos comandos AT pueden enviarse al módem de muchas maneras en función del dispositivo: por socket TCP, por
Telnet, por HTTP GET, por SMS, por puerto RS232/485, por Modbus TCP, por SNMP, … Consulte el manual de usuario para descubrir todos los comandos AT disponible en cada plataforma así como la manera de usarlos.
Para el presente ejemplo nos vamos a centrar en los comandos:
AT^SSIO=0,0 Permite activar una salida digital en un módem
AT^MTXTUNNEL=SETRELAY,0,1 Permite activar el relé interno del router Titan
Imaginemos que queremos conmutar la salida digital del módem o el relé del Router Titan desde la Plataforma Web. Pues para ello la Plataforma Web únicamente tendría que enviar, como respuesta a un envío HTTP GET del Módem / Router, algo tan sencillo como:
<MTXTUNNELR>AT^SSIO=0,0</MTXTUNNELR> para MTX-Tunnel
<MTXTUNNELR>AT^MTXTUNNEL=SETRELAY,0,1</MTXTUNNELR> para Titan
Así de fácil. En cuanto el Módem o Router se conecten a la plataforma para enviar datos, la plataforma web enviará este comando y podremos observar cómo el relé conmuta.
Cambio de la configuración completa de un módem MTX-Tunnel desde la web
Hay varias formas de cambiar la configuración completa de un módem MTX-Tunnel desde una plataforma web. El procedimiento sería exacto a ejemplo anterior de la conmutación de un relé. El único cambio que debemos realizar es el propio comando AT. En este caso, el comando respuesta que enviaríamos sería:
<MTXTUNNELR>AT^MTXTUNNEL=SETCONFIG, COMM_baudrate: 115200 COMM_bitsperchar: 8 …. …. DNS_AUX: 11 TELNET_enabled: on TELNET_login: user TELNET_password: 1234 CSD_enabled: off </MTXTUNNELR>
Una vez hecho esto, el módem se reiniciaría automáticamente y tendríamos la nueva configuración.
¿Cómo podemos saber la versión de configuración que tiene un determinado módem MTX-Tunnel para que la plataforma web pueda decidir si debe actualizar su configuración o no actualizarla?
Una manera sencilla es utilizar el parámetro de configuración DNS_AUX. Recordemos, como se indicó en las primeras páginas de esta nota de aplicación, cada vez que el módem MTX-Tunnel se comunica con la plataforma web envía un parámetro AUX.
{IMEI:357973041110401,P:ID012345678,IP:ID1122334455,CSQ:20,VER:8.10, AUX:10,MOD:1}
Ese parámetro corresponde con el valor DNS_AUX del fichero de configuración “config.txt”. Por ejemplo, si recibimos el parámetro AUX del módem MTX-Tunnel con un valor de “10” y éste no coincide con el de la plataforma (imaginemos que la versión de configuración actual es la 11), pues haremos que la plataforma web envíe la nueva configuración al MTX-Tunnel. Evidentemente la nueva configuración enviada al módem contendría el campo DNS_AUX: 11.
A modo de esquema:
El módem con firmware MTX-Tunnel envía de forma periódica con su estado. El campo AUX arroja un valor “10” porque en su fichero de configuración el parámetro DNS_aux vale “10”
La Plataforma Web detecta que la configuración “10” está obsoleta y le envía una nueva configuración, en la cual el parámetro DNS_aux valdrá “11”.
Envío de comandos de la plataforma a dispositivos en tiempo real
Hasta el momento se ha mostrado cómo construir una pequeña plataforma web de control que nos permite recibir periódicamente el estado de los módems MTX-Tunnel y routers Titan y ejecutar una acción sobre ellos cada vez que se recibe una comunicación. En muchos escenarios esto puede ser suficiente, pero en otros puede ser necesario ejecutar una acción sobre un módem / router en un momento determinado, sin necesidad de tener que esperar a que el módem se comunique con la Plataforma Web. Para ello los Módems MTX-Tunnel y los Router Titan incorporan una configuración especial. Dicha configuración hace que estos dispositivos abran un socket TCP de manera permanente contra la dirección IP (o DNS) de la Plataforma Web a un determinado puerto TCP. Mediante dicha conexión TCP permanente podremos enviar comandos AT a los Módem MTX-Tunnel y Router Titan en cualquier momento, es decir, ejecutar acciones en tiempo real.
En este caso obviamente tendremos que desarrollar una página web que soporte sockets server. Esto es, una página php, asp.net, java, … que permita gestionar dichas conexiones provenientes de cada equipo. En esta nota de aplicación no se va a entrar en la programación de la página web, sino en la configuración apropiada de los Modems MTX-Tunnel y Router Titan para conseguir establecer dicho canal de comunicación en tiempo real. En los siguientes puntos de esta nota de aplicación se detalla cómo configurar los Router Titan y los Módems con firmware MTX-Tunnel para poder recibir comandos remotamente de una Plataforma Web en tiempo real.
Configuración de routers para recibir comandos desde plataforma en tiempo real
Para poder enviar comandos en tiempo real a un router Titan desde una plataforma web debemos configurar en el router un socket de comunicación TCP que quedará establecido de forma permanente contra la plataforma. Para ello debemos configurar el router Titan en el menú “Other > Console” y configuramos los diferentes parámetros de forma análoga a como indica la siguiente figura:
Es decir, activamos la consola en modo “TCP Client” (conexión DESDE el módem HACIA la Plataforma Web). Indicamos la dirección IP(dns) y puerto TCP a donde queremos que se conecte el Router Titan, un KEYID con el que el router TITAN se identificará en la Plataforma Web y un periodo de reintento. Es decir, un tiempo de pausa tras el que, en caso de caída del socket, se reintenta de nuevo la conexión.
El KEYID es lo primero que el Router Titan transmitirá por el socket una vez establecido. Debe ser usado por la Plataforma Web para identificar al equipo remoto y aceptar o no una conexión.
Una vez establecido el LINK es posible enviar cualquier comando hacia el módem. Por ejemplo, si en un momento dado queremos que un Router Titan inicie una conexión OpenVPN contra otro router, podríamos enviar un comando como…
<MTXTUNNELR>AT^MTXTUNNEL=OVPNX,10,1.2.3.4,1194</MTXTUNNELR>
… y se abriría una sesión OpenVPN cliente de 10 minutos contra la IP 1.2.3.4 y puerto 1194.
Más ejemplos:
<MTXTUNNELR>AT^MTXTUNNEL=SETRELAY,0,1</MTXTUNNELR>
Activaría el relé 1 del router Titan
<MTXTUNNELR>AT^MTXTUNNEL=REBOOT</MTXTUNNELR>
Haría un reset del Router Titan
<MTXTUNNELR>AT^MTXTUNNEL=SETPARAM,COM1_BAUDRATE, 9600</MTXTUNNELR>
Cambiaríamos la configuración del baudrate del puerto serie COM1 del router
<MTXTUNNELR>AT^MTXTUNNEL=GETPARAM,COM1_BAUDRATE</MTXTUNNELR>
Leeríamos desde la plataforma la configuración del baudrate del puerto serie COM1 del router.
Etc.
Configuración de módems para recibir comandos desde plataforma en tiempo real
Para poder enviar comandos en tiempo real desde nuestra Plataforma Web a un Módem MTX-Tunnel debemos configurar en el módem un socket de comunicación TCP que quedará establecido de forma permanente contra la Plataforma Web. Para ello debemos configurar el Módem MTX-Tunnel de la siguiente manera, incluyendo de forma análoga las siguientes líneas de configuración en el archivo “config.txt”.
Donde:
LINK_enabled: a “on” indica que queremos establecer el LINK para control el tiempo real
LINK_ip: IP o DNS de la Plataforma Web
LINK_port: puerto TCP de la Plataforma Web al que se conectará el módem
LINK_retryPeriod: indica los segundos de pausa antes de restablecer el socket, en caso de caída
LINK_timeout: indica los segundos para restablecer el socket en caso de ausencia de transferencia de datos en el mismo
LINK_ keyId: es la cadena identificativa que enviará el Módem MTX-Tunnel a la Plataforma Web para identificarse
Una vez establecido el LINK es posible enviar cualquier comando desde la Plataforma Web hacia el Módem MTX-Tunnel. Por ejemplo, si en un momento dado queremos conocer la cobertura GSM del módem, bastaría con enviar desde la Platafoma Web el comando:
<MTXTUNNELR>AT+CSQ</MTXTUNNELR>
… y obtendríamos el nivel de cobertura GSM del módem en ese instante.
Más ejemplos:
<MTXTUNNELR>AT^MTXTUNNEL=GETIOS</MTXTUNNELR>
… y leeríamos desde la plataforma web el estado de todas las entradas digitales y analógicas del módem.
<MTXTUNNELR>AT^MTXTUNNEL=SETPARAM,COMM_baudrate,9600</MTXTUNNELR>
… y cambiaríamos el baudrate del puerto principal del módem a 9600 baudios.
<MTXTUNNELR>AT^MTXTUNNEL=GETPARAM,COMM_baudrate</MTXTUNNELR>
… y leeríamos la configuración del parámetro baudrate del puerto principal del módem.
<MTXTUNNELR>AT+CFUN=1,1</MTXTUNNELR>
… y haríamos un reset en el módem.
<MTXTUNNELR>AT^MTXTUNNEL=SETIO,0,0</MTXTUNNELR>
… y activaríamos el relé1 (o salida digital) del módem.
<MTXTUNNELR>AT^MTXTUNNEL=READWAVETHERM,1A2356764511</MTXTUNNELR>
… y leeríamos la temperatura revuelta por el sensor de Radio Wavenis con MAC 1A2356764511.
Etc.
Recogida de datos de sensores enviados por módems/routers
Tanto los Módems con firmware MTX-Tunnel como los Routers Titan son capaces de enviar datos de sensores que ellos mismos recogen de forma autónoma. Sensores de temperatura, contadores de pulsos, entradas analógicas, dispositivos serie genéricos, etc.
Del mismo modo que el envío de datos de estado, el envío de datos de sensores se realiza mediante el envío de un objeto JSON. Consulte el manual general del MTX-Tunnel o de los Routers Titan para más información sobre los parámetros del objeto JSON para cada tipo de sensor.