Termostato BEOK ,FLOUREON, DECDEAL

¿Has conseguido solucionar algún problema en Home Assistant y quieres compartirlo? ¿Alguna automatización para ayudar al resto? ¡Comparte!
amiguelezg
Mensajes: 6
Registrado: Mar Dic 18, 2018 11:22 pm

Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por amiguelezg » Mié Ene 02, 2019 6:55 pm

EDITADO PARA VERSIONES POSTERIORES A 0.89

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.
Imagen

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.

  • 1. Copiar los fichero python ( extension .py) en \custom_components\broadlink
    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 broadklink , en ella tendrás que pegar los ficheros __init__.py y climate.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 codigo que hay que escribir lo podeis 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.

    Código: Seleccionar todo

    climate:
      - platform: broadlinkHysen
        [color=#FF0000]friendly_name:[/color]  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 Imagen

EXTRAS
Esta seccion de extras voy a compartir algunos sensores y automatizaciones que tengo creados por si podeis sacarle algun beneficio.
  • Sensores
    Vamos a extraer de la informacion que manda el termostato sensores por si queremos utilizarlos en nuestras automatizaciones o bien para ver estadisticas.
    • Sensor calefaccion. 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 "heat" o "idle" .
      "heat" : el contacto del termostato está cerrado . Es cuando da la orden a la caldera de que se ponga en marcha
      "idle" : el contacto del termostato está abierto, bien porque termostato apagado o por temperatura por encima del setpoint.
    • Sensor calefaccion_temperatura: La temperatura de la habitacion donde está el termostato.
    • Sensor calefaccion_setpoint: La temperatura que queremos que alcance la habitacion.
    Para conocer las estadisticas del tiempo que está activa la caldera , utilazando 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 dia de hoy
    • Sensor calefaccion_activa_ayer: Cuanto tiempo estubo 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
    El código para crear estos sensores es :

    Código: Seleccionar todo

    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:  #"True"  si está la orden de funcionar a la caldera
            friendly_name: calefaccion_activa
            value_template: "{{ is_state('climate.termostato_casa', 'heat') }}"  
          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: "True"
        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: "True"
        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: "True"
        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:  ssensor.calefaccion_activa
        state:"True"
        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

      Código: Seleccionar todo

      - id: '1542895212917'
        alias: Apagar_calefaccion_23:30
        trigger:
        - at: '23:30:00'
          platform: time
        action:
      [color=#FF0000]  - service: climate.set_operation_mode
          data:
            entity_id: climate.termostato_casa
            operation_mode : "off"[/color]
      [/list]
      [list]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.
      
      [color=#FF0000]Ojo , que tendréis que modificar el nombre de vuestro gateway[/color] 
      El Código es 
      [code]
      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

      Código: Seleccionar todo

      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 minima informacion 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 estadisticas 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.

    Imagen

    El codigo será

    Código: Seleccionar todo

    #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.


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 demas trocitos de codigo.

Un saludo, amiguelezg
Adjuntos
calefaccion.rar
fichero de configuracion
(1.51 KiB) Descargado 563 veces
custom_components.zip
ficheros a partir de version 0.89
(2.56 KiB) Descargado 606 veces
Última edición por amiguelezg el Mar Mar 26, 2019 12:01 am, editado 4 veces en total.

sagatxxx
Mensajes: 1
Registrado: Sab Dic 15, 2018 12:13 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por sagatxxx » Jue Ene 03, 2019 11:58 am

mil gracias, me sirve para tomar muchas ideas.

emi2
Mensajes: 2
Registrado: Jue Ene 03, 2019 1:13 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por emi2 » Jue Ene 03, 2019 1:27 pm

Muchas gracias, voy a probarlo.

Edito:
Cachis, lo he probado y no me funciona con ninguno de los dos que tengo. Me da error al intentar conectarse.
En fin, no serán compatibles.
Me queda esnifar el tráfico, por si veo por donde meter mano, pero me da una pereza...

Cress
Mensajes: 3
Registrado: Jue Dic 13, 2018 6:11 am

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por Cress » Vie Ene 18, 2019 8:42 pm

Hola
Muchas gracias por el tutorial.
A mi me funciona bien con en Beok.
Pero tengo una pregunta.
Quiero crear una automatización para bajar la temperatura actual un grado cuando no esté en casa más de 1 hora. Tengo claro como hacer el triger de presencia, y como ver la temperatura actual, pero... ¿Cómo le resto un grado y le digo al termostato que ponga esa temperatura?

Gracias

DendelX
Mensajes: 56
Registrado: Vie Dic 14, 2018 8:39 am

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por DendelX » Mar Ene 22, 2019 2:38 pm

Ahora mismo estoy empezando con tema climatización y aunque lo haré sin usar termostato como tal, muchos de tus sensores me vienen genial. Muchas gracias por compartirlo

rubenmr
Mensajes: 1
Registrado: Mié Ene 30, 2019 4:00 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por rubenmr » Mié Ene 30, 2019 6:08 pm

hola, estoy intentándolo, pero me da error al cargar el package.

he modificado el calefaccion.yaml quitando las lineas de la lampara xiaomi y poniendo la ip y la mac, creo que lo hice bien

he creado la ruta /home/homeassistant/.homeassitant/packages/ y he copiado ahi el calefaccion.yaml
también cree la ruta /home/homeassitant/.homeassitant/custom_components/climate/ y meti el .py

pero no me carga el package, he probado a editar el configuration.yaml, poniendo: packages: !include_dir_named packages pero me da error.

que hago mal???

gracias

amiguelezg
Mensajes: 6
Registrado: Mar Dic 18, 2018 11:22 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por amiguelezg » Lun Mar 25, 2019 11:58 pm

La verdad que no tengo ni idea que puedes tener mal, yo lo tengo exactamente igual que lo que estas poniendo tú.

alepevi
Mensajes: 1
Registrado: Lun Mar 25, 2019 8:46 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por alepevi » Mar Mar 26, 2019 2:00 pm

Hola! Estoy interesado en esta solución para poder instalar multitud de termostatos en casa integrados en Home Assistant, pero no tengo ni idea de si me servirá para controlar un sistema de calefacción y refrigeración de aerotermia a través de suelo radiante. Busco entre sus características y, aparentemente, parece que sólo va a servir para controlar la calefacción (no la refrigeración), pero desconozco si a través de Home Assistant se le puede dar esa funcionalidad.

¿Alguien sabe si se podrá hacer algo de lo que comento? Todavía no tengo Home Assistant en funcionamiento, pero os estoy siguiendo y me parece muy muy interesante. ¿Alguna sugerencia?

Muchas gracias!

Oscar
Mensajes: 2
Registrado: Mar Ene 29, 2019 5:16 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por Oscar » Dom Abr 07, 2019 6:42 pm

Buenas tardes.
Yo utilizo HASSIO. No consigo hacerlo funcionar con este tutorial.
¿Alguna idea o manera de ponerlo en marcha?

Muchas gracias por este tutorial y por todos los demas que nos ayudan a gente como yo. :roll:

Un saludo.
:D

Diegopr30
Mensajes: 1
Registrado: Vie Oct 04, 2019 7:49 pm

Re: Termostato BEOK ,FLOUREON, DECDEAL

Mensaje por Diegopr30 » Vie Oct 04, 2019 8:00 pm

Me gustaria poder manejarlo pero me pierdo en lo de samba o como acceder a las carpetas que decis. Soy un poco friky pero a la vez soy novato me podeis amplicar un poco la informacion de como tengo que acceder que es eso de samba.. etc? Lo gradeceria mucho ya que quiero usar el termostato desde google home. No busco automatismos etc solo verlo y usarlo en google home

Responder