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.
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 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.
Parece que lo tengo todo bien, hasta que envío
ATDT*99#
que devuelve «ERROR»
La tarjeta funciona correctamente, probada desde un teléfono móvil.
¿Alguien tiene una pista?
Gracias!
Hola,
¿Podrías compartirnos el log en un pastebin o similar?
Un saludo.
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?
Hola,
Lo primero, me alegro de que hayas podido implementar con éxito el sistema en otra plataforma. Para lo que comentas del ssh, tienes la opción de http://www.dataplicity.com. No es 100% fiable para la puesta en producción, ya que dependes de sus servidores, pero sí te permitirá controlarla para las pruebas que necesites. Eso sí, prepara los dedos, ya que no se puede pegar en esa terminal. No hemos probado a hacer ssh con la ip pública de Freedompop, si lo conseguimos te lo comentamos por aquí.
Muchas gracias por leernos, un saludo.