En este tutorial les mostrare de la forma más sencilla y profunda posible como correr un servidor de Blynk localmente en el PC.
¿Pero que es Blynk?
Como lo describen en su web Blynk es una plataforma de IoT independiente del hardware con aplicaciones móviles de marca blanca, nubes privadas, administración de dispositivos, análisis de datos y aprendizaje automático. Blynk es una plataforma con aplicaciones de iOS y Android para controlar Arduino, ESP8266, Raspberry Pi y similares en Internet.
Puede crear fácilmente interfaces gráficas para todos sus proyectos simplemente arrastrando y soltando widgets. La aplicación puede descargarse tanto para Android como para IOS.




Blynk usa una aplicación ya sea en IOS o Android para comunicarse con su servidor (Blynk Server) oficial en internet y así registrar y controlar tus proyectos.
¿Pero que es Blynk Server??
Blynk Server es un servidor Java de código abierto basado en Netty, responsable de reenviar mensajes entre la aplicación móvil Blynk y varias placas de microcontroladores y SBC (es decir, Arduino, Raspberry Pi, etc.). Gracias al uso de Java y a que en su aplicación nos permiten usar un server personalizado, es que podremos montar Blynk Server en modo local. Comencemos:
Requisitos
- Java 8/11 (OpenJDK, Oracle)
- Cualquier sistema operativo que pueda ejecutar Java
- Al menos 30 MB de RAM (podría ser menos con el ajuste)
- Puertos abiertos 9443 (para aplicaciones y hardware con ssl), 8080 (para hardware sin ssl)
Configuración del servidor local
Instalar java en Ubuntu
sudo add-apt-repository ppa:openjdk-r/ppa \
&& sudo apt-get update -q \
&& sudo apt install -y openjdk-11-jdkSi quieren el Java de Oracle:
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installerPara Windows descargue Java aquí e instálelo.
Nota: Se recomienda el uso de Java 11, aunque también pueden usar Java 8.
Descargar el server Blynk
Creamos una carpeta para alojar los ficheros necesarios para nuestro servidor local. En mi caso cree la carpeta BlynkServer en la raiz de C, ustedes pueden crearla donde sea y con el nombre que quieran. Descargamos de su sitio la última versión de Blynk server y lo ubicamos en nuestra carpeta. Al dia de hoy es server-0.41.12.jar (Java 11) y server-0.41.12-java8.jar (Java 8).
Hay 2 cosas muy importante a tener en cuenta:
1-Blynk se desarrolla constantemente. Las aplicaciones móviles y el servidor se actualizan con frecuencia. Para evitar problemas durante las actualizaciones, desactive la actualización automática para la aplicación Blynk en su móvil o actualice el servidor local y la aplicación blynk al mismo tiempo para evitar posibles problemas de migración.
2- El servidor local de Blynk es diferente del servidor de Blynk Cloud. No están relacionados en absoluto. Debe crear una nueva cuenta cuando use el servidor local de Blynk.
Como bien resaltamos debemos crear una cuenta en el server local para nuestros proyectos, por lo que debemos configurar un email en la configuración del servidor local.
Habilitar correo en el servidor local
Para habilitar las notificaciones de correo en el servidor local, debe proporcionar sus propias credenciales de correo. Cree el archivo mail.properties dentro de la misma carpeta donde está server.jar. Propiedades de correo:
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=YOUR_EMAIL_HERE
mail.smtp.password=YOUR_EMAIL_PASS_HEREGenerar certificados SSL propios
Este paso es opcional si quieres conexiones ssl para ello generaremos un certificado autofirmado y su clave.
openssl req -x509 -nodes -days 1825 -newkey rsa: 2048 -keyout server.key -out server.crt
Convierta server.key al archivo de clave privada PKCS # 8 en formato PEM
openssl pkcs8 -topk8 -inform PEM -outform PEM -in server.key -out server.pemLos ficheros generados ubicarlos en la misma carpeta (BlynkServer) donde tenemos nuestro server.jar. En el caso de usar Windows como sistema operativo deberan descargar e instalar openssl. Recomiendo este link. Tambien deberan agregarlo a las variables de entorno de Windows para poder llamarlo desde el CMD.

