MidiPult — веб-панель для Станции Миди¶
Локальная панель на самой колонке: дисплей, кольцо, плеер, радио, нейросеть,
VPN и сценарии. Интерфейс работает через lighttpd и Python CGI на порту
8055, без облака и внешних CDN.
Проверено на: Станция Миди (Cucumber), прошивка
0.369.1.46.4778262955.20261013 (quasar 3.21, Buildroot 2023.11.1, ядро
5.4.180), октябрь 2026.
Что понадобится¶
- root и SSH на колонке;
- Entware в
/opt; - запущенная Luna на порту
8099; - около 20 МБ свободного места.
Корень и Entware проект не устанавливает: установщик проверяет окружение и
ставит только недостающие пакеты Entware через opkg. Скриптов получения
root в проекте нет.
Установка¶
-
Склонируйте репозиторий на колонку или распакуйте архив релиза в
/tmp/midipult: -
Запустите установщик:
Если на колонке нет
git, скачайте zip или tar.gz со страницы релизов и распакуйте в/tmp/midipult. -
Откройте панель по адресу
http://<IP-колонки>:8055/.
Установщик проверяет python3, lighttpd, CGI-модули, curl и
python3-websocket-client, создаёт автозапуск и перезапускает свои службы.
Проверка без установки пакетов:
Использование¶
Панель открывается в браузере телефона или компьютера в той же локальной сети. Разделы: «Дисплей», «Звук», «Нейросеть», «Сеть», «Система», «Сценарии»; PIN включается в «Системе».
- Дисплей и кольцо: синхронизация времени, семисегментный редактор, бегущая строка, цвет кольца и яркость.
- Плеер и радио: управление воспроизведением, 29 станций и свои каналы.
- Голосовой пульт: команды «Алиса, включи VPN», «Алиса, включи
нейросеть», радио и сценарии. Демон использует Luna и IPC
9875. - Нейросеть: OpenAI, OpenRouter, DeepSeek и свои OpenAI-совместимые серверы; профили, чаты и озвучка ответов.
- Сеть: VPN sing-box, Wi-Fi, Bluetooth и статус Zigbee.
- Сценарии: действия по фразе, расписание, условия и шаблоны.
- Обслуживание: логи, проверка сети, бэкап, перезагрузка и выключение.
Скриншоты и описание возможностей — в README проекта.
Ограничения¶
- Проверено только на Станции Миди с прошивкой
0.369.1.46.4778262955.20261013; на других сборках пути к Luna и sysfs могут отличаться. - Панель работает по HTTP в локальной сети. Наружу порт
8055выставлять нельзя. - PIN опционален и проверяется на сервере, но HTTPS не реализован.
- Zigbee: панель показывает статус и передаёт команды через Алису; полного локального управления нет.
- Алиса может ответить вместе с пультом. Luna не даёт событие до старта облачного ответа, поэтому «стоп»/mute опаздывает. Обходы: текстовое поле, кнопки сценариев, физическая кнопка. Подробнее — в разборе ограничений.
- PWA-режим ограничен ярлыком на главный экран: для установки как приложения нужны HTTPS и service worker.
- Ключи LLM, VPN и чаты хранятся в
/data/mypultс правами600.
Откат¶
Установщик кладёт скрипт удаления в /data/mypult/uninstall.sh.
# показать план, ничего не меняя
sh /data/mypult/uninstall.sh --dry-run
# удалить панель и автозапуск, настройки оставить
sh /data/mypult/uninstall.sh
# удалить и /data/mypult с ключами и сценариями
sh /data/mypult/uninstall.sh --purge
Перед удалением скрипт делает бэкап в /data/mypult-uninstall-<дата>,
останавливает только процессы пульта и удаляет /data/myweb, init-скрипты
и конфиг lighttpd. Luna, YAM и Entware не затрагиваются. Перезагрузка не
требуется.
Как это работает¶
lighttpd отдаёт index.html и CGI на Python. CGI обращаются к Luna API,
Glagol и IPC 9875; отдельный демон на 127.0.0.1:8057 кэширует состояние,
а голосовой демон слушает Luna и выполняет команды. Конфиги и состояние
лежат в /data/mypult, веб-файлы — в /data/myweb.