Перейти к содержимому

Режим стены

/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, включая телефон (Воспроизвести на стене)
СервисыSpotifySpotify, Deezer, YouTube и YouTube Music
ТребуетсяSpotify Premium, собственное приложение Spotify Developer, телефон на той же учетной записи Spotify, стена, обслуживаемая через HTTPS (или localhost) в браузере с DRMничего; без входа на стене Spotify и Deezer воспроизводят 30-секундные превью
Показывает, что воспроизводитсяда, везде, где оно воспроизводится: на стене, в приложении Spotify телевизора, на динамике castсобственный плеер сервиса

Подключение Spotify и отправка ссылок - это действия администратора; учетная запись зрителя на стене воспроизводит и показывает все.

Цель: на телефоне откройте 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.

  1. Создайте приложение 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.
  2. Подключение. В Параметры → Музыка на стене вставьте Client ID приложения (нет секрета: DumbMonit использует Authorization Code с PKCE) и выберите Подключить Spotify, затем одобрите на Spotify с учетной записью, которую использует ваш телефон.
  3. На телевизоре откройте /wall DumbMonit через HTTPS, вошли (учетной записи зрителя достаточно), и коснитесь экрана или нажмите OK на пульте один раз: любой жест разблокирует звук. Браузер, запущенный с --autoplay-policy=no-user-gesture-required (киоск) не требует касания.
  4. На телефоне в приложении 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»

Выберите то, что соответствует вашей установке — в любом случае стена продолжает показывать, что воспроизводится, потому что текущее воспроизведение читает учетную запись, а не динамик:

  • На телевизоре есть приложение 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) только этим плеерам; публичные страницы статуса не получают ни того, ни другого.

МаршрутКтоЧто
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 говорит, разрешено ли это