В сегодняшней заметке я разберу, как посредством системы 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) и вижу добавленный “Выключатель”

Добавленный выключатель для WOL

Сейчас выключатель в положении “Выключено”, и сам хост 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, а если рядом “ВЫКЛ”, отработает команда на выключение хоста.

Включение и Выключение хоста Debian 10 + Proxmox 6

Пусть не так элегентно, как в самом начале заметки, но все же работает. А все из-за того, что мой Home Assistant в разных VLAN“ах. Думаю пока все, на этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.