система мигания

адаптер für die Amazon Blink-System und ioBroker

Текущий релиз
0.0.39
Разработчик
Pischleuder1
Лицензия
MIT

адаптер blink для ioBroker

Адаптер ioBroker для камер Blink.

Поддерживаемые устройства

Этот адаптер предназначен для домашних камер видеонаблюдения Blink и соответствующих устройств, подключенных к учетной записи Blink.

Веб-сайт производителя: Blink
Обзор устройств: продукция Blink
Поддержка / документация по устройству: Поддержка Blink

Данный адаптер не связан с компанией Blink или Amazon, не поддерживается ими и не получает от них одобрения.

Начиная

Установка производится через административный интерфейс ioBroker.

Введите свои учетные данные:image

image -----------------------------------------------------------------------------------------

Функции

  • Подключается к облаку Blink
  • Опрашивает состояние камеры и модуля синхронизации.
  • Поддерживает создание снимков вручную.
  • Магазины: снимки состояния в реальном времени
  • Загружает последнюю доступную облачную видеозапись.
  • Позволяет включать или отключать обнаружение движения.
  • Поддерживает предупреждения о состоянии батареи и уведомления.
  • Поддерживает интеллектуальное обнаружение состояний для классифицированных событий движения (работает только в платных облачных сервисах).
  • Поддерживает видео, хранящиеся в облаке, и видео, хранящиеся локально на SD-карте (SyncModule 2 и XR), через локальный сервер на порту 8085 — требуется JavaScript, см. ниже!
  • Для работы скрипта требуется установленный ffmpeg и много ресурсов, если у вас много камер, и в этом случае он лишь частично подходит для Raspberry Pi (минимум 4 ГБ — чем больше, тем лучше).
  • Первая версия для просмотра в реальном времени с поддержкой JavaScript для каждой камеры — необходимый JavaScript устанавливается автоматически, за исключением старой модели XT2, поскольку она использует другой видеопоток.
  • Экспериментальная нативная сессия LiveView (без необходимости использования JavaScript-помощников/ffmpeg) черезcommands.start_live /commands.stop_live См. раздел "Реальная сессия LiveView" ниже. image

Адаптер Blink: точки данных

Обзор всех данных, предоставляемых специализированным адаптером ioBroker.blink.0 Статус: после рефакторинга с учетом истории в облаке + резервного использования локального хранилища, а также добавления экспериментальной нативной сессии LiveView в версиях v0.0.37/0.0.38.

Конвенции

  • <CamID> — числовой идентификатор камеры (например)1754227 Также используется в имени файла MP4.
  • <NetID> — Идентификатор сети модуля синхронизации / домашней сети (например)174553 ).
  • <N> — Индекс слота в истории видео, 0 = самый новый клип, 9 = самый старый .

Все файлы MP4 и снимки экрана хранятся в указанном каталоге для снимков (по умолчанию:/opt/iobroker/iobroker-data/blink/ ).


Глобальные переменные адаптера

Точка данныхТипОписание
blink.0.info.connectionлогическийtrue если у адаптера есть действительная сессия с облаком Blink.
blink.0.info.account_idнитьИдентификатор учетной записи Blink, используемый внутри системы, чтобы дополнительный вспомогательный скрипт LiveView мог найти нужную учетную запись.

Данные с камеры

Каждая камера получает свой собственный канал.blink.0.cameras.<CamID> со следующими подструктурами.

info – Основные данные

Точка данныхТипОписание
info.nameнитьНазвание, отображаемое в приложении Blink (например, "Подъездная дорога", "Патио").
info.network_idчислоИдентификатор сети, к которой принадлежит камера.
info.serialнитьСерийный номер камеры.
info.typeнитьМодель камеры / Тип API Blink (camera ,owl ,mini ,doorbell ).
info.account_idнитьИдентификатор учетной записи Blink, дублируемый для каждой камеры в вспомогательном скрипте LiveView.

status – Текущее состояние датчика

