OpenMQTTGateway e integración en Home Assistant

Desde hace años utilizo OpenMQTTGateway para hacer de interface entre varios dispositivos , con el tiempo he añadido y he quitado pero basicamente los que siempre han permanecido son los MiFlora , estos llevan cuidando de mis plantas desde hace muchos años

Todas las placas compatibles las podemos encontrar aquí , https://docs.openmqttgateway.com/prerequisites/board.html

Al principio use la wemos d1 mini pero después de unos meses acababa teniendo problemas con la memoria flash , por eso últimamente uso esta , la wemos esp 32 lite que esta muy bien de precio y va como un tiro , me ha fallado después de año y medio funcionando 24/7 y ha sido por la fuente de alimentación que la ha acabado friendo

Una vez tengamos el modulo procederemos a instalar el firmware , esta tarea se ha vuelto muy facil desde chrome , iremos a este enlace https://docs.openmqttgateway.com/upload/web-install.html y seleccionamos esp32dev ble

Nos aparece una ventana emergente con el puerto serie del ESP32

Pulsamos instalar

Borramos previamente todo el contenido del dispositivo

E instalamos el firmware

Si todo es correcto aparecerá esta ventana

Desde la misma pagina podemos ver los logs del ESP32

Veremos como arranca en modo AP y el nombre de la wifi creada

Con el móvil nos conectamos sin contraseña

Seleccionamos la wifi y ponemos las credenciales

Ponemos las credenciales de la parte de MQTT

Si todo es correcto guardamos y el ESP32 intentara conectarse a nuestra wifi

En el LOG podremos ver que se ha conectado a la wifi y la IP asignada

Si vamos a la ip asignada podremos entrar en la web del ESP32 con admin y la contraseña que hemos puesto previamente

Desde MQTT Explorer ya podemos ver como esta detectando dispositivos , entre ellos los dos MiFlora que tengo en el balcón.

Ya podemos definir los sensores en la sección sensor del configuration.yaml

      
  #########################################################
  #### MACETA 1
  #########################################################
       
    - name: maceta_1_temperature
      unit_of_measurement: "°C"
      force_update: true
      expire_after: 21600 
      state_topic: "home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896" 
      value_template: "{{ value_json.tempc | is_defined }}"

    - name: maceta_1_moisture
      unit_of_measurement: "%"
      force_update: true
      expire_after: 21600
      state_topic: "home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896"
      value_template: "{{ value_json.moi | is_defined }}"

    - name: maceta_1_light_intensity
      unit_of_measurement: lux
      force_update: true
      expire_after: 21600
      state_topic: "home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896"
      value_template: "{{ value_json.lux | is_defined }}"

    - name: maceta_1_conductivity
      unit_of_measurement: 'µS/cm'
      force_update: true
      expire_after: 21600 
      state_topic: "home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896"
      value_template: "{{ value_json.fer | is_defined }}"

Y en el customize les daremos un mejor aspecto

sensor.maceta_1_humedad:
  friendly_name: Riego maceta 1
  icon: mdi:cup-water
sensor.maceta_1_conductivity:
  friendly_name: Conduc.
  icon: mdi:leaf
sensor.maceta_1_temperature:
  friendly_name: Temperatura
  icon: mdi:temperature-celsius
sensor.maceta_1_light_intensity:
  friendly_name: Luz 1
  icon: mdi:white-balance-sunny
sensor.maceta_1_moisture:
  friendly_name: Humedad
  icon: mdi:water
sensor.maceta_1_battery:
  friendly_name: Bateria
  icon: mdi:battery

Si queremos crearemos una card del tipo picture-elements para que nos quede perfecto , la imagen del fondo es esta

  - type: vertical-stack
    cards:
        
      - type: picture-elements
        image: /local/plants.jpg
        elements:
          - type: state-badge
            entity: sensor.maceta_1_moisture
            style:
              top: 27%
              left: 10%
              --ha-label-badge-font-size: 1em
          - type: state-badge
            entity: sensor.maceta_1_conductivity
            style:
              top: 27%
              left: 22%
              --ha-label-badge-font-size: 1em
          - type: state-badge
            entity: sensor.maceta_1_light_intensity
            style:
              top: 27%
              left: 34%
              --ha-label-badge-font-size: 1em         
          - type: state-label
            entity: sensor.maceta_1_temperature
            style:
              top: 15%
              left: 92%
              --ha-label-badge-font-size: 1em          
            
      - type: picture-elements
        image: /local/plants.jpg
        elements:
          - type: state-badge
            entity: sensor.maceta_2_moisture
            style:
              top: 27%
              left: 10%
              --ha-label-badge-font-size: 1em
          - type: state-badge
            entity: sensor.maceta_2_conductivity
            style:
              top: 27%
              left: 22%
              --ha-label-badge-font-size: 1em
          - type: state-badge
            entity: sensor.maceta_2_light_intensity
            style:
              top: 27%
              left: 34%
              --ha-label-badge-font-size: 1em         
          - type: state-label
            entity: sensor.maceta_2_temperature
            style:
              top: 15%
              left: 92%
              --ha-label-badge-font-size: 1em   

Y el resultado final seria esto

Así quedaria en nuestro panel lovelace

Y ya podremos empezar a darle funcionalidades , en este caso avisa cuando le falta agua , y cuando el agua es suficiente.

- alias: Maceta - falta de agua
  id: Maceta - falta de agua
  initial_state: 'on'
  trigger:
    platform: numeric_state
    entity_id: sensor.maceta_1_moisture
    below: 25
  condition:
    condition: state
    entity_id: input_boolean.int_menos_notificaciones
    state: 'off'    
  action:
    service: notify.notif_telegram_bot
    data:
      message: "*Maceta 1* : ¡Socorro! ¡Agua! \U0001f480\U0001f480\U0001f480"

- alias: Maceta - suficiente agua
  id: Maceta - suficiente agua
  initial_state: 'on'
  trigger:
    platform: numeric_state
    entity_id: sensor.maceta_1_moisture
    above: 60
  condition:
    condition: state
    entity_id: input_boolean.int_menos_notificaciones
    state: 'off'    
  action:
    service: notify.notif_telegram_bot
    data:
      message: "*Maceta 1* : Me siento mejor, gracias por el agua. \U0001f3a0"

Y con esto y un bizcocho ……..

Deja un comentario