Inserción de MiFlora en domoticz mediante Node Red conectándolo a la raspberry directamente
@SeRgEY00000008 del grupo «Domoticz a lo spain» de telegram nos explica cómo integrar un dispositivo Xiaomi MiFlora en domoticz mediante Node Red.
Dividimos esta guía en varios apartados
Requisitos inciales
Para poder seguir este tutorial es necesario tener una raspberry con conectividad bluetooth, tener instalado Node Red en nuestra Raspberry, además de Domoticz, MQTT y demás.
También es fundamental, lógicamente, disponer de un Xiaomi MiFlora en nuestro poder. Lo he probado con el modelo Europeo y con el Chino. El chino nunca me funcionó con el Xiomi Home y lo tenía tirado en un cajón. Lo compré por error.
Deberemos, a su vez, disponer de cobertura bluetooth en el sensor Xiaomi Plant Care.
Os dejamos el listado de tutoriales para poder instalar lo que necesitéis antes de empezar esta guía:
- Material necesario para poner en marcha domoticz
- Instalación de domoticz desde cero
- Instalación de Mosquitto MQTT Broker en Raspberry Pi
- Configurar MQTT con usuario y contraseña (opcional)
- Cargamos MQTT en nuestro domoticz
- Instalar Watchdog en domoticz
- Crear usuario y contraseña para domoticz (opcional)
- Cómo instalar node red en nuestra raspberry pi
Descarga del software necesario
Putty
Por último y no por ello menos importante, el puTTY, que utilizaremos para conectar con nuestra raspberry por consola. Lo podéis descargar de aquí https://www.putty.org/
Lo más seguro es que vuestro PC, si es moderno, sea de 64 bits. En caso de duda bajar la versión de 32, o bien probar y si la de 64 bits no os funciona ya os bajáis la de 32 bits.
Obtener la Mac del Xiaomi Plant Care
Abrimos puTTY y entramos en nuestra raspberry. Lanzamos el siguiente comando:
sudo hcitool lescan
Busca el dispositivo Bluetooth con la descripción Flower Care y anota la MAC.
Creamos los Dummys (sensores) en domoticz
Iniciamos domoticz, y vamos a:
Domoticz > Setup > Hardware
Creamos uno por uno varios sensores, en total 4, clicando sobre Create Virtual Sensors:
Serán los siguientes:
- Un dummys tipo Lux
- Un dummy tipo Percentage
- Un dummy tipo Custom Sensor con Axis Lavel uS/cm
- Y un dummy tipo Temperature
Nos vamos a:
Domoticz > Setup > Devices
Buscamos los dummys que acabamos de crear y anotamos sus IDX.
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:
Buscamos el plugin a cargar en node red: node-red-contrib-xiaomi-ble, y lo instalamos.
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":"62dc4018.3ebcf","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"a3420186.80ce8","type":"function","z":"62dc4018.3ebcf","name":"Temperatura","func":"msg.payload = msg.payload.temperature;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":570,"y":160,"wires":[["9938e252.28392"]]},{"id":"aa1f65e1.c5f0b8","type":"function","z":"62dc4018.3ebcf","name":"Luz solar","func":"msg.payload = msg.payload.light;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":560,"y":200,"wires":[["f5065bbb.82e708"]]},{"id":"622d74d7.7dfaec","type":"function","z":"62dc4018.3ebcf","name":"Humedad del suelo","func":"msg.payload = msg.payload.moisture;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":590,"y":240,"wires":[["16095e53.ef9d82"]]},{"id":"ca258a04.65d8d8","type":"function","z":"62dc4018.3ebcf","name":"Fertilidad del suelo","func":"msg.payload = msg.payload.conductivity;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":590,"y":280,"wires":[["ca8dc963.403f48"]]},{"id":"7bfd89a8.6e48f8","type":"function","z":"62dc4018.3ebcf","name":"Bateria","func":"msg.payload = msg.payload.battery;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":560,"y":120,"wires":[["9951e0f5.23d75"]]},{"id":"9938e252.28392","type":"function","z":"62dc4018.3ebcf","name":"Create messages to domoticz","func":"ret = msg.payload;\n\nmsg = {};\nmsg.payload = {};\nmsg.payload.idx = 157; \nmsg.payload.svalue = \"\"+ret;\nmsg.topic = \"domoticz/in\";\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":870,"y":160,"wires":[["e2307002.08a4f"]]},{"id":"e2307002.08a4f","type":"mqtt out","z":"62dc4018.3ebcf","name":"MQTT publish","topic":"","qos":"","retain":"","broker":"b90f278.c4029d8","x":1220,"y":220,"wires":[]},{"id":"ca8dc963.403f48","type":"function","z":"62dc4018.3ebcf","name":"Create messages to domoticz","func":"ret = msg.payload;\n\nmsg = {};\nmsg.payload = {};\nmsg.payload.idx = 160; \nmsg.payload.svalue = \"\"+ret;\nmsg.topic = \"domoticz/in\";\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":870,"y":280,"wires":[["e2307002.08a4f"]]},{"id":"f5065bbb.82e708","type":"function","z":"62dc4018.3ebcf","name":"Create messages to domoticz","func":"ret = msg.payload;\n\nmsg = {};\nmsg.payload = {};\nmsg.payload.idx = 158; \nmsg.payload.svalue = \"\"+ret;\nmsg.topic = \"domoticz/in\";\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":870,"y":200,"wires":[["e2307002.08a4f"]]},{"id":"16095e53.ef9d82","type":"function","z":"62dc4018.3ebcf","name":"Create messages to domoticz","func":"ret = msg.payload;\n\nmsg = {};\nmsg.payload = {};\nmsg.payload.idx = 159; \nmsg.payload.svalue = \"\"+ret;\nmsg.topic = \"domoticz/in\";\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":870,"y":240,"wires":[["e2307002.08a4f"]]},{"id":"9951e0f5.23d75","type":"debug","z":"62dc4018.3ebcf","name":"","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":730,"y":120,"wires":[]},{"id":"3fe9d842.1b49c8","type":"inject","z":"62dc4018.3ebcf","name":"Cada 15'","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"900","crontab":"","once":false,"onceDelay":"","topic":"","payload":"","payloadType":"date","x":120,"y":180,"wires":[["99ee955.4262568"]]},{"id":"99ee955.4262568","type":"Xiaomi BLE","z":"62dc4018.3ebcf","name":"MiFlora Bancal","address":"C4:7C:8D:63:5B:D6","scanningTimeout":"120","x":340,"y":180,"wires":[["7bfd89a8.6e48f8","a3420186.80ce8","aa1f65e1.c5f0b8","622d74d7.7dfaec","ca258a04.65d8d8"]]},{"id":"b90f278.c4029d8","type":"mqtt-broker","name":"","broker":"192.168.1.33","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Y tras pegar el texto clicamos sobre IMPORT:
Y veremos que se nos carga el flow completo. Vamos a configurarlo con nuestros datos:
Deberás revisar los siguientes Nodos:
- MQTT Publish: poner el servidor de MQTT Mosquitto
- Mi Flora: poner la MAC de tu Xiaomi Plant Care
Revisar cada uno de los 4 nodos de función “Create Message to Domoticz” donde pondremos el IDX de cada uno de los dummys que hemos creado antes en domoticz:
- Por último, configurar el lanzador cada 15 minutos al tiempo que queramos.
Vamos a comprobar fácilmente si hemos introducido bien los datos. Para ello, clicamos sobre DEPLOY a la derecha:
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:
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
Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.
Cualquier duda, sugerencia o comentario será bien recibida en la web!