В сегодняшней заметке я разберу, как посредством системы Home Assistant
включать свой тестовый стенд на базе Debian 10 + Proxmox 6
и конечно же выключать. Включать буду путем отправки пакета на сетевую карту который включает систему через технологию Wake on Lan
, но предварительно в BIOS
материнской платы ее нужно активировать. Думаю с этим Вы и сами справитесь почитав документацию к Вашей материнской плате.
Итак, как всегда мои любимые шаги для решения поставленной задачи.
Шаг №1:
Я использую у себя дома установленный Home Assistant
не самой последней версии, а версии 0.117.6
, но как по мне все ниже описанное будет справедливо и для более новых. Заметка по установке на Ubuntu 18.04
прилагается “Установить Home Assistant определенной версии”
Шаг №2:
Подключаюсь по SSH
к системе с Home Assistant:
ekzorchik@srv-dbionic:~$ srv-ha
Шаг №3:
Устанавливаю утилиту через которую буду подключаться к хосту указывая логин и пароль, а пока не использую вход по ключу:
ekzorchik@srv-ha:~$ sudo apt-get install -y sshpass
Шаг №4:
Даю права учетной записи homeassistant
взаимодействовать к командами системы без запроса авторизации:
ekzorchik@srv-ha:~$ sudo visudo homeassistant ALL=(ALL) NOPASSWD:ALL
Шаг №5:
Авторизуюсь под пользователем Home Assistant:
ekzorchik@srv-ha:~$ sudo -u homeassistant -H -s homeassistant@srv-ha:/home/ekzorchik$ cd /home/homeassistant/.homeassistant/
Шаг №6:
Предопределяю каталог откуда все yaml
файлы считать и применять к текущему Home Assistant:
homeassistant@srv-dbionic:~/.homeassistant$ mkdir includes homeassistant@srv-dbionic:~/.homeassistant$ nano configuration.yaml homeassistant: name: dbhome unit_system: metric time_zone: Europe/Moscow packages: !include_dir_named includes # Configure a default setup of Home Assistant (frontend, api, etc) default_config: # Text to speech tts: - platform: google_translate group: !include groups.yaml scene: !include scenes.yaml automation: !include automations.yaml sensor: !include sensors.yaml script: !include scripts.yaml switch: !include switches.yaml homeassistant@srv-ha:~/.homeassistant$ touch sensors.yaml homeassistant@srv-ha:~/.homeassistant$ touch switches.yaml
Шаг №7:
Создаю скрипт ответветственный за выключение моего хоста под связку Debian 10 + Proxmox 6:
homeassistant@srv-ha:~/.homeassistant$ nano poweroff sshpass -p Aa1234567 ssh -o "StrictHostKeyChecking no" root@172.33.33.25 -p 22 "poweroff" homeassistant@srv-ha:~/.homeassistant$ chmod +x poweroff
Шаг №8:
Создаю конфигурационный файл где описываю переключатель:
homeassistant@srv-ha:/home/ekzorchik$ cd /home/homeassistant/.homeassistant/ homeassistant@srv-dbionic:~/.homeassistant$ nano includes/network.yaml switch: - platform: wake_on_lan #Proxmox: Wake on LAN name: "Proxmox_WOL" host: 172.33.33.25 mac: E0:D5:5E:75:9B:D9 turn_off: service: shell_command.pcoff shell_command: pcoff: './home/homeassistant/.homeassistant/poweroff'
После не забываем сохранить внесенные изменения.
Шаг №9:
Перезапускаю Home Assistant:
homeassistant@srv-ha:~/.homeassistant$ sudo systemctl restart homeassistant@homeassistant.service && sudo systemctl status homeassistant@homeassistant.service | head -n5 ● homeassistant@homeassistant.service - Home Assistant Loaded: loaded (/etc/systemd/system/homeassistant@homeassistant.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-12-22 20:02:45 MSK; 39ms ago Main PID: 1501 (hass) Tasks: 1 (limit: 1126) homeassistant@srv-ha:~/.homeassistant$
ошибок нет, сервис перезапустился нормально.
Шаг №10:
Открываю браузер и обращаюсь на IP&DNS
адрес системы где установлен сервис Home Assistant
(у меня это выглядит так: http://srv-ha:8123
) и вижу добавленный “Выключатель”
Сейчас выключатель в положении “Выключено”
, и сам хост Debian 10 + Proxmox 6
тоже выключен.
Шаг №11:
Если нажать на переключатель то должен запуститься скрипт, но у меня он не отработал, т. к. сервис Home Assistant
находится в VLAN 5 (172.35.35.0/24)
, а сам хост Debian 10
в VLAN 33 (172.33.33.0/24).
Все дело в том, то использование Wake on LAN
работает в рамках одной подсети. Точнее в рамках одного broadcast
-домена. В моем случае нужно переделать скрипт, точнее добавить скрипт на роутере Mikrotik RB2011UiAS-2HnD
следующего содержания:
ekzorchik@srv-ha:~$ ssh -l ekzorchik 172.35.35.100 [ekzorchik@ekzhome] > user group add name=wol policy=ssh [ekzorchik@ekzhome] > user add name=srv-ha password=Aa1234567 group=wol [ekzorchik@ekzhome] > system script add name=wol dont-require-permissions=yes source={tool wol interface="VLAN 33" mac=E0:D5:5E:75:9B:D8} [ekzorchik@ekzhome] > quit
Шаг №12:
Изменяю действия переключателя на подключение к Mikrotik
и запуск созданного скрипта по включению хоста:
homeassistant@srv-ha:~/.homeassistant$ nano includes/network.yaml switch: - platform: command_line #Proxmox: Wake on LAN switches: wolproxmox: command_on: 'sshpass -p Aa1234567 ssh -o "StrictHostKeyChecking no" srv-ha@172.35.35.100 -p 22 "system script run wol"' command_off: sshpass -p Aa1234567 ssh -o "StrictHostKeyChecking no" root@172.33.33.25 -p 22 "poweroff" # command_state: 'ping -c 5 srv-proxmox.polygon.lan &> /dev/null && echo 0 || echo 1' # value_template: '' friendly_name: "Proxmox_WOL"
Шаг №13:
Перезапускаю Home Assistant:
homeassistant@srv-ha:~/.homeassistant$ sudo systemctl restart homeassistant@homeassistant.service && sudo systemctl status homeassistant@homeassistant.service | head -n5 ● homeassistant@homeassistant.service - Home Assistant Loaded: loaded (/etc/systemd/system/homeassistant@homeassistant.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-12-22 20:02:45 MSK; 39ms ago Main PID: 1501 (hass) Tasks: 1 (limit: 1126) homeassistant@srv-ha:~/.homeassistant$
ошибок нет, сервис перезапустился нормально.
Если нажать на иконку помеченную “ВКЛ”
, отработает команда на включение через WOL
, а если рядом “ВЫКЛ”
, отработает команда на выключение хоста.
Пусть не так элегентно, как в самом начале заметки, но все же работает. А все из-за того, что мой Home Assistant
в разных VLAN“ах
. Думаю пока все, на этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.