Control conexión módem 3G/4G vía SMS

Fecha publicación
#
31
Dificultad
Avanzado
3 more properties
Publicado
tags
i40sys, industry 4.0, industry40.systems, industrial, plc, siemens, omron, ubuntu, linux, iot gateway, gateway, iot, internet of things, modem, 3G, 4G, modeswitch, internet, wvdial, SMS, iptraf, AT

Descripción

Mediante el envió de SMS al módem con comandos de conexión y desconexión del módem controlamos la conexión a Internet.
Esta funcionalidad es especialmente útil cuando los clientes no nos permiten tener el equipo conectado a Internet pero nos interesa tener una puerta entre abierta para situaciones de emergencia.

Detalles de funcionamiento

Instalación del código

Dependencias

Instalar los siguientes paquetes:
YAML
apt install python3-gammu screen

Estructura de directorios y copia del código

YAML
mkdir -p /opt/modem
mkdir -p /var/run/modem
El código que usaremos para implementar la lógica esta en el repostiorio:
y para desplegarlo debemos:
YAML
cd /opt/modem
git clone https://github.com/i40sys/modem-control-gammu-sms.git .
chmod 755 modem.py modem_on modem_off
enlazamos ejecutables en los directorios correspondientes:
YAML
ln -s /opt/modem/modem_on /usr/local/bin/modem_on
ln -s /opt/modem/modem_off /usr/local/bin/modem_off
añadimos el script a crontab para que se ejecute cada minuto
YAML
*/1 * * * * cd /opt/modem && ./modem.py

Configuración

Hay que configurar dos ficheros.
El primero, es propiamente el modem.py que en su primeras líneas define ciertas posibilidades de configuración. Exactamente son las siguientes líneas:
YAML
# Interface serie para conectar el módem a Internet
MODEM_DEVICE = "/dev/modem0"
# Comportamiento por defecto del módem en caso de no existir, o no tener contenido válido, el fichero /var/run/modem
DESIRED_DEFAULT = "on"
# Fichero donde hay el estado deseado del módem
MODEM_FILE = "/var/run/modem"
# IP de Internet que usamos para saber que la conexión funciona bien, por defecto, IP del DNS de Google.
PING_IP = "8.8.8.8"
El otro fichero de configuración es el de gammu que se encuentra en /opt/modem/gammurc, este fichero en sus líneas de cabeza se describen los parámetros de configuración. Concretamente estamos configurando la interface serie a través de la cual podemos acceder a los SMS del módem.
YAML
# Port           : in Windows/DOS: "com*:",
#                  (instead of "*" please put "1", "2", etc.)
#                  in other (Linux/Unix) "/dev/ttyS%"
#                                     or "/dev/ircomm%" ("irda" connection)
#                  (instead of "%" please put "0", "1", "2", etc.)
# Model          : use only, when Gammu doesn't recognize your phone model.
#                  Put it here. Example values: "6110", "6150", "6210", "8210"
# Connection     : type of connection. Use "fbus" or "mbus" or "dlr3" or
#                  "irda" (Infrared over sockets) or "infrared" (DirectIR)
#                  or "at19200" (AT commands on 19200, 8 bits, None parity,
#                  1 stop bit, no flow control) or "at115200" (AT commands on
#                  115200, 8 bits, None parity, 1 stop bit, no flow control)
#                  or "atblue" (AT over BlueTooth) or "dlr3blue" (FBUS
#                  over BlueTooth)
# SynchronizeTime: if you want to set time from computer to phone during
#                  starting connection. Do not rather use this option when want
#                  to reset phone during connection (in some phones need to
#                  set time again after restart)
# Logfile        : Use, when want to have logfile from communication.
# Logformat      : What debug info and format should be used:
#                  "nothing" - no debug level, "text" - transmission dump in
#                  text format, "textall" - all possible info in text format,
#                  "errors"  - errors in text format, "binary" - transmission
#                  dump in binary format
# Use_Locking    : under Unix/Linux use "yes", if want to lock used device
#                  to prevent using it by other applications
# GammuLoc       : name of localisation file

[gammu]

port = /dev/modem2
model = 
connection = at19200
synchronizetime = yes
logfile = 
logformat = nothing
use_locking = 
gammuloc =

Utilidad reset.sh que hay en el repositorio desplegado

Este script nos permite simular la conexión y desconexión físca del módem al puerto USB cuando estamos en remoto.