Управляйте видеомикшерами Blackmagic ATEM через ioBroker — поддерживаются все 21+ модели ATEM, от Mini до Constellation 4K+.
Описание
Этот адаптер управляет видеомикшерами Blackmagic Design ATEM по сети. Он использует протокол ATEM UDP, полученный методом обратной разработки, через библиотеку atem-connection и поддерживает более 21 варианта моделей — от ATEM Mini и Television Studio до Constellation 4K+ — с созданием состояния на основе возможностей, которое адаптируется к подключенному устройству.
Функции
- Переключение между режимами «Программа» и «Предварительный просмотр» — смена входа для программы и предварительного просмотра.
- Переходы — Обрезка, Автоматический, Ручной Т-образный переключатель; Стили Микс / Дип / Вибрация / DVE / Стинг с разной стоимостью для каждого стиля.
- Затемнение экрана — переключение и настройка скорости FTB.
- Клавишные манипуляторы (до 4 на каждый M/E) — в эфире, тип, источник заполнения/ключевого сигнала, маска, выходной сигнал
- Нисходящие ключи (до 4) — в эфире, привязка, автоматическое управление, ставка, источник заполнения/ключевого сигнала
- Дополнительные выходы (до 48) — маршрутизация источников
- Аудиомикшер — общее усиление/баланс, мониторинг, усиление/баланс/микс для каждого входа (Classic + Fairlight)
- Генераторы цвета — оттенок/насыщенность/яркость
- Потоковая передача — запуск/остановка, состояние, использованный кэш (поддерживаемые модели)
- Запись — запуск/остановка, переключение дисков, продолжительность, оставшееся место (поддерживаемые модели)
- Медиаплееры — тип источника, индекс фото/видеоклипов, управление воспроизведением.
- Итоги — состояние итогов программы/предварительного просмотра
- Макросы — запуск, остановка, продолжение, цикл, именованные слоты (до 100)
- Входные метаданные — короткие/длинные имена, тип порта.
- Автоматическое определение модели — возможности, обнаруженные подключенным устройством.
Требования
- js-controller >= 6.0.11
- ioBroker Admin >= 7.6.20
- Node.js >= 22
- Видеомикшер Blackmagic ATEM с возможностью подключения к сети.
Установка
Установка через административный интерфейс ioBroker: Адаптеры → найтиblackmagic-atem → установить .
Конфигурация
- Откройте конфигурацию экземпляра адаптера в административной панели ioBroker.
- Введите IP-адрес вашего устройства ATEM.
- Выберите модель (или оставьте включенным автоматическое определение).
- При необходимости отрегулируйте интервал переподключения.
- Сохраните и запустите адаптер.
Государственное дерево
info.connection
device.{modelName, productId, videoMode, capabilities}
me[0-3].{programInput, previewInput, inTransition, transitionPosition}
me[0-3].transition.{style, mixRate, dipRate, wipeRate, dveRate, wipePattern}
me[0-3].fadeToBlack.{isFullyBlack, inTransition, rate}
me[0-3].usk[0-3].{onAir, type, fillSource, keySource, maskEnabled, flyEnabled}
commands.{cut, auto, ftb}
dsk[0-3].{onAir, tie, inTransition, rate, fillSource, keySource, auto}
aux[0-47].source
audio.master.{gain, balance, afv}
audio.monitor.{enabled, gain, mute, solo, dim}
audio.inputs.input[N].{gain, balance, mixOption}
audio.commands.resetPeaks
colorGenerator[0-1].{hue, saturation, luminance}
streaming.{status, start, stop, duration, cacheUsed}
recording.{status, start, stop, switchDisk, duration, remainingDiskSpace}
mediaPlayer[0-3].{sourceType, stillIndex, clipIndex, playing, loop, atBeginning}
tally.{programInputs, previewInputs}
macros.{run, stop, continue, isRunning, isWaiting, loop, runningIndex, recordedCount}
macros.slots[0-99].{name, isUsed, trigger}
inputs.input[N].{shortName, longName, inputId, portType}
Состояния создаются условно на основе обнаруженных/выбранных возможностей модели. «Сиротские» состояния удаляются при изменении модели.
Пример использования
// Switch program to camera 1
setState('blackmagic-atem.0.me0.programInput', 1);
// Perform a cut
setState('blackmagic-atem.0.commands.cut', true);
// Start streaming (supported models only)
setState('blackmagic-atem.0.streaming.start', true);
// Run macro 5
setState('blackmagic-atem.0.macros.run', 5);
Ссылка на идентификатор ввода
| ИДЕНТИФИКАТОР | Источник |
|---|---|
| 1–8 | Входы камеры |
| 0 | Черный |
| 1000 | Цветовые полосы |
| 2001–2002 | Генераторы цвета 1, 2 |
| 3010, 3011 | Медиаплеер 1, 2 |
| 3020, 3021 | Медиаплеер 1, 2 Key |
| 7001–7002 | Чистая подача 1, 2 |
| 10010, 10011 | Программа, предварительный просмотр |
Протокольные примечания
Этот адаптер использует протокол ATEM UDP (порт 9910), полученный методом обратной разработки, как это описано сообществом разработчиков открытого программного обеспечения:
Протокол ATEM не предусматривает аутентификации — используйте устройства ATEM в доверенной частной сети.
Changelog
0.2.9 (2026-07-12)
- (Alan Paris) Made macros.run write-only (it no longer retains the last-triggered index); use macros.runningIndex to read the active macro
- (Alan Paris) Renamed recording.remainingDiskSpace to "Remaining Recording Time" and documented that its value is seconds of available recording capacity, not bytes
- (Alan Paris) Stopped writing audio.master.afvCrossfade on Fairlight models, where the state does not exist
0.2.8 (2026-07-05)
- (Alan Paris) Fixed upstream-keyer mask/fly enable and downstream-key pre-multiplied controls, which were writable but ignored, so they now apply to the switcher
- (Alan Paris) Master audio gain now controls Fairlight mixers correctly (previously it sent a Classic-audio command that Fairlight models ignored)
- (Alan Paris) Hid Classic-only audio controls (master balance/AFV crossfade, monitor enable/solo/dim) on Fairlight models, where they had no effect
- (Alan Paris) Added default values to all dynamically created states
0.2.7 (2026-07-04)
- (Alan Paris) Added a link to the Blackmagic Design ATEM product page in the README
- (Alan Paris) Clamp the reconnect interval in code so out-of-range config values cannot break the timer
- (Alan Paris) Removed the unused
pollIntervalconfig option (the adapter is fully push-based) - (Alan Paris) Removed the unused
audio.master.programOutGainstate
0.2.6 (2026-07-04)
- (Alan Paris) Updated atem-connection to 3.9.0 and dev dependencies (@iobroker/types, rimraf)
- (Alan Paris) Extended tsconfig from @tsconfig/node22 for standardized type checking
- (Alan Paris) Switched Dependabot to cron schedules to distribute update load
0.2.5 (2026-07-04)
- (Alan Paris) Resolved all ESLint warnings (unawaited promises, JSDoc parameter descriptions)
0.2.4 (2026-07-04)
- (Alan Paris) Fixed state roles so writable transition, keyer and media-player selectors, macro run and input info states pass the ioBroker object checker
- (Alan Paris) Removed the legacy flat
transitionStylestate on upgrade - (Alan Paris) Use adapter-managed timers for the reconnect timeout
- (Alan Paris) Updated dependencies for repochecker compliance
0.2.3 (2026-05-21)
- (Alan Paris) Bump minimum Node.js to 22 and CI matrix to 22/24 for ioBroker community submission compliance
- (Alan Paris) Set
common.noGit: trueso the gitignoredbuild/tree does not trip the repochecker - (Alan Paris) Trim
common.newsto only versions published to npm
0.2.2 (2026-05-20)
- (Alan Paris) Switched CI publish to npm trusted publishing (OIDC)
0.2.1 (2026-05-20)
- (Alan Paris) Initial publication to npm registry
0.2.0 (2025-02-04)
- (Alan Paris) Added model selection, transition rates, auxiliary outputs, tally, audio per-input, color generators
0.1.0 (2025-01-29)
- (Alan Paris) Initial release: program/preview switching, DSK/USK, streaming and recording, media players, macros
License
MIT License — see LICENSE for details.
Copyright (c) 2024-2026 Alan Paris alan.paris@scottish.rugby