Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Включение/выключение WLAN через API/CLI, UniFi Network
 
Привет! Я ищу замену своим точкам доступа на OpenWRT. У меня сейчас есть функция, которая позволяет включать и выключать радио через скрипт, который запускается по звонку на VoIP номер. Зачем мне это нужно:  
1) Все мои точки доступа выключают радио в определённое время ночью и автоматически включают утром (хочу снизить уровень радиосигналов ночью ради детей).  
2) Если радио выключено, но мне всё же нужно его включить, я могу позвонить на свой VoIP номер, и скрипт снова его активирует.  

Я видел, что есть расписание по времени, но как насчёт API или CLI-скрипта?  

С уважением,  
Johannes
 
Да, для этого API-эндпоинта действительно требуются данные пользователя с полным доступом.
 
Забыл добавить: при изменении настройки PoE порта нужно изменить массив port_overrides в конфигурации устройства.
 
@Ficksau

Рад слышать, что всё работает, не за что! На данный момент можно изменить режим PoE порта с помощью функции set_device_settings_base() здесь: https://github.com/Art-of-WiFi/UniFi-API-client/blob/master/src/Client.php#L1714. Для этого сначала нужно получить конфигурацию устройства, изменить массив по своему усмотрению (нужно разобраться с несколькими разными режимами PoE), а затем отправить обратно с помощью этой функции. Возможно, со временем сделаю «обёртку» для этого, но реализовать это так, чтобы было достаточно надёжно, не так уж просто. Что касается CK: если текущая нагрузка не слишком высокая, проблем, думаю, не возникнет.
 
Теперь всё работает, спасибо @slooffmaster!  
Есть ли или будет ли функция для изменения настроек PoE на отдельном порту USW? Тогда можно было бы отключать питание точек доступа через API.  
Ещё вопрос: будет ли это «проблемой» для CloudKey, если я буду подключаться к нему каждые 2 минуты через cron/API?
 
По соображениям безопасности я подключаюсь под пользователем с правами только на чтение. Для обнаружения устройств (list_devices) это работает, но я почти уверен, что именно это и есть проблема с POST-запросом в disable_ap(). Позже проверю и отпишусь.
 
Код для входа находится выше моего кода, я просто не скопировал/вставил его сюда, так как это стандартный код, и он работает для других запросов, например, list_devices().
 
Похоже, ты забыл выполнить вход в систему. Вот код, который я использовал для теста:  
/**  
* 24-символьный идентификатор устройства для отключения/включения  
*/  
$device_id = '<введите здесь id вашего устройства>';  
 
/**  
* сайт, к которому принадлежит устройство  
*/  
$site_id = '<введите здесь id вашего сайта>';  
 
/**  
* инициализируем класс подключения к UniFi API и выполняем вход на контроллер  
*/  
$unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $controllerurl, $site_id, $controllerversion);  
$set_debug_mode   = $unifi_connection->set_debug($debug);  
$loginresults     = $unifi_connection->login();  
 
/**  
* затем отключаем устройство  
*/  
$disable_result = $unifi_connection->disable_ap($device_id, true);  
...
 
@slooffmaster

Вот так: $unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $controllerurl, $site_id, $controllerversion); $set_debug_mode = $unifi_connection->set_debug($debug); $unifi_connection->disable_ap('my24char_user_id', true);
 
@Ficksau

Я только что проверил, и у меня с контроллером 5.6.19 всё отлично работает. А как у тебя выглядит код?
 
@slooffmaster, disable_ap() всё ещё должна работать? У меня она вообще ничего не делает, даже ответа нет. Я получил 24-символьный device_id моего ap ac lite через list_devices().
Страницы: 1
Читают тему (гостей: 1)