А какой промежуток между запросами? Надо не чаще, чем раз в 2 секунды. У лампочек по крайней мере такая особенность.webms писал(а):и если повторить еще раз
то дальше будет выдавать только
miIO - протокол для Xiaomi (Mi Home) устройств
Модератор: immortal
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
Re: miIO - протокол для Xiaomi (Mi Home) устройств
после 10 мин проверил - заработалskysilver писал(а):А какой промежуток между запросами? Надо не чаще, чем раз в 2 секунды. У лампочек по крайней мере такая особенность.webms писал(а):и если повторить еще раз
то дальше будет выдавать только
подождал 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) устройств
Аналогичная ситуация.
Есть предложение, чисто из наблюдений:
Лампы перестали принимать команды, как мне кажется, после того как...
Начну по порядку.
Мои действия :
>Выполнил сброс настроек 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
Есть предложение, чисто из наблюдений:
Лампы перестали принимать команды, как мне кажется, после того как...
Начну по порядку.
Мои действия :
>Выполнил сброс настроек 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
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Можно увидеть получившийся код?ysanjok писал(а):>Снова решил запустить philipsbulb-sample.php, предварительно поместив полученные ip в строки файла philipsbulb.class.php, по очереди для каждой лампы.
Не смог у себя воспроизвести такую проблему. Попеременно слал команды из консоли и управлял через Михом. Все четко.ysanjok писал(а):А вот тут, опять же, как мне кажется, нарисовалась проблема. >Запустил mihome, поиграл с лампочками там.
>Решил повторить попытку запустить philipsbulb-sample.php, но не тут-то было. >Получаю ответ Устройство 192.168.*.* не доступно или не отвечает."
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Новости проекта.
Обновления ядра библиотеки:
Для оценки потенциального интереса к модулю управления miIO-устройствами создал проект в Connect. Любая помощь, в т.ч. материальная, всячески поддерживается, и способствует скорейшему появлению модуля на свет.
Обновления ядра библиотеки:
- Добавлена коррекция разницы времени между сервером и устройством.
- Оптимизирован вызов функций работы с сокетами.
- Добавлена функция fastDiscover() для отправки широковещательного hello-пакета без ожидания ответа от miIO-устройств.
- Улучшен вывод отладочных сообщений.
- Yeelight White Bulb.
- Xiaomi Philips LED Ball Lamp.
- Xiaomi Philips Eyecare Smart Lamp.
- Xiaomi Mi Smart Home Gateway 2.
Для оценки потенциального интереса к модулю управления miIO-устройствами создал проект в Connect. Любая помощь, в т.ч. материальная, всячески поддерживается, и способствует скорейшему появлению модуля на свет.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Проверил еще один способ получения токенов устройств из приложения Mihome на андроиде. Суть та же, что и через ADB, только есть windows-приложение, чтобы не ковыряться в консоли.
Условия:
1. Установленные на ПК ADB-драйвера смартфона.
2. Установленная на ПК Java.
3. На смартфоне включена отладка через USB и разрешено подключение с ПК.
4. И, разумеется, смартфон подключен по USB к ПК.
Скачиваем на ПК утилиту MiToolkit 1.5 и распаковываем архив. Запускаем MiToolkit.exe.
Переключаем на английский язык и нажимаем Extract Token. Появится окно с описанием процесса. В нем снова нажимаем Extract Token. Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем ОК. Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем Создать резервную копию данных. После успешной архивации на ПК появится соответствующее сообщение. Нажимаем ОК и ждем результата. По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
Условия:
1. Установленные на ПК ADB-драйвера смартфона.
2. Установленная на ПК Java.
3. На смартфоне включена отладка через USB и разрешено подключение с ПК.
4. И, разумеется, смартфон подключен по USB к ПК.
Скачиваем на ПК утилиту MiToolkit 1.5 и распаковываем архив. Запускаем MiToolkit.exe.
Переключаем на английский язык и нажимаем Extract Token. Появится окно с описанием процесса. В нем снова нажимаем Extract Token. Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем ОК. Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем Создать резервную копию данных. После успешной архивации на ПК появится соответствующее сообщение. Нажимаем ОК и ждем результата. По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Проверил на своём Redmi Note 4x - всё получилось.skysilver писал(а):Проверил еще один способ получения токенов устройств из приложения Mihome на андроиде. Суть та же, что и через ADB, только есть windows-приложение, чтобы не ковыряться в консоли.
Условия:
1. Установленные на ПК ADB-драйвера смартфона.
2. Установленная на ПК Java.
3. На смартфоне включена отладка через USB и разрешено подключение с ПК.
4. И, разумеется, смартфон подключен по USB к ПК.
Скачиваем на ПК утилиту MiToolkit 1.5 и распаковываем архив. Запускаем MiToolkit.exe.
Переключаем на английский язык и нажимаем Extract Token. Появится окно с описанием процесса. В нем снова нажимаем Extract Token. Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем ОК. Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем Создать резервную копию данных. После успешной архивации на ПК появится соответствующее сообщение. Нажимаем ОК и ждем результата. По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
Весьма странно, но я получил токены отличные от тех что Лампы шлют в hello-пакете в режиме сопряжения.
С этими токенами скрипт sample отрабатывает без ошибок.
Есть желание помочь в развитии, но к сожалению не финансами. Говорите чем могу ещё посодействовать?
Отправлено с моего Redmi Note 4 через Tapatalk
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
В режиме сопряжения это, когда подключался к точке доступа, которую поднимает сама лампочка? Вероятно, при добавлении ламп в Михом токены сменились. Я на такие случаи еще не попадал, но в api есть для этого специальная команда, которая позволяет зная текущий токен сменить его на какой-то другой.ysanjok писал(а):Весьма странно, но я получил токены отличные от тех что Лампы шлют в hello-пакете в режиме сопряжения.
Программирование (описание в виде классов api-устройств), тестирование, инструкции по добавлению в МЖД, лайки полезных постов.ysanjok писал(а):Есть желание помочь в развитии, но к сожалению не финансами. Говорите чем могу ещё посодействовать?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Новости проекта.
Обновление ядра библиотеки (актуальная версия 0.2.6):
Обновление ядра библиотеки (актуальная версия 0.2.6):
- В функцию отправки команды устройствам добавлен аргумент для задания уникального идентификатора сообщения.
- Добавлена функция getMsgID($ip) для формирования и хранения в файле идентификаторов команд для устройств.
- Добавлены варианты использования автоматического и ручного формирования идентификатора сообщения.
- Добавлена проверка на валидность json-ответов от устройств.
- Добавлен класс с базовыми функциями и пример работы с пылесосом Xiaomi Mi Robot Vacuum.
- Добавлен класс с базовыми функциями для настольных ламп 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)
- Включить
- Выключить
- Задать яркость
- Получить текущий статус
- 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 - счетчик команд
- Начать уборку
- Завершить уборку
- Приостановить уборку
- Убрать вокруг себя
- Вернуться на базу и встать на зарядку
- Поиск пылесоса
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
Re: miIO - протокол для Xiaomi (Mi Home) устройств
Готов быть подопытным владельцем: Philips/Yeelight bulb, Power Strip2, Vacuum, камера кубик