Привет, ребята,
у меня дома стоят несколько UAP, и мне нравится, когда ночью светодиоды выключены. Раньше это отлично работало с версией 3 контроллера и соответствующими прошивками UAP (следовал этому туториалу: . После обновления до версии 4.6 всё перестало работать, и я начал экспериментировать.
UAP имеет множество режимов мигания, обозначенных цифрами. Вот некоторые из них:
0 – выкл.
1 – тёмно-зелёный
2 – оранжевый
3 – светло-зелёный
10 – мигание (тёмно-зелёный / выкл.)
12 – мигание (тёмно-зелёный / оранжевый)
13 – мигание (тёмно-зелёный / светло-зелёный)
20 – мигание (оранжевый / выкл.)
23 – мигание (светло-зелёный / оранжевый)
30 – мигание (светло-зелёный / выкл.)
Я уверен, что их гораздо больше. Части туториала я скопировал у @somgen. Огромное ему спасибо.
Первое, что нужно сделать – создать ssh-ключ, чтобы входить на устройства без запроса пароля. Ключ надо скопировать на каждый UAP, которым вы хотите управлять:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub | ssh <username>@<ip address> 'mkdir .ssh; cat >> .ssh/authorized_keys'
Это скрипт, который нужно запускать. Можно указать список IP или имён хостов для управления или выбрать отдельную точку доступа. Не забудьте дать скрипту права на выполнение (+x) и задать USERNAME. Для параметра -s доступны значения "on", "off" или номер специального режима.
```bash
#!/bin/bash
# Unifi Hardware Username
USERNAME=username
iplist=()
usage() {
echo "Usage: $0 [-i <ip address>] [-s <on|off|Number of Pattern>]" 1>&2
exit 1
}
# Получаем список IP из файла iplist.cfg
getArray() {
ip=0
while read line; do
iplist[ip]=$line
ip=$((ip + 1))
done < $1
}
while getopts ":i:s:b:" o; do
case "${o}" in
i)
i=${OPTARG}
;;
s)
s=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${s}" ]; then
usage
fi
led_SetPattern() {
ssh $USERNAME@${i} "echo $pattern > /proc/gpio/led_pattern; exit";
}
# Получаем IP для дальнейшего управления
if [ ! -z "$i" ]; then
iplist+=("$i")
else
getArray "iplist.cfg"
fi
# Регулярное выражение для проверки, что $s – число
re='^[0-9]+$'
for i in "${iplist[@]}"; do
if [ "$s" == "off" ]; then
pattern=0
elif [ "$s" == "on" ]; then
pattern=1
elif [[ $s =~ $re ]]; then
pattern=$s
else
usage
fi
led_SetPattern $i $pattern
done
```
Создайте файл iplist.cfg и впишите туда IP-адреса ваших точек доступа, по одному на строку. Скрипт можно запускать по расписанию через cron.
//////
Если хотите просто поиграться, можно подключиться по ssh напрямую к точке доступа и поменять режим:
BZ.v3.2.7# echo 13 > /proc/gpio/led_pattern (замените 13 на нужный номер паттерна)
Я тестировал только на стандартных UAP (версия 3.2.7.2816). Надеюсь, вы получите столько же удовольствия, играя с железом, сколько и я 😀
у меня дома стоят несколько UAP, и мне нравится, когда ночью светодиоды выключены. Раньше это отлично работало с версией 3 контроллера и соответствующими прошивками UAP (следовал этому туториалу: . После обновления до версии 4.6 всё перестало работать, и я начал экспериментировать.
UAP имеет множество режимов мигания, обозначенных цифрами. Вот некоторые из них:
0 – выкл.
1 – тёмно-зелёный
2 – оранжевый
3 – светло-зелёный
10 – мигание (тёмно-зелёный / выкл.)
12 – мигание (тёмно-зелёный / оранжевый)
13 – мигание (тёмно-зелёный / светло-зелёный)
20 – мигание (оранжевый / выкл.)
23 – мигание (светло-зелёный / оранжевый)
30 – мигание (светло-зелёный / выкл.)
Я уверен, что их гораздо больше. Части туториала я скопировал у @somgen. Огромное ему спасибо.
Первое, что нужно сделать – создать ssh-ключ, чтобы входить на устройства без запроса пароля. Ключ надо скопировать на каждый UAP, которым вы хотите управлять:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub | ssh <username>@<ip address> 'mkdir .ssh; cat >> .ssh/authorized_keys'
Это скрипт, который нужно запускать. Можно указать список IP или имён хостов для управления или выбрать отдельную точку доступа. Не забудьте дать скрипту права на выполнение (+x) и задать USERNAME. Для параметра -s доступны значения "on", "off" или номер специального режима.
```bash
#!/bin/bash
# Unifi Hardware Username
USERNAME=username
iplist=()
usage() {
echo "Usage: $0 [-i <ip address>] [-s <on|off|Number of Pattern>]" 1>&2
exit 1
}
# Получаем список IP из файла iplist.cfg
getArray() {
ip=0
while read line; do
iplist[ip]=$line
ip=$((ip + 1))
done < $1
}
while getopts ":i:s:b:" o; do
case "${o}" in
i)
i=${OPTARG}
;;
s)
s=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${s}" ]; then
usage
fi
led_SetPattern() {
ssh $USERNAME@${i} "echo $pattern > /proc/gpio/led_pattern; exit";
}
# Получаем IP для дальнейшего управления
if [ ! -z "$i" ]; then
iplist+=("$i")
else
getArray "iplist.cfg"
fi
# Регулярное выражение для проверки, что $s – число
re='^[0-9]+$'
for i in "${iplist[@]}"; do
if [ "$s" == "off" ]; then
pattern=0
elif [ "$s" == "on" ]; then
pattern=1
elif [[ $s =~ $re ]]; then
pattern=$s
else
usage
fi
led_SetPattern $i $pattern
done
```
Создайте файл iplist.cfg и впишите туда IP-адреса ваших точек доступа, по одному на строку. Скрипт можно запускать по расписанию через cron.
//////
Если хотите просто поиграться, можно подключиться по ssh напрямую к точке доступа и поменять режим:
BZ.v3.2.7# echo 13 > /proc/gpio/led_pattern (замените 13 на нужный номер паттерна)
Я тестировал только на стандартных UAP (версия 3.2.7.2816). Надеюсь, вы получите столько же удовольствия, играя с железом, сколько и я 😀
