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