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_updatetrue
expire_after21600
state_topic"home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896"
value_template"{{ value_json.tempc | is_defined }}"
name maceta_1_moisture
unit_of_measurement"%"
force_updatetrue
expire_after21600
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_updatetrue
expire_after21600
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_updatetrue
expire_after21600
state_topic"home/OMG_ESP32_BLE/BTtoMQTT/C47C8D674896"
value_template"{{ value_json.fer | is_defined }}"
Y en el customize les daremos un mejor aspecto
xxxxxxxxxx
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
xxxxxxxxxx
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.
xxxxxxxxxx
alias Maceta - falta de agua
id Maceta - falta de agua
initial_state'on'
trigger
platform numeric_state
entity_id sensor.maceta_1_moisture
below25
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
above60
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 ……..