Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Как изменить местоположение UDM pro через API?, UniFi Network
 
Привет всем!

Я использую UDM на лодке и хотел бы автоматически обновлять местоположение через мой Linux-сервер. Скрипт на Python у меня уже готов, все данные под рукой. Как я понял, нужно обращаться к UDM через API. Я уже научился логиниться, но не могу найти способ изменить местоположение UDM через API. Скрипт будет обновлять позицию каждые 10 минут, так как это необходимо, когда лодка в движении. Буду очень благодарен за любую помощь! Спасибо большое!
 
Команда UniFi предоставляет этот shell-скрипт, который должен быть достаточным, чтобы вы смогли войти в систему. Вам нужно будет добавить shell-функцию для вызова curl с нужными аргументами. https://dl.ui.com/unifi/9.0.114-k5dy363g65/unifi_sh_api. Если вы знакомы с python, то использовать pyunifi будет довольно просто. https://github.com/finish06/pyunifi
 
Используй локального пользователя при использовании учетных данных для доступа к "недокументированному" API. Где ты стащил токен и куки без логина, вытащил их из сессии браузера? У меня есть метод авторизации на C#, никогда раньше не использовал python. Ты используешь "https://" + unifi_ip + "/api/auth/login" в качестве URL логина?
 
Как я уже говорил выше, тебе понадобится использовать неофициальный/внутренний API, поэтому скорее всего ты не сможешь использовать токен API, который предоставляется для публичного API. Самый простой способ — воспользоваться существующим модулем API-клиента на Python. Пусть он сам займется аутентификацией. Возможно, тебе придется расширить любой найденный модуль, так как ни в одном из клиентов, которые я видел, не представлен этот API-endpoint, но изменения должны быть небольшими (и ты можешь отправить их обратно в открытый проект). Если настаиваешь на самостоятельной реализации, ты все равно можешь посмотреть код таких проектов, чтобы понять, как это нужно делать.
 
Обновление: мне удалось войти, но только с помощью сессии Token и Cookies. Войти с использованием логина и пароля или API Token пока не получилось. Буду признателен за любую помощь. Похоже, проблема теперь с логином. Но ваши советы были очень полезны, @travis.vitek! Спасибо большое!
 
Привет, @travis.vitek. Пока что без успехов, никак не получается войти в систему со скриптом. Можешь рассказать, как зайти? Нужно ли использовать API-токен? С логином сложно, потому что 2FA обязателен. Спасибо, что вернулся!
 
Мне это нужно для функции геозонирования на моей лодке. Так как я постоянно меняю местоположение. Я использую Protect для моей системы камер и был бы рад геозонированию для настроек сигнализации. Приходится постоянно вручную корректировать местоположение. Спасибо за помощь, ребята. Пробую ваши предложения и сообщу о результатах.
 
Да. Вы совершенно правы. Ни у одной из опубликованных API нет доступа к системным настройкам. :(
 
И вот примерно к чему я и хотел подвести. Я хотел направить его к официальному, задокументированному API. Что, я почти уверен, не содержит никаких API-вызовов для изменения этой настройки.
 
Давайте уточним, это внутренняя (не задокументированная) API. У новой публичной API пока что очень ограниченная функциональность.
 
Приятно, @travis.vitek. Я думал, что UniFi придется включать эту функцию в их официальную документацию API.
 
Всё, что можно изменить через веб-интерфейс, можно изменить и через API. Местоположение консоли, настроенное в разделе Settings > Control Plane > Console > Edit Location on Map, устанавливается через API-запрос. Если войти в консоль локально через браузер, перейти на эту страницу, включить отладку сетевого трафика и изменить настройку, можно увидеть запрос, отправляемый для внесения изменения. Я видел, как делается этот запрос (мне пришлось немного поколдовать с URL, чтобы форум его принял):

PATCH https://<address-of-console>/api/system
Content-Length: 79
Content-Type: application/json
X-Csrf-Token: <omitted>

{
 "lat": 44.640154224653855,
 "long": -123.09947523180344,
 "radius": 500
}

Тебя это должно помочь сделать то, что тебе нужно. Хотя, честно говоря, я не уверен, зачем ты меняешь свое местоположение. Насколько я понимаю, это, вероятно, используется только для обнаружения присутствия Protect, поэтому, наверное, не очень полезно, когда ты не в порту.
 
Хотя я и не использую API, могу только представить, что изменение местоположения не входит в его функционал. API ведь реально предназначен для изменения вещей, которые часто нужно менять, но делает это проще через API. Местоположение – это настройка, которую устанавливают один раз.
 
Зачем тебе это вообще нужно/зачем тебе это может понадобиться? Это местоположение — просто информационный элемент, и ни в какой мере не влияет на реальную работу UDMP. Тебе об этом совершенно не стоит беспокоиться.
Страницы: 1
Читают тему (гостей: 1)