Статья

Добавление Xiaomi Universal IR Remote Controller в Domoticz

Универсальный пульт Xiaomi Universal IR Remote был один из первых устройств от Xiaomi, которое я приобрел вместе со стартовым комплектом умного дома, однако как-то он у меня не прижился: во-первых плагин в Mi Home для него был на чисто китайском (а я как бы не знаю китайского), во-вторых достаточно быстро я понял, что система управления умным домом Xiaomi достаточно ограничена в плане сценариев и перешел на альтернативные системы управления умным домом. В последствии для управления устройствами с ИК портами из Domoticz я перешел на решения от Broadlink. На прошлой неделе, перебирая вещи в шкафу наткнулся на давно забытый и слегка запыленный универсальный ИК пульт от Xiaomi. Начал искать способы добавления этого зверька в систему управления умным домом Domoticz, тут меня ждало разочарование, нормального способа добавления я не нашел. Ну что-ж (подумал я), почему бы самому тогда не написать нормальный плагин Xiaomi Universal IR Remote для Domoticz. И вот сейчас я хочу поделиться им с вами. 

Установка и первоначальная настройка плагина рассмотрена в отдельном разделе плагинов, перейдем сразу к примерам создания команд. Плагин позволяет создать включатель :) (Push On Button), выключатель (Switch), селекторный переключатель (Selector). Рассмотрим подробнее как все добавить. 

Как добавить кнопку

Как добавить выключатель

Нажимаем Reset Level  -> Learn после того, как индикатор на  Xiaomi Universal IR Remote Controller замигал, направляем на него пульт и нажимаем кнопку, которую хотим добавить на включение, после этого нажимаем Test и если все прошло успешно, команда сработала - нажимаем Save Level. Для захвата следующей команды нажимаем Learn после того, как индикатор на  Xiaomi Universal IR Remote Controller замигал, нажимаем кнопку, которую хотим добавить на выключение, далее нажимаем Test. Если команда корректно сработала, нажимаем Save Level. Если по каким-то причинам команда не распознана, просто нажимаем Reset Level и повторяем все сначала. После добавления команды и успешного тестирования, нажимаем Create для создания выключателя. 

Добавление селекторного выключателя ничем не отличается, кроме того, что процедуру сканирования ИК кода необходимо повторить столько раз, сколько необходимо уровней, нажимая каждый раз после добавления уровня Save Level, по окончании добавления всех команд необходимо нажать Create

Как добавить сразу несколько ИК команд на включение

Плагин поддерживает отправку сразу несколько ИК команд при включении/выключении/переключении. Это может быть полезно, например, для переключения каналов на ТВ при цифровом наборе (либо для устройств, для включения режима на которых необходимо нажать на несколько кнопок). Рассмотрим добавление на примере кнопки. Допустим, нам необходимо переключить на канал с номером 916. 

Аналогичным способом создаются выключатели и селекторные переключатели. Если устройства надоели и больше не хотите далее использовать, можно их удалить. Для этого заходим настройки - устройства. Слева ставим галочку Chuangmi (для отображения только устройств плагина), далее напротив устройства, которое мы хотим удалить нажимаем на синюю стрелочку. 

Просто удалять устройства из переключателей бесполезно, они снова будут воссозданы после перезагрузки системы плагинов :) 

Ну вот кажется все, добавлю только, что плагин находится еще в разработке, поэтому в дальнейшем возможны изменения, в случае обнаружения некорректной работы оставляйте сообщения на гитхабе. Для стабильной работы необходимо, чтобы IP адрес Xiaomi Universal IR Remote Controller был статический, как это сделать читаем в статье (хм.. скоро статьи на Sprut AI превратятся в сборник ссылок :)). Хотел добавить в плагин автоматическое обнаружение изменения IP адреса устройства по токену, но отказался от этой идеи т.к. опрос сети может занять продолжительное время, в течении которого вся система плагинов наглухо повисает.. это того не стоит, лучше просто добавить статический адрес для устройства. 

Немного о планах, задумываюсь о добавлении в плагин проброс созданных устройств в HomeKit (спасибо за наводку Алексею), а пока что созданные устройства пробрасываются в HomeBridge с помощью плагина homebridge-eDomoticz. Также планирую написать точно такой же плагин для ИК Broadlink, существующие решения кривоваты... Еще в планах написать плагины для точеных светильников Xiaomi Philips Zhirui и люстры Xiaomi Philips EyeCare Smart Ceiling LED Lamp, поэтому подписывайтесь, впереди еще много интересного! :)