Точка данныхТипОписание
status.armedлогическийКамера активирована (в сетевом режиме).
status.batteryчислоНапряжение батареи в вольтах (единица измерения)V ).null на моделях без батареи.
status.battery_rawчислоИсходное значение датчика до преобразования.
status.battery_textнитьЗаметка, удобочитаемая для человека, напримерnot available на моделях без батареи.
status.battery_voltчислоНапряжение батареи в вольтах (единица измерения)V ).
status.temperatureчислоТемпература на датчике камеры в °C (единица измерения)°C ).
status.temperature_fчислоТемпература в °F (единица измерения)°F ).
status.temperature_textнитьТемпература в виде отформатированного текста, например.not available на моделях без датчика.
status.wifi_strengthчислоУровень сигнала Wi-Fi в дБм (единица измерения)dBm ).
status.motion_detect_enabledлогическийФункция обнаружения движения на камере включена/выключена (отражение только для чтения; использоватьcommands.motion_detect изменить это).
status.last_updateнитьОтметка времени последнего обновления статуса (формат ISO).

Интеллектуальное обнаружение (только при активной подписке на Blink)

Извлечено из новейшего видеоролика, снятого на камеру в облаке :

Точка данныхТипОписание
status.smart_detectionлогическийПо меньшей мере один сигнал интеллектуального обнаружения присутствует в последнем видеоролике.
status.smart_detection_rawнитьИсходные данные для интеллектуального обнаружения (JSON, усеченный формат).
status.detection_typeнитьСписок обнаруженных типов, разделенных запятыми.
status.motion_sourceнитьТриггер для видеоролика:pir ,cv_motion , и т. д.
status.person_detectedлогическийЧеловек обнаружен.
status.vehicle_detectedлогическийОбнаружен автомобиль.
status.animal_detectedлогическийОбнаружено животное.
status.package_detectedлогическийПакет обнаружен.

battery – Расширенный режим работы батареи

Используется для предотвращения повторных уведомлений.

Точка данныхТипОписание
battery.lowлогическийЗаряд батареи критически низкий.
battery.warningSentлогическийПредупреждение о низком заряде батареи уже было выпущено на текущий период низкого заряда батареи (дедупликация).
battery.lastMessageнитьТекст последнего отправленного предупреждения о низком заряде батареи (например, через Pushover/Telegram).
battery.lastWarningнитьОтметка времени последнего предупреждения о низком заряде батареи (ISO).

live – Снимок экрана и прямая трансляция

Точка данныхТипОписание
live.fileнитьАбсолютный путь к последнему снимку на диске.
live.image_base64нитьСнимок в виде строки Base64 (для прямого встраивания в VIS без доступа к файлу).
live.mime_typeнитьMIME-тип снимка (например)image/jpeg ).
live.timestampнитьВременная метка снимка (ISO).
live.stream_activeлогическийВ данный момент выполняется опрос потока MJPEG в реальном времени (вспомогательная функция веб-сетки).
live.stream_urlнитьURL активного потока MJPEG в реальном времени (вспомогательная функция веб-сетки, ограничение по времени жизни).
live.modeнитьРежим экспериментальной нативной сессии LiveView (например)idle (название активного режима).
live.activeлогическийtrue при использовании нативной сессии LiveView (commands.start_live ) запущен.
live.urlнитьURL-адрес воспроизведения текущей сессии LiveView.
live.expires_atнитьОтметка времени истечения срока действия текущей сессии LiveView (ISO).
live.last_errorнитьПоследняя ошибка из собственной сессии LiveView, если таковая имелась.
live.session_idнитьИдентификатор текущей сессии LiveView.
live.backendнитьДля обслуживания нативной сессии LiveView использовался бэкэнд.
live.unsupportedлогическийtrue если данная модель камеры не поддерживает встроенный режим LiveView (например, старые модели XT/XT2). В этом случае,commands.start_live не оказывает никакого эффекта.

video – Текущее видео

Новейшее видео с камеры. Автоматически выбирается облачное хранилище; при необходимости используется локальное хранилище (USB-накопитель Sync Module 2).

