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

Service & characteristic for notification handle #15

Closed notabene00 closed 4 years ago

notabene00 commented 4 years ago

Это не проблема для этого репо, просто у меня нет иного способа коммуникации Хочу портировать код взаимодействия с чайником под Athom Homey Раскопал, что handle 0x000e является characteristic 6e400002b5a3f393e0a9e50e24dcca9e в service 6e400001b5a3f393e0a9e50e24dcca9e Подключился, авторизовался, включение/выключение работает А вот подписаться на уведомления (handle 0x000c) не могу Не понимаю куда слать 01 00 Понятия handle в документации Homey не вижу Нужна пара service_uuid/characteristic_uuid

Не сориентируешь?

notabene00 commented 4 years ago

Блин... Но все равно подскажи, если можешь Авось сделают когда-нибудь)

mavrikkk commented 4 years ago

сориентирую. уид сервиса можно узнать так:

gatttool -b E7:5A:53:79:82:A4 -t random --primary

последний сервис - это то, что нужно. у меня он такой (по идее должны быть одинаковы)

attr handle = 0x0009, end grp handle = 0xffff uuid: 6e400001-b5a3-f393-e0a9-e50e24dcca9e

а уид характеристик можно получить так

gatttool -b E7:5A:53:79:82:A4 -t random --char-desc

ну и ищешь нужные тебе хендлы. подписка - это хендл 0x000c. у меня весь вывод такой:

handle = 0x0001, uuid = 00002800-0000-1000-8000-00805f9b34fb handle = 0x0002, uuid = 00002803-0000-1000-8000-00805f9b34fb handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb handle = 0x0004, uuid = 00002803-0000-1000-8000-00805f9b34fb handle = 0x0005, uuid = 00002a01-0000-1000-8000-00805f9b34fb handle = 0x0006, uuid = 00002803-0000-1000-8000-00805f9b34fb handle = 0x0007, uuid = 00002a04-0000-1000-8000-00805f9b34fb handle = 0x0008, uuid = 00002800-0000-1000-8000-00805f9b34fb handle = 0x0009, uuid = 00002800-0000-1000-8000-00805f9b34fb handle = 0x000a, uuid = 00002803-0000-1000-8000-00805f9b34fb handle = 0x000b, uuid = 6e400003-b5a3-f393-e0a9-e50e24dcca9e handle = 0x000c, uuid = 00002902-0000-1000-8000-00805f9b34fb handle = 0x000d, uuid = 00002803-0000-1000-8000-00805f9b34fb handle = 0x000e, uuid = 6e400002-b5a3-f393-e0a9-e50e24dcca9e

mavrikkk commented 4 years ago

хз как в Athom Homey, но в HA я вообще не нашел как можно стандартными средствами подписаться на уведомления. Грубо говоря, запустил подписку и радуйся, HA сам узнает, что происходит с чайником. Пришлось костылить. Уверен, этот костыль сработает и для Athom Homey. Я не подписываюсь на уведомления в прямом смысле слова. А просто по таймеру запускаю цикл команд: подключиться, подписаться на уведомления (просто, чтоб разрешили мне читать нужные хендлы), авторизоваться, прочесть статус, отключиться. Это очень трудозатратно и потому бывают неприятные ситуации в виде отвалов. Плюс эти все команды еще и завернуты в pexpect, что тоже не добавляет стабильности. Если вдруг узнаешь, что в HA внедрили подписку на уведомления по BLE - сообщай ))

notabene00 commented 4 years ago

Спасибо Обязательно, если окажусь в курсе и вспомню :)

mavrikkk commented 4 years ago

@fantomnotabene неудобно, что нельзя связаться напрямую )) нашел таки возможность подписки. возможно, ты уже видел. внедряюсь потихноьку. всплыл один момент. я теперь мак тоже запросом в config flow получаю.

self._ble_devices = {str(device.addr):str(device.getValueText(9))+','+str(device.addr) for device in scanner.scan(3.0)}

получаем словарь ключ-значение, например так:

{'ca:42:9a:a4:2f:45': 'RMC-M223S,ca:42:9a:a4:2f:45', '14:bb:6e:09:40:83': 'None,14:bb:6e:09:40:83'} ключи - мак....значения - имя,мак...

на форме при добавлении отображается ЗНАЧЕНИЕ, а в сам конфиг улетает КЛЮЧ! Это баг или фича? ))

notabene00 commented 4 years ago

Снова приветствую) Можно на почту: мой местный username at gmail.com Можно в telegram по тому же username

И нет, подписку пока не видел Это очень круто, буду дома (черт, правда, пока знает, когда) - опробую

По поводу словарей в выпадающих списках: честно говоря, пользовал только идентичные пары key-value Поэтому для меня не было разницы, но особенность интересная :)

mavrikkk commented 4 years ago

ясно, хорошо, спасибо за контакты )