Pre-launch preview — prices, stock and shipping rates shown here are provisional and online payment is not open yet. Questions: service@nenpower.com
English

API

串口 API

姿态跟随显示器支架的 USB-C 串口 JSON 指令集:读取状态、设置位置、切换模式、保存预设与调整跟随参数。

串口 API

预览版文档。 本产品处于上市前预览阶段,规格与指令在发货前可能调整。

支架在电脑上显示为 USB 串口设备(115200 波特率,8N1)。每条指令是一行 JSON,每条回复也是一行 JSON。

读取状态

{"cmd": "status"}
{"ok": true, "mode": "follow", "pos": {"height": 142, "depth": 80, "tilt": 6, "pan": -3},
 "user": {"present": true, "distance_mm": 612}, "fw": "1.2.0"}

位置单位:高度、深度为毫米,俯仰、水平转角为度。

移动

{"cmd": "move", "height": 180, "tilt": 5, "speed": 15}

未指定的轴保持不动。speed 单位为 mm/s(最大 20)。手动移动会把支架切换到 manual 模式。

模式

{"cmd": "mode", "value": "follow"}
取值 行为
follow 持续跟随
nudge 保持位置,驼背超过 20 分钟后缓慢上仰提醒
manual 不自动移动

预设

{"cmd": "preset.save", "slot": "stand"}
{"cmd": "preset.go", "slot": "sit"}

可用槽位:sitstand

跟随参数

{"cmd": "tracking", "deadband_mm": 40, "delay_s": 3, "distance_mm": 600}
字段 默认值 范围 含义
deadband_mm 40 10–120 小于该幅度的头部移动忽略不计
delay_s 3 1–30 移动持续超过该时长后才跟随
distance_mm 600 450–800 目标观看距离

Python 示例:下午 2 点切换到站立

import json, serial, time

arm = serial.Serial("/dev/ttyACM0", 115200, timeout=1)

def send(**cmd):
    arm.write((json.dumps(cmd) + "\n").encode())
    return json.loads(arm.readline())

while True:
    if time.strftime("%H:%M") == "14:00":
        send(cmd="preset.go", slot="stand")
    time.sleep(30)

错误

出错时回复 {"ok": false, "error": "<code>"}。错误码:bad_jsonunknown_cmdout_of_rangeobstructedoverload

最后更新 21 Sep 2026