Sustituir C:\OpenSSL\bin por el camino que les cree su instalación.
Nota: El camino siempre deberá apuntar a la carpeta bin
Configuración avanzada del servidor local
Para obtener más flexibilidad, puede ampliar el servidor con más opciones creando el archivo server.properties en la misma carpeta que server.jar. Opciones del server disponibles:
Aplicación Blynk, https, tomas web, puerto de administración
https.port=9443
Http, hardware y puerto de sockets web
http.port=8080
Por simplicidad, Blynk ya proporciona el jar del servidor con certificados SSL
integrados, por lo que tiene un servidor que funciona de inmediato a través de
sockets SSL/TLS. Pero como el certificado y su clave privada son públicos,
esto no es totalmente seguro. Entonces, para solucionarlo, debe proporcionar
sus propios certificados. Y cambie las propiedades a continuación con la ruta
a su certificado. y clave privada y su contraseña.
# puntos para cert y clave que se colocaron en la misma carpeta que ejecutando jar.
server.ssl.cert=./server_embedded.crt
server.ssl.key=./server_embedded.pem
server.ssl.key.pass=password(si pusieron alguna al certificado)
Carpeta de perfiles de usuario. Carpeta en la que se almacenarán todos los perfiles
de los usuarios. Por defecto se utiliza System.getProperty ("java.io.tmpdir")/blynk.
Se creará si no existe
data.folder=/tmp/blynk
data.folder=/Path (usa el camino dado en el comando java)
Carpeta para todos los registros de aplicaciones. Se creará si no existe. "." es el directorio
desde el que está ejecutando el script.
logs.folder=./logs
Nivel de depuración de registro. Valores posibles: rastreo|depuración|información|error.
Define cuán preciso será el registro. De izquierda a derecha -> registro máximo al mínimo
log.level=trace
Número máximo permitido de paneles de usuario.
user.dashboard.max.limit=100
Límite de velocidad de 100 Req/seg por usuario. También es posible que desee ampliar este
límite en el lado del hardware.
user.message.quota.limit=100
Esta configuración define con qué frecuencia puede enviar correo/tweet/push o cualquier otra
notificación. Especificado en segundos
notifications.frequency.user.quota.limit=60
Tamaño máximo de perfil de usuario permitido. En Kb's.
user.profile.max.size=128
Número de cadenas para almacenar en el widget de terminal (datos de historial de terminal)
terminal.strings.pool.size=25
Número máximo permitido de cola de notificaciones. Cola responsable del procesamiento
del correo electrónico, envío, envío de twits. Debido a un problema de rendimiento:
esas colas se procesan en subprocesos separados, esto es necesario debido a la naturaleza
de bloqueo de todas las operaciones anteriores. Por lo general, no se debe alcanzar el límite
notificaciones.queue.limit=5000
Número de hilos para realizar operaciones de bloqueo: push, twits, correos electrónicos,
consultas db. Se recomienda mantener este valor bajo a menos que tenga que realizar muchas
operaciones de bloqueo.
block.processor.thread.pool.limit=6
Período para vaciar todas las bases de datos de usuario en el disco. En millis
profile.save.worker.period=60000
Especifica el período máximo de tiempo cuando el socket de hardware podría estar inactivo.
Después de lo cual el socket se cerrará debido a la falta de actividad. En segundos.
Déjalo vacío para el tiempo de espera infinito
hard.socket.idle.timeout=15
Se requiere principalmente para la configuración de servidores locales en caso de que el
usuario desee registrar datos sin formato en formato CSV. Consulte la sección[datos brutos]
# almacenamiento de datos brutos) para obtener más información.
enable.raw.data.store=true
Url para abrir la página de administración. Debe comenzar desde "/".
Para la ruta de URL "/admin" se verá así "https://127.0.0.1:9443/admin".
admin.rootPath=/admin
Lista separada por comas de IP de administrador. Permita el acceso a la interfaz
de usuario de administrador solo para esas IP. Puede configurarlo para 0.0.0.0/0 para
permitir el acceso de todos. Puede usar la notación CIDR. Por ejemplo, 192.168.0.53/24.
allowed.administrator.ips=0.0.0.0 / 0
Nombre de administrador y contraseña predeterminados. Se creará al inicio del servidor inicial
[email protected]
admin.pass=admin
Host para restablecer la redirección de contraseña y la generación de certificados.
Por defecto, el IP actual del servidor se toma de la interfaz de red "eth".
Podría ser reemplazado por un nombre de host más amigable. Se recomienda anular
esta propiedad con la IP de su servidor para evitar posibles problemas de resolución del host.
server.host=blynk-cloud.com
El correo electrónico utilizado para el registro del certificado
podría omitirse en caso de que ya lo haya especificado en mail.properties.
[email protected]Les dejo el link de un fichero server.properties de ejemplo y el fichero mío como quedo.
initial.energy=1000000
allow.reading.widget.without.active.app=false
user.message.quota.limit=100
logs.folder=./logs
user.dashboard.max.limit=100
lcd.strings.pool.size=6
server.ssl.key=./server_embedded.key
webhooks.response.size.limit=96
hardware.mqtt.port=8440
table.rows.pool.size=100
terminal.strings.pool.size=25
[email protected]
admin.rootPath=/admin
user.widget.max.size.limit=20
listen.address=
blocking.processor.thread.pool.limit=6
stats.print.worker.period=60000
enable.db=false
force.port.80.for.csv=false
enable.raw.db.data.store=false
restore.host=blynk-cloud.com
csv.export.data.points.max=43200
restore=false
user.profile.max.size=256
allow.store.ip=true
allowed.administrator.ips=0.0.0.0/0,::/0
net.interface=eth
webhooks.frequency.user.quota.limit=1000
http.port=8080
web.request.max.size=524288
user.devices.limit=50
async.logger.ring.buffer.size=2048
user.tags.limit=100
server.ssl.key.pass=
admin.pass=admin
hard.socket.idle.timeout=10
product.name=Blynk
data.folder=/Path
map.strings.pool.size=25
profile.save.worker.period=60000
https.port=9443
log.level=info
server.ssl.cert=./server_embedded.crt
force.port.80.for.redirect=true
notifications.queue.limit=2000
notifications.frequency.user.quota.limit=5
server.host=192.168.137.1
app.ssl.port=8443
hardware.default.port=8442
hardware.ssl.port=8441
hardware.mqtt.port=8440
Ahora vamos a correr nuestro server ya que tenemos todas las configuraciones creadas. Les mostrare varias formas de correrlo.
Ejecute el servidor en el 'puerto de hardware 8080' predeterminado y el 'puerto de aplicación 9443'
predeterminado (puerto SSL)
java -jar server-0.41.12.jar -dataFolder /path
Ejecutando el server con java 8 y la configuración del mismo en otra ruta
java -jar server-0.41.12-java8.jar -dataFolder /home/Blynk -serverConfig /home/someFolder/server.propertiesEn nuestro caso como tenemos todas las configuraciones y el server.jar en una misma carpeta correremos el server desde ahi.
Como resultado, debería ver algo así:

Habilitar el inico automático del servidor en Windows
Crear un fichero bat con el nombre que querramos y agregar el siguiente comando:
Crear el fichero runblynk.bat o start-blynk.bat o como desee y
dentro agregar lo siguiente:
java -jar server-0.41.12.jar -dataFolder /PathCopiar el archivo bat a la carpeta de inicio de Windows para que asi se incie con el arranque del mismo. Si desean un scripts más complejo y completo les dejo este.
Accediendo a la WEB UI de administración
Abrir su navegador y escribir la dirección y el puerto de su servidor Blynk
https://your_ip:9443/admin
o también
https://localhost:9443/admin

Por defecto el usuario es [email protected] y la clave es admin

Configurando nuestra aplicación Blynk en el teléfono
Abrir nuestra aplicación Blynk en el teléfono y configurar la ubicación del servidor.


En la opción de configurar el server elegir CUSTOM y agregar la IP de nuestro servidor. Una vez configurada la IP ya podemos logearnos usando el correo y la clave que definimos en mail.properties
No es objetivo de este tutorial mostrarles el uso de blynk lo dejare para un próximo tutorial donde les mostrare un ejemplo sencillo.
Ventaja de usar el servidor localmente
Las ventajas son:
- No necesitaremos de una conexión activa a internet.
- No tendremos que pagar por los widget que usemos cuando agotemos la energía inicial.
Esta última es muy importante y les mostrare como lograrlo. Blynk usa un sistema de puntos (energía) para el uso de los widgets. Todo funciona en ️"Energy". Cuando creas una nueva cuenta, obtiene ⚡️2,000 para comenzar a experimentar. Cada widget necesita algo de energía para funcionar. Por ejemplo, Button Widget requiere ⚡️200 Energy. Abra Widget Box en la aplicación Blynk para ver los precios completos. Cuando elimina un widget, la energía siempre se devuelve por completo. Hay algunas características, como Compartir, cuando no se devuelve Energía. Siempre se le advertirá en estos casos. Conociendo esto podemos entonces ajustar la energía inicial conque contaremos para la creación de nuestros proyectos. En la web administrativa accedemos al menu users(usuarios) donde ahora veremos logueado el usuario que definimos en mail.properties. Damos click sobre él y nos aparecerá estas opciones.

Ahora podemos gastar tanta energía como queramos y recargarla siempre. Finalmente, a modo de información.
¿Cómo funciona Blynk?
Cuando el hardware se conecta a la nube de Blynk, abre una conexión ssl/tls en el puerto 443 (9443 para servidores locales) o la conexión tcp/ip en el puerto 8080. La aplicación Blynk(en el teleffono) abre la conexión ssl/tls contra Blynk Cloud en puerto 443 (9443 para servidores locales). Blynk Cloud es responsable de reenviar mensajes entre el hardware y la aplicación.

Como seria en nuestro caso local.

Para lograrlo nuestro servidor Blynk local debe de tener activo un hotspot wifi y tanto nuestro dispositivo Arduino como nuestro teléfono conectados a él. En Linux es muy simple de hacer pues en las opciones de redes de cualquier distro esta para configurarlo. En Windows podemos usar la aplicación connectify. Como extra les muestro como correrlo en Docker.
Corriendo Blynk Server en Docker
docker run -p 8080:8080 -p 9443:9443 mpherg/blynk-serverSi desea usar Docker compose. Cree el fichero docker-compose.yml con el siguiente contenido
version: '2'
services:
portainer:
image: mpherg/blynk-server:latest
restart: always
ports:
- 8080:8080
- 8441:8441
- 9443:9443
volumes:
- ./data:/data
#-$(PWD)/server.properties:/config/server.propertiesLuego ejecute el siguiente comando:
docker-compose up -dEspero que les sirva a muchos arduineros ya que es una opción para aquellos que no se les da bien la programación.
alex out







No comments yet