miIO - протокол для Xiaomi (Mi Home) устройств

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

Модератор: immortal

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Вт дек 05, 2017 11:10 pm

denis писал(а):Спасибо за модуль, модуль нашел лампу "philips eyecare smart lamp 2", вкл-выкл, регулировка яркости из МДМ работает. С остальным пока не пробовал, но думаю, тоже проблем не будет.
Собственно, остальное на данные момент и не реализовано. Только базовый функционал.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Вт дек 05, 2017 11:14 pm

Как-то народ не активно отписывается о результатах, что откладывает перевод альфы в бету и ее размещение в маркете. ))

Тем не менее, выпущено еще две сборки. Крайняя 0.6-alpha. В ней, ко всему прочему, добавил в интерфейс кнопку для быстрого получения сведений miIO.info.
miio0.6.png
miio0.6.png (38.9 КБ) 5310 просмотров
За это сообщение автора skysilver поблагодарили (всего 2):
Genplane (Ср дек 06, 2017 2:06 pm) • webms (Ср дек 06, 2017 9:23 pm)
Рейтинг: 2.33%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
VooDooN
Сообщения: 307
Зарегистрирован: Сб июн 11, 2016 12:02 am
Благодарил (а): 170 раз
Поблагодарили: 64 раза

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение VooDooN » Вт дек 05, 2017 11:48 pm

А робот-пылесос есть в модуле? Как вообще модуль использовать не из маркета, просто скопировать в папку с другими модулями?
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение woow » Ср дек 06, 2017 12:06 am

skysilver писал(а):Как-то народ не активно отписывается о результатах...
По ка для меня как бы смысла не вижу, хотя интересуюсь, уже накупил несколько девайсов от сиоми, среди них попалась розетка по ошибке без зигби, т.e. без мобильного аппса с ней обращаться нужен токен прочитал методику как его ловить, попробовал не получилось, для меня уж слишком закручено так как бы надобность миИО отпадает. Может кто со временем для рядовых смертных какой метод по проще придумает.
Raspberry Pi 3B+
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Ср дек 06, 2017 12:21 am

VooDooN писал(а):А робот-пылесос есть в модуле? Как вообще модуль использовать не из маркета, просто скопировать в папку с другими модулями?
Пылесос есть.

Скачать zip-архив. В нем будет три папки - modules, scripts, templates. Их нужно скопировать в корень папки с МДМ и перезапустить главный цикл, чтобы модуль проинсталлился.
Последний раз редактировалось skysilver Ср дек 06, 2017 9:33 am, всего редактировалось 1 раз.
За это сообщение автора skysilver поблагодарил:
VooDooN (Ср дек 06, 2017 1:36 am)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Ср дек 06, 2017 12:23 am

woow писал(а):розетка по ошибке без зигби, т.e. без мобильного аппса с ней обращаться нужен токен прочитал методику как его ловить, попробовал не получилось, для меня уж слишком закручено так как бы надобность миИО отпадает.
Если есть андроид с рутом, то все очень просто. Если без рута, то чуть сложнее, но реально. ))
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Ср дек 06, 2017 10:35 am

Расковырял api шлюза в части управления радио.

Программу максимум (воспроизведение любого онлайн-радио и голосовые уведомления от МДМ) реализовать не получится, т.к. шлюз "кушает" потоки только в определенном формате, весьма специфичном - кодек AAC, формат плейлиста m3u8, а в самом плейлисте ссылки на какие-то части потока по 5-7 секунд длиной. Муть какая-то! )
Пример плейлиста m3u8 одной китайской станцииПоказать

Код: Выделить всё

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:12064453
#EXTINF:7,
http://live.xmcdn.com/192.168.3.134/live/1065/64/171206_063034_11cf.aac
#EXTINF:7,
http://live.xmcdn.com/192.168.3.134/live/1065/64/171206_063034_11d0.aac
#EXTINF:7,
http://live.xmcdn.com/192.168.3.134/live/1065/64/171206_063034_11d1.aac    
Что получилось:
узнать текущее состояние

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"get_prop_fm","params":[]}' 
получить список текущих радиостанций в избранном

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"get_channels","params":{"start":0}}' 
включить

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_fm","params":["on"]}' 
выключить

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_fm","params":["off"]}' 
переключить

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_fm","params":["toggle"]}' 
следующий трек

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_fm","params":["next"]}' 
предыдущий трек

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_fm","params":["prev"]}' 
изменить громкость

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"volume_ctrl_fm","params":["10"]}' 
добавить свою радиостанцию в избранное

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"add_channels","params":{"chs":[{"id":1022,"url":"http://icecast.vgtrk.cdnvideo.ru/vestifm_aac_32kbps","type":0}]}}'
воспроизвести конкретную радиостанцию из избранного с заданной громкостью

Код: Выделить всё

php miio-cli.php --ip 192.168.1.45 --sendcmd '{"id":65022,"method":"play_specify_fm","params":[1022,2]}'
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение smart_g » Ср дек 06, 2017 1:46 pm

А теперь надо на MJD поднять свою радиостанцию-Алису и скармливать ее шлюзу.
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение skysilver » Ср дек 06, 2017 2:00 pm

smart_g писал(а):А теперь надо на MJD поднять свою радиостанцию-Алису и скармливать ее шлюзу.
Вижу кучу проблем в связи с этим.

1. Как сформировать правильный поток, которых схавает радио шлюза. Тут без ffmpeg явно не обойдется. А это опять же перекодировка и нагрузка на сервер.
2. Если поток получится сделать, то большую часть времени он будет пустой, т.к. в основном Алиса все же молчит.
3. А еще при каждом включении радио шлюз играет какую-то мелодию, которую хрен отключишь, и со временем она будет невероятно бесить. ))

В принципе пруф-концепт может выглядеть так:
0. В шлюз сохраняется ссылка на плейлист.
1. После say() формируется в кеше файл mp3 с голосом.
2. Этот mp3 конвертируется ffmpeg в нужный формат и обновляется файл плей-листа.
3. Даем команду шлюзу проиграть нужный плейлист с заданной громкостью.
4. Шлюз сначала играет дилинь-дилинь, а потом произносит фразу Алисы.

По итогу, предполагаю, будет весьма заметная задержка. Поэтому такое решение только ради фана. ))

Кстати, в экосистеме сяоми есть wifi-устройства именно для онлайн-радио. Думаю, там такое же апи.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Genplane
Сообщения: 32
Зарегистрирован: Чт авг 18, 2016 11:43 am
Откуда: Калининград
Благодарил (а): 37 раз
Поблагодарили: 1 раз

Re: miIO - протокол для Xiaomi (Mi Home) устройств

Сообщение Genplane » Ср дек 06, 2017 2:14 pm

Как-то народ не активно отписывается о результатах, что откладывает перевод альфы в бету и ее размещение в маркете. ))
Хочу поблагодарить за модуль. С помощью Amarok поставил себе пару таких розеток. Одна отработала три дня, другая -один. Претензий не было. Сейчас уехал на пару недель. Дома никого. Продолжу по возвращении. Немного оффтопа: одну розетку вскрыл, отрезал- отпаял все контактные площадки, собрал назад с выведенными проводами. Отлично вошла в распредкоробку
Windows 7, MiniPC, MegaD, Arduino
Ответить