105207879

Интеграция Видеодомофона Hikvision DS-KV6113 в Home Assistant

 1. Установка Hikvision Doorbell в Home Assistant
 Переходим  Настройки  -> Дополнения  -> Магазин дополнений -> Репозитории (в правом верхнем углу).
Вставьте следующий URL-адрес в поле ввода: https://github.com/pergolafabio/Hikvision-Addons выбираем Hikvision Doorbell, далее открываем это дополнение и в верхней вкладке Конфигурация в поле  DoorBells дописываем:
- name: Domofon
ip: 192.168.10.211
username: admin
password: Пароль
Переходим во вкладку Информация запускаем Hikvision Doorbell

domofon

При этом если у нас уже установлен и настроен MQTT, то в нем появится Домофон. 

domofon1

 

Хотите получать уведомления в Telegram с фото и информацией о звонке с домофона через Home Assistant. Ниже я предоставлю вам конфигурацию, которая позволит это реализовать, используя MQTT для детектирования звонка и вашу камеру для снимков.

Шаги для реализации:

  • Добавление камеры.
  • Создание сенсора для отслеживания звонка через MQTT.
  • Создание автоматизации для отправки уведомлений в Telegram.

Конфигурация Home Assistant:

Добавьте следующие секции в ваш configuration.yaml. Если у вас уже есть некоторые секции, просто добавьте в них соответствующие строки.

# Камера домофона
camera:
- platform: ffmpeg
  name: "Домофон"
  input: rtsp://admin:Пароль@192.168.10.211/Streaming/Channels/101

mqtt:

  binary_sensor:

    - name: "Doorbell" # Имя сущности Home Assistant будет binary_sensor.doorbell

# ИЗМЕНЕНО: теперь слушаем ТОЧНЫЙ топик вашего домофона для состояния звонка

state_topic: "hmd/sensor/Domofon/Call-state"

# ИЗМЕНЕНО: payload_on теперь 'ringing'

payload_on: "ringing" # Определим payload_off, чтобы сенсор мог возвращаться в 'off'

payload_off: "idle" # Предполагаем, что 'idle' - это состояние покоя, 

                              # но проверьте, что домофон отправляет, когда звонок завершен.

                              # Если домофон не отправляет 'idle', то просто не будет payload_off

device_class: occupancy # Класс устройства, указывающий на присутствие (рекомендовано)

После перезапуска Home Assistant:

Как проверить

  1. Имитируйте вызов домофона:
    • В «Инструменты разработчика → Состояния» найдите sensor.domofon_call_state.
    • Установите состояние ringing (если было idle).

Автоматизация для уведомлений Telegram:

alias: Уведомление в Telegram при вызове домофона
description: Отправляет сообщение и фото в Telegram‑канал при вызове домофона
triggers:
  - entity_id: sensor.domofon_call_state
    to: ringing
    from: idle
    trigger: state
actions:
  - data:
     target:
      - -10№группытелеграмм3
    message: "Вызов с домофона! Время: {{ now().strftime('%H:%M:%S') }}"
  action: telegram_bot.send_message
    - data:
      target:
      - -10№группытелеграмм3
    file: /config/www/snapshot.jpg
     caption: Снимок с домофона при вызове
  action: telegram_bot.send_photo

Рекомендация: Используйте редактор, который поддерживает YAML-синтаксис (например, VS Code с расширением Home Assistant Config Helper или add-on File editor в Home Assistant). Он часто подсвечивает ошибки отступа.

           После проверки кода и перезагрузки НА, на главную панель добавляем карточку “Picture Glance”,  в которой дополнительно указываем объекты такие как: Ответить или Отклонить вызов и открыть калитку.

 

domofon2

Небольшое отступление в связи с выявленной проблемой: сенсор sensor.domofon_call_state имеет три состояния (ringing, idle, Неизвестно),

нужно доработать автоматизацию:

  1. Чётко определить, какое состояние считать «вызовом» (обычно ringing).
  2. Исключить ложные срабатывания на состояние Неизвестно.
  3. Добавить обработку ошибок, если состояние неожиданно меняется.

Исправленный YAML‑код автоматизации

