Hoy os traemos un post de un colaborador y miembro del grupo de Telegram, así como del foro, que es donde originalmente se ha publicado este tutorial, pero, he pensado que la idea es buena y seguro que a muchos os puede ayudar. Él autor es Alberto Miguelez, desde Asturias que ha querido compartir su trabajo para facilitar al resto el que podamos integrar este termostato BeOK de forma sencilla.
Integrando el termostato BeoK, Fluoreon o Decdeal en Home Assistant
En el grupo de Telegram me han pedido si podía explicar la integración del termostato BEOK con Home Assistant.
Pues bien, vamos allá. Lo primero indicar que el termostato BEOK funciona con una nube bajo la plataforma de Broadlink, lo que vamos a hacer es controlarlo localmente desde el Home Assistant, eso sí, sin perder la operativa desde la nube de Broadlink.
Este procedimiento, aunque sólo lo he probado con el Beok BOT-313Wifi , en principio funciona para las marcas BEOK , FLOUREON, DECDEAL ya que comparten el mismo hardware.
PASOS PREVIOS – no indicados en este tutorial
1. Tener instalado y operativo el termostato , por supuesto conectado a la wifi.
2. Darle una ip fija al termostato ( en el ejemplo será 192.168.0.110 ) . Yo las asigno en el router.
3. Conocer la MAC del termostato . En la pantalla de la app móvil te lo indica. ( para el ejemplo será 34:ea:34:xx:yy:zz )
4. Tener acceso via Samba ( o similar) a los ficheros de configuración de Home Assistant.
CONFIGURACIÓN EN HOME ASSISTANT
Lo primero indicar que Home Assistant no soporta oficialmente los termostatos BEOK, por lo que tenemos que utilizar los custom_components.
- Copiar el fichero python ( extension .py) en \custom_components\climate
En el directorio donde tienes el configuration.yaml crea una carpeta ( si no la tienes ya creada) que se llame custom_components , dentro de ella una que se llame climate , en ella tendrás que pegar el fichero broadlinkHysen.py ( se encuentra en el zip adjunto a este hilo) o bien puedes descargarlo de aquí( aunque tienes que cambiarle la extension de .yaml a .py)
A partir de este paso todo el código que hay que escribir lo podéis descargar al final del post, en un package para tenerlo todo junto y ordenado . Ir al final del post en el apartado PACKAGE
2. Crear termostato en el configuration.yaml
Ahora el paso es crear la entrada en el configuration.yalm similar a este codigo, obviamente con la ip fija asignada al termostato en el campo host y con la MAC de tu termostato.
climate: - platform: broadlinkHysen name: Termostato_Casa host: 192.168.0.110 # <- Cambiala por la IP asignada a tu termostato mac: 34:EA:34:xx:yy:zz # <- Cambiala por la MAC de tu termostato target_temp_default: 20 target_temp_step: 0.5 scan_interval: 15
El scan_interval son los segundo que tarda en refrescar la información del termostato. Aquí está cada 15sg, yo una vez finalice todas la automatizaciones lo cambiaré a 60 sg, ya que con ese refresco me parece suficiente.
Con estos dos simples pasos ya puedes verificar el código y reiniciar el sistema. Ya lo tendrías operativo y te debería salir este grupo
EXTRAS
Esta sección de extras voy a compartir algunos sensores y automatizaciones que tengo creados por si podéis sacarle algún beneficio.
- Sensores
Vamos a extraer de la información que manda el termostato sensores por si queremos utilizarlos en nuestras automatizaciones o bien para ver estadísticas.- Sensor calefacción. Es un sensor que puede tomar tres valores : off, heat o auto.
off : termostato apagado
heat : termostato encendido en modo manual
auto : termostato encendido en modo programación ( la del Beok, no del HA)
- Sensor calefaccion_activa . Es un sensor que puede estar a 0 a 1 .
1 : el contacto del termostato está cerrado . Es cuando da la orden a la caldera de que se ponga en marcha
0 : el contacto del termostato está abierto, bien porque termostato apagado o por temperatura por encima del setpoint.
- Sensor calefaccion_temperatura: La temperatura de la habitación donde está el termostato.
- Sensor calefaccion_setpoint: La temperatura que queremos que alcance la habitación.
Para conocer las estadísticas del tiempo que está activa la caldera , utilizando el sensor de calefaccion_activa, creamos unas variables que nos muestran el tiempo que lleva la caldera activa :
- Sensor calefaccion_activa_hoy: El tiempo que llevamos con ella activa durante el día de hoy
- Sensor calefaccion_activa_ayer: Cuanto tiempo estuvo activa ayer
- Sensor calefaccion_activa_semana: El tiempo que llevamos con ella activa durante esta semana
- Sensor calefaccion_activa_hoy: El tiempo que llevamos con ella activa durante el mes
- Sensor calefacción. Es un sensor que puede tomar tres valores : off, heat o auto.
El código para crear estos sensores es :
sensor: - platform: template sensors: calefaccion_modo: #el modo puede ser off , heat o auto friendly_name: calefaccion_modo value_template: "{{ states.climate.termostato_casa.attributes.operation_mode }}" calefaccion_activa: # 1 si está la orden de funcionar a la caldera friendly_name: calefaccion_activa value_template: "{{ states.climate.termostato_casa.attributes.heating_active }}" calefaccion_temperatura: # Temperatura actual de la habitacion del termostato friendly_name: calefaccion_temperatura value_template: "{{ states.climate.termostato_casa.attributes.current_temperature | float }}" calefaccion_setpoint: # Setpoint a la temperatura que quedamos alcanzar friendly_name: calefaccion_setpoint value_template: "{{ states.climate.termostato_casa.attributes.temperature | float }}" - platform: history_stats name: calefaccion_activa_hoy entity_id: sensor.calefaccion_activa state: 1 type: time start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' end: '{{ now() }}' - platform: history_stats name: calefaccion_activa_ayer entity_id: sensor.calefaccion_activa state: 1 type: time end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' duration: hours: 24 - platform: history_stats name: calefaccion_activa_semana entity_id: sensor.calefaccion_activa state: 1 type: time start: '{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}' end: '{{ now() }}' - platform: history_stats name: calefaccion_activa_mes entity_id: switch.despacho state: 'on' type: time start: '{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().day * 86400 }}' end: '{{ now() }}'
Automatizaciones
Voy ahora a compartir dos automatizaciones que tengo realizadas .
- AutoApagado a las 23:30
Con el fin de no olvidarme la calefaccion encendida toda la noche, he creado una automatizacion para apagar la calefaccion todos los dias a las 23:30.
El Código es muy sencillo
- id: '1542895212917' alias: Apagar_calefaccion_23:30 trigger: - at: '23:30:00' platform: time action: - data: entity_id: climate.termostato_casa service: climate.turn_off
- Luz de Xiaomi Gateway
Para conocer de manera rápida el estado de la calefacción, he aprovechado el gateway de Xiami para que mediante su iluminacion me diga el estado de la caldera.
La idea es que si el termostato está apagado , la luz del gateway tambien.
Si está en automático la luz se ponga en amarillo.
Si está en manual se ponga de morado.
Además de si está activa, es decir calentando, la intensidad de la luz sea mas fuerte.Ojo , que tendréis que modificar el nombre de vuestro gateway
El Código es
automation: - id: '1546118478475' alias: luz_calefaccion trigger: - platform: state entity_id: sensor.calefaccion_modo - platform: state entity_id: sensor.calefaccion_activa condition: [] action: - service_template: >- {%- if is_state('sensor.calefaccion_modo', "off") -%} script.Luz_apagar {%- else -%} script.luz_encender {%- endif -%} data_template: light: light.gateway_light_abcdefghi brightness : >- {%- if is_state('sensor.calefaccion_activa', '1') -%} 200 {%- else -%} 30 {%- endif -%} color1 : >- {%- if is_state('sensor.calefaccion_modo', "auto") -%} 255 {%- else -%} 255 {%- endif -%} color2 : >- {%- if is_state('sensor.calefaccion_modo', "auto") -%} 225 {%- else -%} 0 {%- endif -%} color3 : >- {%- if is_state('sensor.calefaccion_modo', "auto") -%} 0 {%- else -%} 225 {%- endif -%}
Para usar esta automatización deberemos crear 2 scripts , que serían
script: #Script apagar la luz , con input del entity luz_apagar: alias: Apagar_Luz sequence: - service: light.turn_off data_template: entity_id: "{{ light }}" #Script apagar la luz , con input del entity, brillo y colores RGB luz_encender: alias: Encender_luz sequence: - service: light.turn_on data_template: entity_id: "{{ light }}" brightness: "{{ brightness }}" rgb_color: [ "{{ color1 | int }}" ,"{{ color2 | int }}","{{ color3 | int }}" ]
Customizacion y grupo
Vamos ahora a dejarlo un poco presentable con las customizaciones y los grupos.
Lo que haremos será que en el panel que vemos en la pestaña muestre la mínima información que deseemos. En mi caso he decidido poner solo el componente climate y las dos automatizaciones para poder activar o desactivarlas.
Pinchando en el grupo , en la ventana que aparece se mostrará todo los sensores creados anteriormente y las estadísticas de uso.
Asi pues, así quedaría el grupo y las dos ventanas que aparecen bien pinchando en el sensor de caldera o bien en el grupo.
El código será:
#Creacion del grupo para tenerlo todo ordenado group: caldera: name: Caldera view: no control: hidden entities: - climate.termostato_casa - sensor.calefaccion_modo - sensor.calefaccion_activa - sensor.calefaccion_temperatura - sensor.calefaccion_setpoint - automation.luz_calefaccion - automation.auotapagado_calefaccion_noche - sensor.calefaccion_activa_hoy - sensor.calefaccion_activa_ayer - sensor.calefaccion_activa_semana - sensor.calefaccion_activa_mes # Customizacion homeassistant: customize: sensor.calefaccion_modo: hidden: true sensor.calefaccion_activa: hidden: true sensor.calefaccion_temperatura: hidden: true sensor.calefaccion_setpoint: hidden: true script.luz_apagar: hidden: true script.luz_encender: hidden: true automation.luz_calefaccion : icon: mdi:lightbulb-on automation.auotapagado_calefaccion_noche : icon: mdi:timer-off sensor.calefaccion_activa_hoy: hidden: true sensor.calefaccion_activa_ayer: hidden: true sensor.calefaccion_activa_semana: hidden: true sensor.calefaccion_activa_mes: hidden: true climate.termostato_casa: icon: mdi:radiator
PACKAGE
Como se indicó anteriormente , se deja todo el código en un único fichero package.
Este fichero se ha de copiar en el directorio packages y requiere que se modifiquen las líneas 5 , 6 y 99.
Tener en cuenta que para utilizarlo con esas modificaciones se ha de tener un gateway de xiaomi ( u otra lámpara que admita brillo y color).
Puedes descargarlo y modificarlo a tu gusto justo aquí debajo.
Fichero: BroadlinkHysen
Fichero: Package de la calefacción
Bueno espero que sea de utilidad este pequeño post, o bien para el termostato BEOK o para copiar alguna idea de las automatizaciones, grupos y demás trocitos de código.
Un saludo, amiguelezg
—
Si estáis interesados en comprar estos termostatos, podéis hacerlo aquí:
COMPRA
Comprobado que funciona el BEOK: Amazon, Amazon (sin prime), se puede comprar en Aliexpress pero la diferencia no es muy grande.
Confirmado por un usuario en el foro de HA DECDEAL: Amazon
Debería funcionar el FLUOREON (El modelo de Amazon está confirmado por un usuario del foro de HA): Amazon, Aliexpress.
—
¡Muchas gracias a Alberto Miguelez por este gran tutorial! Si queréis ver su post original en el foro, podéis verlo aquí.
Fuente: Foro de domótica
¿Quieres montarte tu propio sistema Smart Home?
¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos!
Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram!
¡Te esperamos!Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es
Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es
* Tecnología en general * * Juguetes / consolas / Juegos de mesa * * Manualidades *
Descubre más desde Domótica en Casa
Suscríbete y recibe las últimas entradas en tu correo electrónico.
Luisdlahuerta
Muchas gracias por este aporte, acabo de probarlo y me va perfecto, no estoy usando las automatizaciones, ya que no controlo mucho y no quiero liarla…
Hasta ahora he usado el “generic thermostat” con un esp8266 directo a la caldera y los sensores DHT22 en las habitaciones con su correspondiente esp de forma que todos apuntaban al relé de la caldera.
¿Sabéis si es posible hacer lo mismo pero con este termostato? ¿cómo sería la automatización para esto?
Un saludo
eduardo
Si te refieres a activar desde cada ESP8266 el termostato integrado en HA, si, podrías mantener la misma lógica que ahora tienes, con una llamada a una URL de tu HA (por API)
Luisdlahuerta
Gracias por la respuesta, lo veré y estudiaré su funcionamiento.
Pinta bien.
Un saludo
Javier López
Hola buenas tardes, quería prdguntarle si sabe que tipo de adaptacion se ha de realizar para que funcione en Home assistant versión 0.92. Gracias. No logro que funcione tras la actualización
eduardo
No tengo el Beok, en el canal de Telegram igual alguien puede ayudarte
LeFric
¿Puedes volver a subir el fichero, en concreto, el Package de la calefacción?
Gracias.
Alejandro
Hola buenos días,
En primer lugar gracias por el aporte. He recibido el termostato y estoy intentado integrarlo siguiendo todos tus pasos. Después de dejar el .py en la carpeta climate en custom_components, modificar el configurator.yaml y reiniciar recibo un error en el log que dice “BroadlinkHysen unidentified integration”. ¿Sabrías decirme porque?
Gracias de antemano
portátiles de ocasión
Hola, buenas noches.
Estoy valorando cambiar mi termostato y he visto este modelo: BOT306RF-WIF. Es Rf y wifi, tiene una base que va a la caldera y luego el termostato… es lo que necesito puesto que mi instalación no tiene cableado…
Sabéis si esta integración es válida para ese modelo?, he preguntado en telegram, pero nadie me ha dicho nada.
Gracias.
eduardo
No sabría decirte porque igual el modelo lleva cerrado el MQTT y por tanto, no serviría
Cesar
Hola, estoy en la misma situación que tu… necesito que la base sea portátil para poder ponerla en otro sitio que no sea el que decidió el “iluminado de turno”… al final lo pusiste???
Cesar Gonzalez Cacho
Hola, final instalaste éste termostato?? yo he estado mirando algunos, pero me interesa el que la base no tenga que estar enchufada al cargador de movil continuamente…. se puede integrar en HA???
Gracias
jorge
has tenido problemas para conectar el termostato a la wifi?
en mi caso es imposible he probado varias configuraciones y no lo consigo
Five Correo
Hola desde hace algún tiempo aparece este mensaje de advertencia en registros
Template warning: ‘float’ got invalid input ‘None’ when rendering template ‘{{ states.climate.termostato_casa.attributes.temperature | float }}’ but no default was specified. Currently ‘float’ will return ‘0’, however this template will fail to render in Home Assistant core 2022.1
Me pordiais idicar que se debe modificar ??
Gracias
Juanma
Hola! He conseguido instalar mi beok, tengo una pregunta. Se podría instalar un segundo termostato? Si es así … como se añadiría al configuration.yaml?