А какой промежуток между запросами? Надо не чаще, чем раз в 2 секунды. У лампочек по крайней мере такая особенность.webms писал(а):и если повторить еще раз
то дальше будет выдавать только
miIO - протокол для Xiaomi (Mi Home) устройств
Модератор: immortal
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
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}
-
- Сообщения: 15
- Зарегистрирован: Сб авг 12, 2017 7:16 pm
- Благодарил (а): 11 раз
- Поблагодарили: 7 раз
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
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
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
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
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. Любая помощь, в т.ч. материальная, всячески поддерживается, и способствует скорейшему появлению модуля на свет.

- Рейтинг: 6.98%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
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. Оставляем поле ввода пароля пустым и тапаем Создать резервную копию данных. После успешной архивации на ПК появится соответствующее сообщение. Нажимаем ОК и ждем результата. По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается, но они там есть. ))
- Рейтинг: 2.33%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 15
- Зарегистрирован: Сб авг 12, 2017 7:16 pm
- Благодарил (а): 11 раз
- Поблагодарили: 7 раз
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
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
Re: miIO - протокол для Xiaomi (Mi Home) устройств
В режиме сопряжения это, когда подключался к точке доступа, которую поднимает сама лампочка? Вероятно, при добавлении ламп в Михом токены сменились. Я на такие случаи еще не попадал, но в api есть для этого специальная команда, которая позволяет зная текущий токен сменить его на какой-то другой.ysanjok писал(а):Весьма странно, но я получил токены отличные от тех что Лампы шлют в hello-пакете в режиме сопряжения.
Программирование (описание в виде классов api-устройств), тестирование, инструкции по добавлению в МЖД, лайки полезных постов.ysanjok писал(а):Есть желание помочь в развитии, но к сожалению не финансами. Говорите чем могу ещё посодействовать?

- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
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 - счетчик команд
- Начать уборку
- Завершить уборку
- Приостановить уборку
- Убрать вокруг себя
- Вернуться на базу и встать на зарядку
- Поиск пылесоса
- Рейтинг: 4.65%
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, камера кубик