8.0 KiB
8.0 KiB
Alice Stations Plugin
Standalone-плагин для управления Яндекс Станциями, генерации шаблонов Loxone / wb-rules и web UI.
Содержимое репозитория
yastation.py- демон управления колонками (локальный API:127.0.0.1:9123, HTTP API::9124).alice_plugin.py- CLI и web API для списка колонок, генерации шаблонов и установки wb-rules.web/index.html- web-интерфейс.loxone/- выходные файлы шаблонов и ZIP-архивы.data/- рабочие данные (stations.json,config.json).systemd/*.service- юниты сервисов.cmd_*.sh- готовые команды для типовых действий.
Требования
Минимум для Debian/Ubuntu, Wiren Board, Raspberry Pi OS:
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
Важно:
- команды установки и запуска нужно выполнять из каталога проекта;
- если нет
python3-venv,install.shзавершится ошибкой и сервисы не установятся.
Рекомендуемая структура на контроллере
/home/shd/scripts/alice
Если репозиторий скопирован в другое место, нужно скорректировать пути в systemd/*.service.
Установка (пошагово)
- Скопировать проект:
mkdir -p /home/shd/scripts
cd /home/shd/scripts
cp -a alice_station_plugin_repo alice
- Установить зависимости Python и systemd-сервисы:
cd /home/shd/scripts/alice
chmod +x *.sh
./install.sh
- Сохранить OAuth-токен:
printf %s 'YANDEX_OAUTH_TOKEN' > /home/shd/scripts/alice/token.txt
chmod 600 /home/shd/scripts/alice/token.txt
- Включить и запустить сервисы:
sudo systemctl daemon-reload
sudo systemctl enable --now shd-alice.service shd-alice-plugin.service
Проверка после установки
Проверка сервисов:
sudo systemctl status shd-alice.service --no-pager
sudo systemctl status shd-alice-plugin.service --no-pager
Проверка web API:
curl -s http://127.0.0.1:9140/api/status
Web UI:
http://<controller-ip>:9140/
Обязательные команды (CLI)
| Команда | Что делает | Входы | Выходы |
|---|---|---|---|
./cmd_1_get_columns.sh |
Обновляет список колонок (stations-refresh) |
OAuth-токен: token.txt или YANDEX_TOKEN |
data/stations.json, JSON в stdout (ok, stations, cloud_total, local_total) |
./cmd_2_get_loxone_templates.sh |
Генерирует шаблоны Loxone (templates-loxone) |
data/stations.json (должен быть заполнен), ALICE_CONTROLLER_HOST (опц.) |
Файлы в loxone/, архив loxone/loxone_templates.zip, JSON в stdout |
./cmd_3_get_wb_rules_templates.sh |
Генерирует шаблоны wb-rules (templates-wb-rules) |
data/stations.json (должен быть заполнен), ALICE_CONTROLLER_HOST (опц.) |
Файлы в loxone/, архив loxone/wb_rules_templates.zip, JSON в stdout |
Примеры запуска:
cd /home/shd/scripts/alice
./cmd_1_get_columns.sh
./cmd_2_get_loxone_templates.sh
./cmd_3_get_wb_rules_templates.sh
Команды yastation.py (daemon/client)
Примеры:
# локальные станции (mDNS)
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py --timeout 3 list
# запуск daemon
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py --token "$YANDEX_TOKEN" serve --host 127.0.0.1 --port 9123 --http-host 0.0.0.0 --http-port 9124
# tts
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py client --host 127.0.0.1 --port 9123 --station "M00..." tts --text "Проверка"
# command
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py client --host 127.0.0.1 --port 9123 --station "M00..." command --text "включи музыку"
# player pause
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py client --host 127.0.0.1 --port 9123 --station "M00..." player --cmd pause
# volume
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py client --host 127.0.0.1 --port 9123 --station "M00..." volume --level 20
# raw
/home/shd/scripts/alice/.venv/bin/python3 /home/shd/scripts/alice/yastation.py client --host 127.0.0.1 --port 9123 --station "M00..." raw --payload '{"command":"setVolume","volume":0.2}'
Для станции в шаблоне есть:
VirtualOutкоманды:TTS,Command,Play,Pause,Stop,Next,Prev,Volume,Raw.VirtualInстатусы:Daemon OK,WS Running,Playing,Volume.
Работа через web UI
На странице можно:
- сохранить OAuth-токен;
- найти/обновить список колонок;
- скачать ZIP для Loxone;
- скачать ZIP для wb-rules;
- на Wiren Board доступны кнопки установки wb-rules в
/etc/wb-rules.
Установка wb-rules из CLI
Установить все станции:
cd /home/shd/scripts/alice
.venv/bin/python3 alice_plugin.py wb-install
Установить только одну станцию:
cd /home/shd/scripts/alice
.venv/bin/python3 alice_plugin.py wb-install --station-id <station_id>
Сервисы и управление
- Демон Alice:
shd-alice.service - Web UI:
shd-alice-plugin.service
Перезапуск:
sudo systemctl restart shd-alice.service shd-alice-plugin.service
Остановка:
sudo systemctl stop shd-alice.service shd-alice-plugin.service
Типовые ошибки и решения
Unit shd-alice.service not found
Причина: install.sh не завершился успешно, поэтому юниты не были скопированы в /etc/systemd/system.
Что делать:
- Исправить ошибку установки (часто это отсутствие
python3-venv). - Снова запустить:
cd /home/shd/scripts/alice
./install.sh
sudo systemctl daemon-reload
sudo systemctl enable --now shd-alice.service shd-alice-plugin.service
The virtual environment was not created successfully because ensurepip is not available
Причина: отсутствует пакет python3-venv.
Решение:
sudo apt update
sudo apt install -y python3-venv python3-pip
cd /home/shd/scripts/alice
./install.sh
./install.sh: No such file or directory
Причина: команда выполняется не из каталога проекта.
Решение:
cd /home/shd/scripts/alice
./install.sh
Токен не подхватывается
Проверь, что файл существует именно по пути:
/home/shd/scripts/alice/token.txt
А не в /home/shd/scripts/token.txt.
Переменные окружения (опционально)
YANDEX_TOKEN- OAuth токен (если не используетсяtoken.txt).ALICE_CONTROLLER_HOST- host/IP, который вставляется в шаблоны.ALICE_PLUGIN_WEB_PORT- порт web UI (по умолчанию9140).
Удаление с контроллера
sudo systemctl stop shd-alice.service shd-alice-plugin.service
sudo systemctl disable shd-alice.service shd-alice-plugin.service
sudo rm -f /etc/systemd/system/shd-alice.service /etc/systemd/system/shd-alice-plugin.service
sudo systemctl daemon-reload
sudo rm -rf /home/shd/scripts/alice