¿Buscas alguna otra cosa?

Tunnel – Conexión de MTX-Tunnel con Plataforma de Control mediante Socket TCP dedicado.

Detalles del escenario:

  • Disponemos de un PLC Modbus RTU. Este PLC dispone en su memoria interna de una serie de variables/registros (por ejemplo, una temperatura y 3 contadores, …) las cuales deben leerse y enviarse periódicamente a un servidor web
  • Por ello el módem MTX debe interrogar periódicamente, cada minuto, por un puerto serie, al PLC para leer dichos registros. Los registros a leer son, para la temperatura el registro nº20, y los contadores están en los registros 21,22 y 23 respectivamente
  • Por otro lado, el módem MTX debe conectarse a una plataforma MQTT y enviar los los registros modbus leídos
  • El módem MTX también debe enviar a la plataforma MQTT información de su estado cada 15 minutos (información de su IP, cobertura, tecnología usada (2G/3G/4G), etc.)
  • Por último, debe poderse enviar comandos AT al módem vía MQTT, para poder realizar operaciones de cambio de configuración, reset remoto, etc. Se desea también poder enviar los comandos AT desde un móvil vía MQTT

Solución: MTX-Tunnel firmware + MTX-Java-IoT/MTX-Java-T/MTX-Java-T2

Archivo de configuración config.txt:

Configuración Observaciones
COMM2_baudrate: 9600
COMM2_bitsperchar: 8
COMM2_autorts: off
COMM2_autocts: off
COMM2_stopbits: 1
COMM2_parity: none
GPRS_apn: movistar.es
GPRS_login: MOVISTAR
GPRS_password: MOVISTAR
GPRS_timeout: 0
MTX_PIN: 0000
MTX_mode: none
MTX_model: 199801436
MTX_portAux: modbusmaster
MTX_TPProtocol: ntp
MTX_TPServer: ntp.roa.es
MTX_TPServer2: es.pool.ntp.org
MTX_ping: 35
MTX_pingIP: 8.8.8.8
MTX_rssiLevel: 10
SMS_allPhones: on
SMS_sendIP: on
SMS_ATEnabled: on
SMS_ATResponse: on
FIREWALL_enabled: off
LOGGER_enabled: on
LOGGER_registerSize: 300
LOGGER_numRegistersFlash: 1500
LOGGER_mode: mqtt
LOGGER_mqttTopic: [IMEI]/logger
MQTT_enabled: on
MQTT_server: tcp://test.mosquitto.org:1883
MQTT_id: [IMEI]
MQTT_login:
MQTT_password:
MQTT_attopic1: [IMEI]/AT
MQTT_atrtopic: [IMEI]/ATR
MQTT_qos: 1
MQTT_keepalive: 60
MQTT_persistent: off
MODBUS_address: 1
MODBUS_start: 20
MODBUS_numwords: 4
MODBUS_readCommand: 3
MODBUS_period: 60
DNS_enabled: on
DNS_mode: mqtt
DNS_mqttTopic: [IMEI]/dns
DNS_extended: on
DNS_period: 30
Data rate of communication of serial port
Number of bits
CTS Hardware flow control deactivated
RTS Hardware flow control deactivated
1 stop bit
No parity
APN GPRS provided by the GSM operator
GPRS Login
GPRS Password
Modem is always GPRS connected
SIM Card PIN
No gateways
Modem is configured as TCP server
AUXILIAR COM port used as master modbus
Time synch. protocol
Time server (the MTX must sync the time)
Backup time server
Ping time to oversee connection
Google IP (f.e.) to ping
AWe activate the MTX-65i coverage led
IP by SMS authorized
SMS AT responses activated
IP by SMS authorized
AT by SMS allowed
Firewall disabled
Logger enabled
Max. size of MTX internal registries
Max. number of MTX internal registries
MQTT sending mode
Sending topic of internal datalogger data
MQTT enabled
Broker MQTT to be used
Identification of the equipment in the broker
No username
No password
MTX topic to receive AT commands
Topic where MTX sends answers to commands
QoS established
60 seconds keepalive
No persistence
Modbus address of the equipment to be read
Address of the initial modbus registry to be read
Number of registries to be read from the initial
Reading command
A reading is made every 60 seconds
Status data sending activated
MQTT sending mode
Topic where status data will be sent to
Sending extended data (I/O, ADCs, etc.)
Every 30 seconds a sending will be made

