Получаем процент зарядки 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.
На примере добавлено 2 зубных щетки.
Теперь можно вывести сенсоры и создать автоматизацию, которая будет сообщать, что необходимо поставить устройство на зарядку.
В некоторых случаях для сенсора, необходимо добавить параметр интервала получения данных. Это сэкономит аккумулятора устройства и не будет нагружать сеть.
Пример интервала в 12 часов:
update_interval: '12:00'
Пришлось ждать около часа, чтобы данные аккумулятора появились. И переодически почему-то связь пропадает. Возможно что-то с ESP не так, буду еще мониторить. Полезная инструкция.
У меня такая же зубная щетка Oclean, очень долго искал как подружить ее с Home Assistant. Перелазил абсолютно все, на github сказали, что это невозможно сделать. По статье быстро получилось настроить. Большое спасибо!
Поставил себе update_interval на 48 часов. Даже если останется 10% то на 2 дня точно хватает заряда.
Отличная статья! Спасибо, все получилось