Skip to content

feat(home): камеры соседних подъездов и HA-конфиг для каждой камеры - #40

Open
niklzz wants to merge 1 commit into
moleus:devfrom
niklzz:feat-neighbor-cameras
Open

niklzz wants to merge 1 commit into
moleus:devfrom
niklzz:feat-neighbor-cameras

Conversation

@niklzz

@niklzz niklzz commented Sep 7, 2026

Copy link
Copy Markdown

Что сделано

Дом.ру начал отдавать камеры соседних подъездов через
/rest/v1/places/{placeId}/screen-sections (просмотр доступен по подписке Pro. Этот PR выводит их на главную страницу.

  • Для каждого адреса загружаются screen-sections и /rest/v1/places/{placeId}/accesscontrols (pkg/domru/apiWrapper.go, новые модели).
  • На каждую камеру своя карточка: статус, снимок, ссылка на поток и отдельный пример конфигурации Home Assistant (cmd/controllers/home_cameras.go, templates/home.html.tmpl).
  • Камеры сопоставляются по externalCameraId / forpostGroupId, а не по индексу в массиве — старый шаблон подставлял чужую камеру, как только адресов или камер становилось больше одного.
  • Соседние камеры без активной подписки показывают «Требуется подписка Pro» вместо битых ссылок.
  • Права на открытие двери берутся из /accesscontrols: после подключения подписки встроенный список в subscriberplaces отдаёт allowOpen: true для соседних дверей, которые на самом деле открыть нельзя (проверено на живом API). У карточек соседей кнопки «Открыть» нет никогда.
  • Если дополнительные эндпоинты недоступны или возвращают 404 у оператора без screen-sections, базовый список камер всё равно рендерится, а ошибка показывается на странице.
  • Блоки pre переносят длинные URL вместо горизонтального скролла.
  • Убраны три функции шаблона, которые шаблон больше не вызывает.

Проверка

  • Юнит-тесты в cmd/controllers/home_cameras_test.go: сопоставление по ID между адресами, права по подписке, дедупликация между старым и новым списками, деградация при 404/403/503, экранирование и условный рендер шаблона.
  • Проверено на живом аккаунте с подпиской Pro: свой домофон и два соседних подъезда отображаются с рабочими снимками и ссылками /stream/{id}; кнопка открытия есть только у своего домофона.

Dom.ru now exposes cameras of neighboring entrances via
/rest/v1/places/{placeId}/screen-sections (viewable with a Pro
subscription). The home page loads that endpoint per place and renders
one card per camera, with its own Home Assistant snippet.

Cameras are matched by externalCameraId / forpostGroupId instead of the
array index, which broke with more than one place or camera.

Door permissions are taken from /rest/v1/places/{placeId}/accesscontrols:
after a subscription the embedded list in subscriberplaces advertises
allowOpen for neighboring doors that cannot actually be opened. Neighbor
cards never get an "Open" button.

Extra endpoints failing (or 404 on operators without screen-sections)
degrade gracefully: the basic camera list stays visible.
@niklzz niklzz changed the title feat(home): show neighboring entrance cameras and per-camera HA config feat(home): камеры соседних подъездов и HA-конфиг для каждой камеры Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant