Raspberry: Hogar inteligente
Una Smarthome u hogar inteligente es una vivienda que tiene una serie de dispositivos para medir algunas cualidades del lugar y realizar acciones.
Por lo general estos dispositivos requieren de un HUB el cual se conecta a la red del hogar y estos kits pueden llegar a costar por lo menos 200 USD. Pero si lo que quieres es probar ideas de Smart Things en tu hogar no tienes que gastar tanto dinero.
Para empezar hice un sensor de movimiento, humedad y temperatura compatible con el HomeKit de Apple utilizando una Raspberry Pi. Utilice los siguientes componentes:
Componente | Precio |
---|---|
Raspberry Pi 3B+ con fuente de energia | $50 USD |
Sensor de Temperatura y Humedad DHT11 | $2 USD |
Sensor de movimiento HC-SR501 | $2 USD |
Total: $54 USD |
Hardware
Para conectar el sensor de humedad DHT11 a la Raspberry debe ser de la siguiente forma.

Para conectar el sensor de movimiento HC-SR501

Software
El sistema operativo que utilice fue Raspbian que puede ser instalado fácilmente mediante la herramienta NOOBS.
Tip: Para que no tengan que trabajar sobre la Raspberry pueden conectarse a ella mediante SSH o VNC primero deben activar el protocolo que deseen en las configuraciones de Raspbian.
Toda la programación la hice sobre NodeJS, se instala con los siguientes comandos.
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - sudo apt install nodejs
Cuando tenemos la instalación de NodeJS lista podemos instalar los módulos.
Homebridge
El primer modulo es HomeBridge es un modulo escrito sobre NodeJS que brinda compatibilidad de cualquier dispositivo con Apple Homekit. Se instala y sus dependencias con el siguiente comando.
sudo apt-get install libavahi-compat-libdnssd-dev npm install -g homebridge
Mosca
Mosca es un servidor MQTT por el cual se efectuara la comunicacion entre Homebridge y los dispositivos. Lo instalamos de la siguiente manera.
npm install mosca pino -g
Homebride MQTTthing
homebridge-mqttthing es un modulo para Homebridge que le permite soportar varios dispositivos mediante MQTT.
npm install -g homebridge-mqttthing
Codigo
Ahora crearemos una carpeta donde pondremos nuestro código. Yo le llamare smarthome.
En la terminal nos movemos a la carpeta de smarthome e instalamos los módulos para la comunicación con los sensores. onoff para el sensor de movimiento y node-dht-sensor para la humedad y temperatura y mqtt que nos sirve para enviar los mensajes al servidor mosca.
npm i onoff node-dht-sensor mqtt --save
En la misma carpeta de smarthome creamos un archivo llamado temperatura.js y tendra un código de la siguiente manera:
var sensor = require('node-dht-sensor'); var mqtt = require('mqtt') var client = mqtt.connect('mqtt://localhost') setInterval(() => { sensor.read(11, 4, function(err, temperature, humidity) { if (!err) { client.publish('my/room/temperature',temperature.toFixed(1)) client.publish('my/room/humidity',humidity.toFixed(0)) } else { console.log(err) } }); }, 1000 * 13);
Con este código cada 13 segundos vamos a enviar una actualización sobre las medidas de temperatura y humedad.
Para el sensor de movimiento creamos un archivo llamado movimiento.js y le pegamos el siguiente código.
var gpio = require('onoff').Gpio; var pir = new gpio(12, 'in', 'both'); var mqtt = require('mqtt') var client = mqtt.connect('mqtt://localhost') pir.watch(function(err, value) { if (value == 1) { client.publish('my/room/pir', '1') } else { client.publish('my/room/pir', '0') } });
Con este código enviamos una actualización cada vez que el sensor detecta movimiento en la habitación.
Por un momento nos vamos a la carpeta de homebridge. Si esta carpeta no existe aun, ejecuten el comando homebridge y luego CTRL + C para detener su ejecución.
cd ~/.homebridge/
En esta carpeta crearemos un archivo llamado config.json en el cual le diremos HomeBridge de donde sacar la información para los sensores.
{ "bridge": { "name": "Homebridge", "username": "DD:7C:A6:26:A7:69", "port": 55555, "pin": "423-37-792" }, "description": "This is an example configuration file. You can use this as a template for creating your own configuration file.", "platforms": [], "accessories": [ { "accessory": "mqttthing", "type": "temperatureSensor", "name": "Temperatura", "topics": { "getCurrentTemperature": "my/room/temperature" }, "history": true }, { "accessory": "mqttthing", "type": "humiditySensor", "name": "Humedad", "topics": { "getCurrentRelativeHumidity": "my/room/humidity" }, "history": true }, { "accessory": "mqttthing", "type": "motionSensor", "name": "Movimiento", "topics": { "getMotionDetected": "my/room/pir" }, "integerValue": true, "history": true } ] }
Con esta configuración homebridge se conectara a mosca por defecto y comenzara a recibir información de los sensores.
Ahora volvemos a la carpeta de smarthome y ponemos a andar todo.
homebridge & $(mosca -v | pino) & node temperatura.js & node movimiento.js &
En la terminal le saldrá un codigo QR el cual pueden escanear con la App de HomeKit en su dispositivo iOS.
Si tienen todo bien configurado verán una pantalla como esta.

Si tienen alguna sugerencia o necesitan ayuda no duden en dejar un comentario y recuerden compartir el articulo a quien le pueda interesar seria de mucha ayuda!
0 Comments