Статья

Умная розетка Mijia Smart Wi-Fi и Philips Smart Bulb добавляем в Domoticz

Оглавление:

Domoticz, установкаDomoticz, настройки после установки. Добавление первого датчика.
Domoticz добавление шлюза XiaomiDomoticz  полуумное управление Livolo, BroadlinkРадио в Domoticz, виртуальные переключатели Bluetooth в Domoticz, Xiaomi Flower Care, Mijia Sensor

Управление с помощью библиотеки Php-miio, Wi-Fi устройств от производителей Xiaomi и Philips

Список устройств которые есть у меня, и которые мы добавим в систему умного дома:

Xiaomi Philips Smart LED Ball Lamp, лампочка цоколь E27 (Raspberry PI)
Xiaomi Mi Smart Power Plug, Wi-fi розетка (токен отдает)

Так как эти устройства работают через приложение Mi Home, а наша задача собрать в нашей единой системе управления Domoticz, начнем…

Подключитесь по SSH с помощью программы Putty к вашей Raspberry PI

  • Обновляем OS

sudo apt update sudo apt upgrade

  • Устанавливаем PHP 7.0

sudo apt install php7.0

  • Загружаем библиотеку php-miio и переходим в папку

sudo git clone https://github.com/skysilver-lab/php-miio.git php-miio cd php-miio

  • Запускаем сканирование устройств

php miio-cli.php --discover all

Что такое Токен?

Это уникальная 32-ух значная последовательность символов, используемая для формирования ключа шифрования. Наличие и знание токена — это обязательное условие успешного управления miIO - устройством.

Внимание!!!

Если устройство не транслирует свой токен, то значение будет заполнено нулями 0 или буквами F в таком случае выяснять токен придется другими способами

  • Для проверки вводим команду, поменяйте на свой IP-адрес устройства и токен. Включаем и выключаем наше устройство

php miio-cli.php --ip 192.168.1.98 --token 5005a48281fea58325ca972c3ab02d10 --sendcmd '{"id":1,"method":"set_power","params":["on"]}'

php miio-cli.php --ip 192.168.1.98 --token 5005a48281fea58325ca972c3ab02d10 --sendcmd '{"id":1,"method":"set_power","params":["off"]}'

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

  1. Настройка-Оборудование
  2. В разделе Тип: выбираете — Dummy (Does nothing, use for only virtual switch) указываете имя

  3. Нажимайте добавить, появится новая запись

  4. Выберите создать виртуальные датчики

  5. Указываете имя, Тип датчика: Переключатель - OK. Создаем столько переключателей сколько нужно.

  6. Переходим в: Настройка - Устройства в открывшемся окне находим созданные вами переключатели

  7. Переходим в меню Переключатели. В открывшемся окне видим ваши созданные переключатели. Здесь вы сможете управлять, редактировать, менять иконки и смотреть графики

  8. Выбираем: Настройка-Дополнительно - События

  9. В открывшемся окне создаем скрипт, который будет управлять вашим устройством. Для каждого переключателя нужен будет свой, отдельный скрипт! Справа выбираем dzVents - указываем имя и активируем его, event active. Вставляем код ниже указав имя вашего датчика, IP-адрес и Токен вашего устройства. Нажимаете сохранить (Save)

return { on = { timer = {'every minute'}, devices = {'Розетка USB'} -- имя девайса }, logging = { level = domoticz.LOG_ERROR }, execute = function(dz, item) local Device = dz.devices('Розетка USB') -- имя девайса local Path = "/home/pi/php-miio/" -- путь, куда установлен php-miio local IP = '192.168.1.17' -- ip девайса local Token = '0b24d73a40a5576131cd1a403e670000' -- токен вашего девайса function SendCommand() cmd = "cd "..Path.." && php miio-cli.php --ip "..IP.." --token "..Token.." --sendcmd '{\"id\":1,\"method\":\""..method.."\",\"params\":"..param.."}'" end if (item.isDevice) then method = "set_power" if (item.state == 'On') then param = "[\"on\"]" else param = "[\"off\"]" end SendCommand() dz.utils.osExecute('('..cmd..' > /dev/null)&') end if (item.isTimer) then method = "get_prop" param = "[\"power\"]" SendCommand() local h = io.popen(cmd) local r = h:read("*a") h:close() if (string.find(r, '"off"')) then if (Device.state ~= 'Off') then Device.update(0).silent() end else if (Device.state == 'Off') then Device.update(1).silent() end end end end }

Инструкция в картинках:


Отличная статья=) 

Надо же, моей либой до сих пор пользуются, а ее на коленке писал, как прототип. )))

Спасибо вам! ну а почему нет? мне правда majordomo не зашел совсем ;(

Здравствуйте! С наступившими праздниками всех!

Подскажите, пожалуйста, как в данном скрипте указать несколько устройств? К примеру Wi-Fi розетка через него прекрасно работает, но я хочу добавить в этот же скрипт увлажнитель Smartmi Air Humidifier 2. Спасибо заранее!

Как минимум пробовать по аналогии, но у меня нет увлажнителя для проверки

Да мне хотя бы просто понять, можно ли несколько устройств сразу в этом скрипте прописать. Я в программировании не силён. Можете просто показать скрипт на примере тех же двух розеток? Спасибо!

создаете еще дополнительный скрипт и меняете 

1.имя девайса

2. Ip-адрес

3. Токен

Ок, значит для каждого девайса свой скрипт. Не сочтите за наглость, но тогда еще один вопрос: есть ли скелет скрипта для селекторных переключателей?

тут зависит с какими библиотеками он работает/взаимодействует. Если работает с php miio новый девайс просто со своими именем, ip и токеном

Именно про PHP-miio я и говорю. Увлажнитель работает по этому протоколу, и с выложенным здесь скриптом он вполне взаимодействует, но соответственно, только на уровне вкд/выкл, а у самого увлажнителя ещё есть режимы работы low/medium/high, и еще и датчик температуры и влажности, .

Выглядит примерно так:

php miio-cli.php --ip <ip> --token <token> --sendcmd '{"id":1,"method":"get_prop","params":["power","mode","temp","humidity"]}' 

Устройство 192.168.0.50 доступно и ответило:
{"result":["on","medium",257,56],"id":1}

Поэтому, т.к. я не силён в программировании, мне необходимо переделать скрипт из данного поста под селекторный переключатель с 4 положениями Off/Low/Medium/High, а в идеале еще и обновление виртуальных датчиков температуры и влажности из этого же скрипта настроить.

Куда копать скажу:


method = "set_power" меняете на 
"set_mode"
в param = "[\"low\"]" в зависимости от того который нужен
param = "[\"mode\"]"
как получать данные не подскажу. Был бы девайс заморочился этими вопросами, а виртуально сложно)

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

Устройства


Philips

Zhirui Philips Smart LED (E27)

(4 отзыва)

Xiaomi

Mi Smart Power Plug

(5 отзывов)

Raspberry Pi

Raspberry Pi 3 Model B+

(22 отзыва)

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