核心用法
Ezviz Device Capture 是一款面向萤石(Ezviz)物联网摄像头的批量抓图工具,主要用于获取多路监控设备的实时画面。核心功能包括:通过 AppKey/AppSecret 自动获取访问 Token,支持单设备/多设备同时抓图,可选下载图片到本地存储,以及智能 Token 缓存机制提升效率。
典型使用流程:
1. 配置环境变量 EZVIZ_APP_KEY / EZVIZ_APP_SECRET / EZVIZ_DEVICE_SERIAL
2. 运行脚本自动获取 Token(有效期7天,智能缓存)
3. 调用萤石 Open API 批量抓图
4. 返回图片 URL(有效期2小时)或下载到本地
配置方式优先级:环境变量 > OpenClaw 配置文件(~/.openclaw/*.json)> 命令行参数。支持从 channels.json 集中管理凭证,实现多技能共享配置。
显著优点
- 自动化 Token 管理:无需手动维护
EZVIZ_ACCESS_TOKEN,内置缓存机制(默认启用,可禁用),到期前5分钟自动刷新 - 多设备高效支持:逗号分隔批量抓图,设备间自动间隔4秒防限流,支持通道号独立指定(
dev1:1,dev2:2) - 灵活凭证配置:环境变量、配置文件、命令行三选一,符合不同安全场景需求
- 安全存储设计:Token 缓存文件权限 600,仅所有者可读写,不记录完整 API 响应
- 官方 API 直连:对接萤石开放平台
openai.ys7.com,非第三方中转,数据可控
潜在缺点与局限性
- 外部数据流出:必须向萤石服务器发送 appKey/appSecret 和设备序列号,无法完全本地闭环
- 凭证管理复杂度:需单独创建萤石开放平台应用、申请专用凭证,对普通用户门槛较高
- Token 缓存风险:默认启用文件缓存(
/tmp/ezviz_global_token_cache/),共享环境需手动禁用 - 功能单一性:仅支持抓图,无视频流、云台控制等其他功能
- 频率限制:单设备建议间隔≥4秒,高频调用易触发错误码 10028
- 依赖外部服务:设备必须在线且支持
support_capture=1,图片 URL 仅保存2小时
适合人群
- 智能家居/店铺管理者:需定期存档监控画面
- 运维巡检人员:批量生成设备状态报告
- 开发者集成:作为 OpenClaw 技能链中的图像采集节点
- 安全合规场景:配合定时任务实现自动化取证
不适合:无萤石设备用户、需要实时视频流场景、对第三方 API 调用敏感的高隔离环境。
常规风险
| 风险类型 | 等级 | 说明 |
|---------|------|------|
| 凭证泄露 | 中高 | AppKey/AppSecret 需严格保管,建议使用最小权限专用凭证 |
| Token 持久化 | 中 | 默认缓存 Token 到临时目录,共享计算机需设置 `EZVIZ_TOKEN_CACHE=0` |
| 隐私合规 | 中 | 抓图可能涉及他人隐私,需符合当地监控法规 |
| API 限流 | 低 | 频繁调用触发 10028 错误,已内置4秒间隔保护 |
| 配置文件扫描 | 低 | 会读取 `~/.openclaw/*.json`,但环境变量优先级更高可覆盖 |
缓解建议:使用容器/VM 隔离运行、定期轮换凭证(90天周期)、高安全环境禁用缓存、审查 token_manager.py 源码后使用。