flyysoft 发表于 2020-3-6 13:25:35

【原创】猫盘刷群晖后LED和风扇控制脚本 更新v2.1

本帖最后由 flyysoft 于 2020-4-9 00:50 编辑

大概是第一个风扇控制脚本把~~

首先:本脚本并不能修复硬盘休眠的问题,需要先确保你的群晖硬盘可以正常休眠脚本才能正常工作!

更新2.1:由于smartctl 会导致硬盘无法休眠,更新一下脚本

感谢“紫萱紫萱”回复120固件上的可用测温命令!(测试了下 119也是可用的
将脚本:sata_temp="\$(smartctl -A /dev/sda | sed -n '/Temperature_Celsius/p' | awk '{print \$10}')"
修改为:sata_temp="\$(smartctl -a /dev/hda -d ata | sed -n '/Temperature_Celsius/p' | awk '{print \$10}')"
(帖子页面引用内容已经修改,附件里面我就不改了请自行修改下

感谢hanxing007指出的脚本问题~已经更新

把以下代码加入群晖开机运行脚本中即可:

v2:功能:硬盘停止转呼吸灯常亮;硬盘启动呼吸灯闪烁
硬盘温度小于等于35,led绿色,风扇停转;
硬盘温度36-49度,led蓝色,风扇工作;
硬盘温度大于50度,led红色,风扇工作;
mkdir -p /tmp/jioben
cat > /tmp/jioben/ledfan.sh <<EOF
#!/bin/sh
if [ ! -d /sys/class/gpio/gpio450 ] ; then
echo 450 > /sys/class/gpio/export
fi
echo out > /sys/class/gpio/gpio450/direction
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x30 0x07
echo 1 > /tmp/jioben/leds.flag
while true
do

sata="\$(hdparm -C /dev/sda |grep 'drive'|awk '{print \$4}')"
ledss="\$(cat /tmp/jioben/leds.flag)"
if [ \$sata = standby ];thensata_temp="1"
led="0x03"
leds="0"
fi
if [ \$sata = active/idle ];then
sata_temp="\$(smartctl -a /dev/hda -d ata | sed -n '/Temperature_Celsius/p' | awk '{print \$10}')"
led="0x73"
leds="1"
fi
if [ \$sata_temp -ge 50 ];then
if [ -f "/tmp/jioben/led31.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x32 0x00
i2cset -y -f 0 0x45 0x33 0x00
i2cset -y -f 0 0x45 0x31 \${led}
i2cset -y -f 0 0x45 0x34 255
echo 1 > /sys/class/gpio/gpio450/value
rm -rf /tmp/jioben/led*.flag
touch /tmp/jioben/led31.flag
echo \${leds} > /tmp/jioben/leds.flag
fi
if [ \$sata_temp -ge 36 ] && [ \$sata_temp -lt 50 ];then
if [ -f "/tmp/jioben/led33.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x31 0x00
i2cset -y -f 0 0x45 0x32 0x00
i2cset -y -f 0 0x45 0x33 \${led}
i2cset -y -f 0 0x45 0x36 255
echo 1 > /sys/class/gpio/gpio450/value
rm -rf /tmp/jioben/led*.flag
touch /tmp/jioben/led33.flag
echo \${leds} > /tmp/jioben/leds.flag
fi
if [ \$sata_temp -lt 36 ];then
if [ -f "/tmp/jioben/led32.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x31 0x00
i2cset -y -f 0 0x45 0x33 0x00
i2cset -y -f 0 0x45 0x32 \${led}
i2cset -y -f 0 0x45 0x35 255
echo 0 > /sys/class/gpio/gpio450/value
rm -rf /tmp/jioben/led*.flag
touch /tmp/jioben/led32.flag
echo \${leds} > /tmp/jioben/leds.flag
fi
sleep 15
done
EOF
bash /tmp/jioben/ledfan.sh
==================================================================
v1:功能:硬盘休眠风扇停止,led绿色呼吸灯;硬盘启动风扇启动,led蓝色呼吸灯
cat > /tmp/led.sh <<EOF
if [ ! -d /sys/class/gpio/gpio450 ] ; then
echo 450 > /sys/class/gpio/export
fi
echo out > /sys/class/gpio/gpio450/direction
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x30 0x07
while true
do
sata="\$(hdparm -C /dev/sda |grep 'drive'|awk '{print \$4}')"
if [ \$sata = standby ];then
i2cset -y -f 0 0x45 0x33 0x00
i2cset -y -f 0 0x45 0x32 0x73
i2cset -y -f 0 0x45 0x35 255
echo 0 > /sys/class/gpio/gpio450/value
fi
if [ \$sata = active/idle ];then
i2cset -y -f 0 0x45 0x32 0x00
i2cset -y -f 0 0x45 0x33 0x73
i2cset -y -f 0 0x45 0x36 255
echo 1 > /sys/class/gpio/gpio450/value
fi
sleep 15
done
EOF
bash /tmp/led.sh
大概解释下:群晖还是完整保留了猫盘本身的gpio接口,只不过数字不同,风扇在群晖里面是450
led部分就就不详细解释了,v1版如果想要led常亮而不是呼吸就把两个0x73改成0x03

看有人说要txt附件那就传一个把
**** Hidden Message *****

也算是抛砖引玉把,我就不过多解释脚本了,希望能看懂的大神加以利用写出更好的脚本!











flyysoft 发表于 2020-3-6 13:34:06

自己顶一个(

xiaonanlxf 发表于 2020-3-6 15:56:40

最好上传个文本,论坛防复制功能太强了,好多乱码!

万一有用呢 发表于 2020-3-6 17:20:23

捧个场......................

flyysoft 发表于 2020-3-6 18:38:01

xiaonanlxf 发表于 2020-3-6 15:56
最好上传个文本,论坛防复制功能太强了,好多乱码!

已经上传了

like1230321 发表于 2020-3-6 18:44:06

方乱码真好

flyysoft 发表于 2020-3-6 19:03:22

like1230321 发表于 2020-3-6 18:44
方乱码真好

v2更新了下 修复了下bug 记得更新

mpmjf13 发表于 2020-3-6 19:05:38

膜拜大佬

mpmjf13 发表于 2020-3-6 19:25:32

大佬按你的这个做了脚本然后启动了灯不会亮
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【原创】猫盘刷群晖后LED和风扇控制脚本 更新v2.1