Datos gratis para tu proyecto IoT

Internet of Things

En el departamento de I+D+i estamos en pleno desarrollo de un proyecto IoT (Internet of Things) que necesita una conexión a Internet fiable con la que trabajar 24/7. Es un producto enfocado tanto a particulares como a empresas del cual se podrían querer instalar de uno a decenas o cientos.

Tras varias semanas de pruebas y análisis de datos decidimos que lo mejor para poder instalar y probar nuestro producto a pequeña escala sería dotarlo de conexión propia con un módem USB, así que tras analizar el mercado existente hemos apostado por el Huawei E3531.

La tarifa de datos para el proyecto IoT

Pero todavía nos faltaba una decisión importante: la tarifa de datos.

Nuestra estimación es que el dispositivo necesite aproximadamente 1 MB diario para comunicarse con uno de nuestros VPS. Estuvimos un par de días comparando tarifas de operadoras tradicionales y de conocidas y desconocidas OMV. Las tarifas de contrato estaban casi descartadas de entrada, porque tener que pagar un mínimo cada mes encarecería el producto final.

Por otro lado, existen algunas tarifas prepago interesantes como 3€ por un bono de 300 MB. El problema es que el bono tiene una duración de 1 mes natural y, o no podías acumular los datos sobrantes, o tenías que pagar un plus por poder hacerlo.

La alternativa gratuita: FreedomPop

Fue entonces cuando decidimos probar la tarifa gratuita de FreedomPop. Para contratarla es necesario introducir una tarjeta de crédito porque te cobran (a día de hoy) 10€ y te la envían con un mes de prueba con su tarifa de pago con 2 GB de datos.

Recibirás una tarjeta SIM tricorte ya activada y que también puedes utilizar en un smartphone. Una vez recibida, entraremos en el área de cliente de la web de FreedomPop y desactivaremos los posibles planes y/o servicios de pago que vengan activados para disfrutar la tarifa mensual de 200 MB gratuitos.

Los planes FreedomPop son ideales para proyectos IoT
Los planes FreedomPop son ideales para proyectos IoT
Desactiva la recarga automática de saldo para evitar cargos sorpresa
Desactiva la recarga automática de saldo para evitar cargos sorpresa

De esta forma, antes de alcanzar los 200MB la tarjeta SIM entrará en suspensión hasta el inicio del siguiente mes natural, evitando tener que pagar algún cargo sorpresa si la transmisión de datos ha superado nuestros cálculos iniciales. Además, si tenemos que lanzar alguna actualización del software y sabemos que va a requerir de unos MB adicionales que sobrepasarán los 200MB, podemos realizar una recarga instantánea desde la web

El hardware para el proyecto IoT

Internet of ThingsInternet of Things

Nuestros ensayos para este proyecto IoT han sido en una Raspberry Pi 3 Model B.

De todos modos podéis seguir este tutorial en cualquier sistema GNU/Linux basado en Debian.

Software necesario proyecto IoT

Sobre Raspbian, instalamos los siguientes paquetes:

Los paquetes usb-modeswitch y usb-modeswitch-data nos van a permitir que nuestro sistema reconozca el Huawei E3531 como un módem USB, ya que este modelo trae también un lector de tarjetas microSD  y es lo primero que reconoce el sistema.

Por defecto, un ‘lsusb’, nos dará una línea similar a esta:

Bus 001 Device 004: ID 12d1:1f01 Huawei Mobile

Instalación del módem Huawei E3531

Gracias a la lista de dispositivos compatibles con usb-modeswitch, sabemos que para hacer que nuestro sistema lo reconozca como módem USB tenemos que crear el siguiente fichero:

#/etc/usb_modeswitch.d/12d1:1f01
# Huawei E353 (3.se)

TargetVendor=  0x12d1
TargetProduct= 0x1f01

MessageContent="55534243123456780000000000000011062000000100000000000000000000"
NoDriverLoading=1

Tras reiniciar, la línea que debe aparecer en un ‘lsusb’ es esta:

Bus 001 Device 005: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem

Preparación de la conexión proyecto IoT

Ahora, que nuestro sistema ya reconoce el módem, es cuando preparamos la conexión. Primero editamos el archivo de configuración de wvdial:

#/etc/wvdial.conf

