Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Как использовать конечные точки подписки Protect API?, UniFi Protect
 
Документация по API Protect для подписки на события, кажется, неверная. Кто-нибудь знает правильные URL-адреса для доступа к этим конечным точкам?
 
Привет @RadicalMRad, я сталкивался с похожими трудностями, но смог успешно установить защищенное WebSocket (wss://) соединение с endpoint UniFi Protect /subscribe/events из моей локальной среды.✅ Рабочий URL: bash

Скопировать

Редактировать
wss://unifi/proxy/protect/integration/v1/subscribe/events
💡 Ключевые моменты для успеха: Да, "integration" (не "integrations") — верно, отличный catch. WebSocket работает через TLS (wss://) на порту 443. Ключевой трюк заключается в следующем: Использовать кастомный TLS-коннектор, отключающий проверку сертификатов (danger_accept_invalid_certs(true)). Установить SNI hostname на "unifi" (чтобы соответствовать CN сертификата). Отправлять необходимый заголовок X-API-Key (как и при вызовах REST API). Большая часть кода, который я писал, была на Rust(;обучаюсь языку), но готов предоставить несколько фрагментов кода. После подключения сервер надежно передает события движения и другие обновления, как ожидается. Я также реализовал регулярную обработку ping для поддержания соединения в живых в периоды бездействия. Надеюсь, это проясняет ситуацию — защищенный путь работает с правильной настройкой!
 
Благодаря настойчивости и "стучанию" по каждому открытому порту моего UDM pro я выяснил, что для использования WebSocket API нужно использовать порт 80, незащищенный HTTP (хотя HTTPS доступен для всех остальных конечных точек), и инициировать WebSocket-соединение по следующему URL: http://unifi/proxy/protect/integration/v1/subscribe/events (или devices). Предполагается, что `unifi` разрешается на ваш локальный Unifi control plane. Обратите внимание, что в качестве начального примера URL в документации Unifi control plane используется "integrations" (Неправильно!) вместо "integration" (Правильно!).
 
Дополнительно, ожидается, что endpoint подписки WebSocket должен возвращать HTTP статус код 101 "Switching Protocols" и переключаться на протокол WebSocket, если используется HTTP клиент. Или, как вариант, просто разрешить входящее WebSocket соединение. Но сервер, развернутый на моём UDM Pro на порту 443, отклоняет WebSocket соединения со статусом 502 "Bad Gateway".
 
Например, я могу получить доступ к другим эндпоинтам, вроде https://unifi/proxy/protect/integration/v1/cameras, без проблем, используя свой API-ключ. Но для URL: https://unifi/proxy/protect/integration/v1/subscribe/devices я получаю ошибку 404 – не найдено.
Страницы: 1
Читают тему (гостей: 1)