mavrikkk / ha_kettler

allows you to connect Redmond SkyKettle, SkyCooker and SkyHeat to your Home Assistant. see README to know further
131 stars 50 forks source link

hci_devices as a dropdown list #14

Closed notabene00 closed 4 years ago

notabene00 commented 4 years ago

Делаем возможным выбрать только реально существующие hci_devices И избавляем пользователей от нужды вводить их руками

Снимок экрана 2020-04-16 в 00 28 19
mavrikkk commented 4 years ago

какой метод вызывается сразу после нажатия кнопки "Подтвердить"?

mavrikkk commented 4 years ago

поясню идею. gatttool частенько не дает подключаться к неизвестным устройствам (у многих возникала подобная проблема) Для лечения этой ситуации достаточно выполнить эту команду timeout 1 hcitool lescan (чтобы hcitool увидел мак адрес устройства ДО первого коннекта к нему) Думал вставить ее вызов сразу после нажатия кнопки "Подтвердить", но до первого подключения.

notabene00 commented 4 years ago

Снова async_step_user. Первый вызов происходит с user_input=None, а после нажатия кнопки, если схема валидна, то тот же метод вызывается со словарем введенных данных.

mavrikkk commented 4 years ago

единственное НО эта команда либо требует РУТа ((( либо нужно предварительно разрешить малинке работать с блютусом без рут прав: sudo setcap cap_net_raw+ep /usr/bin/hcitool sudo setcap cap_net_raw+ep /bin/hciconfig

поэтому пока не знаю, как это реализовать удобно и без сторонних манипуляций...в стиле config flow ))

notabene00 commented 4 years ago

Перед этой строкой можно https://github.com/mavrikkk/ha_kettler/blob/01aa44446265cc35b26ccb007b88fb71bcc728f5/custom_components/r4s_kettler/config_flow.py#L78 На этот момент уже прошли все проверки на валидность. Мак, длина пароля.

mavrikkk commented 4 years ago

не разрешаешь скан интервал меньше 60? )) некоторым не понравится. Думаю, лучше минимум на 30 поставить хотя бы

notabene00 commented 4 years ago

Да. Минимум минуту из-за предупреждения о том, что частый скан может вызвать проблемы. Сам не проверял. 30 так 30, я ничего против не имею :) Можно и единицу минимумом сделать. А там уж юзер - сам себе злобный Буратино, если выставил 1.

notabene00 commented 4 years ago

единственное НО эта команда либо требует РУТа (((

вот и мне кажется, что тут малой кровью обойтись не выйдет

mavrikkk commented 4 years ago

хммм import check_output я так понимаю, это позволяет получать вывод консоли? Не знаешь внутренности этого метода? На чем он основан?

Просто я в самом модуле делаю почти тоже самое, только пользуюсь сторонним модулем import pexpect

может будет смысл переделать на стандартный для HA check_output

notabene00 commented 4 years ago

check_output не для Home Assistant стандартный, а в стандартной библиотеке python

https://github.com/python/cpython/blob/master/Lib/subprocess.py#L377

mavrikkk commented 4 years ago

поизучаю, спасибо