[Модуль] Keenetic (keenetic)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
SmoKE_xDDD
Сообщения: 750
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 98 раз
Поблагодарили: 788 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение SmoKE_xDDD » Чт апр 08, 2021 9:01 pm

AndreyAA писал(а):
Чт апр 08, 2021 6:35 pm
Добрый день.
А есть возможность перезагрузки интернет центра в определенное время?
Я же в коннекте писал https://connect.smartliving.ru/profile/ ... og409.html
За это сообщение автора SmoKE_xDDD поблагодарил:
AndreyAA (Чт апр 08, 2021 9:40 pm)
Рейтинг: 1.18%
V.A.S.t
Сообщения: 186
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 11 раз
Поблагодарили: 29 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение V.A.S.t » Вт апр 20, 2021 6:25 am

AndreyAA писал(а):
Чт апр 08, 2021 6:35 pm
Добрый день.
А есть возможность перезагрузки интернет центра в определенное время?
Указанный выше способ на новых прошивках работать не будет.

Чтоб перезагрузить роутер по времени нужно создать сценарий со следующим кодом (при установлeнном модуле Keenetic):

Код: Выделить всё

include_once(DIR_MODULES . "keenetic/keenetic.class.php");
$keenetic_module = new keenetic();
$keenetic_module->reboot('IP');
Сегодня выложу обновление, чтоб модуль воспринимал IP-адрес, а не только ID.
За это сообщение автора V.A.S.t поблагодарил:
SmoKE_xDDD (Вт апр 20, 2021 8:54 am)
Рейтинг: 1.18%
Аватара пользователя
SmoKE_xDDD
Сообщения: 750
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 98 раз
Поблагодарили: 788 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение SmoKE_xDDD » Вт апр 20, 2021 8:54 am

V.A.S.t писал(а):
Вт апр 20, 2021 6:25 am
AndreyAA писал(а):
Чт апр 08, 2021 6:35 pm
Добрый день.
А есть возможность перезагрузки интернет центра в определенное время?
Указанный выше способ на новых прошивках работать не будет.

Чтоб перезагрузить роутер по времени нужно создать сценарий со следующим кодом (при установлeнном модуле Keenetic):

Код: Выделить всё

include_once(DIR_MODULES . "keenetic/keenetic.class.php");
$keenetic_module = new keenetic();
$keenetic_module->reboot('IP');
Сегодня выложу обновление, чтоб модуль воспринимал IP-адрес, а не только ID.
Это на сколько новых? У меня viva с ласт версией - работает
V.A.S.t
Сообщения: 186
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 11 раз
Поблагодарили: 29 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение V.A.S.t » Вт апр 20, 2021 9:51 am

SmoKE_xDDD писал(а):
Вт апр 20, 2021 8:54 am
Это на сколько новых? У меня viva с ласт версией - работает
Viva какая? KN-1910? Прошивка 3.6.3?
И модуль "Устройства Keenetic Онлайн" работает? Я, конечно, не разбирался в чем причина, но думал, что от ci они отказались вообще.
Bolik.Stav
Сообщения: 74
Зарегистрирован: Вс янв 20, 2013 11:06 pm
Благодарил (а): 40 раз
Поблагодарили: 13 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение Bolik.Stav » Вс май 16, 2021 9:53 am

А можно реализовать запуск "гостевого WiFi" с MD?
К примеру запуск сети на 3 часа. Пароль и точка могут быть сохранённые или генерироваться при запуске.
V.A.S.t
Сообщения: 186
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 11 раз
Поблагодарили: 29 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение V.A.S.t » Вс май 16, 2021 12:22 pm

Bolik.Stav писал(а):
Вс май 16, 2021 9:53 am
А можно реализовать запуск "гостевого WiFi" с MD?
К примеру запуск сети на 3 часа. Пароль и точка могут быть сохранённые или генерироваться при запуске.
Включение гостевого WiFi можно реализовать в MDM, если знать, какой интерфейс ему соответствует. У меня это WifiMaster0/AccessPoint1.
Чтобы включить этот интерфейс при помощи модуля, можно выполнить следующий код:

Код: Выделить всё

include_once(DIR_MODULES . "keenetic/keenetic.class.php");
$keenetic_module = new keenetic();
$keenetic_module->command('IP роутера', '{"interface": {"WifiMaster0/AccessPoint1": {"up": {"no": false}}}}', 1);
Соответственно, команда для выключения будет '{"interface":{"WifiMaster0/AccessPoint1":{"up": {"no":true}}}}'
Ну а время можно реализовать разными средствами MDM. Например, запустить таймер:

Код: Выделить всё

setTimeOut('KeeneticGuest','include_once(DIR_MODULES . "keenetic/keenetic.class.php"); $keenetic_module = new keenetic(); $keenetic_module->command("IP роутера", \'{"interface": {"WifiMaster0/AccessPoint1": {"up": {"no": true}}}}\', 1);', Количество секунд);
Сейчас выложу обновление с функцией command. После того, как обновитесь, код выше заработает (если совпадет интерфейс гостевой сети).
За это сообщение автора V.A.S.t поблагодарили (всего 2):
SmoKE_xDDD (Вс май 16, 2021 1:34 pm) • Bolik.Stav (Вс май 16, 2021 10:02 pm)
Рейтинг: 2.35%
Аватара пользователя
SmoKE_xDDD
Сообщения: 750
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 98 раз
Поблагодарили: 788 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение SmoKE_xDDD » Чт июн 17, 2021 12:15 pm

