Skip to content
/ hass Public

OpenIPC Camera for Home Assistant

License

Notifications You must be signed in to change notification settings

OpenIPC/hass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenIPC Camera for Home Assistant

HACS Custom GitHub Release License

Интеграция для управления камерами на прошивке OpenIPC в Home Assistant.

📸 Скриншоты

Управление камерой Запись с OSD Настройки
Снимок экрана 2026-02-22 130328 Снимок экрана 2026-02-22 130357 Снимок экрана 2026-02-22 130412
Датчики Медиа-плеер Автоматизации
Снимок экрана 2026-02-22 130426 Снимок экрана 2026-02-22 130505 Снимок экрана 2026-02-22 130520

Снимок экрана 2026-02-22 130554

интеграция для управления 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)

🔊 Голосовые оповещения (TTS)

  • Beward DS07P-LP - через встроенный динамик (формат A-law)
  • OpenIPC камеры - через подключенный динамик (формат PCM)
  • Поддержка русского и английского языков
  • Индивидуальные и групповые оповещения

📱 Интеграции

  • Telegram (отправка видео и снимков)
  • Автоматизации на все события
  • Поддержка нескольких камер

📦 Установка

Через HACS (рекомендуется)

  1. Откройте HACS в Home Assistant
  2. Нажмите на три точки в правом верхнем углу → "Custom repositories"
  3. Добавьте: https://github.com/himik19872/openipc-hass с категорией "Integration"
  4. Нажмите "Add"
  5. Найдите "OpenIPC Camera" в списке и установите
  6. Перезапустите Home Assistant

Ручная установка

  1. Скачайте последний релиз
  2. Распакуйте содержимое в папку /config/custom_components/openipc/
  3. Перезапустите Home Assistant

⚙️ Настройка

1. Добавление камеры через UI

  1. Перейдите в НастройкиУстройства и службы
  2. Нажмите "Добавить интеграцию"
  3. Найдите "OpenIPC Camera"
  4. Заполните форму:
Поле Описание Пример
IP адрес Адрес камеры в сети 192.168.1.100
HTTP порт Порт веб-интерфейса 80
Имя пользователя Логин для доступа root
Пароль Пароль 12345
Имя камеры Отображаемое имя Уличная камера
RTSP порт Порт для видеопотока 554
Профиль потока Основной/дополнительный main
Тип устройства Модель камеры OpenIPC / Beward / Vivotek

Важно: Выбор правильного типа критичен для работы специфических функций!

2. Настройка Telegram (опционально)

Способ 1 (через configuration.yaml):

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













About

OpenIPC Camera for Home Assistant

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Contributors

Languages