суббота, 26 декабря 2020 г.

Domoticz. Управление доступом к Wi-Fi по кнопке

Поставил на рабочем столе двухклавишный беспроводной переключатель для управления освещением в кабинете. Свет включает выключает отлично, но появилась мысль повесить на клавишу немного другое действие - отключение доступа к интернет через Wi-Fi для всех устройств кроме основного - рабочего компа. 

Да, дома интернет по LTE, и когда любое устройство в сети начинает качать картинки вконтактике - пинги растут. Особенно это заметно, когда бегаешь в Apex (онлайн-шутер). К сожалению, при всех своих достоинствах, в Keenetic'ах нет настройки приоритета траффика.  

Ранее я уже делал подобное, для ограничения доступа к интернету телефона ребёнка. Создал виртуальный переключатель в Domoticz и привязал к нему скрипт. 

Создадим ещё два скрипта (deny\permit)

cd domoticz/scripts
nano keenetic-all-deny.sh

Вставляем следующее содержимое. Не забываем изменить IP-адрес своего роутера, логин\пароль и MAC-адрес нужного устройства!

Обратите внимание, если отправляем роутеру несколько команд, используем пакетную передачу packet

#!/bin/bash
#Script to deny internet access for some devices over Keenetic KN-1010
/usr/bin/curl -s --digest --user login:password "http://10.0.0.1/ci" -H "Content-Type: application/xml" --data-binary '
<packet><request id="1">
<command name="ip hotspot host">
        <mac>a4:d8:ca:12:a4:g3</mac>
<access>deny</access> </command> </request> <request id="2"> <command name="ip hotspot host"> <mac>a4:d8:ca:12:a4:g4</mac>
<access>deny</access> </command> </request> <request id="3"> <command name="ip hotspot host"> <mac>a4:d8:ca:12:a4:g6</mac>
<access>deny</access> </command> </request> </packet>'
И для операции permit (разрешение доступа)
nano keenetic-all-permit.sh
#!/bin/bash
#Script to deny internet access for some device over Keenetic KN-1010
/usr/bin/curl -s --digest --user login:password "http://10.0.0.1/ci" -H "Content-Type: application/xml" --data-binary '
<packet><request id="1">
        <command name="ip hotspot host">
        <mac>a4:d8:ca:12:a4:g3</mac>
<access>permit</access> </command> </request> <request id="2"> <command name="ip hotspot host"> <mac>a4:d8:ca:12:a4:g4</mac>
<access>permit</access> </command> </request> <request id="3"> <command name="ip hotspot host"> <mac>a4:d8:ca:12:a4:g6</mac>
<access>permit</access> </command> </request> </packet>'
Далее в Domoticz создадим простой переключатель и привяжем к нему выполнение скриптов

Осталось привязать действие к переключателю. Попробуем со второй кнопкой.

Переходим в Настройка>Дополнительно>События
commandArray = {}    
-- управление светом
if  devicechanged['Выключатель в кабинете']=='Switch 1' and otherdevices ['Свет в кабинете'] == 'Off' then       
commandArray['Свет в кабинете'] = 'On'         
elseif  devicechanged['Выключатель в кабинете']=='Switch 1' and otherdevices ['Свет в кабинете'] == 'On' then            
commandArray['Свет в кабинете'] = 'Off' 
-- управление доступом в интернет      
elseif  devicechanged['Выключатель в кабинете']=='Switch 2' and otherdevices ['Доступ в интернет'] == 'Off' then            
commandArray['Доступ в интернет'] = 'On'
elseif  devicechanged['Выключатель в кабинете']=='Switch 2' and otherdevices ['Доступ в интернет'] == 'On' then            
commandArray['Доступ в интернет'] = 'Off'
end    
return commandArray
Более подробно командах в Keenetic CLI читаем в свежей редакции от 10 декабря 2020.
UPD! В новых прошивках >3.5.1 появилась команда ip hotspot host service-class которая позволяет установить класс обслуживания для устройств. 

К сожалению, проверить текущий класс обслуживания для устройства через GUI не получится, этот функционал только в тестовой версии прошивки 3.6.

Комментариев нет :

Отправить комментарий