You've already forked UGREEN-NAS-LED
@@ -44,15 +44,29 @@ function load_module () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function set_net_led_color () {
|
function set_net_led_color () {
|
||||||
local IFS
|
local IFS=' '
|
||||||
NET_SPEED=$(/usr/bin/cat "/sys/class/net/${NET_DEVICE}/speed")
|
|
||||||
NET_SPEED_PERCENTAGE=$(/usr/bin/bc --mathlib <<< "(${NET_SPEED} - ${NET_SPEED_MIN}) / (${NET_SPEED_MAX} - ${NET_SPEED_MIN})")
|
|
||||||
IFS=' '
|
|
||||||
read -r RGB_RED_MIN RGB_GREEN_MIN RGB_BLUE_MIN <<< "${NET_LED_COLOR_SPEED_MIN}"
|
read -r RGB_RED_MIN RGB_GREEN_MIN RGB_BLUE_MIN <<< "${NET_LED_COLOR_SPEED_MIN}"
|
||||||
read -r RGB_RED_MAX RGB_GREEN_MAX RGB_BLUE_MAX <<< "${NET_LED_COLOR_SPEED_MAX}"
|
read -r RGB_RED_MAX RGB_GREEN_MAX RGB_BLUE_MAX <<< "${NET_LED_COLOR_SPEED_MAX}"
|
||||||
RGB_RED=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_RED_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_RED_MAX} - ${RGB_RED_MIN})/1")
|
unset IFS
|
||||||
RGB_GREEN=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_GREEN_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_GREEN_MAX} - ${RGB_GREEN_MIN})/1")
|
RATIO=$(
|
||||||
RGB_BLUE=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_BLUE_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_BLUE_MAX} - ${RGB_BLUE_MIN})/1")
|
/usr/bin/awk -v speed="${NET_SPEED}" -v low="${NET_SPEED_MIN}" -v high="${NET_SPEED_MAX}" \
|
||||||
|
'BEGIN {print (speed - low) / (high - low)}'
|
||||||
|
)
|
||||||
|
RATIO=$(
|
||||||
|
/usr/bin/awk -v r="${RATIO}" 'BEGIN {print (r < 0) ? 0 : (r > 1) ? 1 : r}'
|
||||||
|
)
|
||||||
|
RGB_RED=$(
|
||||||
|
/usr/bin/awk -v ratio="${RATIO}" -v low="${RGB_RED_MIN}" -v high="${RGB_RED_MAX}" \
|
||||||
|
'BEGIN {printf "%.0f", low + ratio * (high - low)}'
|
||||||
|
)
|
||||||
|
RGB_GREEN=$(
|
||||||
|
/usr/bin/awk -v ratio="${RATIO}" -v low="${RGB_GREEN_MIN}" -v high="${RGB_GREEN_MAX}" \
|
||||||
|
'BEGIN {printf "%.0f", low + ratio * (high - low)}'
|
||||||
|
)
|
||||||
|
RGB_BLUE=$(
|
||||||
|
/usr/bin/awk -v ratio="${RATIO}" -v low="${RGB_BLUE_MIN}" -v high="${RGB_BLUE_MAX}" \
|
||||||
|
'BEGIN {printf "%.0f", low + ratio * (high - low)}'
|
||||||
|
)
|
||||||
/usr/bin/echo "${RGB_RED} ${RGB_GREEN} ${RGB_BLUE}" > '/sys/class/leds/netdev/color'
|
/usr/bin/echo "${RGB_RED} ${RGB_GREEN} ${RGB_BLUE}" > '/sys/class/leds/netdev/color'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,16 +86,37 @@ if [[ "${NET_LED_TX_RX}" == 'true' ]]; then
|
|||||||
/usr/bin/echo '1' > '/sys/class/leds/netdev/tx'
|
/usr/bin/echo '1' > '/sys/class/leds/netdev/tx'
|
||||||
/usr/bin/echo '1' > '/sys/class/leds/netdev/rx'
|
/usr/bin/echo '1' > '/sys/class/leds/netdev/rx'
|
||||||
fi
|
fi
|
||||||
/usr/bin/echo '250' > '/sys/class/leds/netdev/interval'
|
/usr/bin/echo '200' > '/sys/class/leds/netdev/interval'
|
||||||
/usr/bin/echo '255 255 255' > '/sys/class/leds/netdev/color'
|
/usr/bin/echo '255 255 255' > '/sys/class/leds/netdev/color'
|
||||||
/usr/bin/echo "${NET_LED_BRIGHTNESS}" > '/sys/class/leds/netdev/brightness'
|
/usr/bin/echo "${NET_LED_BRIGHTNESS}" > '/sys/class/leds/netdev/brightness'
|
||||||
|
|
||||||
|
if [[ -f "/sys/class/net/${NET_DEVICE}/speed" ]]; then
|
||||||
|
NET_SPEED=$(/usr/bin/cat "/sys/class/net/${NET_DEVICE}/speed")
|
||||||
|
else
|
||||||
|
NET_SPEED='N/A'
|
||||||
|
fi
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
GATEWAY=$(/usr/bin/ip route | /usr/bin/mawk '/default/ { print $3 }')
|
GATEWAY=$(/usr/bin/ip route | /usr/bin/mawk '/default/ { print $3 }')
|
||||||
if /usr/bin/ping -q -c '1' -W '1' "${GATEWAY}" &> '/dev/null'; then
|
if /usr/bin/ping -q -c '1' -W '1' "${GATEWAY}" &> '/dev/null'; then
|
||||||
set_net_led_color
|
if ! set_net_led_color; then
|
||||||
|
/usr/bin/echo '255 255 255' > '/sys/class/leds/netdev/color'
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
/usr/bin/echo '255 0 0' > '/sys/class/leds/netdev/color'
|
case "${NET_SPEED}" in
|
||||||
|
100)
|
||||||
|
/usr/bin/echo '255 0 0' > '/sys/class/leds/netdev/color'
|
||||||
|
;;
|
||||||
|
1000)
|
||||||
|
/usr/bin/echo '255 255 0' > '/sys/class/leds/netdev/color'
|
||||||
|
;;
|
||||||
|
10000)
|
||||||
|
/usr/bin/echo '0 255 0' > '/sys/class/leds/netdev/color'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
/usr/bin/echo '255 255 255' > '/sys/class/leds/netdev/color'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
/usr/bin/sleep '1m'
|
/usr/bin/sleep '1m'
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user