- id: domofon_telegram_notification
alias: Уведомление в Telegram при вызове домофона
description: Отправляет сообщение и фото в Telegram‑канал только при состоянии ringing
trigger:
platform: state
entity_id: sensor.domofon_call_state
to: 'ringing' # Срабатывает ТОЛЬКО при переходе в ringing
from:
- 'idle' # Разрешённые исходные состояния
- 'Неизвестно' # Чтобы не пропустить вызов, если предыдущее состояние было «Неизвестно»
condition:
# Дополнительная проверка: текущее состояние точно ringing (защита от глюков)
- condition: template
value_template: "{{ states('sensor.domofon_call_state') == 'ringing' }}"
action:
# Шаг 1: Сохраняем снимок с камеры (замените entity_id на ваш)
- service: camera.snapshot
data:
entity_id: camera.your_camera_entity # Например, camera.front_door
filename: /config/www/snapshot.jpg

# Пауза на 3 секунды (чтобы снимок точно сохранился)
- delay: '00:00:03'

# Шаг 2: Отправляем текстовое сообщение с временем
- service: telegram_bot.send_message
data:
target:
- -IDгруппыТелеграмм

 message: >

Вызов с домофона!
Время: {{ now().strftime('%H:%M:%S') }}
Состояние: {{ states('sensor.domofon_call_state') }}

# Шаг 3: Отправляем фото
- service: telegram_bot.send_photo
data:
target:
- -IDгруппыТелеграмм
file: /config/www/snapshot.jpg
caption: "Снимок с домофона при вызове"
mode: single # Не запускать несколько копий автоматизации одновременно
Ключевые изменения и пояснения

from: ['idle', 'Неизвестно']Автоматизация сработает, если состояние изменилось на ringing 
из:idle (штатный сценарий),
Неизвестно (защита от пропусков, если сенсор временно «потерял» состояние).

Условие conditionДополнительно проверяет, что текущее состояние сенсора — ringing.
Исключает ложные срабатывания, если триггер сработал ошибочно.
condition:
  - condition: template
    value_template: "{{ states('sensor.domofon_call_state') == 'ringing' }}"

Пауза delay: '00:00:03'Даёт время камере сохранить снимок перед отправкой в Telegram.
Без паузы фото может не успеть записаться на диск.
Расширенное сообщение в TelegramДобавляет текущее состояние сенсора в сообщение (полезно для отладки).
Использует > для многострочного текста.
message: >
   Вызов с домофона!
   Время: {{ now().strftime('%H:%M:%S') }} Состояние: {{ states('sensor.domofon_call_state') }}
mode: singleЗапрещает запуск нескольких копий автоматизации одновременно.
Защищает от «лавины» сообщений при нестабильном состоянии сенсора.

Как проверить работу

Имитируйте вызов домофона:В «Инструменты разработчика → Состояния» найдите sensor.domofon_call_state.
Установите состояние: ringing (если было idle или Неизвестно).

Проверьте Telegram‑канал:Должно прийти:Сообщение с временем и состоянием,
Фото с подписью.


Если фото не пришло:Убедитесь, что файл /config/www/snapshot.jpg существует (см. предыдущие инструкции по проверке прав и пути).
Увеличьте паузу delay до 00:00:05.

Проверьте логи HA:Фильтр: domofon_telegram_notification, camera.snapshot, telegram_bot.
Ищите ошибки:
«Failed to save snapshot» → проблема с камерой,
«File not found» → неверный путь или файл не создан,
«Permission denied» → нет прав на запись/чтение.

Добавьте принудительный сброс через автоматизацию

При вызове состояние становится ringing и так и остается при окончании вызова

- id: domofon_state_reset
  alias: Сброс состояния домофона после вызова
  trigger:
    - platform: state
    entity_id: sensor.domofon_call_state
    to: 'ringing'
    for: '00:01:00' # Если состояние держится 1 минуту
  action:
    - service: homeassistant.turn_off # или set_value
    data:
    entity_id: sensor.domofon_call_state # Альтернатива: установить конкретное состояние
    - service: input_select.select_option # если сенсор — input_select
    data:
    entity_id: input_select.domofon_state
    option: 'idle'




Дополнительные рекомендации

Мониторинг состояния сенсора:Добавьте в интерфейс HA карточку с sensor.domofon_call_state, чтобы видеть его состояние в реальном времени.

Логирование переходов:Создайте отдельную автоматизацию, которая записывает в лог все изменения состояния сенсора (для отладки нестабильной работы).

Резервный триггер:Если состояние Неизвестно возникает часто, добавьте второй триггер на to: 'Неизвестно' с уведомлением о сбое.

 

Comments powered by CComment