Еще раз спасибо за модуль! Есть 2 просьбы для доработки:
1) Вывести массив (Как $status) для получения инфы. У меня MESH сеть и нужно обрабатывать эту инфу (Во 1 получить этаж, во вторых - примерную комнату по мощности сигнала)
screenshot.png
screenshot.png (7.79 КБ) 336 просмотров
2) Подскажи команду для установки ограничения скорости конкретному клиенту/либо блокировка ему инета. (Кейс - родительский контроль)

Заранее спасибо! Модуль класс!

P.S. Плачу 1000 на счет в коннекте =) ;)
V.A.S.t
Сообщения: 186
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 11 раз
Поблагодарили: 29 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение V.A.S.t » Чт июн 17, 2021 1:55 pm

SmoKE_xDDD писал(а):
Чт июн 17, 2021 12:15 pm
Есть 2 просьбы для доработки:
Спасибо за оценку :)
По просьбам:
1) Уже реализовано в виде "отслеживания" - ставишь устройство на "отслеживание" и раз в цикл модуля забираешь инфу из объекта. Подробнее посмотри в справке к модулю.
Также, дополнительно, передается полный массив всех возможных данных об устройстве. Тоже описано в справке :)
2) Команды для ограничения скорости:
В обе стороны:
{"ip":{"traffic-shape":{"mac": "xx:xx:xx:xx:xx:xx", "host": {"rate": скорость в кбит/с}}}}
Асинхронно:
{"ip":{"traffic-shape":{"mac": "xx:xx:xx:xx:xx:xx", "host": {"rate": скорость в кбит/с, "upstream-rate": скорость в кбит/с}}}}
Отключить ограничение скорости:
{"ip":{"traffic-shape":{"mac": "xx:xx:xx:xx:xx:xx", "host": {"no": true}}}}
Отключить доступ в интернет(поменять профиль доступа):
{"ip": {"hotspot": {"host": {"mac": "xx:xx:xx:xx:xx:xx","deny": true,"policy": false,"schedule": false}}}}
Включить доступ в интернет(поменять профиль доступа обратно):
{"ip": { "hotspot": {"host": {"mac":"xx:xx:xx:xx:xx:xx","permit": true,"policy": false,"schedule": false}}}}
Не забывай в функции выставлять флаг сохранения, иначе после перезагрузки настройки слетят.
А вообще в самом кинетике удобно по расписанию ограничивать или отключать доступ в интернет :)
За это сообщение автора V.A.S.t поблагодарил:
SmoKE_xDDD (Чт июн 17, 2021 2:57 pm)
Рейтинг: 1.18%
Аватара пользователя
SmoKE_xDDD
Сообщения: 750
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 98 раз
Поблагодарили: 788 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение SmoKE_xDDD » Сб июн 19, 2021 5:20 pm

Еще вопрос, как получить количество клиентов по каждому интерфейсу/роутеру...?
V.A.S.t
Сообщения: 186
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 11 раз
Поблагодарили: 29 раз

Re: [Модуль] Keenetic (keenetic)

Сообщение V.A.S.t » Вс июн 20, 2021 5:51 am

SmoKE_xDDD писал(а):
Сб июн 19, 2021 5:20 pm
Еще вопрос, как получить количество клиентов по каждому интерфейсу/роутеру...?
Тут надо писать обработку:

Код: Выделить всё

include_once(DIR_MODULES . "keenetic/keenetic.class.php");
$keenetic_module = new keenetic();
$request = $keenetic_module->command('192.168.1.1', '{"show": {"ip": {"hotspot": {}}, "interface": {}, "mws": {"member": {}}}}'); //запрашиваем инфу
$devices = $request['show']['ip']['hotspot']['host']; //массив с девайсами
$ifaces = $request['show']['interface']; //массив с интерфейсами
$mws = $request['show']['mws']['member']; //массив с роутерами (контроллер системы в массиве отсутствует)
foreach($mws as $router){ // соотносим CID роутера с его названием в отделном массиве
 $routercid[$router['cid']] = $router['model'];
}
foreach($devices as $device){ // перебираем список устройств
 if(isset($device['ap'])) $routers['Контроллер'][$device['mac']] = $device; //если точка доступа на контроллере - добавляем в подмассив контроллера
 else if(isset($device['mws'])){ //если на другом роутере Wi-Fi системы
  $routers[$routercid[$device['mws']['cid']]][$device['mac']] = $device; //добавляем в подмассив с названием роутера
 }
}
foreach($routers as $key=>$router){ // перебираем все роутеры
echo '<pre>';
print $key . ": " . count($routers[$key]) . " устройств."; //и выводим на экран количество элементов в подмассиве
echo '</pre>';
}
Этот скрипт выводит на экран количество подключенных к каждому роутеру в Wi-Fi системе устройств. Причем подключенных ТОЛЬКО по Wi-Fi.
По интерфейсам сложнее - в кинетике их очень много, поэтому обработку не писал, но массив $ifaces со всеми интерфейсами в коде есть и при желании также можно обработать в цикле foreach($devices as $device).
За это сообщение автора V.A.S.t поблагодарил:
SmoKE_xDDD (Вс июн 20, 2021 1:39 pm)
Рейтинг: 1.18%
Ответить