49 lines
1.7 KiB
Bash
49 lines
1.7 KiB
Bash
#!/bin/bash
|
||
# lux_test.sh — LPC 照度闭环回归(LUX/LXT 帧 + API 回读校验)
|
||
# 前提:BRT 链路已通(loop_test.sh 全 PASS),触发器 #8/#9 已上传
|
||
# 用法: bash lux_test.sh 全量回归
|
||
# 依赖: /home/tonycao/rs485-lpc_test_rs485.py, curl
|
||
TTY=/dev/ttyUSB0
|
||
API=http://192.168.58.109/api/group
|
||
PASS=0; FAIL=0
|
||
|
||
send() { python3 /home/tonycao/rs485-lpc_test_rs485.py -p $TTY -b 9600 -s "$1" -w 0.5 > /dev/null; }
|
||
level() { curl -s $API | grep -o '"level":[0-9]*' | grep -o '[0-9]*'; }
|
||
check() { # $1=用例名 $2=期望level $3=容差
|
||
local lv=$(level)
|
||
local d=$((lv > $2 ? lv - $2 : $2 - lv))
|
||
if [ $d -le ${3:-2} ]; then echo "PASS $1 -> level=$lv (expect $2±${3:-2})"; PASS=$((PASS+1));
|
||
else echo "FAIL $1 -> level=$lv (expect $2±${3:-2})"; FAIL=$((FAIL+1)); fi
|
||
}
|
||
|
||
echo "== 初始化:BRT=050, LXT=000500 =="
|
||
send 'BRT=050\n'; sleep 2
|
||
send 'LXT=000500\n'; sleep 1
|
||
check "init BRT=050" 50
|
||
|
||
echo "== 死区:LUX=000520(偏差20<50,不应变化)=="
|
||
send 'LUX=000520\n'; sleep 3
|
||
check "deadband 520" 50
|
||
|
||
echo "== 超目标降光:LUX=002000(50→30,-20%步进)=="
|
||
send 'LUX=002000\n'; sleep 3
|
||
check "dim 2000" 30
|
||
|
||
echo "== 欠目标升光:LUX=000000(30→50,+20%步进上限)=="
|
||
send 'LUX=000000\n'; sleep 3
|
||
check "raise 0" 50
|
||
|
||
echo "== 上限限幅:LUX=000000 ×8(收敛100)=="
|
||
for i in $(seq 8); do send 'LUX=000000\n'; sleep 2; done
|
||
check "clamp max" 100
|
||
|
||
echo "== 下限限幅:LUX=200000 ×8(收敛5)=="
|
||
for i in $(seq 8); do send 'LUX=200000\n'; sleep 2; done
|
||
check "clamp min" 5
|
||
|
||
echo "== 恢复:BRT=050 =="
|
||
send 'BRT=050\n'; sleep 2
|
||
check "restore 50" 50
|
||
|
||
echo "RESULT: PASS=$PASS FAIL=$FAIL"
|