¿Buscas alguna otra cosa?
Detalles del escenario:
- Se dispone de un camión frigorífico que transporta mercancía refrigerada. Se precisa instalar un dispositivo de control de localización GPS que además permita la monitorización de la temperatura del remolque así como el control de la puerta del remolque
- Por ello el dispositivo de localización GPS debe tomar una posición GPS cada 60 segundos y enviar la posición a un servidor centrar vía MQTT. En los datos enviados debe figurar un campo con la temperatura recogida en ese momento (la sonda de temperatura debe permitir un rango de lectura de entre -50ºC y 80ºC). Así mismo también tiene que poderse detectar la apertura de la puerta de remolque. En caso de detectarse apertura, el sistema debe recoger información sobre el momento de la apertura (fecha/hoar) así como enviar la posición GPS de donde se produjo la apertura
- El camión circulará por lugares donde puede no haber cobertura 2G/3G/4G. Para no perder datos de posición, temperatura o apertura de puerta, el dispositivo debe almacenar en su memoria flash todos los datos para enviarlos cuando retorne la conectividad 2G/3G/4G
Solución: MTX-Tunnel firmware + MTX-Java-IoT/MTX-Java-T/MTX-Java-T2 Archivo de configuración config.txt para socket TCP:
Configuración | Observaciones |
COMM_baudrate: 9600 COMM_bitsperchar: 8 COMM_autocts: off COMM_autorts: off COMM_stopbits: 1 COMM_parity: none COMM_power: on COMM2_baudrate: 9600 COMM2_bitsperchar: 8 COMM2_autocts: off COMM2_autorts: off COMM2_stopbits: 1 COMM2_parity: none GPRS_apn: movistar.es GPRS_login: MOVISTAR GPRS_password: MOVISTAR GPRS_timeout: 0 GPS_mode: logger GPS_period: 60 TEMPERATURE_enabled: on TEMPERATURE_period: 0 MTX_mode: none MTX_pin: 0000 MTX_model: MTX-4G-JAVA-IOT-STD-N-GPS MTX_atLimited: off MTX_numGSMErrors: 180 MTX_ping: 30 MTX_pingIP: 8.8.8.8 MTX_redLed: gps MTX_TPServer: es.pool.ntp.org MTX_TPServer2: 2.europe.pool.ntp.org MTX_TPProtocol: ntp SMS_allPhones: on SMS_sendIP: on SMS_ATEnabled: on SMS_ATResponse: on FIREWALL_enabled: off TELNET_enabled: on TELNET_login: user TELNET_password: 1234 TELNET_port: 20023 | Serial port baud rate 8 bit data No flow control No flow control 1 stop bit No parity Activation of the port power lines Serial port baud rate 8 bit data No flow control No flow control 1 stop bit No parity APN GPRS provided by the GSM operator GPRS Login GPRS Password Permanent 3G session GPS working vía logger Attempt to send GPS location every 60 sconds Temperature sensor enabled Temperature will be read along with GPS We will not use TCP serial port gateways The SIM card PIN (if there is any) MTX modem model being used No limits for AT commands N. of GSM errors to reset Ping every 30 minutes without comms IP address to ping Red LED lights when there’s NO valid GPS location Time server 1 Time server 2 Time synch protocol Commands SMS sent from any mobile phone The modem will send IP to a missed call or SMS It is possible to send commands to MTX via SMS SMS replies to sent AT commands Any incoming connection form any IP is allowed Telnet is activated Telnet login Telnet password Port chosen for Telnet |
Detalles:
- Conexiones: MTX-4G-JAVA-IOT-STD-N-GPS tiene un puesto serie en el conector DB9. En ese conector se conectará el sensor de temperatura MTX-TEMP-RS232. Ambos dispositivos son DCE (conector DB9 hembra) por lo que deberá utilizarse un convertidor Null-Modem DB9-DB9.
Para la detección de puerta abierta/cerrada utilizaremos la entrada digital GPIO2. Esa, según la tabla del AnexoA, corresponde con el PIN11 del conector DB15 del módem MTX. Es decir, si conectamos el PIN11 con el PIN14 del conector DB15 el módem considerará que en dicha entrada hay un “1” (por ejemplo, puerta abierta) y si el PIN11 no está conectado a nada el módem considerará que hay un “0” en dicha entrda (por ejemplo, puerta cerrada) - Con la configuración realizada anteriormente, se enviarán 3 tipos de tramas. La primera de ellas en la trama “TYPE”:”GPS”, con los datos de localización recogidos cada 60 segundos. Se muestra un ejemplo a continuación:
{“IMEI”:354033090128458,”TYPE”:”GPS”,”P”:””,”DATE”:”2019/01/13”,”TIME”:“11:35:30”,”LAT”:”41.62964”,”NS”:”N”,”LON”:”2.361005”,”EW”:”E”,”ALT”:“187.9”,”SPE”:”0”,”COU”:”000.0”,”STA”:”3”,”HPO”:”1.2”,”VDO”:”1.9”,”SAT”:“08”,”TEMP”:”16.9”}
Donde:
IMEI: identificador único de cada módem
MTX TYPE: tipo de JSON (en este caso GPS)
DATE: fecha UTC devuelta por el GPS
TIME: hora UTC devuelta por el GPS
LAT: latitud GPS
NS: N= norte, S= sur
LON: longitud GPS
EW: E= este, W= oeste
ALT: altitud
SPE: velocidad (en km/h)
COU: rumbo
STA: status, 0= no fix, 2= 2D, 3= 3D
HPO: indicación de precisión horizontal. Mejor cuanto más pequeño
VDO: indicación de precisión vertical. Mejor cuanto más pequeño.
SAT: nº de satélites usado en la muestr actual
TEMP: temperatura leída del sensor de temperatura
El segundo tipo de trama se produce cuando se detecta un cambio en la entrada digital 2 que controla si la puerta está abierta o cerrada. Esta trama de datos, “TYPE”:”IOS”, enviará los datos de las E/S (entradas/salida digitales, entrada analógicas) y la posición GPS que se tenía en ese momento así como la temperatura leída. Un ejemplo la tenemos a continuación:
{“IMEI”:354033090128458,”TS”:”13/01/19 10:45:40”,”TYPE”:”IOS”,”P”:””,”IO1”:0,”IO2”:1, ”IO3”:0,”IO4”:0,”IO5”:0,”IO6”:0,“IO7”:0,”IO8”:0,”IO9”:0,”IO10”:0,”AD1”:1259, ”AD2”:1333,”CO1”:”1”,”CO2”:”3”,“CO3”:”3”,”GPSDATA”:{“DATE”:”2019/01/13”,”TIME”: ”10:45:41”,”LAT”:“41.62964”,”NS”:”N”,”LON”:”2.36099”,”EW”:”E”,”ALT”:”195.2”,”SPE”:”0”, “COU”:”000.0”,”STA”:”3”,”HPO”:”1.3”,”VDO”:”2.3”,”SAT”:”07”,”TEMP”:”16.4”}}
IMEI: identificador único de cada módem
MTX TYPE: tipo de JSON (en este caso IOS)
TS: timestamp (hora del módem de cuando se produjo el evento)
IOx: valor de la entrada digital x
ADx: valor de la entrada analógi
COx: valor del contador de pulsos x
GPSDATA.DATE: fecha devuelta por el módulo
GPS GPSDATA.TIME: hora devuelta por el módulo GPS
GPSDATA.LAT: latitud GPS
GPSDATA.NS: N= norte, S= sur
GPSDATA.LON: longitud GPS
GPSDATA.EW: E= este, W= oeste
GPSDATA.ALT: altitud
GPSDATA.SPE: velocidad (en km/h)
GPSDATA.COU: rumbo
GPSDATA.STA: status. 0=no Fix, 2=2D, 3=3D
GPSDATA.HPO: indicación de precisión horizontal. Mejor cuanto más pequeño
GPSDATA.VDO: indicación de precisión vertical. Mejor cuanto más pequeño
GPSDATA.SAT: nº de satélites usado en la muestr actual
GPSDATA.TEMP: temperatura leída del sensor de temperatura
Nótese que se devuelven 2 horas en el JSON. Una el campo TS (hora del módem) y otra en los datos relativos al GPS (hora del módulo GPS). Puede haber algún segundo de diferencia debido al momento de lectura de datos.
El tercer tipo de trama que se produce son las tramas DNS. Esta tramas están configuradas (DNS_period) para enviarse cada 120 segundos. Muestran información importante sobre la hora del dispositivo, su dirección IP actual, la cobertura GSM, la tecnología utilidada, el estado de las E/S digitales y analógicas, así como la posición GPS actual, la temperatura, contadores e información relativa a la celda GSM utilizada.
Es muy interesante esta trama por varios motivos. Una es que dicha trama muestra los datos en tiempo real. En ciertas ocasiones, cuando el vehículo viaja por zonas de baja cobertura GPS (debido a climatología, orografía del terreno), pues resultar útil esta trama DNS porque soporta información de la celda de telefonía utilizada (campo CID), por lo que es posible obtener una posición aproximada del vehículo gracias a la localización por celdas GSM. También resulta útil en caso de zonas de muy baja cobertura 2g/3g/4g. En dichas zonas sin cobertura no es posible enviar los datos GPS, por lo que éstos quedan acumulados en el interior del módem a la espera de ser enviados cuando vuelva dicha cobertura 2g/3g/4g. En caso de largos periodos de tiempo, pueden acumularse muchos datos y pueden pasar minutos, una vez vuelva la cobertura, hasta que se envíe todo el histórico al servidor. Durante dichos minutos puede seguir recibiendo la información en tiempo real de la posición GPS gracias a esta trama DNS, sin necesidad de esperar a la descarga de todo el histórico pendiente.
A continuación un ejemplo de trama DNS:
{“IMEI”:354033090128458,”TYPE”:”DNS”,”TS”:”13/01/19 11:58:36”,”P”:””,”IP”:”95.12 4.172.178”,”CSQ”:14,”TECH”:”4g”,”VER”:”10.04”,”AUX”:””,”MOD”:”MTX-4G-JAVA-IOT-STDN-GPS”,”VCC”:12000,”IO1”:0,”IO2”:0,”IO3”:0,”IO4”:0,“IO5”:0,”IO6”:0,”IO7”:0,”IO8”:0,”IO9”:0,”IO10”:0, “AD1”:1284,”AD2”:1333,”GPSDATA”:{“DATE”:”2019/01/13”,”TIME”:”11:58:37”,“LAT”: ”41.62964”,”NS”:”N”,”LON”:”2.361005”,“EW”:”E”,”ALT”:”187.9”,”SPE”:”0”,”COU”:“000.0”, ”STA”:”3”,”HPO”:”1.3”,”VDO”:”1.8”,“SAT”:”07”,”TEMP”:”16.9”},”CO1”:”1”,”CO2”:“3”,”CO3”: ”3”,”CID”:”07;21E0;13B6D0A;87;--”}
IMEI: identificador único de cada módem
MTX TYPE: tipo de JSON (en este caso DNS)
TS: timestamp (hora del módem de cuando se produjo el evento)
IP: dirección IP actual del módem
CSQ: cobertura del módem (0 … 31)
TECH: tecnología usada en ese momento (2g,3g,4g)
VER: versión firmware MTX-Tunnel
MOD: modelo de MTX (campo MTX_model)
VCC: voltaje de alimentación MTX (en milivoltios)
IOx: valor de la entrada digital x
ADx: valor de la entrada analógi
COx: valor del contador de pulsos x
CID: cell ID de la estación de telefonía utilidada
GPSDATA.DATE: fecha devuelta por el módulo GPS
GPSDATA.TIME: hora devuelta por el módulo GPS
GPSDATA.LAT: latitud GPS
GPSDATA.NS: N= norte, S= sur
GPSDATA.LON: longitud GPS
GPSDATA.EW: E= este, W= oeste
GPSDATA.ALT: altitud
GPSDATA.SPE: velocidad (en km/h)
GPSDATA.COU: rumbo
GPSDATA.STA: status, 0= no fix, 2= 2D, 3= 3D
GPSDATA.HPO: indicación de precisión horizontal. Mejor cuanto más pequeño
GPSDATA.VDO: indicación de precisión vertical. Mejor cuanto más pequeño
GPSDATA.SAT: nº de satélites usado en la muestra actual
GPSDATA.TEMP: temperatura leída del sensor de temperatura