Мини-инструменты для управления умными лампами Яндекса (Умный дом / Yandex Smart Home) с компьютера — из консоли или по глобальному сочетанию клавиш в Windows, без официального OAuth-приложения.
Работает через неофициальную библиотеку yandex_quasar, которая логинится по куки браузера вместо регистрации отдельного приложения на платформе умного дома Яндекса.
⚠️ Это неофициальное решение, использующее приватный протокол Квазара (iot.quasar.yandex.ru). Яндекс может изменить его в любой момент без предупреждения — тогда скрипты придётся чинить заново.
- Посмотреть список всех устройств умного дома и их ID
- Включить / выключить / переключить (toggle) конкретную лампу по имени или ID
- Управлять сразу несколькими устройствами за один запуск, параллельно
- Фоновый демон (
daemon.py), который логинится один раз и держит локальный HTTP-сервер — хоткеи стучатся в него вместо повторного запуска Python на каждое нажатие (это резко снижает задержку) - Готовые AutoHotkey-скрипты для глобальных хоткеев в Windows
- Python 3.10+
- Windows (для хоткеев; сам Python-скрипт кроссплатформенный)
- AutoHotkey v2 — только для глобальных хоткеев
- Аккаунт Яндекса с подключёнными устройствами умного дома
python -m venv .venv
.venv\Scripts\activate
pip install yandex_quasarБиблиотека логинится через куки браузера вместо OAuth. Passport Яндекса теперь называется Yandex ID, но домен для куки в коде библиотеки остался старый — это учтено ниже автоматической правкой в скриптах.
- Установи в браузер расширение Cookie-Editor (или аналог, экспортирующий куки в JSON с полем
domain). - Открой
https://passport.yandex.ru(он редиректит наid.yandex.ru) и залогинься. - Открой Cookie-Editor на этой вкладке → Export → Export as JSON.
- Создай в корне проекта файл
my_cookies.txtи вставь туда экспортированный JSON.
my_cookies.txt содержит рабочие сессионные куки — по сути ключи от твоего аккаунта. Никогда не коммить этот файл и не публикуй его содержимое. В репозитории он уже добавлен в .gitignore.
Если куки скопированы верно, но при запуске всё равно ошибка InvalidCookiesError / StopIteration — скрипты автоматически подставляют недостающий домен passport.yandex.ru в память при каждом запуске (сам файл не трогают), так что обычно достаточно просто переэкспортировать куки заново при истечении сессии.
| Файл | Назначение |
|---|---|
toggle_light.py |
Основной консольный скрипт: list, on, off, toggle |
check_cookies.py |
Диагностика файла my_cookies.txt — покажет, какие домены куки в нём есть |
daemon.py |
Фоновый процесс: логинится один раз, слушает http://127.0.0.1:8765/{on,off,toggle} |
run_daemon_min.bat |
Запуск демона в свёрнутом окне консоли |
hotkeys_daemon.ahk |
AutoHotkey-хоткеи, дёргающие уже запущенный демон (рекомендуется) |
hotkeys_fast.ahk |
AutoHotkey-хоткеи без демона — запускают toggle_light.py напрямую на каждое нажатие |
run_toggle.bat |
Обёртка для запуска toggle_light.py с логированием в файл (используется hotkeys_fast.ahk) |
python toggle_light.py list
python toggle_light.py on "Лампочка"
python toggle_light.py off "Лампочка"
python toggle_light.py toggle "Лампочка"
# сразу несколько устройств по ID, параллельно, за один запуск
python toggle_light.py toggle "id1" "id2"Если несколько устройств совпадают по имени, скрипт попросит уточнить — используй точный ID из list.
Постоянный запуск Python на каждое нажатие клавиш даёт заметную задержку (старт интерпретатора + повторный логин в Яндексе). Демон решает это: логинится один раз и держит открытое соединение, а хоткей просто делает лёгкий HTTP-запрос на localhost.
- Пропиши свои ID устройств в
MAIN_LIGHT_IDSвнутриdaemon.py. - Запусти
run_daemon_min.bat(можно добавить в автозагрузку:Win+R→shell:startup). - Пропиши те же пути в
hotkeys_daemon.ahk, запусти его. - Хоткеи по умолчанию:
Ctrl+Alt+L— toggle,Ctrl+Alt+O— включить,Ctrl+Alt+P— выключить.
- Куки истекают — периодически придётся переэкспортировать
my_cookies.txt. - Неофициальный протокол может сломаться после обновлений на стороне Яндекса.
- Даже при мгновенной отправке команды остаётся сетевая задержка до серверов Яндекса и время реакции самой лампы (Wi-Fi) — это уже не лечится на стороне клиента.
MIT (или укажи свою).