Equipos y materiales > Openwrt & LEDE

Blynk + OpenWRT

(1/2) > >>

raphik:
Blynk es una aplicación para teléfonos inteligentes (iOS y Android) que permite controlar plataformas de hardware populares (Arduino, Raspberry Pi y similares) conectadas a Internet. https://www.blynk.cc/

Actualmente Blynk permite controlar directamente los GPIOs de un router OpenWRT, así como lanzar procesos y scripts con tan sólo pulsar un widget en el móvil. Un sistema típico estaría formado por:

* Un teléfono móvil desde el que se controla el router.
* Un servidor Blynk en la nube, responsable de las comunicaciones entre el móvil y el hardware.
* Un router OpenWRT.

https://github.com/vshymanskyy/blynk-library-lua



Para dotar al router de mayores posibilidades, también es posible conectar un Arduino a su puerto USB:

1. Router Huawei EchoLife HG553 con OpenWrt 18.06.1 recién instalado.

2. Iniciar sesión ssh.
ssh root@192.168.1.1

3. Actualizar lista de paquetes.

--- Código: ---root@LEDE:~# opkg update
--- Fin del código ---

4. Dar soporte al convertidor USB-Serie Winchiphead CH341 (que es el que montan los arduinos chinos compatibles).

--- Código: ---root@LEDE:~# opkg install kmod-usb-serial-ch341
--- Fin del código ---

Si enchufamos el arduino al USB, debe detectarlo.

--- Código: ---root@LEDE:~# dmesg | grep ch341
usbcore: registered new interface driver ch341
usbserial: USB Serial support registered for ch341-uart
ch341 2-2:1.0: ch341-uart converter detected
usb 2-2: ch341-uart converter now attached to ttyUSB0
--- Fin del código ---

Adicionalmente, se puede comprobar que realmente existe el dispositivo.

--- Código: ---root@LEDE:~# ls /dev/ttyU*
/dev/ttyUSB0
--- Fin del código ---

5. Instalar herramientas para configurar el puerto serie.

--- Código: ---root@LEDE:~# opkg install coreutils-stty
--- Fin del código ---

El puerto serie se configura con el comando

--- Código: ---root@LEDE:~# stty -F /dev/ttyUSB0 raw speed 9600 -echo -hupcl
--- Fin del código ---

Ahora es posible enviar mensajes al Arduino desde una sesión ssh.

--- Código: ---root@LEDE:~# echo "mensaje" > /dev/ttyUSB0
--- Fin del código ---

Y también recibirlos.

--- Código: ---root@LEDE:~# cat /dev/ttyUSB0
--- Fin del código ---

6. Instalar socat.

--- Código: ---root@LEDE:~#  opkg install socat
--- Fin del código ---

Socat servirá para establecer un flujo bidireccional de datos entre el socket TCP del servidor Blynk en la nube y el puerto ttyUSB0 local. No es posible usar un socket SSL porque el paquete se compiló con la opción openssl desactivada.

7. Lanzar socat desde un script.

--- Código: ---root@LEDE:~# ./blynk-s.sh
--- Fin del código ---

El contenido del script blynk-s.sh es:

--- Citar ---#!/bin/sh
GEN_ATTR="-d -d"
FROM_ATTR="FILE:/dev/ttyUSB0,raw,echo=0,clocal=1,cs8,nonblock=1,b9600"
TO_ATTR="TCP:blynk-cloud.com:80,nodelay"
# Setup exit handler
trap "echo Exited!; exit;" SIGINT SIGTERM
echo [ Press Ctrl+C to exit ]
stty -F /dev/ttyUSB0 raw speed 9600 -echo -hupcl
while [ 1 ]; do
    socat $GEN_ATTR $FROM_ATTR $TO_ATTR
    echo Reconnecting in 3s...
    sleep 3
done
--- Fin de la cita ---

No hay que olvidar hacerlo ejecutable antes de lanzarlo.

--- Código: ---root@LEDE:~# chmod +x blynk-s.sh
--- Fin del código ---

Eso es todo.

Tki2000:
En el dibujo falta, pues, "Internet access of your choice: USB...",  ;D ;D ;D
Buen tuto. Le pongo chinchetoide unas semanitas.  >:(

sergisat:
¿Puedes indicarme donde esta en la web el manual para instalar blynk server en openwrt?

Uso el de la nube para tener una vision de mi alarma de casa que tengo montada en un mega, pero si lo puedo montar en mi router mejor porque con el de la nube estoy limitado en créditos y quiero poner muchas mas cosas en mi proyecto.

He instalado jamvm y lo lanzo mediante:

jamvm -jar /blynk/server-0.39.4.jar -dataFolder /blynk/datos/

Pero me da el error:

Unrecognised bytecode 186 found while preparing cc/blynk/cli/OptionValidator.validateOption(Ljava/lang/String;)V

En la documentacion veo que requiere Java 8/10 y si veo la version de jamvm:

java version "1.5.0"
JamVM version 2.0.0
Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk>

Si ejecuto la version de java 8:

jamvm -jar /blynk/server-0.39.4-java8.jar  -dataFolder /blynk/datos/
java.lang.reflect.InvocationTargetException
   at java.lang.reflect.VMMethod.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:327)
   at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50)
Caused by: java.lang.NoClassDefFoundError: java/nio/file/Paths
   at cc.blynk.utils.properties.BaseProperties.initProperties(BaseProperties.java:57)
   at cc.blynk.utils.properties.BaseProperties.<init>(BaseProperties.java:31)
   at cc.blynk.utils.properties.ServerProperties.<init>(ServerProperties.java:33)
   at cc.blynk.utils.properties.ServerProperties.<init>(ServerProperties.java:42)
   at cc.blynk.server.launcher.ServerLauncher.main(ServerLauncher.java:60)
   at java.lang.reflect.VMMethod.invoke(Native Method)
   ...2 more
Caused by: java.lang.ClassNotFoundException: java.nio.file.Paths not found in java.lang.ClassLoader$1{urls=[file:/blynk/server-0.39.4-java8.jar], parent=null}
   at java.net.URLClassLoader.findClass(URLClassLoader.java:531)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:341)
   at java.lang.ClassLoader$1.loadClass(ClassLoader.java:1112)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:293)
   at cc.blynk.utils.properties.BaseProperties.initProperties(BaseProperties.java:57)
   ...7 more

Un saludo y gracias por adelantado.

raphik:
@sergisat
El tema se trata en el post https://community.blynk.cc/t/how-to-get-blynk-running-on-openwrt/734/11
El repositorio y las instrucciones para compilar Blynk para OpenWRT es https://github.com/vshymanskyy/blynk-library-openwrt

¡Suerte!

raphik:
@sergisat
Le he preguntado al autor de la librería Blynk Server si la llegó a probar sobre hardware real. Hace casi un año que la publicó, pero parece que nadie la llegó a probar. Yo encuentro el asunto interesante y estaría dispuesto a colaborar con la compilación para OpenWRT y demás pruebas.


Saludos.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa