Включение/отключение Windows ПК через Home Assistant (Wake-on-LAN + RPC Shutdown)

Создаём единый переключатель в Home Assistant для управления Windows-компьютером. Включение через стандартный Wake-on-LAN, выключение через аддон RPC Shutdown. Инструкция по правке реестра Windows для удалённого выключения.

Понадобилось добавить в Home Assistant возможность удалённого включения и выключения домашнего PC (Windows) для удалённого доступа или просто чтобы выключать компьютер ребёнка голосом через Алису.

Решение:

  • Включение: штатный wake_on_lan.
  • Выключение: аддон RPC Shutdown.

1. Настройка Switch в конфигурации

Создаём тумблер, который объединяет обе функции. Пропишите этот код в /config/configuration.yaml:

switch:
  - platform: wake_on_lan
    mac: "B4:2E:99:F4:23:86"       # MAC-адрес вашего ПК
    name: "Home_PC"
    host: "192.168.88.10"          # IP-адрес ПК
    broadcast_address: "192.168.88.127"  # Широковещательный адрес (см. ниже)
    turn_off:
      service: hassio.addon_stdin
      data:
        addon: core_rpc_shutdown
        input: Home_PC

Про broadcast_address

Если ваша сеть логически разделена (VLAN или нестандартная маска), укажите правильный широковещательный адрес.
Для обычной сети /24 (маска 255.255.255.0) это чаще всего 192.168.xx.255. В примере автора используется 192.168.88.127 (специфичная маска /25).


2. Настройка выключения (RPC Shutdown)

Для выключения Windows-машины используем официальный аддон RPC Shutdown.

Конфигурация аддона

В настройках самого аддона пропишите список компьютеров:

- address: 192.168.88.10
  alias: Home_PC
  credentials: user%password
  delay: 0
  message: >-
    Home Assistant is shutting down this PC. This cannot be canceled. Please
    save your work!

Важно:

  • credentials: формат пользователь%пароль.
  • Работает с Microsoft-аккаунтами (логин — email целиком).
  • Внимание: Пароль хранится в открытом виде! Рекомендуется создать отдельную локальную учётку Windows специально для выключения.

3. Настройка Windows (Устранение ошибок)

При попытке выключения часто возникают ошибки доступа.

Ошибка 1: Could not initialise pipe winreg... NT_STATUS_OBJECT_NAME_NOT_FOUND

Решение:
Убедитесь, что служба "Удалённый реестр" (Remote Registry) запущена и стоит в автозапуске.

Ошибка 2: Shutdown... failed result was: WERR_CALL_NOT_IMPLEMENTED

Решение:
Нужно разрешить удалённый доступ для локальных (или админских) учёток через реестр.

  1. Откройте реестр (Win+R -> regedit).
  2. Перейдите в ветку:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. Создайте параметр DWORD (32 бита) с именем:
    LocalAccountTokenFilterPolicy
  4. Установите значение: 1.
  5. Перезагрузите ПК.

Итог

Теперь этот выключатель можно прокинуть в Apple HomeKit или Яндекс Алису.
"Алиса, выключи компьютер" — отлично работает, когда нужно ограничить игровое время детей.

Read more

Git: работа с ветками, конфликтами и Pull Request

Git: работа с ветками, конфликтами и Pull Request

Введение Git позволяет работать с ветками, безопасно вносить изменения и объединять их через Pull Request. В этой инструкции — базовые сценарии для повседневной работы. Работа с ветками Создание ветки git checkout -b feature/task-name Создаёт новую ветку и сразу переключает на неё. Переключение между ветками git checkout main git checkout feature/

By Evgeny Shmelev
Инструкция по работе с Git (базовая памятка)

Инструкция по работе с Git (базовая памятка)

Введение Git — система контроля версий для отслеживания изменений в файлах и совместной работы. Ниже — краткая практическая инструкция для повседневного использования. Основные команды Проверка состояния git status Показывает: * есть ли изменения * синхронизацию с сервером * новые файлы Получение изменений git pull Забирает изменения и объединяет их с текущей веткой. Обновление через rebase

By Evgeny Shmelev
Git показывает странные символы (\320\277...), файл удалён и появился заново — как исправить

Git показывает странные символы (\320\277...), файл удалён и появился заново — как исправить

Проблема При выполнении: git status можно увидеть: deleted: "\320\277\320\276..." untracked: "\320\277\320\276....txt" modified: .DS_Store При этом: * имя файла отображается непонятными символами * Git показывает удаление одного файла и появление другого * появляется файл .DS_Store Причина 1. Файл был переименован или

By Evgeny Shmelev