Skip to content
> 0x2d.dev
Назад

Получаем процент зарядки ESPHome


Если у вас есть, какое-либо устройство с bluetooth, через ESPHome можно достать определённые параметры. На текущем примере будем получать процент зарядки и выводить его в Home Assistant.

По стандарту процент заряда хранится в сервисе 0x180f, под характеристикой 0x2a19. Подойдет для всех видов устройств. Довольно редко производители придумывают свои структуры хранения данных.

Получаем MAC устройства

Первым делом необходимо получить MAC адрес устройства. Для этого можно воспользоваться любым сканером bluetooth сети. В магазинах приложений полно программ на телефон.

В случае, если телефона нет под рукой, то можно загрузить прошивку на ESPHome со сканером сети.

esp32_ble_tracker:

text_sensor:
  - platform: ble_scanner
    name: "Сканер bluetooth"

После чего сенсор будет выдавать все устройства, которые найдет в сети.

{
    "timestamp":1673701516,
    "address":"70:28:45:6D:66:8E",
    "rssi":"-80",
    "name":"Oclean X"
}

Сенсоры получения заряда ESPHome

После того, как мы получили MAC адрес, приступаем к добавлению сенсоров. Нам необходимо создать их 2 штуки. Первый будет получать текущий заряд, второй мощность сигнала до устройства.

Добавляем в yaml конфигурацию esp и нажимаем Install. Клиентов и сенсоров может быть несколько.

esp32_ble_tracker:

ble_client:
  - mac_address: 70:28:45:6D:66:8E
    id: oclean_x

sensor:
  - platform: ble_client
    type: characteristic
    ble_client_id: oclean_x
    name: 'Oclean X'
    service_uuid: '180f'
    characteristic_uuid: '2a19'
    icon: 'mdi:battery'
    unit_of_measurement: '%'

  - platform: ble_client
    type: rssi
    ble_client_id: oclean_x
    name: 'Oclean X RSSI'

Перепрошиваем ESP и ждём пока сенсоры добавятся в Home Assistant.

Процесс перепрошивки ESP

На примере добавлено 2 зубных щётки.

Сущности в Home Assistant

Теперь можно вывести сенсоры и создать автоматизацию, которая будет сообщать, что необходимо поставить устройство на зарядку.

В некоторых случаях для сенсора, необходимо добавить параметр интервала получения данных. Это сэкономит аккумулятора устройства и не будет нагружать сеть.

Пример интервала в 12 часов:

update_interval: '12:00'

Предыдущая запись
Настраиваем Apple HomeKit через Home Assistant
Следующая запись
Освещение Yeelight в Home Assistant