Inserción de MiBand en domoticz mediante Node Red conectándolo por wifi

DrBoom del grupo «Domoticz a lo spain» de telegram nos explica cómo ha integrado la pulsera MiBand en domoticz mediante Node Red conectándola por wifi.

Dividimos esta guía en varios apartados

Requisitos inciales

Para poder seguir este tutorial es necesario tener instalado Node Red en nuestra Raspberry, además de Domoticz, MQTT y demás.

También es fundamental, lógicamente, disponer de una xiaomi MiBand y un esp32 con bluetooth en nuestro poder.

Os dejamos el listado de tutoriales para poder instalar lo que necesitéis antes de empezar esta guía:

  1. Material necesario para poner en marcha domoticz
  2. Instalación de domoticz desde cero
  3. Instalación de Mosquitto MQTT Broker en Raspberry Pi 
  4. Configurar MQTT con usuario y contraseña (opcional)
  5. Cargamos MQTT en nuestro domoticz
  6. Instalar Watchdog en domoticz (opcional)
  7. Crear usuario y contraseña para domoticz (opcional)
  8. Cómo instalar node red en nuestra raspberry pi

Descarga del software necesario

Vamos a necesitar, a parte del software necesario a consecuencia del seguimiento de los tutoriales anteriores para instalar Node red, los siguientes programas:

OJO a los que tenéis USER y PASS en MQTT de la raspberry y en MQTT de domoticz. Debéis tenerlo en cuenta a la hora de seguir el tutorial.

Flasheo del ESP32

Después de haber instalado el programa Flash Download Tool lo ejecutamos. Tardará unos segundos y seleccionaremos DEVELOPER MODE y, a continuación, ESP32 DOWNLOAD TOOL.

Enchufamos el esp32 con un cable miniUSB al ordenador y comprobamos en qué COM se ha conectado. Si no sabes cómo averiguarlo, sigue este tutorial: «Comprobación de puerto COM para los flasheos por USB TTL«

En el programa ESP32 DOWNLOAD TOOL, clicamos sobre el COM correcto, BAUD 115200 y ERASE.

Después adjuntamos los archivos que hemos descargado en el primer paso de este tutorial redactando el código que os enseñamos en las imágenes. Para seleccionar los archivos clica sobre los tres puntitos al final de cada línea.

Copiamos las características del flasheo del esp32 con los archivos que ponemos a continuación:

Si te da error y ya has probado varios cables y puertos, comprueba que tienes el ESP Download Tool en la raíz de C.

Una vez cubierto todo tal y como aparece en la imagen, clicaremos sobre START.

Veremos que se va completando el proceso. Puede tardar un par de minutos, no desesperes que ya casi lo tenemos.

Una vez ha completado el flasheo, nos aparecerá FINISH. 

Ya podemos desenchufar el ESP32 y enchufarlo en el lugar en que vayamos a tenerlo instalado.

Buscamos redes wifi con nuestro móvil y nos conectamos al ESP32. Si te pide contraseña (en algunos casos la solicita), deberás introducir la siguiente:

your_password
Cuidado en esta fase. Si metemos algún dato mal tendremos que reflashear para corregirlo. Fíjate bien en los datos que introduces.

Nos conectamos a él, metemos nuestro wifi y pass, nuestro mqtt con user y pass si tenemos, modificamos el nombre del gateway con el que queremos que aparezca cuando envíe la información y el topic con el q envíe la inforomación:

Al guardar se conectará a nuestra wifi y no sabremos más de él hasta más adelante.

Visualización con el programa MQTT explorer

Ejecutamos el programa MQTT explorer en el ordenador introduciendo los datos de nuestro MQTT.

Veremos que nos aparecen todos los topics que recibimos por mqtt. Entre ellos estará el nombre del gateway que le hayamos puesto al esp32 con la información que recibe de los dispositivos Bluetooth que tenga cerca:

Creamos los Dummys (sensores) en domoticz

Iniciamos domoticz, y vamos a:

Domoticz > Setup > Hardware

Creamos un sensor clicando sobre Create Virtual Sensors:

Seleccionaremos CUSTOM SENSOR:

Nos vamos a:

Domoticz > Setup > Devices

Nos aparecen los dummys que acabamos de crear. Buscamos el Custom Sensor y anotamos su IDX.

Localizamos el topic de la MiBand en el programa MQTT explorer

Abrimos de nuevo MQTT explorer. Buscamos la MiBand.

Al seleccionar la linea de la MiBand con la información descodificada nos aparecerá el TOPIC que deberemos copiar y pegar más adelante en Node Red. Tenlo a mano. Necesitaremos también el número MAC completo que tienes en la lista que carga MQTT explorer. Cópialo también y tenlo a mano.

Configuramos Node Red

Abrimos node red (Recuerda que accedemos a ella introduciendo la IP de nuestra raspberry seguido de :1880). Sigue las indicaciones de las imágenes:

A continuación cargamos el flow que os adjuntamos de la siguiente manera:

Introducimos en el recuadro siguiente texto (lo copiamos con control +c) y lo pegamos en el recuadro (con control + v):

[{"id":"caa0e27c.32a12","type":"tab","label":"MiBandEnCasa","disabled":false,"info":""},{"id":"343ebb6b.450504","type":"json","z":"caa0e27c.32a12","name":"","property":"payload","action":"","pretty":false,"x":590,"y":300,"wires":[["fa007402.d60798","af5a13f7.e1f5d"]]},{"id":"60ac253d.035aac","type":"function","z":"caa0e27c.32a12","name":"Pulsera MiBand","func":"idx_steps=732\n\nvar message=0\n//pasos\nif(msg.payload.steps!=null){\n \nmessage= msg.payload.steps.toString();\nmsg.payload = {\"command\": \"udevice\", \"idx\": idx_steps, \"nvalue\":0,\"svalue\":message };\n}\n\nreturn msg;\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1000,"y":300,"wires":[["a88a3ca8.bc361","421070df.c1512"]]},{"id":"af5a13f7.e1f5d","type":"switch","z":"caa0e27c.32a12","name":"Dispositivos (mac)","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"D2:DC:A8:E2:04:76","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":790,"y":300,"wires":[["692dbfe9.351ba","60ac253d.035aac"]]},{"id":"53e23138.d4de1","type":"mqtt out","z":"caa0e27c.32a12","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"9cd488aa.0faac8","x":1350,"y":300,"wires":[]},{"id":"a88a3ca8.bc361","type":"json","z":"caa0e27c.32a12","name":"","property":"payload","action":"","pretty":false,"x":1170,"y":300,"wires":[["53e23138.d4de1","cb647f34.10d94"]]},{"id":"fa007402.d60798","type":"debug","z":"caa0e27c.32a12","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":770,"y":100,"wires":[]},{"id":"cb647f34.10d94","type":"debug","z":"caa0e27c.32a12","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1370,"y":160,"wires":[]},{"id":"692dbfe9.351ba","type":"debug","z":"caa0e27c.32a12","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1010,"y":100,"wires":[]},{"id":"40e10b00.531f94","type":"mqtt in","z":"caa0e27c.32a12","name":"","topic":"home/OpenMQTTGateway_ESP32_BLEDespacho/BTtoMQTT/#","qos":"2","datatype":"auto","broker":"9cd488aa.0faac8","x":250,"y":300,"wires":[["343ebb6b.450504"]]},{"id":"297edc02.3b7ce4","type":"mqtt in","z":"caa0e27c.32a12","name":"","topic":"home/OpenMQTTGateway_ESP32_BLEGaleria/BTtoMQTT/#","qos":"2","datatype":"auto","broker":"9cd488aa.0faac8","x":240,"y":360,"wires":[["343ebb6b.450504"]]},{"id":"421070df.c1512","type":"debug","z":"caa0e27c.32a12","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1230,"y":100,"wires":[]},{"id":"b15855ef.9cc0a8","type":"mqtt in","z":"caa0e27c.32a12","name":"","topic":"home/OpenMQTTGateway_ESP32_BLEComedor/BTtoMQTT/#","qos":"2","datatype":"auto","broker":"9cd488aa.0faac8","x":250,"y":240,"wires":[["343ebb6b.450504"]]},{"id":"9cd488aa.0faac8","type":"mqtt-broker","name":"","broker":"192.168.100.4","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Y tras pegar el texto clicamos sobre IMPORT:

Veremos que se nos carga una pestaña nueva denominada MiBandEnCasa. Clicamos sobre ella:

Si nos resulta más cómodo ver el esquema al completo en la pantalla hacemos zoom out y listo:

Y veremos que se nos carga el flow completo. Vamos a configurarlo con nuestros datos:

Efectuamos doble click en home/OpenMQTTGateway_ESP32_BLEComedor/BTtoMQTT/#:

Clicamos en el lapiz:

Introducimos la IP de nuestro domoticz. Si tenemos USER y PASS de MQTT lo introducimos en Security y aceptamos con Add:

Nos aparecerá la IP correctamente cargada seguida del :1883 y clicamos en DONE.

Al volver a la pantalla anterior sustituiremos el texto «home/OpenMQTTGateway_ESP32_BLEComedor/BTtoMQTT/#» por el Topic que hemos extraído antes de MQTT de nuestro MiBand, quitaremos el número MAC del final y pondremos un «#«, y aceptamos:

Repetiremos el proceso para los demas home/OpenMQTTGateway_ESP32_BLEXXXXXXXX/BTtoMQTT/# si los tenemos:

Ahora nos vamos a Domoticz/in y buscaremos en el desplegable si aparece la IP de nuestra raspberry (que hemos introducido anteriormente) y lo seleccionamos:

Si no aparece clicamos sobre el lápiz y lo introducimos manualmente como en el paso anterior. Recuerda añadir el USER y PASS de MQTT si lo tienes habilitado.

Ahora clicamos sobre Dispositivos (mac):

Introducimos el número MAC copiado antes del programa MQTT explorer. Si tenemos mas de un MiBand introducimos una MAC tras otra añadiendo una linea, como en nuestro ejemplo.

Volvemos a tener la pantalla inicial. Ahora muy importante configurar el IDX de nuestro dummy creados anteriormente en domoticz clicando sobre Pulsera MiBand. Ten en cuenta que el primer nodo que sale de Dispositivos (mac) (en nuestro ejemplo MiBand Comedor) ha de corresponder con el primer número MAC que hemos introducido en la lista de Dispositivos (mac). Los IDX que introduzcas ahora harán referencia a ese número MAC.

Introducimos los IDX donde corresponde y repetimos el proceso para el resto de MiBands que tengamos.

Vamos a comprobar fácilmente si hemos introducido bien los datos. Para ello, clicamos sobre DEPLOY a la derecha:

Pueden ocurrir dos cosas, que nos cargue correctamente (lo ideal) o que nos aparezca desconectado. Si aparece desconectado revisa el server. Asegúrate de que has introducido correctamente la IP de tu raspberry- Y recuerda el USER y PASS de MQTT, tienes?  Lo has introducido correctamente?

Comprobamos el funcionamiento en domoticz

Una vez hemos clicado en DEPLOY y nos aparece domoticz/in como connected, nos vamos a domoticz y comprobamos que está funcionando correctamente:

Si te da error o no recibes los datos en domoticz tienes dos opciones;

  1. Modificar el nodo de Pulsera Miband con el siguiente texto cambiando el 163 por el IDX de tu custom sensor:
var idx_steps=163
var message=0
//pasos
if(msg.payload.steps!==null){
message= msg.payload.steps.toString();
msg.payload = {"command": "udevice", "idx": idx_steps, "nvalue":0,"svalue":message};
}
return msg;

2. Si sigue dándote error, comprueba tu versión de Node Red y actualízala si no es la última introduciendo la siguiente linea en putty:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Cómo localizar errores en node red

Os damos un truquito para vuestra información. Tenemos un node en el listado de la izquierda que se llama DEBUG. Cuando lo llevamos a la pantalla principal, lo conectamos a un node y lo activamos, nos dá mucha información (como un LOG) en la columna de la derecha del todo. Os explicamos con unas cuantas imágenes cómo conseguirlo:

Mantén el cursor pulsando la bola del final del recuadro del mqtt/in y arrástrala hasta la bola del inicio del recuadro del debug:

Clicamos sobre deploy:

Activamos la cucaracha y a la derecha nos aparecerá el debug con info de errores /( y así podremos analizar qué estamos haciendo mal) o info correcta:

Inicio automático de Node RED con Raspberry Pi

Recordar que por defecto Node RED está apagado. Podemos iniciarlo de dos formas diferentes: manual o automático.

Para inicio manual introducimos en puTTY:

node-red-start

Para que Node Red inicie de forma automática (tras caídas de red, o tras apagar y encender la raspberry) lanzamos el siguiente comando en puTTY:

sudo systemctl enable nodered.service

Agradecimientos

Agradecer especialmente a Ru_ruru del grupo de Telegram «Domoticz a lo spain» su ayuda en la alternativa para corrección de posibles errores.

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!