rs485-lpc/lux_test.sh

49 lines
1.7 KiB
Bash
Raw Permalink Normal View History

#!/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"