Domoticz. Подключаем Xiaomi Philips Smart LED Ball Lamp


Подключаем Xiaomi Philips Smart LED Ball Lamp используя php библиотеку - php-miio.

Подключать Xiaomi Philips Smart LED Ball Lamp будем используя библиотеку php-miio на github. Также можно использовать  python библиотеку python-miio. Минус библиотеки - отсутствие скрипта для консольных команд для лампы. Использовать нужно в скриптах python подключая непосредственно библиотеку и используя классы для лампы.

Подключаем лампу в приложении Mi Home. Лампа обнаруживается автоматически при подаче питания. Если этого не произошло нужно сделать reset лампы (5 включений/выключений за 3 секунды, то есть практически мгновенно).

Устанавливаем php командой:

sudo apt-get install php5

Загружаем php-miio.

Запускаем консоль из папки с загруженной библиотекой (или переходим в папку командой cd <директория>).

Вводим в консоль команду:

php miio-cli.php --discover all

Если все правильно работает получим ответ вида:

pi@raspberrypi:~/Desktop/php-miio-master $ php miio-cli.php --discover all

Поиск всех

Поиск выполнен.

Найдено 3 устройства.

IP 192.168.1.67 DevType 00d0 Serial 728c Token 00000000000000000000000000000000

IP 192.168.1.90 DevType 039d Serial 3d7a Token 00000000000000000000000000000000

IP 192.168.1.66 DevType 02bb Serial 7b35 Token af10ad7db5d9650798a005b46114eddb

pi@raspberrypi:~/Desktop/php-miio-master $

В данном случае Xiaomi Philips Smart LED Ball Lamp устройство с Ip 192.168.1.90 (проверить можно через веб-интерфейс роутера).

Для управления лампой нам нужно знать её токен. Через поиск он не определяется, так как при сопряжении с приложением токен в общем доступе не остаётся.

Извлекать токен будем из данных Mi Home на Android смартфоне (способы для IOS смотрите тут). Для этого необходимо подключить смартфон к компьютеру в режиме ADB (инструкции, драйвера и софт можно взять в этой теме), а также установить на компьютер Java. Для этого нужно разблокировать опции для разработчиков. Для смартфонов с MIUI  - заходим в "Настройки" - "О телефоне" и кликаем 5 раз а "Версию MIUI". Далее переходим "Настройки" - "Дополнительно" - "Для разработчиков". Включаем "Режим разработчика", "Отладка по USB", "Установка через USB", "Отладка USB (Настройки безопасности) ВАЖНО!. Подключаем смартфон к компьютеру в режиме зарядки. Загружаем прикрепленный софт и распаковываем в папку adb на диск C: (важно, чтобы в пути не было кириллицы). Создаем в распакованной папке adb файл devices.cmd (проверяем что .cmd это расширение файла а не его имя) и пишем туда:

echo off
adb devices
pause

Запускаем созданный файл. Если все сделано правильно, будут видны строки:

D:\adb>devices.cmd
adb devices
List of devices attached
HT16GV402012 device
D:\adb>pause
Для продолжения нажмите любую клавишу . . .

Если что-то неправильно, то в списке подключенных устройств (List of devices attached) будет пусто.

Загружаем программу MiToolkit 1.5. 

Запускаем, переключаем на английский язык и нажимаем Extract Token.

Появится окно с описанием процесса. В нем снова нажимаем Extract Token.

Через некоторое время на телефоне запустится приложение Mihome, а на ПК появится предупреждение, что ни в коем случае не ставить пароль на резервную копию приложения Mihome. Нажимаем ОК.

Далее на смартфоне появится сообщение о подтверждении создания резервной копии приложения Mihome. Оставляем поле ввода пароля пустым и тапаем Создать резервную копию данных.

После успешной архивации на ПК появится соответствующее сообщение. Нажимаем ОК и ждем результата.

По окончанию экспорта устройств из базы приложения в основном окне будет заполнено соответствующее поле. Если устройство много, то нужно прокрутить список вниз. Полоса прокрутки при этом не отображается.

Найдем в полученных результатах строку с токеном лампы:

philips.light.bulb - Philips connected bulb - 8a6dab31ce6dabdfa891e7ba3834cc77

Из папки с загруженной библиотекой пробуем включить/выключить лампу командами:

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_power","params":["off"]}'
Устройство доступно и ответило:
{"result":["ok"],"id":1}

 

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_power","params":["off"]}'
Устройство доступно и ответило:
{"result":["ok"],"id":1}

Команда на изменение яркости (от 1 до 100)

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_bright","params":[100]}

Команда на изменение температуры цвета:

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_cct","params":[1]}'

Выключение лампы с задержкой (в секундах, в примере 10 секунд):

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"delay_off","params":[10]}'

Команда на получение статуса и установленных параметров:

php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"get_prop","params":["power","bright","cct","snm","dv"]}'
Устройство доступно и ответило:
{"result":["on",100,1,0,0],"id":1}

Напишем (инструкция тут) 2 простых bash скрипта (bulb_on.sh, bulb_off.sh) на включение и выключение лампы (переходим в директорию с библиотекой и запускаем команды на включение/выключение):

#!/bin/bash -x
cd /home/pi/Desktop/php-miio-master/
php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_power","params":["off"]}'

 

#!/bin/bash -x
cd /home/pi/Desktop/php-miio-master/
php miio-cli.php --ip 192.168.1.90 --token 8a6dab31ce6dabdfa891e7ba3834cc77 --sendcmd '{"id":1,"method":"set_power","params":["off"]}'

Теперь можем вызывать скрипты из сценариев на lua (инструкция тут). Также можно создать виртуальную лампу (инструкция тут) и прописать 2 скрипта на действия при включении/выключении:

После этого устройством можно управлять через сценарии на lua например:

if (devicechanged['Xiaomi Motion Sensor'] == 'Off') then
commandArray['Virtual']='Off AFTER 10'
end

Купить Xiaomi Philips Smart LED Ball Lamp на GearBest