Оглавление:
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 и создаем виртуальный переключатель:
- Настройка-Оборудование
В разделе Тип: выбираете — Dummy (Does nothing, use for only virtual switch) указываете имя
Нажимайте добавить, появится новая запись
Выберите создать виртуальные датчики
Указываете имя, Тип датчика: Переключатель - OK. Создаем столько переключателей сколько нужно.
Переходим в: Настройка - Устройства в открывшемся окне находим созданные вами переключатели
Переходим в меню Переключатели. В открывшемся окне видим ваши созданные переключатели. Здесь вы сможете управлять, редактировать, менять иконки и смотреть графики
Выбираем: Настройка-Дополнительно - События
В открывшемся окне создаем скрипт, который будет управлять вашим устройством. Для каждого переключателя нужен будет свой, отдельный скрипт! Справа выбираем 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, а в идеале еще и обновление виртуальных датчиков температуры и влажности из этого же скрипта настроить.
Куда копать скажу: