Я уже некоторое время подаю в суд на интеграцию 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:
датчик: !включить датчики.yaml
Затем в sensor.yaml я перечисляю каждое растение следующим образом.
- Платформа: расцвел макинтош: макинтош:адрес:из:расцвел:датчик:здесь' название: Бэзил force_update: правда scan_interval: 08:00 медиана: 3 go_unavailable_timeout: 43200 наблюдаемые_условия: - батарея
Далее — чтобы растения выглядели красиво, у меня есть конфиг растений. Как и раньше одна строка в файле configuration.yaml для начала:
растение: !включать растения.yaml
А то в plant.yaml у меня так
Бэзил: датчики: влага: Sensor.ble_moisture_basil батарея: Sensor.basil_battery температура: Sensor.ble_temperature_basil проводимость: Sensor.ble_conductivity_basil яркость: Sensor.ble_illuminance_basil мин_батарея: 15 минимальная_яркость: 2500 максимальная_яркость: 60000 мин_температура: 8 максимальная_температура: 32 мин_влажность: 15 макс_влажность: 60 мин_проводимость: 350 максимальная_проводимость: 2000
Обратите внимание на тонкую разницу между названием объекта для батареи по сравнению с другими датчиками.. Сущность батареи поступает с платформы miflora в Sensor.yaml, в то время как другая 4 датчики поступают из интеграции BLE. Интеграция BLE ЕСТЬ объект батареи, но он просто отображается как «неизвестный» для этого завода.. Эта конфигурация необходима для того, чтобы карточка растения отображала растение в красивом виде.
Затем просто перейдите в место, куда вы хотите добавить свое растение, и добавьте карточку растения ловеласа.. Карту придется «настраивать» вручную, но там всего 3 строчки...
тип: обычай:цветочная открытка юридическое лицо: завод.базилик разновидность: базилик базилик
Обратите внимание, что вид указан для 2 РЕАС дополнений. Во-первых, он будет отображать имя на карте, но более импортно-antly, также будет отображаться изображение растения, если вы скачали изображения растений и добавили их в configwwwimagesplants с использованием латинских названий — информация о базе данных доступна в документации карты растений ловеласа
Расширение диапазона
Окончательно, нам нужно расширить диапазон, который мы можем достичь. Для этого нам понадобится устройство ESP32. Первое, что нужно сделать, это подключить его к компьютеру через USB и прошейте его базовым образом ESPHome
Я использовал ESPHome флешер и универсальный драйвер Windows cp210x от SiLabs и следовал руководству, предоставленному интеграцией ESPHome HomeAssistant.
Конфигурация, которую я использовал для своего устройства ESP32, приведена ниже.
эспома: название: JZK-ESP-32S Платформа: ESP32 доска: esp32doit-devkit-v1 # Включить ведение журнала регистратор: # Включить домашний помощник API API: вай-фай: ssid: !секретный wifi_ssid пароль: !секретный wifi_password # Включить резервную точку доступа (пленный портал) в случае сбоя соединения Wi-Fi ап: ssid: "Резервная точка доступа Esp32" пароль: "случайный пароль здесь" внешние_компоненты: - источник: гитхаб://myhomeiot/esphome-компоненты esp32_ble_tracker: ble_gateway: приборы: - MAC-адрес: макинтош:адрес:из:расцвел:датчик:к:монитор:идет:здесь on_ble_advertise: затем: помощница по дому.событие: мероприятие: esphome.on_ble_advertise данные: пакет: !лямбда-обратный пакет; myhomeiot_ble_host: myhomeiot_ble_client: - MAC-адрес: макинтош:адрес:из:расцвел:датчик:к:монитор:идет:здесь service_uuid: «1204» характеристика_uuid: «1А02» update_interval: 4час on_value: затем: помощница по дому.событие: мероприятие: esphome.on_ble_advertise данные: пакет: !лямбда |- если (x.размер() 2) { ESP_LOGE("myhomeiot_ble_client", "payload has wrong size (%г)", x.размер()); возвращение ""; }; ESP_LOGI("myhomeiot_ble_client", "аккумулятор (%d%%), прошивки (%с)", Икс[0], std::string(x.begin(), x.end()).substr(2).c_str()); char buffer[70 + 1]; const uint8_t *remote_bda = xthis.remote_bda(); snprintf(буфер, sizeof(буфер), "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], Икс[0]); return std::string(буфер).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% - но это, конечно, мое понимание