DIY Главная Медиа Logo

Конечная сайт для проектирования и создания вашей установке домашнего кинотеатра и Привет-Fi.

4Датчики растений MiFlora в Home Assistant

Я уже некоторое время подаю в суд на интеграцию 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 с нужными сущностями

оставьте ответ

4 Комментарии

MМонстрД

Здравствуй,
есть также версия для чтения датчиков флоры через ESP-скрипт и отправки их брокеру MQTT.. К сожалению, я не могу найти правильного описания того, как я могу опубликовать данные, содержащиеся в MQTT, в качестве датчика в HomeAssistant..

Вот ссылка на него: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/

Ответить
JSДжон Скайф

Здравствуй
да, На самом деле я сам сейчас использую повторители 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 мы хотим расширить диапазон для?

Ответить
JSДжон Скайф

Привет Тони
Я полагаю, что ESP будет передавать данные для любых устройств BT в пределах досягаемости, хотя мой в настоящее время используется только для 1 BT-устройство, которое я не могу подтвердить 100% - но это, конечно, мое понимание

Ответить