Страница 8 из 24
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Чт окт 19, 2017 4:25 pm
skysilver
webms писал(а):и если повторить еще раз
то дальше будет выдавать только
А какой промежуток между запросами? Надо не чаще, чем раз в 2 секунды. У лампочек по крайней мере такая особенность.
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Чт окт 19, 2017 4:53 pm
webms
skysilver писал(а):webms писал(а):и если повторить еще раз
то дальше будет выдавать только
А какой промежуток между запросами? Надо не чаще, чем раз в 2 секунды. У лампочек по крайней мере такая особенность.
после 10 мин проверил - заработал
подождал 10 сек - не захотел повторить
Код: Выделить всё
array(4) {
["token"]=>
string(32) "633756495a714e376964305a79394570"
["ip"]=>
string(13) "192.168.0.112"
["sendcmd"]=>
string(38) "{'id':1,'method':'toggle','params':[]}"
["debug"]=>
bool(false)
}
Соединение с устройством IP 192.168.0.112
Статус отладки [1]
Команда для отправки - {"id":1,"method":"toggle","params":[]}
Проверяем доступность устройства 192.168.0.112
Сокет успешно создан
Параметр SO_RCVTIMEO сокета успешно задан
Отправляем hello-пакет на 192.168.0.112 с таймаутом 15
Отправлено в сокет 32 байт
Получен ответ от IP 192.168.0.112 с порта 54321
Прочитано 32 байта из сокета
magic: 2131
length: 0020 --> 32 байт
unknown1: 00000000
devicetype: 03da
serial: 3682
ts: 59e8ad15 --> 1508420885 секунд
checksum: ffffffffffffffffffffffffffffffff
Устройство 192.168.0.112 доступно
Сокет успешно создан
Параметр SO_RCVTIMEO сокета успешно задан
Используется токен, указанный вручную, - 633756495a714e376964305a79394570
Отправляем пакет на 192.168.0.112 с таймаутом 5
Отправлено в сокет 80 байт
Получен ответ от IP 192.168.0.112 с порта 54321
Прочитано 64 байта из сокета
magic: 2131
length: 0040 --> 64 байт
unknown1: 00000000
devicetype: 03da
serial: 3682
ts: 59e8ad15 --> 1508420885 секунд
checksum: 2522505ac866fcdc5bae901de4774aba
data: 3d2892846ea9e2241b253c11ea2ad3d2bacabb471fde343b0ead84113b0b80f1
Расшифрованные данные: {"result":0,"id":1}
Устройство 192.168.0.112 доступно и ответило:
{"result":0,"id":1}
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Чт окт 19, 2017 6:05 pm
ysanjok
Аналогичная ситуация.
Есть предложение, чисто из наблюдений:
Лампы перестали принимать команды, как мне кажется, после того как...
Начну по порядку.
Мои действия :
>Выполнил сброс настроек Philips connected bulb, путём удаления из MiHome.
>С ноутбука подключился к открытой Wi-Fi сети, созданной лампой.
>Посредством miIO-cli.php получил token и ip от лампы.
>В целях проверки работоспособности решил запустить philipsbulb-sample.php, предварительно поместив полученные данные (ip, token) в соответствующие строки файла philipsbulb.class.php.
>Скрипт отработал без ошибок, лампа управляется.
>Повторил всё выше описанное со второй лампой. Всё Ок.
>Зашёл в Mihome и заново добавил лампы в мои устройства. Подключив к роутеру.
>Снова просканировал эфир через miIO-cli.php
>Получил список из трёх устройств (Две лампы Philips bulb и Gateway), с новыми ip адресами и значениями token равным 00000...
>Снова решил запустить philipsbulb-sample.php, предварительно поместив полученные ip в строки файла philipsbulb.class.php, по очереди для каждой лампы.
>Скрипт отработал без ошибок, лампа управляется.
А вот тут, опять же, как мне кажется, нарисовалась проблема.
>Запустил mihome, поиграл с лампочками там.
>Решил повторить попытку запустить philipsbulb-sample.php, но не тут-то было.
>Получаю ответ "Устройство 192.168.*.* не доступно или не отвечает."
Как-то так...
Отправлено с моего Redmi Note 4 через Tapatalk
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Чт окт 19, 2017 10:07 pm
skysilver
ysanjok писал(а):>Снова решил запустить philipsbulb-sample.php, предварительно поместив полученные ip в строки файла philipsbulb.class.php, по очереди для каждой лампы.
Можно увидеть получившийся код?
ysanjok писал(а):А вот тут, опять же, как мне кажется, нарисовалась проблема. >Запустил mihome, поиграл с лампочками там.
>Решил повторить попытку запустить philipsbulb-sample.php, но не тут-то было. >Получаю ответ Устройство 192.168.*.* не доступно или не отвечает."
Не смог у себя воспроизвести такую проблему. Попеременно слал команды из консоли и управлял через Михом. Все четко.
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Пт окт 27, 2017 1:25 am
skysilver
Новости проекта.
Обновления ядра библиотеки:
- Добавлена коррекция разницы времени между сервером и устройством.
- Оптимизирован вызов функций работы с сокетами.
- Добавлена функция fastDiscover() для отправки широковещательного hello-пакета без ожидания ответа от miIO-устройств.
- Улучшен вывод отладочных сообщений.
Успешно испытано взаимодействие со следующими устройствами:
- Yeelight White Bulb.
- Xiaomi Philips LED Ball Lamp.
- Xiaomi Philips Eyecare Smart Lamp.
- Xiaomi Mi Smart Home Gateway 2.
Проведена большая работа по отлову проблем взаимодействия с Xiaomi Mi Robot Vacuum, в результате чего управление все же удалось получить! Но для дальнейшей интеграции требуется доработка ядра библиотеки. Веду работу в этом направлении. Большую благодарность за предоставленный удаленный стенд выражаю пользователю форума
webms.
Для оценки потенциального интереса к модулю управления miIO-устройствами создал проект в
Connect. Любая помощь, в т.ч. материальная, всячески поддерживается, и способствует скорейшему появлению модуля на свет.
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Пн окт 30, 2017 1:08 pm
skysilver
Проверил еще один способ получения токенов устройств из приложения Mihome на андроиде. Суть та же, что и через ADB, только есть windows-приложение, чтобы не ковыряться в консоли.
Условия:
1. Установленные на ПК ADB-драйвера смартфона.
2. Установленная на ПК Java.
3. На смартфоне включена отладка через USB и разрешено подключение с ПК.
4. И, разумеется, смартфон подключен по USB к ПК.
Скачиваем на ПК утилиту
MiToolkit 1.5 и распаковываем архив. Запускаем
MiToolkit.exe.
Переключаем на английский язык и нажимаем
Extract Token.
- mitoolkit_1.png (12.28 КБ) 6628 просмотров
Появится окно с описанием процесса. В нем снова нажимаем
Extract Token.
- mitoolkit_2.png (22.05 КБ) 6628 просмотров
Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем
ОК.
- mitoolkit_3.png (6.28 КБ) 6628 просмотров
Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем
Создать резервную копию данных.
- mitoolkit_6.png (72.29 КБ) 6628 просмотров
После успешной архивации на ПК появится соответствующее сообщение. Нажимаем
ОК и ждем результата.
- mitoolkit_4.png (8.38 КБ) 6628 просмотров
По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
- mitoolkit_5.png (30.68 КБ) 6628 просмотров
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Вт окт 31, 2017 11:19 am
ysanjok
skysilver писал(а):Проверил еще один способ получения токенов устройств из приложения Mihome на андроиде. Суть та же, что и через ADB, только есть windows-приложение, чтобы не ковыряться в консоли.
Условия:
1. Установленные на ПК ADB-драйвера смартфона.
2. Установленная на ПК Java.
3. На смартфоне включена отладка через USB и разрешено подключение с ПК.
4. И, разумеется, смартфон подключен по USB к ПК.
Скачиваем на ПК утилиту
MiToolkit 1.5 и распаковываем архив. Запускаем
MiToolkit.exe.
Переключаем на английский язык и нажимаем
Extract Token.
mitoolkit_1.png
Появится окно с описанием процесса. В нем снова нажимаем
Extract Token.
mitoolkit_2.png
Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем
ОК.
mitoolkit_3.png
Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем
Создать резервную копию данных.
mitoolkit_6.png
После успешной архивации на ПК появится соответствующее сообщение. Нажимаем
ОК и ждем результата.
mitoolkit_4.png
По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
mitoolkit_5.png
Проверил на своём Redmi Note 4x - всё получилось.
Весьма странно, но я получил токены отличные от тех что Лампы шлют в hello-пакете в режиме сопряжения.
С этими токенами скрипт sample отрабатывает без ошибок.
Есть желание помочь в развитии, но к сожалению не финансами. Говорите чем могу ещё посодействовать?
Отправлено с моего Redmi Note 4 через Tapatalk
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Вт окт 31, 2017 12:00 pm
skysilver
ysanjok писал(а):Весьма странно, но я получил токены отличные от тех что Лампы шлют в hello-пакете в режиме сопряжения.
В режиме сопряжения это, когда подключался к точке доступа, которую поднимает сама лампочка? Вероятно, при добавлении ламп в Михом токены сменились. Я на такие случаи еще не попадал, но в api есть для этого специальная команда, которая позволяет зная текущий токен сменить его на какой-то другой.
ysanjok писал(а):Есть желание помочь в развитии, но к сожалению не финансами. Говорите чем могу ещё посодействовать?
Программирование (описание в виде классов api-устройств), тестирование, инструкции по добавлению в МЖД, лайки полезных постов.
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Ср ноя 01, 2017 11:58 pm
skysilver
Новости проекта.
Обновление ядра библиотеки (актуальная версия
0.2.6):
- В функцию отправки команды устройствам добавлен аргумент для задания уникального идентификатора сообщения.
- Добавлена функция getMsgID($ip) для формирования и хранения в файле идентификаторов команд для устройств.
- Добавлены варианты использования автоматического и ручного формирования идентификатора сообщения.
- Добавлена проверка на валидность json-ответов от устройств.
- Добавлен класс с базовыми функциями и пример работы с пылесосом Xiaomi Mi Robot Vacuum.
- Добавлен класс с базовыми функциями для настольных ламп Xiaomi Philips Eyecare Smart Lamp 2.
Функции, реализованные для
Xiaomi Philips Eyecare Smart Lamp 2:
- Получить текущий статус
- power - питание (on или off)
- bright - яркость (от 1 до 100)
- notifystatus - напоминание об усталости глаз
- ambstatus - доп. боковая подсветка (on или off)
- ambvalue - яркость доп. боковой подсветки (от 1 до 100)
- eyecare - смарт режим безопасный для глаз
- scene_num - номер сцены (от 1 до 3, study, reading, phone)
- bls - режим смарт-ночника
- dvalue - таймер на выключение, макс. 60 минут (в минутах от 1 до 60)
- Включить
- Выключить
- Задать яркость
Функции, реализованные для
Xiaomi Mi Robot Vacuum:
- Получить текущий статус
- state - код состояния
- state_text - состояние
- 'Initiating'
- 'Sleeping'
- 'Waiting'
- 'Unknown'
- 'Cleaning'
- 'Back to home'
- 'Unknown'
- 'Charging'
- 'Charging Error'
- 'Pause'
- 'Spot Cleaning'
- 'In Error'
- 'Shutting down'
- 'Updating'
- 'Docking'
- 'Full'
- battery - заряд батареи
- fan_power - мощность турбины
- error_code - код ошибки
- error_text - описание ошибки
- 'Laser distance sensor error'
- 'Collision sensor error'
- 'Wheels on top of void, move robot'
- 'Clean hovering sensors, move robot'
- 'Clean main brush'
- 'Clean side brush'
- 'Main wheel stuck'
- 'Device stuck, clean area'
- 'Dust collector missing'
- 'Clean filter'
- 'Stuck in magnetic barrier'
- 'Low battery'
- 'Charging fault'
- 'Battery fault'
- 'Wall sensors dirty, wipe them'
- 'Place me on flat surface'
- 'Side brushes problem, reboot me'
- 'Suction fan problem'
- 'Unpowered charging station'
- clean_area - площадь уборки, кв. см.
- clean_time - время уборки, сек.
- dnd_enabled - режим "не беспокоить"
- in_cleaning - в процессе уборки или нет
- map_present - есть карта или нет
- msg_ver - версия команд
- msg_seq - счетчик команд
- Начать уборку
- Завершить уборку
- Приостановить уборку
- Убрать вокруг себя
- Вернуться на базу и встать на зарядку
- Поиск пылесоса
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Добавлено: Чт ноя 02, 2017 7:16 pm
AnT
Готов быть подопытным владельцем: Philips/Yeelight bulb, Power Strip2, Vacuum, камера кубик