Я уже некоторое время подаю в суд на интеграцию 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 я перечисляю каждое растение следующим образом.
- Платформа: расцвел макинтош: 'mac:адрес:из:расцвел:датчик:here' name: Бэзил 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'
characteristic_uuid: '1A02'
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% - но это, конечно, мое понимание