Autor Tema: Blynk + OpenWRT  (Leído 1163 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado raphik

  • **
  • Mensajes: 32
Blynk + OpenWRT
« en: 17-09-2018, 11:19 (Lunes) »
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: [Seleccionar]
root@LEDE:~# opkg update
4. Dar soporte al convertidor USB-Serie Winchiphead CH341 (que es el que montan los arduinos chinos compatibles).
Código: [Seleccionar]
root@LEDE:~# opkg install kmod-usb-serial-ch341
Si enchufamos el arduino al USB, debe detectarlo.
Código: [Seleccionar]
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

Adicionalmente, se puede comprobar que realmente existe el dispositivo.
Código: [Seleccionar]
root@LEDE:~# ls /dev/ttyU*
/dev/ttyUSB0

5. Instalar herramientas para configurar el puerto serie.
Código: [Seleccionar]
root@LEDE:~# opkg install coreutils-stty
El puerto serie se configura con el comando
Código: [Seleccionar]
root@LEDE:~# stty -F /dev/ttyUSB0 raw speed 9600 -echo -hupcl
Ahora es posible enviar mensajes al Arduino desde una sesión ssh.
Código: [Seleccionar]
root@LEDE:~# echo "mensaje" > /dev/ttyUSB0
Y también recibirlos.
Código: [Seleccionar]
root@LEDE:~# cat /dev/ttyUSB0
6. Instalar socat.
Código: [Seleccionar]
root@LEDE:~#  opkg install socat
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: [Seleccionar]
root@LEDE:~# ./blynk-s.sh
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

No hay que olvidar hacerlo ejecutable antes de lanzarlo.
Código: [Seleccionar]
root@LEDE:~# chmod +x blynk-s.sh
Eso es todo.


« Última modificación: 24-09-2018, 10:37 (Lunes) por raphik »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1870
Re:Blynk + OpenWRT
« Respuesta #1 en: 17-09-2018, 16:32 (Lunes) »
En el dibujo falta, pues, "Internet access of your choice: USB...",  ;D ;D ;D
Buen tuto. Le pongo chinchetoide unas semanitas.  >:(
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.

Desconectado sergisat

  • **
  • Mensajes: 4
Re:Blynk + OpenWRT
« Respuesta #2 en: 17-09-2018, 20:52 (Lunes) »
¿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.
« Última modificación: 17-09-2018, 21:30 (Lunes) por sergisat »

Desconectado raphik

  • **
  • Mensajes: 32
Re:Blynk + OpenWRT
« Respuesta #3 en: 17-09-2018, 21:29 (Lunes) »
@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!

Desconectado raphik

  • **
  • Mensajes: 32
Re:Blynk + OpenWRT
« Respuesta #4 en: 18-09-2018, 12:53 (Martes) »
@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.

Desconectado sergisat

  • **
  • Mensajes: 4
Re:Blynk + OpenWRT
« Respuesta #5 en: 18-09-2018, 22:39 (Martes) »
@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.

Yo por mi parte no tengo idea de compilar para openwrt, si se puede integrar blynk server en openwrt lo probaria sin lugar a dudas.

Un saludo.

Desconectado raphik

  • **
  • Mensajes: 32
Re:Blynk + OpenWRT
« Respuesta #6 en: 16-10-2018, 23:30 (Martes) »
Blynk Server necesita Java 8/10,  30 MB de RAM y los puertos 9443 y/o 8080 abiertos.
Java no está portado a MIPS (HG553, HG556, AR-5387un), pero sí lo está a ARM (raspberry).

Me pregunto si funcionaría la siguiente carambola:
1. Montar Debian mips en un HG553 OpenWRT.
2. Ejecutar qemu en Debian para emular un sistema ARM.
3. Instalar Java en la máquina virtual ARM.
4. Instalar Blynk.

El paso 1 funciona: https://foro.seguridadwireless.net/openwrt/instalar-debian-en-un-hg553/

Los demás, ya veremos.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1870
Re:Blynk + OpenWRT
« Respuesta #7 en: 18-10-2018, 06:58 (Jueves) »
Blynk Server necesita Java 8/10,  30 MB de RAM y los puertos 9443 y/o 8080 abiertos.
Java no está portado a MIPS (HG553, HG556, AR-5387un), pero sí lo está a ARM (raspberry).

Me pregunto si funcionaría la siguiente carambola:
1. Montar Debian mips en un HG553 OpenWRT.
2. Ejecutar qemu en Debian para emular un sistema ARM.
3. Instalar Java en la máquina virtual ARM.
4. Instalar Blynk.

El paso 1 funciona: https://foro.seguridadwireless.net/openwrt/instalar-debian-en-un-hg553/

Los demás, ya veremos.

Qemu ya te digo yo, que como rápido no va a ir. Ahora que funcione, puede que sí...
Qué deberes más raros ponen ahora en el colegio...  >:D
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.