Перейти к содержанию

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 в проекте нет.

Установка

  1. Склонируйте репозиторий на колонку или распакуйте архив релиза в /tmp/midipult:

    git clone https://github.com/RoBiN19666/midipult.git /tmp/midipult
    
  2. Запустите установщик:

    cd /tmp/midipult
    sh deploy/install.sh
    

    Если на колонке нет git, скачайте zip или tar.gz со страницы релизов и распакуйте в /tmp/midipult.

  3. Откройте панель по адресу http://<IP-колонки>:8055/.

Установщик проверяет python3, lighttpd, CGI-модули, curl и python3-websocket-client, создаёт автозапуск и перезапускает свои службы. Проверка без установки пакетов:

MYPULT_NO_PACKAGES=1 sh deploy/install.sh

Использование

Панель открывается в браузере телефона или компьютера в той же локальной сети. Разделы: «Дисплей», «Звук», «Нейросеть», «Сеть», «Система», «Сценарии»; 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.