Жду продолжения!

Уже на подходе, почти дописал плагин для Broadlink RM2 IR, работает быстро! 

а Broadlink RM3 Mini будет поддерживаться?

Будет

У меня вываливаются ошибки:  


2019-06-13 20:21:44.369 Error: (Chuangmi) failed to load 'plugin.py', Python Path used was '/home/pi/domoticz/plugins/Chuangmi/:/usr/lib/python35.zip:/usr/lib/python3.5:/usr/lib/python3.5/plat-arm-linux-gnueabihf:/usr/lib/python3.5/lib-dynload'.

2019-06-13 20:21:44.369 Error: (Шайба) Module Import failed, exception: 'ImportError'

2019-06-13 20:21:44.369 Error: (Шайба) Module Import failed: ' Name: miio'2019-06-13 20:21:44.369 Error: (Шайба) Error Line details not available.

2019-06-13 20:22:53.630 Error: Шайба hardware (12) thread seems to have ended unexpectedly

До этого я управлял шайбой через python скрипт по методике с 4pda, через файлики irsend.py и codes.txt. Ваш плагин обязательно ставить на чистую систему, или можно совместить эти оба способа? 

Устанавливали по инструкции? Во время установки выдавала ошибки? Версия python и domoticz? 


Попробуйте с шага, что выдаст в консоль SSH?


cd domoticz/plugins/Chuangmi
sudo apt-get install python3-pip python-pip
source .env/bin/activate
pip3 install python-miio
deactivate
sudo service domoticz restart

Отправлю весь оставшийся лог с putty:


pi@raspberrypi:~/domoticz/plugins $ sudo git clone https://github.com/Whilser/Xiaomi-Universal-IR-Remote-Controller-Domoticz-plugin.git">https://github.com/Whilser/Xia... Chuangmi


Клонирование в «Chuangmi»…


remote: Enumerating objects: 92, done.


remote: Counting objects: 100% (92/92), done.


remote: Compressing objects: 100% (86/86), done.


remote: Total 92 (delta 56), reused 14 (delta 6), pack-reused 0


Распаковка объектов: 100% (92/92), готово.


pi@raspberrypi:~/domoticz/plugins $ cd Chuangmi


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ virtualenv -p python3 .env


Already using interpreter /usr/bin/python3


Using base prefix '/usr'


Traceback (most recent call last):


File "/usr/local/bin/virtualenv", line 11, in


sys.exit(main())


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 712, in main


symlink=options.symlink)


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 927, in create_environment


site_packages=site_packages, clear=clear, symlink=symlink))


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 1112, in install_python


mkdir(lib_dir)


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 324, in mkdir


os.makedirs(path)


File "/usr/lib/python3.5/os.py", line 231, in makedirs


makedirs(head, mode, exist_ok)


File "/usr/lib/python3.5/os.py", line 231, in makedirs


makedirs(head, mode, exist_ok)


File "/usr/lib/python3.5/os.py", line 241, in makedirs


mkdir(name, mode)


PermissionError: [Errno 13] Permission denied: '/home/pi/domoticz/plugins/Chuangmi/.env'


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo apt-get install python3 python3-dev python3-pip git


Чтение списков пакетов… Готово


Построение дерева зависимостей


Чтение информации о состоянии… Готово


Уже установлен пакет git самой новой версии (1:2.11.0-3+deb9u4).


Уже установлен пакет python3 самой новой версии (3.5.3-1).


Уже установлен пакет python3-dev самой новой версии (3.5.3-1).


Уже установлен пакет python3-pip самой новой версии (9.0.1-2+rpt2).


обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 162 пакетов не обновлено.


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo apt-get install libffi-dev libssl-dev


Чтение списков пакетов… Готово


Построение дерева зависимостей


Чтение информации о состоянии… Готово


Уже установлен пакет libffi-dev самой новой версии (3.2.1-6).


Уже установлен пакет libssl-dev самой новой версии (1.1.0j-1~deb9u1).


обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 162 пакетов не обновлено.


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo pip3 install -U pip setuptools


Collecting pip


Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl">https://files.pythonhosted.org... (1.4MB)


100% |████████████████████████████████| 1.4MB 155kB/s


Collecting setuptools


Downloading https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl">https://files.pythonhosted.org... (575kB)


100% |████████████████████████████████| 583kB 214kB/s


