OpenHAB 2019 #4 (Controla tu calefacción)

Anteriormente hemos visto como controlar una luz a través de MQTT y como se actualiza el estado en nuestro sitemap si se produce algún cambio por una activación manual.

En éste post podremos comprobar como con un sólo dispositivo es posible tener varios canales de envío y recepción de información.

Un caso práctico puede ser sustituir el termostato de nuestro salón por un relé y un sensor de temperatura. Lo mismo que podemos tener actualmente pero teniendo toda la información y el control en nuestro teléfono móvil.

Este modelo con una ligera modificación y un sensor DHT11 sería suficiente para nuestro propósito.

esp8266rele

Para el ejemplo propuesto vamos a suponer que el relé recibe el comando «0» o «1» a través del topic «salon/termostato» y a la vez necesitamos otro canal para recibir la temperatura que nos proporciona el sensor. Por ejemplo: «salon/temperatura»

Teniendo claros éstos puntos vamos a configurar nuestro OpenHAB.

Accedemos a través de Putty con nuestro usuario y contraseña y con la instrucción:

sudo nano /etc/openhab2/things/mqtt.thing

Añadimos las siguientes líneas:

Thing topic esp8266 "ESP8266 Rele" @ "Salón" {
    Channels:
    Type switch : termostato "Relé Termostato" [ commandTopic="salon/termostato" ]
    Type number : temperatura "Temperatura Salón" [ stateTopic="salon/temperatura" ]
}

Vemos cómo se añade un nuevo dispositivo («Thing») en nuestro menú de OpenHAB

Newthing

Si bien en el post anterior  el canal del relé tenía un topic para recibir comandos y otro para notificar su estado, podreis comprobar que en éste caso el relé sólo recibe comandos y no es necesario saber si cambia de estado ya que sólo recibe ordenes del servidor mosquitto.

Igualmente el sensor de temperatura sólo devuelve información por lo que únicamente habilitamos un canal para recibir las nuevas lecturas.

Editaremos el  archivo items para vincular los items con los canales

Entramos al editor con la instrucción:

sudo nano /etc/openhab2/items/home.items

Insertamos las siguientes líneas. Sólo os recuerdo que el nombre completo del canal lo podeis comprobar en el apartado «Configuration > Things > ESP8266 Rele»

Switch termostato_item "Calefacción" <radiator> { channel="mqtt:topic:mosquitto:esp8266:termostato" }
Number salonTemp_item "Temperatura interior [%.1f ºC]" <temperature> { channel="mqtt:topic:mosquitto:esp8266:temperatura" }

Y por último nos queda insertar los nuevos item en nuestro sitemap

sudo nano /etc/openhab2/sitemaps/casa.sitemap

Nuevas líneas para nuestro sitemap:

Switch item=termostato_item
Text item=salonTemp_item

De ésta forma ya podremos ver la temperatura de nuestra casa y controlar el encendido de nuestra calefacción.

Como podeis ver, modificar 3 archivos es suficiente para configurar correctamente nuestros dispositivos conectados a nuestro servidor Mosquitto.

Capturathings

Hasta aquí todo perfecto. Tenemos un sensor de temperatura y un relé conectado con el que podemos encender o apagar nuestra calefacción, pero nos falta un detalle, la programación de la temperatura de confort y el horario de apagado / encendido de la calefacción.

Para ésto vamos a crear un archivo calefaccion.rules

Nuevamente usaremos Putty para conectarnos al servidor y con el comando:

sudo nano /etc/openhab2/rules/calefaccion.rules

Se abre el editor e introducimos las siguientes líneas

rule "Enciende a una hora concreta de lunes a viernes (6:00)"
when
    Time cron "0 0 6 ? * MON-FRI" 
then
    sendCommand(termostato_item, ON)
end

rule "Apaga a una hora concreta de lunes a viernes (6:45)"
when
    Time cron "0 45 6 ? * MON-FRI"
then
    sendCommand(termostato_item, OFF)
end

Con ese par de reglas conseguimos encender la calefacción durante 45 minutos y que a la hora de levantarnos por la mañana tengamos una temperatura un poco más agradable los días laborables.

Ese es un ejemplo pero podemos incluir más:

rule "Regla de calefacción cada 10 minutos entre las 14 y las 21 horas"
when
    Time cron "0 0/10 14-21 * * ?" 
then
    if (salonTemp_item.state > 20){
        sendCommand(termostato_item, OFF)
    } else {
        sendCommand(termostato_item, ON)
    }
end

Todos los días entre la 2 pm y las 9 pm se realiza una comprobación de la temperatura y si ésta supera los 20 grados se envía la orden de apagado. Igualmente se encenderá de manera automática si la temperatura es inferior a esos 20 grados de referencia.

 

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s