воскресенье, 2 февраля 2020 г.

Domoticz. Удаленное включение и выключение компьютера

Соединим в единую систему удаленное выполнение команд через ssh и переключатели в Domoticz. Главная задача состоит в том, чтобы при помощи переключателя Domoticz выключать и выключать компьютер.
Дано. Сервер Domoticz на операционной системе Raspbian. Медиацентр Kodi на базе LibreELEC 9.2.0 c IP-адресом 10.0.0.10
1. Настроим подключение через ssh без пароля (через ключи) с сервера на медиацентр.

Подключаемся к консоли сервера, создаем ключи
ssh-keygen
указываем путь к файлу /hom/pi/.ssh/id_rsa1
парольную фразу оставил пустой, дважды
Копируем ключ на медиацентр
ssh-copy-id -i /home/pi/.ssh/id_rsa1 root@10.0.0.10
Стандартный логин\пароль для входа в LibreELEC root\libreelec
Когда ключи скопированы, подключаемся
ssh root@10.0.0.10 -i /home/pi/.ssh/id_rsa2
2. Пробуем пробуждать медиацентр через WOL программой etherwake
sudo apt install etherwake
sudo etherwake d0:27:88:a1:b2:c3
Чтобы не вводить пароль sudo, добавим выполнение этой команды без пароля
sudo nano /etc/sudousers
Вставим строку
pi      ALL=NOPASSWD: /usr/sbin/etherwake
до
root    ALL=(ALL:ALL) ALL
Теперь можно вводить sudo etherwake d0:27:88:a1:b2:c3 без подтверждения пароля
3. Чтобы выключить компьютер, отправим команду "init 0" с сервера на медиацентр через ssh
ssh root@10.0.0.10 -i /home/pi/.ssh/id_rsa2 'init 0'
4. Ок. Создадим на каждую команду bash-скрипт и создадим виртуальный переключатель Kodi Power в Domoticz. На сервере
cd domoticz/scripts/
nano kodi-poweroff.sh
#!/bin/bash
ssh root@10.0.0.10 -i /home/pi/.ssh/id_rsa2 -o StrictHostKeyChecking=no 'init 0'
nano kodi-poweron.sh
#!/bin/bash
sudo etherwake d0:27:88:b1:c4:a4
Делаем скрипты исполняемыми
chmod +x kodi-*
5. Переходим в Domoticz. Настройка > Оборудование. Добавляем простой датчик kodi-power-control с типом Dummy
Затем добавляем виртуальный сенсор Kodi Power Controlс типом Переключатель
Переходим в Переключатели, жмём Редактировать на новом переключателе и прописываем путь к скриптам на включение и выключение переключателя
Готово! Проверяем переключатель. 
Внесём изменения в dZvents-скрипт управления телевизором. Чтобы состояние нового переключателя менялось, в случае, если включение\выключение медиацентра выполнено другим способом (вручную с телевизора, или по таймеру)
#Для изменения статуса на ВЫКЛ
local setoff = 'curl "http://localhost:505/json.htm?type=command&param=udevice&idx=110&nvalue=0"'
#Для изменения статуса на ВКЛ
local seton = 'curl "http://localhost:505/json.htm?type=command&param=udevice&idx=110&nvalue=1"'

Комментариев нет :

Отправить комментарий