、查看实时画面、直播流地址、监控画面、设备列表、查看设备清单、设备信息、摄像头清单、摄像头信息、添加设备、删除设备、修改设备信息
**,所有设备信息均通过云端API获取
```
requests>=2.28.0
pyyaml>=6.0
```
```bash
# Debian/Ubuntu系统
sudo apt install -y python3-requests python3-yaml
# 或使用pip安装
pip install requests pyyaml --break-system-packages
```
在执行设备管理操作前,必须按以下优先级顺序获取 open-id:
第 1 步:【最高优先级】检查技能所在目录的配置文件(优先)
路径:skills/smyx_common/scripts/config.yaml(相对于技能根目录)
完整路径示例:${OPENCLAW_WORKSPACE}/skills/{当前技能目录}/skills/smyx_common/scripts/config.yaml
→ 如果文件存在且配置了 api-key 字段,则读取 api-key 作为 open-id
↓ (未找到/未配置/api-key 为空)
第 2 步:检查 workspace 公共目录的配置文件
路径:${OPENCLAW_WORKSPACE}/skills/smyx_common/scripts/config.yaml
→ 如果文件存在且配置了 api-key 字段,则读取 api-key 作为 open-id
↓ (未找到/未配置)
第 3 步:检查用户是否在消息中明确提供了 open-id
↓ (未提供)
第 4 步:❗ 必须暂停执行,明确提示用户提供用户名或手机号作为 open-id
⚠️ 关键约束:
sessionKey 格式解析:
标准格式:agent:<agentId>:<userId>:<channel>:<channelId>
钉钉示例:agent:main:openai-user:dingtalk-connector:__default__:03576226033537657619
└────────────┬────────────┘ └────────┬────────┘
渠道标识 channelId (= chat_id)
提取规则:
| 渠道类型 | sessionKey 特征 | open-id 提取方法 |
|---|---|---|
| -------- | ------------------------- | -------------- |
| 钉钉 | 包含 dingtalk-connector | 取最后一个冒号后的内容 |
| 其他渠道 | 不包含钉钉标识 | 跳过,继续第 2-6 步 |
提取代码示例(Python):
def extract_openid_from_sessionkey(session_key: str) -> str | None:
"""
从 sessionKey 中提取 open-id(钉钉渠道)
Args:
session_key: 完整 sessionKey,如 "agent:main:openai-user:dingtalk-connector:__default__:03576226033537657619"
Returns:
提取的 chat_id,或 None(非钉钉渠道)
"""
if "dingtalk-connector" not in session_key:
return None # 非钉钉渠道,跳过
# 取最后一个冒号后的内容作为 chat_id
chat_id = session_key.split(":")[-1]
# 验证提取结果(钉钉 chat_id 通常为 19 位数字)
if chat_id and len(chat_id) >= 10:
return chat_id
return None
提取代码示例(Bash):
# 从 sessionKey 提取 chat_id
SESSION_KEY="agent:main:openai-user:dingtalk-connector:__default__:03576226033537657619"
# 检查是否为钉钉渠道
if echo "$SESSION_KEY" | grep -q "dingtalk-connector"; then
# 提取最后一个冒号后的内容
OPEN_ID="${SESSION_KEY##*:}"
echo "提取成功:open-id = $OPEN_ID"
# 输出:提取成功:open-id = 03576226033537657619
else
echo "非钉钉渠道,跳过自动提取"
fi
真实案例验证:
✅ 已验证 sessionKey: agent:main:openai-user:dingtalk-connector:__default__:03576226033537657619
✅ 提取结果:open-id = 03576226033537657619
✅ API 调用成功:设备列表查询正常执行
⚠️ 关键约束:
**无需询问用户,直接执行
-m scripts.device_management list --open-id
列出所有设备**
-m scripts.device_management list --open-id (无需额外配置API地址,脚本内置云端API调用逻辑)
-m scripts.device_management add --sn <设备序列号> --name <设备名称> [--type <设备牌子/代码>] [--scode <设备安全码> ] [--scene-code <设备使用场景/场景码> ] [--username
-m scripts.device_management delete --sn <设备序列号> --open-id
-m scripts.device_management update --id <设备ID> --name <新名称> [--ip <新IP>] [其他参数] --open-id
-m scripts.device_management get --sn <设备序列号> --open-id
-m scripts.device_management stream --id <设备ID> [--protocol ] -m scripts.device_management control --sn <设备序列号> --direction
--direction:指定方向,可选值 up/down/left/right/reset--speed:转动速度,范围 1-10,默认 1,速度越大转动幅度越大 -m scripts.device_management control --sn <设备序列号> --sound
--sound:开启声音侦听 可选值 on/off**,保证链接原始可用性
```
http://cmgw-vpc.lechange.com:8888/LCO/BJ10AF5PHAD32E9/0/1/20260129T141842/openhzdc2a6020d5714149b7b5b581634a1b28.m3u8?source=open&id={deviceId}
```
其中:
{deviceId} 部分需要替换为设备的 id 字段值,其他部分固定不变▶️ 查看实时画面用途:设备增删改查、直播流地址获取、设备状态管理)
device_management.py list 脚本已内置云端API调用逻辑,直接运行即可获取设备列表# 列出所有设备
python -m scripts.device_management list --open-id openclaw-control-ui
# 添加大华摄像头设备
python -m scripts.device_management add --sn BJ10AF5PHAD32E9 --name "大门口摄像头" --type "大华" --scode "L21E3BE0" --open-id openclaw-control-ui
# 添加探鸽摄像头设备
python -m scripts.device_management add --sn AJ237DRHX678 --name "客厅摄像头" --type "探鸽" --scene-code "风险监测" --open-id openclaw-control-ui
# 获取设备1的m3u8直播流地址
python -m scripts.device_management stream --id 1 --protocol m3u8 --open-id openclaw-control-ui
# 删除ID为2的设备
python -m scripts.device_management delete --id 2 --open-id openclaw-control-ui
# 删除序列号为BF05CF0PHA7DF14的设备
python -m scripts.device_management delete --sn BJ10AF5PHAD32E9 --open-id openclaw-control-ui
# 控制云台向上转动,速度5(默认)
python -m scripts.device_management control --sn BF05CF0PHA7DF14 --direction up --open-id openclaw-control-ui
# 控制云台向左转动,速度8
python -m scripts.device_management control --sn BF05CF0PHA7DF14 --direction left --speed 8 --open-id openclaw-control-ui
# 开启声音侦听
python -m scripts.device_management control --sn BF05CF0PHA7DF14 --sound on --open-id openclaw-control-ui
# 关闭声音侦听
python -m scripts.device_management control --sn BF05CF0PHA7DF14 --sound off --open-id openclaw-control-ui
| 设备ID | 设备序号 | 设备名称 | 类型 | IP地址 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| --------------------- | ----------------- | ----------- | ----- | --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2020005731198033922 | BJ10AF5PHAD32E9 | 大华摄像头1BD9 | 大华 | - | ✅ 在线 | ▶️ 查看实时画面 |
| 2020001323218033921 | BJ20SF5ASSESEF1 | 客厅摄像头 | IPC | 192.168.1.101 | ❌ 离线 | - |
📹 大华摄像头1BD9 实时画面
-
播放地址:▶️ 点击播放
共 1 个版本