He estado demandando la integración de MiFlora Home Assistant para obtener datos sobre varias plantas de interior durante un tiempo.. Sin embargo, en el camino tuve que superar varios obstáculos, incluido el rango limitado de bluetooth, problemas de duración de la batería, y obtener los valores de la batería para informar. Finalmente parece que he descifrado todo esto y ahora tengo un sistema que funciona de manera confiable con muchas plantas en la casa.. He resumido lo que he usado a continuación.
Hardware
Lo primero que hay que decir es que tengo bluetooth. USB dongle conectado a mi sistema de asistente doméstico. Esto monitorea las plantas en rango directamente (es decir. los que están en la misma habitación que la caja HA). Para monitorizar dispositivos a más distancia he utilizado una placa ESP32 con módulo bluetooth integrado que tengo dentro de una cajita barata y he alimentado con un viejo micro-USB cargador de teléfono
- USB dongle: el que obtuve ya no está disponible, debido a su antigüedad, pero hay muchos en Amazon y en otros lugares, solo asegúrese de que sea compatible con Linux
- Tablero ESP32: Recibí una JZK ESP32-S que actualmente cuesta £ 6.49 en Amazon
- Caso para ESP32: Encontré el caso de un NodeMCU Wroom-32D (antena corta) se ajustó a mi tabla: esto costaba £ 4.20 de ebay
Integraciones para Home Assistant
Si bien la integración básica de MiFlora está integrada en el asistente doméstico, descubrí que usa mucha batería cuando se usa de forma nativa. En su lugar, uso el Monitor Bluetooth de bajo consumo 3rd integración de fiesta que puede instalar fácilmente usando RETRASO
Luego también instalé el Integración ESPHome para el asistente doméstico para administrar mi repetidor ESP32 BLE
Finally, para mostrar las plantas de una manera agradable, agregué un tenedor particular del tarjeta de la planta lovelace complemento a través de LAG
Configuración
Una vez que BLE Monitor se instaló y configuró con mi dongle bluetooth, recogió los sensores MiFlora dentro del alcance y los enumeró en su menú desplegable "dispositivos", así como también enumeró los dispositivos y entidades en su tarjeta en la configuración HA
Lo mejor del monitor BLE es que escucha los sensores para transmitir, en lugar de sondearlos activamente, que agotaría sus baterías. Sin embargo, los sensores no transmiten información de la batería, por lo que para obtener esto tenemos que sondearlo activamente. votando solo por esto, y escuchar pasivamente los otros datos parece ser el mejor compromiso si desea tener todos los datos disponibles pero también maximizar la duración de la batería del sensor. He separado mi configuración.yaml en varios archivos separados para mantener las cosas un poco más fáciles de administrar, así que solo tengo la siguiente línea en mi configuración.yaml:
sensor: !incluir sensores.yaml
Luego, en sensores.yaml, tengo cada planta enumerada de la siguiente manera
- plataforma: floreció Mac: 'Mac:dirección:de:floreció:sensor:aquí' nombre: albahaca forzar_actualización: cierto scan_interval: 08:00 mediana: 3 go_undisponible_timeout: 43200 condiciones_supervisadas: - batería
Siguiente: para que las plantas se vean bien, tengo una configuración de plantas. Como antes, una sola línea en configuration.yaml para comenzar:
planta: !incluir plantas.yaml
Y luego en plants.yaml tengo lo siguiente
albahaca: sensores: humedad: sensor.ble_moisture_basil batería: sensor.basil_bateria temperatura: sensor.ble_temperature_basil conductividad: sensor.ble_conductivity_basil brillo: sensor.ble_illuminance_basil min_bateria: 15 min_brightness: 2500 max_brightness: 60000 min_temperature: 8 temperatura_máxima: 32 min_humedad: 15 max_moisture: 60 min_conductividad: 350 max_conductivity: 2000
Tenga en cuenta la sutil diferencia entre el nombre de entidad de la batería en comparación con los otros sensores. La entidad de la batería proviene de la plataforma miflora en sensores.yaml mientras que la otra 4 los sensores provienen de la integración BLE. HAY una entidad de batería enumerada por la integración BLE, pero esto solo se muestra como "desconocido" para esta planta. Esta configuración es necesaria para que la tarjeta de la planta muestre la planta de una manera agradable
Luego, simplemente vaya al lugar donde desea agregar su planta y agregue la tarjeta de la planta lovelace. Tendrás que “configurar” la tarjeta manualmente, pero solo toma 3 lineas...
tipo: costumbre:flor-tarjeta entidad: planta.albahaca especies: basílica basílica
Tenga en cuenta que la especie está listada para 2 reas complementos. En primer lugar, mostrará el nombre en la tarjeta., pero más import-antly, también mostrará una imagen de la planta si ha descargado las imágenes de la planta y las ha agregado a configwwwimagesplants usando los nombres en latín; la información en la base de datos está disponible en la documentación de la tarjeta de la planta lovelace
Ampliación de rango
Finally, necesitamos extender el rango que podemos alcanzar. Para ello necesitamos el dispositivo ESP32. Lo primero que debe hacer es conectarlo a su computadora a través de USB y flashearlo con una imagen básica de ESPHome
Usé el ESPInicio Flasher y el Controlador de Windows universal cp210x de SiLabs y siguió la guía proporcionada por la integración ESPHome HomeAssistant
La configuración que usé para mi dispositivo ESP32 está debajo
esfoma: nombre: jzk-esp-32s plataforma: ESP32 junta: esp32doit-devkit-v1 # Habilitar registro registrador: # Habilitar Asistente de hogar API API: Wifi: ssid: !wifi_ssid secreto clave: !wifi_contraseña secreta # Habilitar punto de acceso alternativo (portal cautivo) en caso de que falle la conexión wifi ap: ssid: "Punto de acceso alternativo Esp32" contraseña: "contraseña aleatoria aquí" componentes_externos: - fuente: github://myhomeiot/esphome-componentes esp32_ble_tracker: ble_gateway: dispositivos: - dirección MAC: Mac:dirección:de:floreció:sensor:a:monitor:va:aquí on_ble_advertise: entonces: homeassistant.evento: evento: esphome.on_ble_advertise datos: paquete: !paquete de retorno lambda; mihomeiot_ble_host: mihomeiot_ble_client: - dirección MAC: Mac:dirección:de:floreció:sensor:a:monitor:va:aquí servicio_uuid: '1204' característica_uuid: '1A02' intervalo de actualización: 4h en_valor: entonces: homeassistant.evento: evento: esphome.on_ble_advertise datos: paquete: !lambda |- si (tamaño x() 2) { ESP_LOGE("mihomeiot_ble_client", "payload has wrong size (%d)", tamaño x()); retorno ""; }; ESP_LOGI("mihomeiot_ble_client", "Battery (%d%%), firmware (%s)", x[0], std::string(x.begin(), x.end()).substr(2).c_str()); char buffer[70 + 1]; const uint8_t *remote_bda = xthis.remote_bda(); snprintf(buffer, sizeof(buffer), "043E2002010000%02X%02X%02X%02X%02X%02X14020106030295FE0C1695FE41209800000A1001%02X00", remote_bda[5], remote_bda[4], remote_bda[3], remote_bda[2], remote_bda[1], remote_bda[0], x[0]); return std::string(buffer).c_str();
Luego guarde y actualice su dispositivo esp32 a través de wifi. El dispositivo ESP32 recogerá los datos del sensor miflora y los "empujará" a través de wifi a la integración BLE que creará un dispositivo y entidades automáticamente.. Los dispositivos empujados de esta manera parecen mostrar su nivel de batería (gracias al código en la parte inferior de la sección myhomeiot_ble_client creo). Luego solo necesita darle al dispositivo un buen nombre (y dejar que las entidades sean renombradas también) y luego crea una entrada en plants.yaml con las entidades correctas
Hola,
también existe la versión para leer los sensores de flora a través del script ESP y enviarlos al corredor MQTT. Desafortunadamente, no puedo encontrar la descripción correcta de cómo puedo publicar los datos contenidos en MQTT como un sensor en HomeAssistant..
Aquí está el link para esto: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/
Hola
si, De hecho, yo mismo uso repetidores ESP32 ahora, ya que pueden usar el modo "pasivo" Y recopilar datos de la batería.
Si tienes un USB dispositivo bluetooth, luego puede emparejar los dispositivos MiFlora directamente a eso primero y luego, cuando configure el ESP32, enviará la información a HA y se mostrará automáticamente para las entidades correctas
Debe usar el código como lo describo en la sección "Rango de extensión".
También debe tener instalada la integración "Bluetooth Low Energy Monitor" (a través de HACS)
Si no tienes un USB Bluetooth, entonces hay una manera de hacer que los dispositivos aparezcan en Bluetooth Low Energy Monitor. No recuerdo el enlace donde lo leí, pero creo que es parte de la wiki o preguntas frecuentes de Bluetooth Low Energy Monitor
Si lo hace de esa manera, no necesita usar el manual YAML que usa Barry. Su publicación es de 2020 — Creo que antes de que Bluetooth Low Energy Monitor pudiera hacerlo o tal vez incluso antes de que existiera.
Hola, gracias por publicar esta gran solucion.
¿Puede la puerta de enlace Bluetooth esp32 transmitir datos a más de un dispositivo bluetooth o tiene que proporcionar un ESP? 32 para cada dispositivo Bluetooth queremos ampliar el alcance para?
Hola Tony
El ESP transmitirá datos para cualquier dispositivo BT dentro del alcance, creo, aunque el mío actualmente solo se usa para 1 Dispositivo BT que no puedo confirmar 100% - pero eso es ciertamente mi entendimiento