[Dialer Defaults]
Modem Type = Analog Modem
Phone = *99#
ISDN = 0
Baud = 460800
Username = " "
Password = " "
Modem = /dev/ttyUSB0
Init1 = ATZ
Init2 = at+cgdcont=1,"ip","freedompop.foggmobile.com"
Stupid Mode = 1

Después preparamos una archivo para que ‘wvdial’ pueda comunicarse a través de ‘ppp’:

#/etc/ppp/peers/wvdial
noauth
name wvdial
# Descomenta esta línea si quieres utilizar los DNS de Freedompop o déjala comentada si prefieres utilizar unos estáticos
#usepeerdns
defaultroute
replacedefaultroute

Probando nuestra conexión

Tras estos dos pasos deberíamos poder conectarnos escribiendo ‘wvdial’ en la terminal y ver que se establece la conexión:

# wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
OK
--> Sending: at+cgdcont=1,"ip","freedompop.foggmobile.com"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
CONNECT 236800
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Feb 26 19:02:57 2017
--> Pid of pppd: 3546
--> Using interface ppp0
--> pppd: ▒▒▒[01] ▒▒[01]
--> pppd: ▒▒▒[01] ▒▒[01]
--> pppd: ▒▒▒[01] ▒▒[01]
--> pppd: ▒▒▒[01] ▒▒[01]
--> pppd: ▒▒▒[01] ▒▒[01]
--> pppd: ▒▒▒[01] ▒▒[01]
--> local  IP address 10.*.*.*
--> pppd: ▒▒▒[01] ▒▒[01]
--> remote IP address 10.*.*.*
--> pppd: ▒▒▒[01] ▒▒[01]
--> primary   DNS address 8.8.8.8
--> pppd: ▒▒▒[01] ▒▒[01]
--> secondary DNS address 8.8.4.4
--> pppd: ▒▒▒[01] ▒▒[01]

Si abrimos otra terminal, y escribimos un ‘ifconfig’, veremos una nueva interfaz de red llamada ‘ppp0’. Podemos probar un ‘ping -I ppp0 8.8.8.8’ y ver que tenemos conexión a Internet a través del módem USB.

Programación del inicio automático

Por último, necesitamos que la conexión se establezca cada vez que se arranque el sistema así que editaremos el fichero de interfaces para que espere el nuevo dispositivo:

# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#USB_MODEM
allow-hotplug ppp0
iface ppp0 inet wvdial

Y crearemos un script en init.d para que haga la llamada a wvdial en cada inicio:

#/etc/init.d/wvdial

#! /bin/sh
#Le pedimos al script que espere 15 segundos para asegurarnos de que el
módem USB ya estará activo en el sistema
sleep 15
#Le añadimos un poco de lógica para poder utilizarlo desde una terminal
case "$1" in
  start)
    echo "Connecting to Freedompop..."
    # run application you want to start
    /usr/bin/wvdial
    ;;
  stop)
    echo "Disconneting from Freedompop..."
    # kill application you want to stop
    killall wvdial
    ;;
  *)
    echo "Usage: /etc/init.d/wvdial {start|stop}"
    exit 1
    ;;
esac

Para activar el script basta con teclear un ‘update-rc.d wvdial defaults’.

Ahora sólo necesitáis reiniciar, apagar, encender, dejar activo, volver a apagar, y así hasta que decidáis que ya lo habéis probado lo suficiente para confiar en que la conexión se restablecerá en cada arranque.

Aunque wvdial viene configurado de serie para restablecer la conexión en caso de pérdida, no estaría de más configurar un watchdog de la conexión para que vuelva a ejecutar wvdial en caso de necesidad.

1 opinión en “Datos gratis para tu proyecto IoT”

  1. Gracias por la ayuda, lo he configurado en la Orange pi 2G IoT de 10€, lleva un modem GPRS, dejo aqui la configuración de esta pequeña maravilla con freeedompop, ahora las posibilidades son muy grandes, al menos en domótica:
    http://surfero.blogspot.com.es/2017/04/freedompop-orange-pi-2g-iot.html

    Lo que no me queda del todo claro es como poder acceder a la Orange pi via ssh por la ip publica de freedompop, aunque me da que esta puerta está cerrada ¿sabéis si es posible hace un tunel proxy por ssh?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *