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