rack:fan 命令放行保持时间 sec,风扇断电显示「停」

Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
zhou yang
2026-10-06 14:35:45 +08:00
共同撰写人 Claude Opus 5.5
父节点 ece65f7c19
当前提交 f2e0a7363e
共修改 5 个文件,包含 30 行新增和 5 行删除
+12
查看文件
@@ -59,12 +59,24 @@ def test_build_command_whitelist_and_ranges():
{"cmd": "power", "rail": True, "on": True}, # bool 不是 int
{"cmd": "vbus", "rail": 1, "on": 1},
{"cmd": "fan", "duty": 1001},
{"cmd": "fan", "duty": 500, "sec": 86401},
{"cmd": "fan", "duty": 500, "sec": -1},
{"cmd": "fan", "duty": 500, "sec": "60"},
{"cmd": "fan", "duty": 500, "sec": True},
]
for b in bad:
with pytest.raises(protocol.CmdError):
protocol.build_command(b)
def test_fan_floor_may_carry_a_hold_time():
"""固件 0.1.21:`sec` 原样带下去;0 / 不给 = 一直保持,命令里就不出现这个键(老固件不认它也没关系)。"""
assert protocol.build_command({"cmd": "fan", "duty": 600}) == {"cmd": "fan", "duty": 600}
assert protocol.build_command({"cmd": "fan", "duty": 600, "sec": 0}) == {"cmd": "fan", "duty": 600}
assert protocol.build_command({"cmd": "fan", "duty": 600, "sec": 90}) == {"cmd": "fan", "duty": 600, "sec": 90}
assert protocol.build_command({"cmd": "fan", "duty": 0, "sec": 86400}) == {"cmd": "fan", "duty": 0, "sec": 86400}
def test_seq_is_strictly_increasing_and_in_range():
t = [1700000000.0]
g = protocol.SeqGen(clock=lambda: t[0])