Sign inSign up

bedmah/perehomelab

By bedmah

•Updated about 2 months ago

GitHub - https://github.com/Bedmah/PereHomeLab

Image
0

691

bedmah/perehomelab repository overview

⁠PereHomeLab

Веб-мониторинг кнопок переговорок через Home Assistant.

PereHomeLab подключается к Home Assistant, отслеживает кнопки переговорок, показывает нажатия в веб-интерфейсе, проигрывает звуковые уведомления, сохраняет историю, отображает заряд батарей и позволяет управлять регионами через админку.

⁠Возможности

  • Отслеживание кнопок через Home Assistant WebSocket API
  • Разделение кнопок по регионам / пространствам Home Assistant
  • Главная страница со списком регионов и вкладкой "Все"
  • Отдельные страницы регионов по коротким ссылкам, например /spb, /msk
  • Всплывающие уведомления о нажатиях
  • Отдельный звук, текст подтверждения и настройки истории для каждого региона
  • Загрузка звуков через админку
  • Библиотека звуков с поиском, пагинацией и удалением
  • Регулировка громкости на странице, значение сохраняется в браузере
  • История нажатий в SQLite
  • Ручная синхронизация истории из Home Assistant
  • Отображение заряда батарей кнопок
  • Поиск по батареям
  • Админка с пользователями, сменой пароля, блокировкой и логом входов
  • Логи ошибок backend / Home Assistant в веб-интерфейсе
  • Скачивание kiosk-приложения для Windows прямо из веб-интерфейса
  • Тёмный ТВ-интерфейс
  • Docker-ready

⁠Быстрый запуск

Создайте папку проекта:

mkdir -p /docker/perehomelab
cd /docker/perehomelab
mkdir -p data logs sound app

Создайте файл secret.env:

HA_URL=http://host.docker.internal:8123
HA_TOKEN=your_home_assistant_long_lived_token

HA_AUTO_DISCOVER=true
HA_ENTITY_IDS=
HA_ENTITY_DOMAIN=binary_sensor
HA_DEVICE_CLASS=safety
HA_ENTITY_ID_SUFFIX=
HA_TRIGGER_FROM=
HA_TRIGGER_TO=on
HA_RECONNECT_SECONDS=5
HA_REFRESH_ENTITIES_ON_RECONNECT=false
HA_SYNC_HISTORY_HOURS=24

BUTTON_SOUND=sound/1.mp3
SOUND_PLAY_SECONDS=25
ACK_BUTTON_TEXT=ФА
HISTORY_DB_PATH=data/press_history.db
HISTORY_DEDUP_SECONDS=3

ADMIN_USERNAME=admin
ADMIN_PASSWORD=change_me

APP_DOWNLOAD_DIR=/download-app
APP_DOWNLOAD_FILENAME=PereHomeLabKiosk.exe

Положите звук уведомления в папку:

sound/

Если нужно, положите Windows kiosk-приложение для скачивания в папку:

app/PereHomeLabKiosk.exe

Запустите контейнер:

docker run -d \
  --name perehomelab \
  --restart unless-stopped \
  -p 80:8000 \
  --env-file secret.env \
  --add-host host.docker.internal:host-gateway \
  -v "$(pwd)/data:/app/data" \
  -v "$(pwd)/logs:/app/logs" \
  -v "$(pwd)/app:/download-app" \
  -v "$(pwd)/sound:/app/sound" \
  bedmah/perehomelab:0.0.9

Откройте веб-интерфейс:

http://SERVER_IP/

Админка:

http://SERVER_IP/admin

⁠Home Assistant

Адрес Home Assistant указывается в HA_URL.

Если Home Assistant на этом же сервере, но в другом контейнере:

HA_URL=http://host.docker.internal:8123

Если Home Assistant на другой машине:

HA_URL=http://192.168.1.50:8123

Если Home Assistant в одной Docker-сети с этим контейнером:

HA_URL=http://homeassistant:8123

Токен:

HA_TOKEN=your_home_assistant_long_lived_token

Нужен долгоживущий токен Home Assistant.

⁠Поиск кнопок

Автоматический поиск кнопок:

HA_AUTO_DISCOVER=true
HA_ENTITY_DOMAIN=binary_sensor
HA_DEVICE_CLASS=safety

Сервис ищет сущности Home Assistant типа binary_sensor с device_class: safety.

Если нужно указать кнопки вручную:

HA_AUTO_DISCOVER=false
HA_ENTITY_IDS=binary_sensor.button_1_safety,binary_sensor.button_2_safety

⁠Регионы

Регионы настраиваются в админке.

Для каждого региона можно указать:

  • название региона
  • slug для короткой ссылки, например /spb
  • пространство Home Assistant
  • звук уведомления
  • текст кнопки подтверждения
  • длительность или количество повторов звука
  • сколько часов истории подтягивать

На странице "Все" отображаются нажатия из всех регионов, а в уведомлениях видно, из какого региона пришёл вызов.

⁠Звук

Звуки хранятся в папке:

sound/

Папка подключается в контейнер как volume, поэтому загруженные через админку звуки сохраняются после пересоздания контейнера.

Громкость регулируется в веб-интерфейсе. По умолчанию 100%, после изменения сохраняется в браузере.

⁠История

История хранится в SQLite:

HISTORY_DB_PATH=data/press_history.db

Папка data/ подключается как volume, поэтому история сохраняется после пересоздания контейнера.

Защита от дублей:

HISTORY_DEDUP_SECONDS=3

Синхронизация истории при запуске:

HA_SYNC_HISTORY_HOURS=24

Также историю можно подтянуть вручную из админки по конкретному региону.

⁠Kiosk-приложение

Веб-интерфейс может отдавать Windows-приложение для открытия мониторинга в отдельном kiosk-окне.

Положите файл сюда:

app/PereHomeLabKiosk.exe

В secret.env укажите:

APP_DOWNLOAD_DIR=/download-app
APP_DOWNLOAD_FILENAME=PereHomeLabKiosk.exe

Скачать приложение можно из веб-интерфейса по кнопке или напрямую:

http://SERVER_IP/download-app

⁠Обновление

docker stop perehomelab
docker rm perehomelab
docker pull bedmah/perehomelab:0.0.9

Затем снова выполните команду docker run.

Данные сохраняются в папках:

data/
logs/
sound/
app/

⁠Проверка

Статус:

curl http://localhost/api/status

Диагностика:

curl http://localhost/api/diagnostics

Батареи:

curl http://localhost/api/batteries

История:

curl http://localhost/api/history

⁠Важно

  • Папки data, logs, sound, app лучше всегда подключать как volume.
  • Для загрузки звуков через админку папка sound должна быть подключена без :ro.

Tag summary

Content type

Image

Digest

sha256:363958f68…

Size

54.2 MB

Last updated

about 2 months ago

docker pull bedmah/perehomelab