Точка данныхТипОписание
video.fileнитьАбсолютный путь MP4 (<CamID>_latest.mp4 ).
video.timestampнитьВременная метка видеоконтента (ISO).
video.idнитьУникальный идентификатор клипа из API Blink.
video.sizeчислоРазмер файла в байтах.
video.readyлогическийФайл успешно загружен и воспроизводится.
video.lastErrorнитьПоследняя ошибка загрузки."" = хорошо, в противном случае сообщение будет выглядеть так:no video available .

video.history.0video.history.9 – Галерея колец

Каждая камера имеет 10 слотов, содержащих 10 самых последних видеороликов. Слот 0 = самый новый ролик , слот 9 = самый старый. При каждом новом ролике слоты автоматически меняются (самый старый отсеивается).

Точка данныхТипОписание
video.history.<N>.fileнитьАбсолютный путь MP4 (<CamID>_history_<N>.mp4 ). Постоянное имя файла для каждого слота ⇒ стабильные URL-адреса в VIS.
video.history.<N>.idнитьУникальный идентификатор клипа из API Blink.
video.history.<N>.timestampнитьВременная метка содержимого клипа (ISO).
video.history.<N>.sourceнитьИсточник видеоролика:cloud илиlocal_storage . Пусто, если слот не используется.

commands – Запуск точек данных