Detalles:

  • El resumen de este ejemplo es el siguiente: el módem va leyendo periódicamente, cada 15 minutos una serie de registros ModBus del PLC y los va enviando mediante un objeto JSON a un bróker mqtt (utilizamos el gratuito test.mosquitto.org para esta prueba). El MTX enviará los datos del datalogger (donde almancena internamente los registros modbus leídos) al bróker MQTT, concretamente al topic [IMEI]/logger (El MTX substituirá el tag [IMEI] por su imei real). En caso de no poder enviar el registro (por no haber cobertura 2G/3G/4G en ese momento o estar el broker caído) almacena los datos en memoria para enviarlos posteriormente
  • También es posible enviar comandos AT al módem vía MQTT desde un teléfono móvil. Para ello el módem MTX se subscribe al topic indicado en el parámetro MQTT_attopic1. Todos los comandos AT enviados desde un teléfono móvil u otro dispositivo a dicho topic, serán recibidos por el módem y ejecutados. La respuesta a dicho comando AT el módem la envía al bróker al topic configurado en el parámetro MQTT_atrtopic
  • Recuerde que puede especificar 3 topics para recibir comandos AT: MQTT_attopic1, MQTT_attopic2, MQTT_attopic3. Por ejemplo, podría configurar MQTT_attopic1 para recibir comandos AT exclusivamente ese módem. MQTT_attopic2 para que lo reciban un grupo de módems. Y MQTT_attopic3 para que lo reciban de forma simultánea todos los módems de su instalación
  • El objeto JSON enviado al topic LOGGER_mqttTopic está codificado de la siguiente manera, a modo de ejemplo:
    {“IMEI”:353234028103206,”P”:””,”TYPE”:”MODB”,”A”:1,”TS”:”20/08/12 08:31:44”,”ST”:20,”V1”:23,”V2”:275,”V3”:274,”V4”:32765}
    Es decir, el servidor web recibe un objeto JSON con el IMEI (IMEI) del módem, la dirección modbus del equipo (A), el time stamp (TS) de cuando se han leído los datos modbus, la dirección inicial leída (ST) y V1,V2… con cada una de las variables leídas
  • Para probar este ejemplo, vamos a usar la aplicación MyMQTT que puede encontrar en
    Google Play de Android https://play.google.com/store/apps/details?id=at.tripwire.mqtt.client. Una vez instalada en su teléfono móvil, pulse en el botón “Settings”, como puede ven indicada en la siguiente pantalla.

    En la sección settings introduzca la dirección del bróker MQTT a utilizar. Obviamente tenemos que utilizar el mismo bróker que tenemos configurado en el módem MTX, que en este caso es test.mosquitto.org en el puerto 1883. No indicamos ni user ni password, ya que como comentamos anteriormente, test.mosquitto.org no los admite. Lo hacemos como se indica en la siguiente figura, y pulsamos en el botón “Save”.

    Nos subscribirnos a 3 topics. Tenemos puesto que envíe los datos al topic [IMEI]/logger, en la aplicación del móvil nos subscribiremos a dicho topic, aunque indicando en este caso el IMEI del módem de forma numérica. Puede encontrar el IMEI de su módem MTX en la etiqueda inferior de la caja. Exactamente los mismo para los datos de estado, que el módem enviará al topic [IMEI]/dns. El módem también envía las respuestas a comandos AT al topic [IMEI]/ATR, por lo que, como queremos ver las respuetas a los comandos AT que enviemos desde el teléfono móvil al módem, introduciremos dicho topic. Al final, tenemos 3 topicsl, como puede verse en la siguiente figura:

    Una ver realizados estos pasos, si alimentamos el módem MTX, empezaremos a recibir los datos modbus y DNS enviados por el módem. El DNS cada 30 segundos, los modbus cada 2 minutos, tal y como tenemos configurado:

    Ahora, por último, vamos a enviar un comando AT al módem vía MQTT desde el teléfono móvil. En este caso vamos a enviar un comando AT para conocer la cobertura GSM, pero podríamos enviar cualquier comando AT (para realizar un reset, para leer la configuración, para cambiarla, para activar un relé, etc). Para ello vamos al menú “Publish” e introducimos el comando tal y como se muestra en la siguiente figura:

    Una vez pulsado el botón “publish”, el comando se ejecutará en el módem. Al habernos
    subscrito a las respuestas del mismo, podemos ver la respuesta también: