Continuando con la domótica de casa, algo a tener en cuenta, para una futura climatización automática o simplemente por saber el estado de tu hogar, es la temperatura y humedad de cada una de las estancias. Para ello aunque existen opciones wifi o DYI que nosotros podamos construirnos, pero en este caso, vamos a usar los sensores Xiaomi Mijia LYWSD03MMC el cual podemos encontrar en AliExpress por menos de 3 euros.
Para conectarnos y obtener los datos usaremos una raspberry / orange pi o cualquier otra placa que nos de la posibilidad de tener un linux.
Xiaomi Mijia LYWSD03MMC
Es un sensor de bajo coste con pantalla y conexión bluetooth de bajo coste de la mano de Xiaomi que se integra dentro del ecosistema Mijia Xiaomi Home.
Modelo | Xiaomi Mijia LYWSD03MMC |
---|---|
Peso | 78g |
Dimensiones | 4,30 x 4,30 x 1,25 cm |
Pantalla | 1.78 " |
Temperatura | -9.9 a 60 ºC |
Humedad | 0 a 99% |
Conectividad | Bluetooth |
Batería | CR2032 |
Como hemos hablado este dispositivo bluetooth se integra dentro del ecosistema Mi Home a través del gateway bluetooth, pero en nuestro caso, vamos a usarlo con conexión directa.
Firmware alternativo ATC MiThermometer
Al igual que ya hiciésemos con los Firmware Sonoff, a este dispositivo LYWSD03MMC vamos a cambiar el firmware para hacerlo más fácil y compatible.
El firmware original, se enlaza mediante una key la cual es posible obtener, pero para no necesitarlo, vamos a actualizarlo de forma muy fácil y simple.
El firmware alternativo es de Hoverboard1 y posteriormente ha sido actualizado por Pvvx.
Flashear Xiaomi MiThermometer LYWSD03MMC
Lo primero que tenemos que hacer es descargar el fichero del firmware desde GitHub:
https://github.com/pvvx/ATC_MiThermometer
Desde un teléfono móvil, recomendablemente, entramos en la url que nos indica en la documentación:
https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
- Primero: Nos conectaremos al dispositivo
- Segundo: Seleccionaremos el Firmware
- Tercero: Empezamos el flasheo
- Cuarto: Nos fijamos hasta que llegue al 100% y reinicie.
Con esto, ya tendremos el nuevo firmware ATC.
Obtener datos BLE con Raspbery Pi
Vamos a usar una Raspberry Pi, aunque también podríamos usar una Orange Pi sin problemas, abaratando el sistema.
Podemos usar el módulo bluetooth que trae la RPi 4 o si tenemos una versión anterior que no dispone de módulo bluetooth, podemos poner un módulo USB y el resultado será el mismo.
Antes te comenzar, tenemos que instalar una serie de paquetes y librerías necesarios.
apt install git curl mosquitto-clients libglib2.0-dev python3-dev bluetooth libbluetooth-dev python3 bluez python3-pip
pip3 install bluepy pybluez
En nuestro caso, vamos a hacerlo sobre la carpeta /data, pero podemos usar cualquiera que se adecue a nuestro sistema.
Vamos a usar la aplicación de JsBergbau MiTemperature2 diseñada para leer estos LYWSD03MMC, la cual a título de comentario está en el repositorio que GitHub tiene almacenado en el Ártico.
git clone https://github.com/JsBergbau/MiTemperature2.git
Ya tenemos la aplicación que vamos a necesitar, pero tendremos que crear 2 ficheros para hacerlos funcionar.
Fichero de configuración de Sensores
Vamos a crear un fichero de configuración de Sensores, el cual será usado para que la aplicación sólo lea esos sensores y le asignemos un nombre. En nuestro caso lo llamaremos Sensores.ini
[A4:C1:38:68:00:01]
sensorname=Despacho
[A4:C1:38:68:00:02]
sensorname=Salon
Fichero de acciones
Ya que tenemos la aplicación y los sensores LYWSD03MMC que queremos controlar, vamos a decidir que vamos a hacer con esos datos.
Al igual que ya hicimos con el consumo eléctrico integrado en Grafana mediante InfluxDB, vamos a integrarlo igual.
Ya sabemos como montar con Docker InfluxDB, por lo que no vamos a volver a explicarlo. Tan sólo creamos la base de datos, que queramos. Yo la he llamado sensores.
Vamos a aprovechar y a volcar los datos también a MQTT, por si queremos recuperarlos desde Home Assistant, Node Red o cualquier otro sistema.
En mi caso, he llamado al fichero influx_mqtt_sensores:
#!/bin/bash
# Configuramos Parametros
RUTA="/data/MiTemperature2"
MQTT_IP="192.168.0.210"
MQTT_USER="MiUsuario"
MQTT_PASS="NuestraPassword"
MQTT_TOPIC="Alferez/Datos/Sensores"
INFLUX_IP="192.168.0.201"
INFLUX_PUERTO="8086"
INFLUX_DB="sensores"
# Obtenemos variables
LUGAR="$2"
TEMPERATURA="$3"
HUMEDAD="$4"
BATVOLT="$5"
BATLEV="$6"
# Integramos datos en MQTT
mosquitto_pub -h $MQTT_IP -t "$MQTT_TOPIC/$LUGAR/temp" -u $MQTT_USER -P $MQTT_PASS -m "$TEMPERATURA"
mosquitto_pub -h $MQTT_IP -t "$MQTT_TOPIC/$LUGAR/humidity" -u $MQTT_USER -P $MQTT_PASS -m "$HUMEDAD"
mosquitto_pub -h $MQTT_IP -t "$MQTT_TOPIC/$LUGAR/batteryvoltage" -u $MQTT_USER -P $MQTT_PASS -m "$BATVOLT"
mosquitto_pub -h $MQTT_IP -t "$MQTT_TOPIC/$LUGAR/batterylevel" -u $MQTT_USER -P $MQTT_PASS -m "$BATLEV"
# Integramos datos en InfluxDB
/usr/bin/curl -s -i -XPOST "http://${INFLUX_IP}:${INFLUX_PUERTO}/write?db=${INFLUX_DB}" --data-binary "temp,sensor=$LUGAR value=$TEMPERATURA"
/usr/bin/curl -s -i -XPOST "http://${INFLUX_IP}:${INFLUX_PUERTO}/write?db=${INFLUX_DB}" --data-binary "hum,sensor=$LUGAR value=$HUMEDAD"
/usr/bin/curl -s -i -XPOST "http://${INFLUX_IP}:${INFLUX_PUERTO}/write?db=${INFLUX_DB}" --data-binary "bat,sensor=$LUGAR value=$BATLEV"
Lógicamente tendremos que hacer este fichero ejecutable (chmod +x) y poner los datos perteneciente a nuestros sistemas. Si no queremos meterlo en MQTT por ejemplo, podemos quitar esa parte.
Ejecución de la aplicación
Para ejecutar nuestra aplicación y que empiece a introducir los datos en InfluxDB, tenemos que ejecutarlo:
/data/MiTemperature2/LYWSD03MMC.py -a -b 1000 -r --debounce --skipidentical 50 --name Alferez --callback influx_mqtt_sensores -df /data/MiTemperature2/sensores.ini -odl
Podemos lanzarlo en un screen, en background o ponerlo para que cuando el sistema se arranque la aplicación se ejecute de nuevo.
Datos en Grafana
Ya tenemos nuestros datos, ahora sólo nos queda recuperar esos datos que hemos guardado de los LYWSD03MMC y mostrarlos.
Debemos añadir un panel para temperatura y otro para humedad e ir introduciendo los sensores para que los muestre:
Y esto es lo que obtendremos:
Integración en sistema Domótico
Teniendo ya los datos en el servidor Mosquitto, es fácil recuperar esos datos de los LYWSD03MMC en nuestro sistema. Aquí podemos ver nuestros datos en Home Assitant:
Con estos datos integrados, podemos empezar a realizar automatizaciones como encender un aire acondicionado o un alentador en base a la temperatura o activar un deshumidificador en base a la humedad que tengamos en una habitación.