Skip to content

Latest commit

 

History

History
198 lines (154 loc) · 10.7 KB

File metadata and controls

198 lines (154 loc) · 10.7 KB

Synology-Surveillance-Station-video-to-Telegram-with-prerecording

Отправка видео с предзаписью по детектору движения Synology Surveillance Station в Telegram используя Webhook автоматизации действий.
Первое видео с предзаписью, остальные до окончания детекции движения каждые 10 секунд.

Donate

EN

Содержание

Установка контейнера с Python и его настройка

В Реестре находим контейнер "ss_to_tg_video" и Загружаем

Переходим в Образы и Запускаем контейнер с Python

Придумываем имя контейнеру (например: Synology-to-Telegram-video) и включаем автоматический перезапуск

Настраиваем номер порта, на который будут приходить webhook от Synology Surveillance Station при обнаружении движения
(Я выбрал порт 7878, Вы можете выбрать любой, главное чтобы он не был занят Synology или другими сервисами)
Добавляем папку Synology, которая будет доступна в контейнере (на Ваш выбор).
Из Synology я добавил папку Bot в папке docker, а в контейнере она примонтируется под названием /bot
Папка контейнера Обязательно /bot и права чтение/запись!

В разделе Защита окружающей среды вводим свои данные

Описание переменных для docker

Переменная Значение Описание
TG_CHAT_ID 1234567890 ID чата Telegram
TG_TOKEN 0987654321:AABBCCDDEEFFGGaabbccddeeffgg Токен бота
SYNO_IP 192.168.1.177 IP адрес Вашего Synology
SYNO_PORT 5000 Порт Вашего Synology
SYNO_LOGIN user Имя пользователя Вашего Synology
SYNO_PASS mypass Пароль пользователя Вашего Synology
SYNO_OTP 079444 ОТР код двухфакторной авторизации. Если этод метод не используется, то не прописываем

Сеть оставляем bridge.

Проверяем настройки и запускаем контейнер.

ВАЖНО! Если Вы используете двухфакторную авторизацию, то после внесения 6-ти значного кода ОТР у Вас есть 60 секунд до запуска контейнера! Если меняется конфигурация камер или метод авторизации Synology, то необходимо удалить файл syno_cam_config.json (создается при первом запуске контейнера) из папки, которую прописали выше.

Если ввели правильные конфигурационные данные, то Вам в Telegram поступит сообщение с конфигурацией камер.

Cameras config:
CamId: 1 IP: 192.168.1.196 SynoName: Domofon Model: Define Vendor: User
CamId: 2 IP: 192.168.1.187 SynoName: xiaomicam Model: Define Vendor: User

Нас интересует какой CamId у какой камеры.

Установка через docker-compose

version: "3"
services:
  yacht:
    container_name: VideoSsToTg
    restart: unless-stopped
    ports:
      - 7878:7878
    environment:
      - "TG_CHAT_ID=123456" #id чата, куда отправлять уведомления
      - "TG_TOKEN=1234567890:AAAAAAbbbbbbCCCC1234567890abcdefgh" #токен бота, полученного от https://t.me/BotFather
      - "SYNO_IP=192.168.1.1" #ip DSM
      - "SYNO_PORT=5000" #Порт веб-морды DSM
      - "SYNO_LOGIN=login" #логин
      - "SYNO_PASS=password" #пароль
      - "SYNO_OTP=123" #ОТР код двухфакторной авторизации, если используете. Если нет - удалить.
    volumes:
      - /docker/bot/:/bot #/docker/bot/ - меняем на свой путь, где будет хранится конфиг с камерами
    image: striker72rus/ss_to_tg_video:latest

Установка через docker run

docker run \
      -p 7878:7878 \
      -v /docker/bot/:/bot/ \
      -e TG_CHAT_ID='123456' \
      -e TG_TOKEN='1234567890:AAAAAAbbbbbbCCCC1234567890abcdefgh' \
      -e SYNO_IP='192.168.1.1' \
      -e SYNO_PORT='5000' \
      -e SYNO_LOGIN='login' \
      -e SYNO_PASS='password'  \
      --name ssToTgVideo ss_to_tg_video:latest

Ручная сборка контейнера и выкладка на docker hub

Описание

      docker build -t название:тэг .
      docker tag название:тэг пользователь/название:тэг
      docker push пользователь/название:тэг

Пример

      docker build -t ss_to_tg_video:v1 . && \
      docker tag ss_to_tg_video:v1 striker72rus/ss_to_tg_video:v1 && \
      docker push striker72rus/ss_to_tg_video:v1

Настройка Surveillance Station

Warning

В Surveillance Station камера должна быть настроена на запись по обнаружению события !!!

Не постоянная запись 24/7 !!!

ℹ️ Причина:
При обнаружении события Surveillance Station создает видео файл с событием. Части этого файла отправляются в Телеграм начиная с 0 секукды. При записи 24/7 Surveillance Station создает видео файл длительностью 30 минут. При обнаружении события в течении 30 минут Вы всегда будете получать одно и тоже видео начиная с 0 секукды (т.е. до 29 минут назад).

В Surveillance Station в Правилах действия добавляем новое правило

Вводим удобное Имя

Выбираем нужную камеру

Настраиваем действие Веб-перехватчика
Метод: POST
URL: 192.168.1.177 - IP Synology, 7878 - порт, который был выбран ранее.
Тип содержимого: application/json
Основной текст: {"idcam":"1"} - где 1 это id камеры, который Вы можете узнать из первого сообщения в Telegram.
В моем случае камера Domofon имеет id - 1

Нажимем тест отправки и через 5 секунд вы получите подтверждение и сообщение в Telegram.

Настраиваем расписание действия правила (если надо).

На этом настройка завершена.
Если камер несколько, то необходимо создать для каждой камеры такое же правило, указывая соответствующее камере ID.

Проблемные вопросы

  • Выполнено! Автозапуск скрипта после перезагрузки Synology.
  • Исправлено! (Неправильное поведение скрипта при одновременном обнаружении движения на нескольких камерах длительностью более 10 секунд.) Требуется тестирование на 2 видеокамерах. (в наличии пока одна).
  • Отправка видео в несколько чатов, используя ссылку на файл ID Telegram после отправки в первый чат. (загрузка видео осуществляется 1 раз, остальные получают видео через ссылку на сервере Telegram). Протестиравано, будет реализовано.
  • Подключение бота Telegram для вкл/выкл режима Home mode Surveillance Station и других функций.
  • Surveillance Station умеет вещать видео в режиме Life, но не разобрался еще с Telegram, как это можно использовать.

Благодарности

Спасибо Sergey Dontsov

Пожертвования

Вы можете поддержать на этот или другие проекты. Donate