Installing collected packages: pip, setuptools


Found existing installation: pip 9.0.1


Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr


Found existing installation: setuptools 39.2.0


Uninstalling setuptools-39.2.0:


Not removing or modifying (outside of prefix):


/usr/bin/easy_install


Successfully uninstalled setuptools-39.2.0


Successfully installed pip-19.1.1 setuptools-41.0.1


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo pip3 install -U virtualenv


Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple">https://www.piwheels.org/simpl...


Collecting virtualenv


Downloading https://files.pythonhosted.org/packages/ca/ee/8375c01412abe6ff462ec80970e6bb1c4308724d4366d7519627c98691ab/virtualenv-16.6.0-py2.py3-none-any.whl">https://files.pythonhosted.org... (2.0MB)


|████████████████████████████████| 2.0MB 301kB/s


Installing collected packages: virtualenv


Found existing installation: virtualenv 16.0.0


Uninstalling virtualenv-16.0.0:


Successfully uninstalled virtualenv-16.0.0


Successfully installed virtualenv-16.6.0


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ virtualenv -p python3 .env


Already using interpreter /usr/bin/python3


Using base prefix '/usr'


Traceback (most recent call last):


File "/usr/local/bin/virtualenv", line 10, in


sys.exit(main())


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 831, in main


symlink=options.symlink,


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 1106, in create_environment


install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages=site_packages, clear=clear, symlink=symlink)


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 1375, in install_python


mkdir(lib_dir)


File "/usr/local/lib/python3.5/dist-packages/virtualenv.py", line 391, in mkdir


os.makedirs(at_path)


File "/usr/lib/python3.5/os.py", line 231, in makedirs


makedirs(head, mode, exist_ok)


File "/usr/lib/python3.5/os.py", line 231, in makedirs


makedirs(head, mode, exist_ok)


File "/usr/lib/python3.5/os.py", line 241, in makedirs


mkdir(name, mode)


PermissionError: [Errno 13] Permission denied: '/home/pi/domoticz/plugins/Chuangmi/.env'


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo virtualenv -p python3 .env


Already using interpreter /usr/bin/python3


Using base prefix '/usr'


New python executable in /home/pi/domoticz/plugins/Chuangmi/.env/bin/python3


Also creating executable in /home/pi/domoticz/plugins/Chuangmi/.env/bin/python


Installing setuptools, pip, wheel...


done.


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo source .env/bin/activate


sudo: source: command not found


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ source .env/bin/activate


(.env) pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo pip3 install python-miio


Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple">https://www.piwheels.org/simpl...


Requirement already satisfied: python-miio in /usr/local/lib/python3.5/dist-packages (0.4.0)


Requirement already satisfied: pretty-cron in /usr/local/lib/python3.5/dist-packages (from python-miio) (1.0.2)


Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from python-miio) (1.7.1)


Requirement already satisfied: pytz in /usr/local/lib/python3.5/dist-packages (from python-miio) (2018.4)


Requirement already satisfied: click in /usr/lib/python3/dist-packages (from python-miio) (6.6)


Requirement already satisfied: zeroconf in /usr/local/lib/python3.5/dist-packages (from python-miio) (0.20.0)


Requirement already satisfied: android-backup in /usr/local/lib/python3.5/dist-packages (from python-miio) (0.2.0)


Requirement already satisfied: appdirs in /usr/local/lib/python3.5/dist-packages (from python-miio) (1.4.3)


Requirement already satisfied: construct==2.9.41 in /usr/local/lib/python3.5/dist-packages (from python-miio) (2.9.41)


Requirement already satisfied: tqdm in /usr/local/lib/python3.5/dist-packages (from python-miio) (4.23.4)


Requirement already satisfied: attrs in /usr/local/lib/python3.5/dist-packages (from python-miio) (18.1.0)


Requirement already satisfied: netifaces!=0.10.5 in /usr/local/lib/python3.5/dist-packages (from zeroconf->python-miio) (0.10.7)


(.env) pi@raspberrypi:~/domoticz/plugins/Chuangmi $ deactivate


pi@raspberrypi:~/domoticz/plugins/Chuangmi $ sudo service domoticz restart

Судя по всему, какие-то проблемы с виртуальной средой python, связанные с некорректной установкой самого python либо изменений, внесенных после. Рекомендую бэкапнуть базу данных Domoticz и переустановить все начисто. 

Версия домотикз 4.10217. 


Вернуться назад

Устройства


Вернуться назад