Установить наtrue → после выполнения действия адаптер автоматически перезагружается.false . (commands.motion_detect Единственное исключение — это постоянно включенный/выключенный переключатель, а не самовосстанавливающийся триггер.

Точка данныхТипДействие
commands.snapshotлогическийЗапросить новый снимок (сохраненный в виде состояния Base64).
commands.snapshot_fileнитьТолько для чтения: абсолютный путь к последнему сохраненному файлу снимка, устанавливаемый автоматически после каждого снимка.
commands.fetch_videoлогическийСкачайте последнее видео. Умная логика: сначала облако, затем резервное локальное хранилище.
commands.live_requestлогическийОткройте потоковое видео в формате MJPEG (с помощью web-grid helper, TTL ~60 с).
commands.start_liveлогическийЗапустите экспериментальную сессию LiveView (вспомогательные JavaScript-функции / ffmpeg не требуются). Результат отобразится в следующем виде:live.url /live.mode /live.session_id .
commands.stop_liveлогическийОстановить сеанс LiveView, запущенный черезcommands.start_live .
commands.motion_detectлогическийПереключите функцию обнаружения движения на камере (постоянное переключение, без автоматической перезагрузки).
commands.clear_sessionлогическийОчистите сессию аутентификации (в случае проблем со входом в систему).

Модуль синхронизации / сеть

Каждый модуль синхронизации получает свой собственный канал.blink.0.sync.<NetID> Примечание: Путь состояния используетnetwork_id а не фактический идентификатор устройства синхронизирующего модуля.

info – Основные данные

Точка данныхТипОписание
info.nameнитьНазвание сети (например, "Home").
info.serialнитьСерийный номер модуля синхронизации.

status - Состояние

Точка данныхТипОписание
status.armedлогическийВключение сетевой охраны (включает обнаружение движения на всех камерах).
status.last_updateнитьОтметка времени последнего обновления (ISO).

commands- Курок

Точка данныхТипДействие
commands.armedлогическийПриводит всю сеть в состояние боевой готовности (true ) или разоружены (false ). Это затрагивает все камеры в этой сети.

Структура файлов в каталоге снимков

Путь по умолчанию:/opt/iobroker/iobroker-data/blink/

ФайлОписание
<CamID>_latest.mp4Самое свежее видео с камеры (см.video.file ).
<CamID>_history_<N>.mp4Исторический слотN камеры (video.history.<N>.file ).
<CamID>_snapshot.jpgПоследний снимок, если он был сохранен черезcommands.snapshot_file .

Имена файлов остаются неизменными для каждого слота , содержимое меняется при ротации. Для встраивания в веб-среду используйте механизм защиты от кэширования в строке запроса.?t={timestamp} Таким образом, браузер фактически перезагружает новый файл.


Дополнительный видеоархив

Адаптер может копировать загруженные MP4-файлы в отдельную директорию архива, например, в путь к смонтированному сетевому хранилищу (NAS). Создание архива является необязательным и отключено по умолчанию.

Настройки архива задаются в административном интерфейсе адаптера:

  • Enable video archive Эта опция позволяет копировать загруженные MP4-файлы в архивную директорию.
  • Archive directory : абсолютный путь к архивированным файлам MP4, например/opt/iobroker/iobroker-data/blink-archive .
  • Create camera subfolders Создает одну подпапку архива для каждой камеры.
  • Maximum archive clips per camera in grid : ограничивает количество архивных видеороликов, отображаемых с каждой камеры в веб-таблице.

При включении архивации адаптер также заполняет существующие локальные файлы MP4 из текущего состояния видео и истории видео в архив. В сетке камер отображаются заархивированные клипы.Archive Кнопка навигации, отсортированная по временной метке клипа и очищенная от дубликатов по идентификатору клипа.

В рамках следующих статусов архива создаются следующие состояния архива.blink.0.archive :

СостояниеТипОписание
archive.enabledлогическийПоказывает, включен ли архив в конфигурации адаптера.
archive.availableлогическийПоказывает, доступен ли в данный момент каталог архива для записи.
archive.directoryнитьОтображает настроенный каталог архива.
archive.lastFileнитьИсходный MP4-файл, последний раз обработанный для архивирования.
archive.lastTargetнитьПуть к целевому файлу архива, содержащему последний успешно скопированный MP4-файл.
archive.lastSuccessнитьОтметка времени последнего успешного копирования архива.
archive.lastErrorнитьПоследнее сообщение об ошибке архивации, если таковое имелось.

Состояния архива являются индикаторами состояния только для чтения. Изменяйте параметры архива в конфигурации адаптера, а не записывайте данные в эти состояния.

Советы по интеграции VIS

Для предварительного просмотра в VIS:

{cameras.1754227.video.file}      → absolute path
{cameras.1754227.video.timestamp} → use for cache-busting
{cameras.1754227.video.ready}     → if false, show a "no video" hint
{cameras.1754227.video.lastError} → if non-empty, show as error status

Для запросов в исторической галерее используйте ячейки 0–9 по отдельности:

{cameras.1754227.video.history.0.file}
{cameras.1754227.video.history.0.timestamp}
{cameras.1754227.video.history.0.source}
... through slot 9

source = "cloud" Это означает, что видеоролик был загружен непосредственно из облака Blink (быстро, без загрузки через USB-накопитель).source = "local_storage" Это означает, что видеоролик был загружен с USB-накопителя модуля синхронизации 2 через облако.

Примечания

  • Предупреждения, работающие от батареи, обрабатываются черезbattery.* штатов.
  • Устройства без встроенного аккумулятора, такие как Mini/Owl/PanTilt, не подпадают под действие предупреждений о низком заряде батареи.
  • В таком случае,battery.lastMessage установлено наno built in battery .
  • Состояния изображения в реальном времени обновляются при получении снимка или при включении функции создания снимков в реальном времени.
  • Состояния потока MJPEG имеют значение только в том случае, если потоковая передача включена в конфигурации адаптера.
  • Встроенные состояния сессии LiveView (live.mode ,live.active ,live.url …) не зависят от вспомогательной функции веб-сетки MJPEG; проверьтеlive.unsupported прежде чем звонитьcommands.start_live на более старых моделях камер.
  • Состояния функции Smart Detection обновляются при наличии классифицированных метаданных о движении из облака Blink Cloud.

Дополнительная веб-сетка LiveView

Адаптер может дополнительно устанавливать и обновлять вспомогательный скрипт для веб-сетки LiveView.

Этот вспомогательный скрипт создаётся в пространстве имён JavaScript-адаптера ioBroker следующим образом:

script.js.common.blink-video-url-server

Это сделано намеренно и используется только для дополнительной функциональности веб-сетки / вспомогательного средства LiveView. Существующие пользовательские скрипты с тем же идентификатором объекта могут быть перезаписаны. Если вы используете пользовательскую версию этого скрипта, пожалуйста, создайте резервную копию перед включением или обновлением этой функции.

Примечание: Этот вспомогательный инструмент для веб-сетки является отдельной функцией от описанной выше встроенной сессии LiveView.commands.start_live /live.url Для работы в нативной сессии не требуется адаптер JavaScript.ffmpeg Это рекомендуемая отправная точка, если вам нужен только URL-адрес прямой трансляции с одной камеры в VIS или другой интеграции.

Требования

Для работы веб-сетки LiveView требуется:

  • JavaScript-адаптер ioBroker
  • ffmpeg установлен в хост-системе и доступен вPATH
  • Поддерживаются камеры Blink, использующие текущий протокол IMMI/MCLV LiveView.
  • Сетевой доступ с хоста ioBroker к облачным сервисам Blink.

В системах Debian/Ubuntu,ffmpeg Обычно его можно установить с помощью:

sudo apt update
sudo apt install ffmpeg

Совместимость с камерами

Не все поколения камер Blink предоставляют одинаковый поток LiveView.

Камеры, использующие текущий протокол IMMI/MCLV LiveView, могут быть преобразованы в поток HLS для веб-сети. Более старые камеры на базе XT/XT2/LFR могут не предоставлять пригодный для использования поток этим методом. В этом случае адаптер обнаруживает неподдерживаемое состояние LiveView и отключает кнопку LiveView для этой камеры вместо запуска прерванного потока.live.unsupported Этот флаг также применяется к собственной сессии LiveView (commands.start_live ).

Примечания

Веб-сетка LiveView — это удобная функция. Основные функции адаптера, такие как вход в систему, обнаружение устройств, состояния движения, состояния батареи, миниатюры и загрузка видео, не требуют вспомогательного скрипта JavaScript.ffmpeg Вспомогательная функция веб-сетки LiveView поддерживается только в установках ioBroker на базе Linux. Она использует пути Linux и обрабатывает команды, такие как.../opt/iobroker ,/tmp ,/usr/bin/node ,nohup , иpkill Основная функциональность адаптера остается платформенно-независимой, но для работы функций веб-сетки LiveView требуется хост под управлением Linux.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Все названия продуктов и компаний, а также логотипы являются товарными знаками™ или зарегистрированными® товарными знаками соответствующих владельцев. Их использование не подразумевает какой-либо связи с ними или их дочерними компаниями, а также одобрения с их стороны! Этот личный проект ведется в свободное время и не преследует коммерческих целей. Blink является товарным знаком Amazon Technologies, Inc.

Changelog

Older entries are available in CHANGELOG_OLD.md.

0.0.39 (2026-08-08)

  • Automatically clears the cached Blink session once after HTTP 401/code 101 and retries the connection.
  • Allows the clear session command even when the adapter is not connected.

0.0.38 (2026-07-13)

  • Added units for temperature and battery voltage states.
  • Removed duplicate detail roles for Fahrenheit temperature and secondary live URL states.

0.0.37 (2026-07-13)

  • Fixed button command states to use read: false as required for role: button.
  • Fixed object hierarchy by creating cameras, sync, video.history and video history slots as folders where they contain child objects.
  • Fixed remaining English object names for smart detection and live URL states.
  • Fixed device information roles for name, serial number and camera model states.
  • Added dBm unit metadata for Wi-Fi signal strength states.

0.0.36 (2026-07-12)

  • Fixed remaining admin checker warnings for archive translations.
  • Normalized admin UI translation keys for streaming settings.
  • Normalized English runtime labels and debug messages.
  • Documented that the LiveView web grid helper requires Linux.

0.0.35 (2026-07-12)

  • Fixed remaining admin checker warnings for archive translations.

License

MIT License

Copyright (c) 2026 Pischleuder1 pischleuder@gmx.de

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.