🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+13
View File
@@ -0,0 +1,13 @@
config global 'global'
option enable ''
option device ''
config service 'service'
option id_il 'green'
option id_io 'red'
option id_mode '1'
option ad_app ''
option ad_mode '1'
option pwr_color 'green'
option pwr_mode '0'
+52
View File
@@ -0,0 +1,52 @@
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
STOP=10
CONF=gpioled
GD=/usr/share/gpioled/gd
PWR=/usr/share/gpioled/pwr
ID=/usr/share/gpioled/id
AD=/usr/share/gpioled/ad
service_triggers() {
procd_add_reload_trigger $CONF
}
start_service() {
config_load $CONF
config_get enable global enable
procd_open_instance
$GD start
screen -dmS gpio_pwr $PWR
if [ "$enable" == "id" ]; then
screen -dmS gpio_id $ID
fi
if [ "$enable" == "ad" ]; then
screen -dmS gpio_ad $AD
fi
if [ "$enable" == "id ad" ]; then
screen -dmS gpio_id $ID
screen -dmS gpio_ad $AD
fi
}
stop_service() {
session_list=$(screen -ls | awk '/[0-9]+\./ {print $1}')
for session in $session_list; do
screen -X -S $session quit
done
$GD stop
procd_close_instance
}
restart_service() {
stop_service
start_service
}
reload_service() {
restart
}
@@ -0,0 +1,17 @@
#!/bin/sh
[ ! -f "/usr/share/ucitrack/luci-app-gpioled.json" ] && {
cat > /usr/share/ucitrack/luci-app-gpioled.json << EEOF
{
"config": "gpioled",
"init": "gpioled"
}
EEOF
}
uci -q batch <<-EOF >/dev/null
delete ucitrack.@gpioled[-1]
add ucitrack gpioled
set ucitrack.@gpioled[-1].init=gpioled
commit ucitrack
EOF
rm -rf /tmp/luci*
exit 0
@@ -0,0 +1,89 @@
#!/bin/bash
# Environment GPIOLED
source /usr/share/gpioled/env
function application() {
echo "$TIMESTAMP [$d] $d1" >>$LOG_FILE
while :; do
MONITORING=$(uci get $AAD 2>/dev/null)
if [ "$MONITORING" == "uci: Entry not found" ]; then
if [ "$APP_NOT_FOUND" = false ]; then
APP_NOT_FOUND=true
fi
MONITORING=2
elif [[ "$MONITORING" =~ ^[0-9]+$ ]]; then
if [ "$APP_FOUND" = false ]; then
echo "$TIMESTAMP [$d] $d2" >>$LOG_FILE
echo "$TIMESTAMP [$d] $d4" >>$LOG_FILE
echo "$TIMESTAMP [$d] $d5" >>$LOG_FILE
APP_FOUND=true
fi
MONITORING=$(uci get $AAD)
else
if [ "$APP_INVALID" = false ]; then
echo "$TIMESTAMP [$d] $d2" >>$LOG_FILE
echo "$TIMESTAMP [$d] $d3" >>$LOG_FILE
APP_INVALID=true
break
fi
MONITORING=2
fi
if [ "$MONITORING" -eq 1 ]; then
if [ "$APP_SUCCESS" = false ]; then
echo "$TIMESTAMP [$d] $d7" >>$LOG_FILE
APP_SUCCESS=true
APP_FAIL=false
fi
if [ "$APPON" = false ]; then
APPON=true
fi
elif [ "$MONITORING" -eq 0 ]; then
if [ "$APP_FAIL" = false ]; then
echo "$TIMESTAMP [$d] $d6" >>$LOG_FILE
APP_SUCCESS=false
APP_FAIL=true
fi
if [ "$APPOFF" = false ]; then
APPOFF=true
fi
fi
if [ "$APPON" = true ]; then
if [ "$MAD" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
APPON=false
elif [ "$MAD" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
echo "0" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
APPON=false
elif [ "$MAD" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
echo "0" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
APPON=false
elif [ "$MAD" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
echo "0" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
APPON=false
fi
fi
if [ "$APPOFF" = true ]; then
echo "0" >/sys/class/gpio/gpio$GIRB/value
sleep $MAD
APPOFF=false
fi
done
}
case "${1}" in
*)
application
;;
esac
@@ -0,0 +1,71 @@
#!/bin/bash
# Global environment
GPIOBASE=/sys/class/gpio
DEVICE=$(uci get gpioled.global.device)
LOG_FILE=/tmp/gpioled.log
TIMESTAMP=$(date +'%d-%m-%Y %H:%M:%S')
if [ "$DEVICE" = "HG680PR1" ]; then
GPWR1=483
GPWR2=484
GETH1=481
GETH2=482
GIRB=480
elif [ "$DEVICE" = "HG680PR2" ]; then
GPWR1=425
GPWR2=426
GETH1=506
GETH2=510
GIRB=507
fi
# Info GPIO Device service
a="GPIO Export"
a1="Start $a..."
a2="Device $DEVICE"
a3="Export GPIO $DEVICE successfully"
b="GPIO Unexport"
b1="Start $b..."
b2="Device $DEVICE"
b3="Unexport GPIO $DEVICE successfully"
# Power LED service
c="Power LED"
c1="Start $c..."
c2="Service started successfully"
CPWR=$(uci get gpioled.service.pwr_color)
MPWR=$(uci get gpioled.service.pwr_mode)
# Application Detector service
AAD=$(uci get gpioled.service.ad_app)
MAD=$(uci get gpioled.service.ad_mode)
APP_FOUND=false
APP_NOT_FOUND=false
APP_INVALID=false
APP_SUCCESS=false
APP_FAIL=false
APPON=false
APPOFF=false
d="Application Detector"
d1="Start $d..."
d2="Check application availability..."
d3="Application not found. Is it installed?"
d4="Application installed. Start service..."
d5="Service started successfully"
d6="Status application [Stopped]"
d7="Status application [Running]"
# Internet Detector service
CIDL=$(uci get gpioled.service.id_il)
CIDO=$(uci get gpioled.service.id_io)
MID=$(uci get gpioled.service.id_mode)
INET_SUCCESS=false
INET_FAIL=false
INETON=false
INETOFF=false
e="Internet Detector"
e1="Start $e..."
e2="Service started successfully"
e3="Status internet [Disconnected]"
e4="Status internet [Connected]"
@@ -0,0 +1,55 @@
#!/bin/bash
# Environment GPIOLED
source /usr/share/gpioled/env
function create_gpio() {
echo "$TIMESTAMP [$a] $a1" >>$LOG_FILE
printf "$TIMESTAMP [$a] $a1\n"
echo "$TIMESTAMP [$a] $a2" >>$LOG_FILE
printf "$TIMESTAMP [$a] $a2\n"
echo $GPWR1 >$GPIOBASE/export
echo out >$GPIOBASE/gpio$GPWR1/direction
echo $GPWR2 >$GPIOBASE/export
echo out >$GPIOBASE/gpio$GPWR2/direction
echo $GETH1 >$GPIOBASE/export
echo out >$GPIOBASE/gpio$GETH1/direction
echo $GETH2 >$GPIOBASE/export
echo out >$GPIOBASE/gpio$GETH2/direction
echo $GIRB >$GPIOBASE/export
echo out >$GPIOBASE/gpio$GIRB/direction
echo "$TIMESTAMP [$a] $a3" >>$LOG_FILE
printf "$TIMESTAMP [$a] $a3\n"
}
function remove_gpio() {
echo "$TIMESTAMP [$b] $b1" >>$LOG_FILE
printf "$TIMESTAMP [$b] $b1\n"
echo "$TIMESTAMP [$b] $b2" >>$LOG_FILE
printf "$TIMESTAMP [$b] $b2\n"
echo $GPWR1 >$GPIOBASE/unexport
echo $GPWR2 >$GPIOBASE/unexport
echo $GETH1 >$GPIOBASE/unexport
echo $GETH2 >$GPIOBASE/unexport
echo $GIRB >$GPIOBASE/unexport
echo "$TIMESTAMP [$b] $b3" >>$LOG_FILE
printf "$TIMESTAMP [$b] $b3\n"
}
function usage() {
printf "Use start to run $a service\n"
printf "Use stop to run $b service\n"
}
case "${1}" in
start)
create_gpio
;;
stop)
remove_gpio
;;
*)
usage
;;
esac
+187
View File
@@ -0,0 +1,187 @@
#!/bin/bash
# Environment GPIOLED
source /usr/share/gpioled/env
function internet() {
echo "$TIMESTAMP [$e] $e1" >>$LOG_FILE
echo "$TIMESTAMP [$e] $e2" >>$LOG_FILE
while :; do
CONNECTION=$(ping -q -c 1 -W 1 8.8.8.8 >/dev/null 2>&1 && echo "OK" || echo "Fail")
if [ "$CONNECTION" = "OK" ]; then
if [ "$INET_SUCCESS" = false ]; then
echo "$TIMESTAMP [$e] $e4" >>$LOG_FILE
INET_SUCCESS=true
INET_FAIL=false
fi
if [ "$INETON" = false ]; then
INETON=true
fi
elif [ "$CONNECTION" = "Fail" ]; then
if [ "$INET_FAIL" = false ]; then
echo "$TIMESTAMP [$e] $e3" >>$LOG_FILE
INET_SUCCESS=false
INET_FAIL=true
fi
if [ "$INETOFF" = false ]; then
INETOFF=true
fi
fi
if [ "$INETON" = true ]; then
if [ "$CIDL" = "red" ]; then
if [ "$MID" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
fi
elif [ "$CIDL" = "yellow" ]; then
if [ "$MID" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
fi
elif [ "$CIDL" = "green" ]; then
if [ "$MID" = "0" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "0.1" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "1" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
elif [ "$MID" = "2" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETON=false
fi
fi
fi
if [ "$INETOFF" = true ]; then
if [ "$CIDO" = "red" ]; then
if [ "$MID" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
fi
elif [ "$CIDO" = "yellow" ]; then
if [ "$MID" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
fi
elif [ "$CIDO" = "green" ]; then
if [ "$MID" = "0" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "0.1" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "1" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
elif [ "$MID" = "2" ]; then
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "1" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
echo "0" >/sys/class/gpio/gpio$GETH1/value && echo "0" >/sys/class/gpio/gpio$GETH2/value
sleep $MID
INETOFF=false
fi
fi
fi
done
}
case "${1}" in
*)
internet
;;
esac
@@ -0,0 +1,79 @@
#!/bin/bash
# Environment GPIOLED
source /usr/share/gpioled/env
function power() {
echo "$TIMESTAMP [$c] $c1" >>$LOG_FILE
echo "$TIMESTAMP [$c] $c2" >>$LOG_FILE
while :; do
if [ "$CPWR" = "red" ]; then
if [ "$MPWR" = "0" ]; then
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "0.1" ]; then
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "1" ]; then
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "2" ]; then
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
fi
elif [ "$CPWR" = "yellow" ]; then
if [ "$MPWR" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "1" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
fi
elif [ "$CPWR" = "green" ]; then
if [ "$MPWR" = "0" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "0.1" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "1" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
elif [ "$MPWR" = "2" ]; then
echo "1" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
echo "0" >/sys/class/gpio/gpio$GPWR1/value && echo "0" >/sys/class/gpio/gpio$GPWR2/value
sleep $MPWR
fi
fi
done
}
case "${1}" in
*)
power
;;
esac
@@ -0,0 +1,11 @@
{
"luci-app-gpioled": {
"description": "Grant UCI access for luci-app-gpioled",
"read": {
"uci": [ "gpioled" ]
},
"write": {
"uci": [ "gpioled" ]
}
}
}