RT Key Integration for Home Assistant
Интеграция для работы с камерами и домофонами Ростелеком Key в Home Assistant.
📋 Возможности
📹 Камеры
- Live-стрим с камер в реальном времени
- Периодические скриншоты с настраиваемым интервалом
- Автоматическое обновление токенов при ошибках доступа
- Отслеживание доступности камер (online/offline)
🏢 Домофоны
- Удалённое открытие двери через кнопку
- Отслеживание событий:
- Открытие по ключу (с определением владельца ключа)
- Открытие через приложение
- Открытие по коду/DTMF
- Скриншоты событий — фото на момент события
- Архивное видео — запись с камеры на момент события
⚙️ Настройки
- Гибкая настройка через UI
- Выбор качества скриншотов
- Настраиваемый уровень логирования
- Интервал обновления скриншотов (0 = отключено)
📦 Установка
Вариант 1: Через HACS (рекомендуется)
- Откройте HACS в Home Assistant
- Перейдите в раздел Интеграции
- Нажмите ⋮ (три точки) → Пользовательские репозитории
- Добавьте URL репозитория
- Установите интеграцию RT Key
- Перезапустите Home Assistant
Вариант 2: Вручную
- Скопируйте папку
rtkeyв директорию/config/custom_components/ - Перезапустите Home Assistant
- Перейдите в Настройки → Устройства и службы
- Нажмите Добавить интеграцию
- Найдите RT Key
🔑 Получение токена доступа
Для работы интеграции необходим токен доступа к API Ростелеком Key.
Пошаговая инструкция:
-
Авторизуйтесь на портале Ростелеком Key:
https://key.rt.ru/main/pwa/dashboard -
Откройте инструменты разработчика:
- Нажмите
F12(илиCtrl+Shift+I/Cmd+Option+Iна Mac) - Перейдите на вкладку Network (Сеть)
- Нажмите
-
Отфильтруйте запросы:
В поле фильтра введите:household.key.rt.ru- или
keyapis.key.rt.ru
-
Обновите страницу (
F5) — появятся запросы к API -
Выберите любой запрос из списка (например,
intercomилиcamera_video_data/list) -
Скопируйте токен:
- Перейдите во вкладку Headers (Заголовки)
- Найдите заголовок
Authorization - Скопируйте значение после слова
Bearer(без пробела)
Пример:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6... ↑ скопируйте отсюда -
Вставьте токен при настройке интеграции в Home Assistant
⚠️ Важно: Токен чувствителен к регистру! Копируйте полностью, без пробелов и переносов строк.
⚙️ Настройка интеграции
После добавления интеграции откройте её настройки:
Основные параметры
| Параметр | Описание | По умолчанию |
|---|---|---|
| Название | Уникальное имя интеграции | RT Key |
| Токен | Токен доступа (см. выше) | — |
| Интервал скриншотов | Частота обновления (сек), 0 = отключено | 60 сек |
| Качество скриншотов | Маленькое / Среднее / Большое / Точное | Среднее |
| Уровень логов | DEBUG / INFO / WARNING / ERROR | INFO |
Настройки событий
| Параметр | Описание | По умолчанию |
|---|---|---|
| Отслеживание событий | Включить мониторинг событий | ✅ Вкл |
| Интервал опроса | Частота проверки событий | 15 сек |
| Задержка времени камеры | Лаг синхронизации (сек) | 25 сек |
| Секунд до события | Показывать видео до события | 10 сек |
| Скриншот события | Создавать сущность скриншота | ✅ Вкл |
| Архив события | Создавать камеру архива | ✅ Вкл |
| Сенсор события | Создавать сенсор последнего события | ✅ Вкл |
📱 Сущности
После настройки интеграция создаст следующие сущности:
Для каждой камеры
| Сущность | Тип | Описание |
|---|---|---|
{name} |
Camera | Live-стрим с камеры |
Скриншот {name} |
Image | Периодический скриншот |
Для каждого домофона
| Сущность | Тип | Описание |
|---|---|---|
Открыть {name} |
Button | Кнопка открытия двери |
Последнее событие {name} |
Sensor | Информация о последнем событии |
Скриншот события {name} |
Image | Скриншот на момент события (диагностика) |
Архив события {name} |
Camera | Архивное видео события (диагностика) |
💡 Совет: Сущности из раздела "Диагностика" можно переместить на основную панель через настройки устройства.
🎯 Использование
Просмотр камер
- Откройте Панель управления → Обзор
- Добавьте карточку Camera или Picture Entity
- Выберите нужную камеру
Открытие домофона
- Найдите сущность
button.{name}_open - Нажмите на кнопку в интерфейсе
- Или используйте в автоматизациях:
service: button.press target: entity_id: button.podezd_no1_open
Автоматизации
Примеры использования в автоматизациях:
Уведомление при открытии двери ключом
automation:
- alias: "Уведомление об открытии двери"
trigger:
platform: state
entity_id: sensor.podezd_no1_last_event
condition:
condition: template
value_template: "{{ 'Ключ' in trigger.to_state.state }}"
action:
- service: notify.mobile_app
data:
message: "Дверь открыл: {{ trigger.to_state.state }}"
title: "🚪 Домофон"
Включение света при открытии двери вечером
automation:
- alias: "Свет при открытии двери"
trigger:
platform: state
entity_id: sensor.podezd_no1_last_event
condition:
- condition: sun
after: sunset
- condition: template
value_template: "{{ 'Ключ' in trigger.to_state.state }}"
action:
- service: light.turn_on
target:
entity_id: light.prikhozhaya
Отправка скриншота события в Telegram
automation:
- alias: "Скриншот события в Telegram"
trigger:
platform: state
entity_id: sensor.podezd_no1_last_event
action:
- service: telegram_bot.send_photo
data:
url: >-
{{ state_attr('image.podezd_no1_event_screenshot', 'entity_picture') }}
caption: "Событие: {{ trigger.to_state.state }}"
🔧 Диагностика
Проверка доступности камер
Если камера отображается как недоступна (серая в интерфейсе):
-
Проверьте атрибуты сущности:
Статус: ❌ Нет связи -
Посмотрите логи Home Assistant:
📷 Камера "Лифт 1" (xxx-xxx-xxx) недоступна (404), помечаем как offline -
Камера автоматически восстановится при появлении связи:
✅ Камера "Лифт 1" (xxx-xxx-xxx) снова доступна
Обновление токенов
При получении ошибки 403 Forbidden интеграция автоматически:
- Обнаруживает протухший токен
- Запрашивает новые токены из API
- Повторяет неудачный запрос
Пример в логах:
⚠️ Токен для Камера 1 (xxx-xxx) протух (403), запускаем обновление...
🔄 Принудительное обновление токенов...
✅ Токены обновлены для 8 устройств
Уровень логирования
Измените уровень в настройках интеграции для более детальной отладки:
| Уровень | Когда использовать |
|---|---|
| DEBUG | При проблемах с интеграцией — подробная информация о всех запросах |
| INFO | Повседневное использование (рекомендуется) |
| WARNING | Только предупреждения и ошибки |
| ERROR | Только критические ошибки |
Просмотр событий в реальном времени
Для отладки отслеживания событий установите уровень DEBUG и ищите в логах:
🔄 Запущен цикл опроса событий (интервал 15.0с)
✅ Загружено 2 домофонов: ['39810', '39809']
🔔 Новое событие для домофона 35810: Ключ Вася в 2026-06-26 18:58:19
✅ Скриншот события получен 9dc4eff5-... (61588 байт)
🐛 Решение проблем
❌ Интеграция не добавляется
Симптом: Ошибка "Invalid token" или "Authentication failed"
Решение:
- ✅ Убедитесь, что токен скопирован полностью (начинается с
eyJ...) - ✅ Проверьте, что в токене нет пробелов и переносов строк
- ✅ Убедитесь, что вы скопировали токен без слова
Bearer - ✅ Попробуйте получить новый токен (старый мог истечь)
❌ Камеры не показывают видео
Симптом: Чёрный экран или ошибка загрузки
Решение:
- Проверьте статус камеры в атрибутах (
❌ Нет связи) - Убедитесь, что камера работает в приложении Ростелеком Key
- Перезагрузите интеграцию
- Проверьте логи на наличие ошибок
403или404
❌ Скриншоты не обновляются
Симптом: Изображение не меняется в карточке
Решение:
- Проверьте интервал обновления в настройках (не установлен ли
0) - Увеличьте интервал (минимум 30 сек)
- Проверьте логи на наличие ошибок
❌ События не отслеживаются
Симптом: Сенсор событий показывает "Нет событий"
Решение:
- Убедитесь, что в настройках включено "Отслеживание событий"
- Проверьте интервал опроса (рекомендуется 15 сек)
- Посмотрите логи — должны быть сообщения
🔔 Новое событие для домофона... - Проверьте, что домофон в списке:
✅ Загружено N домофонов: [...]
❌ Неправильное время событий
Симптом: Время события не совпадает с реальным
Решение:
- Убедитесь, что в Home Assistant правильно настроен часовой пояс
(Настройки → Система → Общее → Часовой пояс) - Проверьте параметр "Задержка времени камеры" в настройках
(по умолчанию 25 сек — может отличаться для разных камер)
📊 Структура проекта
custom_components/rtkey/
├── __init__.py # Основной модуль, API клиент
├── button.py # Кнопки открытия домофона
├── camera.py # Live-камеры и архив событий
├── config_flow.py # Настройка через UI
├── image.py # Скриншоты камер и событий
├── sensor.py # Сенсоры событий
├── manifest.json # Метаданные интеграции
├── translations/
│ ├── en.json # Английские переводы
│ └── ru.json # Русские переводы
└── README.md # Документация
Ключевые API endpoints
| Endpoint | Назначение |
|---|---|
keyapis.key.rt.ru/vc/api/v1/camera_video_data/list |
Список всех камер и домофонов |
household.key.rt.ru/api/v2/app/devices/intercom |
Информация о домофонах |
household.key.rt.ru/api/v2/app/devices/{id}/open |
Открытие домофона |
events.key.rt.ru/api/v2/events/list |
События (открытие, звонки) |
key.rt.ru/screenshot/image/... |
Скриншоты камер |
live-vdk4.camera.rt.ru/stream/... |
Live-стрим и архивное видео |
🔐 Безопасность
- ✅ Токен хранится в зашифрованном хранилище Home Assistant
- ⚠️ Не передавайте токен третьим лицам
- 🔄 Регулярно обновляйте токен (рекомендуется раз в 3-6 месяцев)
- 👤 Используйте отдельный аккаунт для интеграции, если возможно
- 🚫 Не публикуйте токен в публичных репозиториях или логах
📝 Changelog
Версия 1.0.0 (2026)
- ✅ Добавлена поддержка камер и домофонов
- ✅ Автоматическое обновление токенов при 403
- ✅ Отслеживание доступности камер (404)
- ✅ События с маппингом ключей
- ✅ Скриншоты и архивное видео событий
- ✅ Гибкие настройки через UI (слайдеры, dropdown)
- ✅ Настраиваемый уровень логирования
- ✅ Переводы на русский и английский
- ✅ Корректная конвертация UTC → локальное время HA
🤝 Вклад в развитие
Приветствуются:
- 🐛 Bug reports (с логами и описанием)
- 💡 Feature requests
- 🔧 Pull requests
- 📚 Улучшение документации
- 🌍 Новые языковые переводы
📄 Лицензия
MIT License — используйте на свой страх и риск.
🙏 Благодарности
- Ростелеком за API домофонов
- Сообществу Home Assistant за отличную платформу
- Всем тестировщикам за помощь в отладке и обратную связь
Разработано с ❤️ для Home Assistant