Режим стены¶
/wall показывает собственное табло консоли на весь экран для монитора, который
остаётся включённым в комнате. Оно обновляется само и не даёт экрану погаснуть.
Сверху вниз:
- вердикт в нескольких словах («All good», «3 problems») с датой и часами и временем последнего обновления;
- пять показателей обзора: работающие мониторы, доступность за 30 дней, время ответа p95, открытые оповещения и среднее время устранения;
- река состояния, главная картина табло: полоса на монитор, худшие сверху;
- открытые оповещения, самые серьёзные первыми;
- кто дежурит сейчас, с расписанием и концом смены.
Без виджетов: чёрный фон, шрифт консоли, состояния записаны рядом с фигурой и никогда не только цветом. Музыка, если она настроена, занимает небольшую панель внизу правой колонки.
Открытие и выход¶
Откройте его значком Wall mode внизу левого меню, через палитру команд («Wall mode») или вводом URL. Esc или Exit возвращает в консоль. Учётная запись, ограниченная некоторыми командами или клиентами, не получает режим стены, поскольку он показывает весь парк.
Фон¶
Стена использует тёмный вид консоли. Кнопка Фон (справа вверху, рядом с
Exit) может нарисовать один из ночных городов
страниц статуса за вердиктом и часами: Париж, Нью-Йорк,
Токио или Дубай, либо Авто — ближайший к часовому поясу браузера. По
умолчанию он выключен и запоминается для каждого браузера; ?city=paris (или
newyork, tokyo, dubai, none) в ссылке выбирает его только для этого
экрана. Небо следует за панелью: звёзды, когда всё хорошо, облака при
замечании, гроза при предупреждении. На телефоне или в скрытой вкладке город
неподвижен. Сохранённый или указанный в ссылке zermatt теперь ведёт на
Дубай.
Музыка на стене¶
Стена также может играть музыку и показывать, что звучит: вы запускаете плейлист с телефона, слышите его через телевизор и видите с другого конца комнаты. Музыка занимает небольшую панель внизу правой колонки, под часами и дежурством: она никогда не отнимает место у вердикта и проблем и исчезает, когда ничего не играет или ничего не настроено. Панель показывает обложку, название, исполнителя, устройство воспроизведения и тонкую полосу прогресса; если подключённая учётная запись это разрешает, кнопка воспроизведение / пауза ставит на паузу или возобновляет воспроизведение учётной записи, где бы оно ни шло (это может любой вошедший сеанс, включая учётные записи читателей, как и Играть здесь). Плеер общей ссылки и сообщения динамика сворачиваются в маленькую «таблетку» (экран это запоминает). Кнопка Музыка на стене, рядом с «Фон» и «Выход», появляется, когда музыка настроена.
Есть два способа, и вы можете использовать оба.
| Spotify Connect | Ссылка, отправленная на стены | |
|---|---|---|
| Начните с | приложения Spotify на телефоне (Устройства → DumbMonit Wall) | любого экрана DumbMonit, включая телефон (Воспроизвести на стене) |
| Сервисы | Spotify | Spotify, Deezer, YouTube и YouTube Music |
| Требуется | Spotify Premium, собственное приложение Spotify Developer, телефон на той же учетной записи Spotify, стена, обслуживаемая через HTTPS (или localhost) в браузере с DRM | ничего; без входа на стене Spotify и Deezer воспроизводят 30-секундные превью |
| Показывает, что воспроизводится | да, везде, где оно воспроизводится: на стене, в приложении Spotify телевизора, на динамике cast | собственный плеер сервиса |
Подключение Spotify и отправка ссылок - это действия администратора; учетная запись зрителя на стене воспроизводит и показывает все.
Spotify Connect: стена становится динамиком¶
Цель: на телефоне откройте Spotify, коснитесь значка устройств, выберите телевизор — музыка воспроизводится на телевизоре, пока на стене показывается, что воспроизводится. Стена делает это с помощью Web Playback SDK Spotify: браузер стены регистрируется как устройство Spotify Connect. Это работает только, когда все из этого выполняются, и стена подскажет вам на собственном экране, какое из них отсутствует:
| Требуется | Почему | Когда это отсутствует |
|---|---|---|
| Spotify Premium на подключенной учетной записи | Spotify позволяет использовать браузерные динамики только учетным записям Premium | на стене показано требуется Spotify Premium; в Параметрах отображается Premium: No |
| Телефон, вошедший в одну и ту же учетную запись Spotify | браузерный динамик отображается только для учетной записи, которой принадлежит маркер — он не обнаруживается в сети, как умный динамик, и другие члены семейного плана его не видят | телефон просто не отображает стену |
HTTPS (или http://localhost на самом дисплее) |
браузеры позволяют защищенные медиа (DRM) только на безопасной странице | на стене показано открыто по простому HTTP |
| Браузер, DRM которого работает (Widevine, PlayReady или FairPlay) | Spotify потоком передает зашифрованный звук | на стене показано этот браузер не может воспроизводить Spotify |
| Одно касание или нажатие клавиши на стене за загрузку страницы | браузеры держат страницу бесшумной, пока кто-нибудь не взаимодействует с ней | на стене показано коснитесь, чтобы включить звук |
Какие браузеры работают: Chrome, Edge и Firefox на компьютере (Firefox: разрешить
Воспроизвести контент, контролируемый DRM), Safari на Mac, Chromium с Widevine на
Raspberry Pi (libwidevinecdm0). Большинство браузеров умных ТВ (Samsung Tizen, LG
webOS), киосковых браузеров и многих сборок Linux Chromium не имеют
работающего Widevine: они не могут быть динамиком Spotify, что бы ни делал DumbMonit. Для
такого ТВ см. Когда браузер телевизора не может воспроизводить Spotify.
Установка¶
- Создайте приложение Spotify. Откройте
Панель инструментов разработчика Spotify, создайте
приложение (любое имя), установите флажки Web API и Web Playback SDK, и добавьте
URI перенаправления, который показывает Параметры → Музыка на стене:
- DumbMonit обслуживается через HTTPS:
https://<ваш адрес>/api/music/spotify/callback. Spotify сразу же вернется в DumbMonit после того, как вы одобрите. - DumbMonit обслуживается через простой HTTP:
http://127.0.0.1:8888/callback. Spotify принимаетhttp://только для адреса обратной связи (и неlocalhost), начиная с 2025 года. Ничего не отвечает по этому адресу: после того как вы одобрите, ваш браузер показывает страницу ошибки, адрес которой содержит код — скопируйте его и вставьте обратно в DumbMonit.
- DumbMonit обслуживается через HTTPS:
- Подключение. В Параметры → Музыка на стене вставьте Client ID приложения (нет секрета: DumbMonit использует Authorization Code с PKCE) и выберите Подключить Spotify, затем одобрите на Spotify с учетной записью, которую использует ваш телефон.
- На телевизоре откройте
/wallDumbMonit через HTTPS, вошли (учетной записи зрителя достаточно), и коснитесь экрана или нажмите OK на пульте один раз: любой жест разблокирует звук. Браузер, запущенный с--autoplay-policy=no-user-gesture-required(киоск) не требует касания. - На телефоне в приложении Spotify коснитесь значка устройств и выберите DumbMonit Wall. Звук выходит из телевизора, и стена показывает обложку, название и прогресс.
Параметры → Музыка на стене → Динамик показывает, все ли это работает, не ходя к телевизору: учетная запись, Premium, указывает ли Spotify динамик в числе устройств учетной записи прямо сейчас (и какие устройства оно указывает), и каждую стену, которая сообщила в последние пятнадцать минут — браузер ("Chrome 130 on Linux"), готов ли он, и почему нет. Проверить звук заставляет учетную запись воспроизводиться на динамике (она возобновляет то, что последний раз воспроизводилось); каждая готовая стена имеет собственную Проверку звука. На самой стене панель Музыка имеет Воспроизвести здесь, которая перемещает то, что воспроизводится на учетной записи, на этот дисплей.
Имя. Переименуйте динамик в Параметры → Музыка на стене → Динамик ("Гостиная ТВ");
каждая стена подхватит новое имя в течение нескольких секунд. Чтобы назвать только одну стену,
добавьте ?speaker=Kitchen к ее адресу — дисплей запомнит это
(?speaker= забывает).
Стена остается включенной дни. Стена запрашивает у DumbMonit свежий маркер при истечении срока действия маркера Spotify (каждый час); когда устройство отключается (Wi-Fi, спящая сетевая карта) и не возвращается в течение тридцати секунд, стена регистрируется снова; временный сбой повторяется сам по себе (15 с, 30 с, … затем каждые пять минут); и если Spotify перестает отображать стену, пока она думает, что она готова, она регистрируется снова. Только то, что ожидание не может исправить — нет DRM, нет Premium — останавливается навсегда, до Повторить попытку.
DumbMonit хранит маркер обновления Spotify зашифрованным с помощью секрета экземпляра и никогда не отправляет его браузеру. Стена получает только краткосрочный маркер доступа для своего плеера, и только через вошедший сеанс (маркер API не может получить его). Отключение забывает учетную запись; чтобы также удалить DumbMonit из вашей учетной записи Spotify, используйте spotify.com/account/apps.
Также хорошо знать:
- Личное приложение Spotify (режим разработки) принадлежит учетной записи Premium и допускает до пяти учетных записей: добавьте других в Управление пользователем в панели инструментов.
- Переподключайтесь каждые шесть месяцев. Spotify заканчивает соединение через шесть месяцев после того, как оно было одобрено; Параметры показывают дату, и стена это говорит, когда это происходит.
Текущее воспроизведение работает без всего этого. Сервер DumbMonit спрашивает Spotify, что воспроизводится на учетной записи каждые несколько секунд (один запрос для всех стен), и стена показывает обложку, название, исполнителя, прогресс и устройство, на котором оно воспроизводится — саму стену, приложение Spotify смартТВ, Chromecast, ваш ноутбук — даже через простой HTTP и в браузере, который не может воспроизводить Spotify. Чтобы использовать только это, отключите Использовать этот дисплей как динамик Spotify в панели Музыка на стене.
Когда браузер телевизора не может воспроизводить Spotify¶
Выберите то, что соответствует вашей установке — в любом случае стена продолжает показывать, что воспроизводится, потому что текущее воспроизведение читает учетную запись, а не динамик:
- На телевизоре есть приложение Spotify, или Chromecast / Google TV / Fire TV stick. Выберите это в списке устройств Spotify; стена показывает "Воспроизводится в гостиной ТВ". Это самый простой и надежный вариант.
- Небольшой компьютер управляет телевизором (Raspberry Pi, мини ПК, старый ноутбук). Откройте стену в Chrome или Chromium с Widevine на нем: она становится динамиком, как описано выше.
- Вы хотите динамик, который всегда там, даже без браузера. Запустите приемник Spotify Connect на основе librespot (MIT) — например raspotify или spotifyd — на машине, звуковой выход которой достигает телевизора или динамика. Он появляется в списке устройств телефона для всех в сети.
DumbMonit намеренно не поставляет такой приемник: контейнер DumbMonit обычно работает на сервере в шкафу, а не на машине, подключенной к телевизору, поэтому его звук выходил бы из неправильного места; приемник нуждается в звуковой карте хоста и сетевом подключении хоста (multicast DNS), которое мониторящий контейнер не должен иметь; и librespot зависит от неофициальных протоколов Spotify, которые время от времени ломаются. Приемник, установленный на правильной машине рядом с DumbMonit, делает работу лучше.
Ссылка, отправленная на каждую стену¶
В Параметры → Музыка на стене (или собственной панели Музыка стены) вставьте ссылку Spotify, Deezer или YouTube на трек, альбом, плейлист, эпизод или видео и выберите Воспроизвести на стене. Каждая стена воспроизводит это в официальном встроенном плеере сервиса; ссылка, отправленная во время открытия стены, начинает сама по себе, где сервис это позволяет (YouTube, Deezer), как только стена был коснулась. Остановить удаляет ее с каждой стены.
Deezer и YouTube не имеют эквивалента Spotify Connect, который веб-страница может использовать — Deezer больше не принимает новые приложения разработчиков, и его API никогда не раскрывал, что воспроизводится — поэтому ссылка - это способ для них. Встроенные плеры воспроизводят 30-секундные превью, если только браузер стены не вошел в сервис.
Конфиденциальность¶
Ничего третьей стороны не загружается на стену, пока Spotify не будет подключен или
ссылка не будет установлена. Политика безопасности контента страницы позволяет точно три встроенных
плеера, скрипт плеера Spotify (sdk.scdn.co/spotify-player.js) и его
фрейм, и покрывает с i.scdn.co — ничего больше, и ничего вне веб
интерфейса.
Политика разрешений (Permissions-Policy) интерфейса даёт автовоспроизведение и защищённый контент (DRM) только этим плеерам; публичные страницы статуса не получают ни того, ни другого.
API¶
| Маршрут | Кто | Что |
|---|---|---|
GET /api/music/now |
любой сеанс или маркер | Что воспроизводится на учетной записи Spotify (кэшировано несколько секунд) и ссылка, которую воспроизводят стены |
PUT /api/music/link {"link": "…"} |
администратор | Каждая стена воспроизводит эту ссылку |
DELETE /api/music/link |
администратор | Стены останавливают встроенный плеер |
GET /api/music/spotify |
любой сеанс или маркер | Подключенная учетная запись: статус, Client ID, дата переподключения — никогда маркер |
POST /api/music/spotify/authorize |
сеанс администратора | Начинает соединение: {"client_id", "redirect_uri"} → URL одобрения Spotify |
POST /api/music/spotify/complete {"url": "…"} |
сеанс администратора | Завершает соединение обратной связи с адресом, на котором приземлился браузер |
GET /api/music/spotify/callback |
браузер администратора | Прямое перенаправление Spotify (установки HTTPS): передаёт код странице настроек, которая завершает подключение в своём сеансе |
DELETE /api/music/spotify |
администратор | Отключает и забывает маркеры |
GET /api/music/spotify/token |
только сеанс браузера | Краткосрочный маркер доступа для плеера стены |
GET /api/music/speaker |
любой сеанс или маркер | Динамик: имя, Premium, устройства Spotify Connect учетной записи, указан ли динамик, что сообщила каждая стена |
PUT /api/music/speaker {"name": "…"} |
администратор | Переименовывает динамик (null возвращается к "DumbMonit Wall") |
POST /api/music/speaker/report |
только сеанс браузера | Стена сообщает о своем динамике (отправляется каждую минуту); ответ говорит, указывает ли Spotify динамик |
POST /api/music/speaker/play {"device_id": "…"} |
только сеанс браузера | Воспроизводит учетную запись на этом устройстве, или на устройстве с именем, как динамик ("Проверить звук", "Воспроизвести здесь") |
POST /api/music/spotify/playback {"playing": false} |
только сеанс браузера | Ставит на паузу (false) или возобновляет (true) воспроизведение учётной записи, где бы оно ни шло; can_control в GET /api/music/now говорит, разрешено ли это |