Я уже некоторое время подаю в суд на интеграцию MiFlora Home Assistant, чтобы получить данные о различных комнатных растениях.. Однако по пути мне пришлось преодолевать различные препятствия, включая ограниченный радиус действия Bluetooth., проблемы с временем автономной работы, и получить значения батареи для отчета. Я, наконец, кажется, взломал все это, и теперь у меня есть система, которая надежно работает с большим количеством растений в доме.. Я суммировал то, что я использовал ниже.
аппаратные средства
Первое, что нужно сказать, это то, что у меня есть блютуз. USB ключ, подключенный к моей системе домашнего помощника. Это контролирует растения в диапазоне непосредственно (i.e. те, что в той же комнате, что и коробка HA). Для мониторинга более удаленных устройств я использовал плату ESP32 со встроенным модулем Bluetooth, которая находится внутри дешевого маленького корпуса и питается от старого микроконтроллера.-USB зарядное устройство для телефона
- USB Dongle: тот, который я получил, больше не доступен — из-за возраста — но есть много амазонок и других мест — просто убедитесь, что они поддерживаются в Linux
- Плата ESP32: Я получил JZK ESP32-S который в настоящее время составляет 6,49 фунтов стерлингов на Amazon.
- Чехол для ESP32: Я нашел корпус для NodeMCU Wroom-32D (короткая антенна) подошел к моей доске — это было 4,20 фунта стерлингов от ебэй
Интеграции для домашнего помощника
В то время как базовая интеграция MiFlora встроена в домашнего помощника, я обнаружил, что он потребляет много батареи при исходном использовании.. Вместо этого я использую Монитор Bluetooth с низким энергопотреблением 3рд партийная интеграция, которую вы можете легко установить, используя ОТСТАВАНИЕ
Затем я также установил Интеграция с ESPHome для домашнего помощника для управления моим повторителем ESP32 BLE
Окончательно, чтобы красиво отображать растения, я добавил особую вилку открытка с растением ловеласа аддон через LAG
конфигурация
После того, как BLE Monitor был установлен и настроен с помощью моего Bluetooth-ключа, он обнаружил датчики MiFlora в пределах досягаемости и перечислил их в раскрывающемся списке «устройства», а также перечислил устройства и объекты на своей карте в конфигурации HA.
Самое замечательное в мониторе BLE заключается в том, что он прослушивает датчики для передачи, а не активно их опрашивать, которые разрядили бы их батареи. Однако, датчики не передают информацию о батарее, поэтому, чтобы получить ее, мы должны активно ее опрашивать.. Голосование только за это, и пассивное прослушивание других данных кажется лучшим компромиссом, если вы хотите иметь все доступные данные, а также максимально увеличить срок службы батареи датчика.. Я разделил свой файл configuration.yaml на несколько отдельных файлов, чтобы упростить управление, поэтому у меня есть только следующая строка в моем файле configuration.yaml:
1 | sensor: !include sensors.yaml |
Затем в sensor.yaml я перечисляю каждое растение следующим образом.
1 2 3 4 5 6 7 8 9 | - platform: miflora mac: ‘mac:address:of:miflora:sensor:here’ name: basil force_update: true scan_interval: 08:00 median: 3 go_unavailable_timeout: 43200 monitored_conditions: - battery |
Далее — чтобы растения выглядели красиво, у меня есть конфиг растений. Как и раньше одна строка в файле configuration.yaml для начала:
1 | plant: !include plants.yaml |
А то в plant.yaml у меня так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | basil: sensors: moisture: sensor.ble_moisture_basil battery: sensor.basil_battery temperature: sensor.ble_temperature_basil conductivity: sensor.ble_conductivity_basil brightness: sensor.ble_illuminance_basil min_battery: 15 min_brightness: 2500 max_brightness: 60000 min_temperature: 8 max_temperature: 32 min_moisture: 15 max_moisture: 60 min_conductivity: 350 max_conductivity: 2000 |
Обратите внимание на тонкую разницу между названием объекта для батареи по сравнению с другими датчиками.. Сущность батареи поступает с платформы miflora в Sensor.yaml, в то время как другая 4 датчики поступают из интеграции BLE. Интеграция BLE ЕСТЬ объект батареи, но он просто отображается как «неизвестный» для этого завода.. Эта конфигурация необходима для того, чтобы карточка растения отображала растение в красивом виде.
Затем просто перейдите в место, куда вы хотите добавить свое растение, и добавьте карточку растения ловеласа.. Карту придется «настраивать» вручную, но там всего 3 строчки...
1 2 3 | type: custom:flower-card entity: plant.basil species: ocimum basilicum |
Обратите внимание, что вид указан для 2 РЕАС дополнений. Во-первых, он будет отображать имя на карте, но более импортно-antly, также будет отображаться изображение растения, если вы скачали изображения растений и добавили их в configwwwimagesplants с использованием латинских названий — информация о базе данных доступна в документации карты растений ловеласа
Расширение диапазона
Окончательно, нам нужно расширить диапазон, который мы можем достичь. Для этого нам понадобится устройство ESP32. Первое, что нужно сделать, это подключить его к компьютеру через USB и прошейте его базовым образом ESPHome
Я использовал ESPHome флешер и универсальный драйвер Windows cp210x от SiLabs и следовал руководству, предоставленному интеграцией ESPHome HomeAssistant.
Конфигурация, которую я использовал для своего устройства ESP32, приведена ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | esphome: name: jzk-esp-32s platform: ESP32 board: esp32doit-devkit-v1 # Enable logging logger: # Enable Home Assistant API api: wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: “Esp32 Fallback Hotspot” password: “random-password-here” external_components: - source: github://myhomeiot/esphome-components esp32_ble_tracker: ble_gateway: devices: - mac_address: mac:address:of:miflora:sensor:to:monitor:goes:here on_ble_advertise: then: homeassistant.event: event: esphome.on_ble_advertise data: packet: !lambda return packet; myhomeiot_ble_host: myhomeiot_ble_client: - mac_address: mac:address:of:miflora:sensor:to:monitor:goes:here service_uuid: ‘1204’ characteristic_uuid: ‘1A02’ update_interval: 4h on_value: then: homeassistant.event: event: esphome.on_ble_advertise data: packet: !lambda |- if (x.size() < 2) { ESP_LOGE(“myhomeiot_ble_client”, “payload has wrong size (%d)”, x.size()); return “”; }; ESP_LOGI(“myhomeiot_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(); |
Затем сохраните и обновите на своем устройстве esp32 через Wi-Fi.. Устройство ESP32 будет собирать данные с датчика miflora и «проталкивать» их через Wi-Fi в интеграцию BLE, которая автоматически создаст устройство и объекты.. Устройства, нажимаемые таким образом, действительно показывают уровень заряда батареи. (благодаря коду в нижней части раздела myhomeiot_ble_client я верю). Затем вам просто нужно дать устройству красивое имя (и пусть сущности тоже переименовываются) а затем создайте запись в plant.yaml с нужными сущностями
Нашел это полезным? Пожалуйста, дайте нам знать, оставив комментарий ниже. Если вы хотите подписаться, воспользуйтесь ссылкой для подписки в меню вверху справа.. Вы также можете поделиться этим с друзьями, используя социальные ссылки ниже. Ваше здоровье.
Здравствуй,
есть также версия для чтения датчиков флоры через ESP-скрипт и отправки их брокеру MQTT.. К сожалению, я не могу найти правильного описания того, как я могу опубликовать данные, содержащиеся в MQTT, в качестве датчика в HomeAssistant..
Вот ссылка на него: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/
Здравствуй
да, На самом деле я сам сейчас использую повторители ESP32, поскольку они могут использовать «пассивный» режим И собирать данные о батарее..
Если у тебя есть USB устройство Bluetooth, то вы можете сначала подключить устройства MiFlora напрямую к нему, а затем, когда вы настроите ESP32, он отправит информацию в HA, и она автоматически отобразится для правильных объектов.
Вам нужно использовать код, как я описываю в разделе «Расширение диапазона»..
Вам также необходимо установить интеграцию «Bluetooth Low Energy Monitor». (через HACS)
Если у вас нет USB Bluetooth, тогда есть способ заставить устройства отображаться в Bluetooth Low Energy Monitor.. Я не могу вспомнить ссылку, где я это читал, но я думаю, что это часть вики-страницы Bluetooth Low Energy Monitor или часто задаваемых вопросов.
Если вы сделаете это таким образом, вам не нужно использовать ручной YAML, который использует Барри.. Его пост из 2020 — Я думаю, до того, как Bluetooth Low Energy Monitor смог это сделать или, может быть, даже до того, как он существовал.
Привет, спасибо за публикацию этого отличного решения.
Может ли Bluetooth-шлюз esp32 передавать данные более чем на одно устройство Bluetooth или вам нужно предоставить один ESP? 32 для каждого устройства Bluetooth мы хотим расширить диапазон для?
Привет Тони
Я полагаю, что ESP будет передавать данные для любых устройств BT в пределах досягаемости, хотя мой в настоящее время используется только для 1 BT-устройство, которое я не могу подтвердить 100% - но это, конечно, мое понимание