Интеграция для управления камерами на прошивке OpenIPC в Home Assistant.
| Управление камерой | Запись с OSD | Настройки |
|---|---|---|
![]() |
![]() |
![]() |
| Датчики | Медиа-плеер | Автоматизации |
|---|---|---|
![]() |
![]() |
![]() |
интеграция для управления IP-камерами на базе прошивок OpenIPC, Beward и Vivotek в Home Assistant. Поддерживает видеонаблюдение, запись, уведомления в Telegram, голосовые оповещения (TTS) и распознавание автомобильных номеров (LNPR) для Beward DS07P-LP.
- Просмотр RTSP-потока (main/sub)
- Получение снимков с камеры
- Запись видео в медиа-папку HA
- OSD (наложение текста на видео)
- Температура CPU
- FPS, битрейт, разрешение
- Время работы (uptime)
- Состояние microSD-карты
- Сетевая статистика
- Детекция движения
- Состояние двери (для Beward)
- Тревожные события
- LNPR - распознавание автономеров (Beward DS07P-LP)
- Beward DS07P-LP - через встроенный динамик (формат A-law)
- OpenIPC камеры - через подключенный динамик (формат PCM)
- Поддержка русского и английского языков
- Индивидуальные и групповые оповещения
- Telegram (отправка видео и снимков)
- Автоматизации на все события
- Поддержка нескольких камер
- Откройте HACS в Home Assistant
- Нажмите на три точки в правом верхнем углу → "Custom repositories"
- Добавьте:
https://github.com/himik19872/openipc-hassс категорией "Integration" - Нажмите "Add"
- Найдите "OpenIPC Camera" в списке и установите
- Перезапустите Home Assistant
- Скачайте последний релиз
- Распакуйте содержимое в папку
/config/custom_components/openipc/ - Перезапустите Home Assistant
- Перейдите в Настройки → Устройства и службы
- Нажмите "Добавить интеграцию"
- Найдите "OpenIPC Camera"
- Заполните форму:
| Поле | Описание | Пример |
|---|---|---|
| IP адрес | Адрес камеры в сети | 192.168.1.100 |
| HTTP порт | Порт веб-интерфейса | 80 |
| Имя пользователя | Логин для доступа | root |
| Пароль | Пароль | 12345 |
| Имя камеры | Отображаемое имя | Уличная камера |
| RTSP порт | Порт для видеопотока | 554 |
| Профиль потока | Основной/дополнительный | main |
| Тип устройства | Модель камеры | OpenIPC / Beward / Vivotek |
Важно: Выбор правильного типа критичен для работы специфических функций!
openipc:
telegram_bot_token: "YOUR_BOT_TOKEN"
telegram_chat_id: "YOUR_CHAT_ID"
Способ 2 (через встроенную интеграцию):
Установите и настройте официальную интеграцию Telegram bot
🔊 Настройка TTS (Text-to-Speech)
Общие требования
Для работы TTS необходимы:
ffmpeg - для конвертации аудио
gTTS - Python библиотека для генерации речи
curl - для отправки на камеры
Установите зависимости (выполните в терминале HA один раз):
apk add ffmpeg curl
pip3 install gtts
Автоматическое восстановление зависимостей
Создайте файл /config/ffmpeg_install.sh:
#!/bin/bash
echo "$(date): Проверка зависимостей..." >> /config/ffmpeg.log
if ! command -v ffmpeg &> /dev/null; then
apk add ffmpeg >> /config/ffmpeg.log 2>&1
fi
if ! command -v curl &> /dev/null; then
apk add curl >> /config/ffmpeg.log 2>&1
fi
if ! python3 -c "from gtts import gTTS" 2>/dev/null; then
pip3 install gtts >> /config/ffmpeg.log 2>&1
fi
Сделайте исполняемым и добавьте автоматизацию для запуска при старте HA.
TTS для Beward DS07P-LP
Скрипт генерации (/config/tts_cache/tts_generate.sh)
#!/bin/bash
MESSAGE="$1"
LANG="${2:-ru}"
FILENAME="$3"
if [ -z "$MESSAGE" ] || [ -z "$FILENAME" ]; then
echo "Использование: $0 <текст> <язык> <выходной_файл.alaw>"
exit 1
fi
TIMESTAMP=$(date +%s)
TEMP_MP3="/tmp/tts_${TIMESTAMP}.mp3"
python3 -c "from gtts import gTTS; gTTS('''$MESSAGE''', lang='$LANG').save('$TEMP_MP3')" || exit 1
ffmpeg -y -i "$TEMP_MP3" -ar 8000 -ac 1 -f alaw "$FILENAME" 2>/dev/null
rm -f "$TEMP_MP3"
#!/bin/bash
MESSAGE="$1"
LANG="${2:-ru}"
FILENAME="$3"
if [ -z "$MESSAGE" ] || [ -z "$FILENAME" ]; then
echo "Использование: $0 <текст> <язык> <выходной_файл.alaw>"
exit 1
fi
TIMESTAMP=$(date +%s)
TEMP_MP3="/tmp/tts_${TIMESTAMP}.mp3"
python3 -c "from gtts import gTTS; gTTS('''$MESSAGE''', lang='$LANG').save('$TEMP_MP3')" || exit 1
ffmpeg -y -i "$TEMP_MP3" -ar 8000 -ac 1 -f alaw "$FILENAME" 2>/dev/null
rm -f "$TEMP_MP3"
Команда в shell_commands.yaml:
beward_say: "/config/tts_cache/tts_generate.sh '{{ message }}' 'ru' '/config/tts_cache/last.alaw' && curl -X POST -u 'admin:password' -H 'Content-Type: audio/G.711A' --data-binary '@/config/tts_cache/last.alaw' 'http://192.168.1.10/cgi-bin/audio/transmit.cgi'"
TTS для OpenIPC камер
Скрипт генерации PCM (/config/tts_cache/tts_generate_openipc.sh)
#!/bin/bash
MESSAGE="$1"
LANG="${2:-ru}"
FILENAME="$3"
if [ -z "$MESSAGE" ] || [ -z "$FILENAME" ]; then
echo "Использование: $0 <текст> <язык> <выходной_файл.pcm>"
exit 1
fi
TIMESTAMP=$(date +%s)
TEMP_MP3="/tmp/tts_${TIMESTAMP}.mp3"
python3 -c "from gtts import gTTS; gTTS('''$MESSAGE''', lang='$LANG').save('$TEMP_MP3')" || exit 1
ffmpeg -y -i "$TEMP_MP3" -ar 8000 -ac 1 -f s16le "$FILENAME" 2>/dev/null
rm -f "$TEMP_MP3"
Индивидуальные скрипты для каждой камеры
Создайте скрипт для камеры, например /config/openipc_say_192_168_1_75.sh:
#!/bin/bash
MESSAGE="$1"
TIMESTAMP=$(date +%s)
PCM_FILE="/tmp/openipc_75_${TIMESTAMP}.pcm"
/config/tts_cache/tts_generate_openipc.sh "$MESSAGE" "ru" "$PCM_FILE"
if [ -f "$PCM_FILE" ]; then
curl -u "root:12345" --data-binary "@$PCM_FILE" "http://192.168.1.75/play_audio"
rm -f "$PCM_FILE"
fi
Команды в shell_commands.yaml:
openipc_say_75: "/config/openipc_say_192_168_1_75.sh '{{ message }}'"
openipc_say_106: "/config/openipc_say_192_168_1_106.sh '{{ message }}'"
openipc_say_91: "/config/openipc_say_192_168_1_91.sh '{{ message }}'"
Скрипты в scripts.yaml:
openipc_say_75:
alias: OpenIPC 75 - Сказать текст
sequence:
- action: shell_command.openipc_say_75
data:
message: "{{ message }}"
fields:
message:
description: "Текст для озвучивания"
required: true
selector:
text:
openipc_say_all:
alias: OpenIPC - Сказать на все камеры
sequence:
- parallel:
- action: script.openipc_say_75
data:
message: "{{ message }}"
- action: script.openipc_say_106
data:
message: "{{ message }}"
- action: script.openipc_say_91
data:
message: "{{ message }}"
fields:
message:
description: "Текст для озвучивания"
required: true
Настройка камер OpenIPC
Для работы TTS необходимо изменить кодек на PCM:
ssh root@192.168.1.75
cli -s .audio.codec pcm
cli -s .audio.outputVolume 100
killall majestic; sleep 2; majestic &
exit
Повторите для каждой камеры. Для постоянного сохранения отредактируйте /etc/majestic.yaml:
audio:
enabled: true
codec: pcm # вместо alaw
outputEnabled: true
outputVolume: 100
srate: 8000
Примеры автоматизаций
Beward - приветствие при открытии двери
- alias: "Beward - Добро пожаловать"
trigger:
- platform: state
entity_id: binary_sensor.beward_sipdomofon_door
to: 'on'
action:
- service: script.beward_say
data:
message: "Добро пожаловать домой!"
OpenIPC - оповещение о движении
- alias: "OpenIPC 75 - Обнаружено движение"
trigger:
- platform: state
entity_id: binary_sensor.openipc_75_motion
to: 'on'
action:
- service: script.openipc_say_75
data:
message: "Внимание! Движение на заднем дворе"
Утреннее приветствие на всех камерах
- alias: "Доброе утро"
trigger:
- platform: time
at: "08:00:00"
action:
- service: script.openipc_say_all
data:
message: "Доброе утро! Сегодня {{ states('weather.home') }}"
LNPR - свой автомобиль заехал
- alias: "Свой автомобиль"
trigger:
- platform: state
entity_id: sensor.beward_sipdomofon_last_plate
condition:
- condition: template
value_template: "{{ trigger.to_state.state == 'A123BC77' }}"
action:
- service: script.openipc_say_all
data:
message: "Свой автомобиль заехал, открываю ворота"
- service: switch.turn_on
entity_id: switch.gate_opener
📁 Структура файлов
/config/
├── custom_components/openipc/ # Интеграция
├── tts_cache/ # TTS файлы
│ ├── tts_generate.sh # Генератор A-law для Beward
│ ├── tts_generate_openipc.sh # Генератор PCM для OpenIPC
│ └── debug.log # Логи TTS
├── openipc_say_*.sh # Скрипты для конкретных камер
├── shell_commands.yaml # Shell команды
├── scripts.yaml # Скрипты HA
└── automations.yaml # Автоматизации
🆘 Поддержка
Если у вас возникли проблемы:
Проверьте логи HA: Настройки → Система → Логи
Проверьте логи TTS: cat /config/tts_cache/debug.log
Убедитесь, что камера доступна: ping 192.168.1.x
Проверьте формат аудио: для Beward - A-law, для OpenIPC - PCM
🤝 Вклад в проект
Мы приветствуем любые contributions! Если вы нашли баг или хотите добавить новую функцию:
Форкните репозиторий
Создайте ветку для изменений
Отправьте pull request
📜 Лицензия
Проект распространяется под лицензией MIT.
⭐ Поддержка проекта
Если проект оказался полезным, поставьте звезду на GitHub!
# История изменений
## [2.1.0] - 2026-02-25
### ✨ Новые возможности
- **TTS для OpenIPC камер** - голосовые оповещения через динамик
- **Поддержка нескольких OpenIPC камер** - индивидуальные скрипты для каждой
- **Групповые оповещения** - одна команда для всех камер
### 🔧 Улучшения
- Оптимизирована генерация TTS для PCM формата
- Добавлены скрипты для автоматического восстановления зависимостей
- Улучшена обработка ошибок в shell_commands
### 🐛 Исправления
- Исправлена проблема XRUN (переполнение буфера) на OpenIPC камерах
- Правильная настройка кодеков (PCM для OpenIPC, A-law для Beward)
## [2.0.0] - 2026-02-23
### ✨ Новые возможности
- Поддержка Beward DS07P-LP
- Поддержка Vivotek SD9364-EHL
- TTS для Beward
- LNPR (распознавание номеров) для Beward






