萤石开放平台 萤石可编程设备 | 设备脚本自定义开发

设备固件自定义开发

您可以使用专属摄像机,来自定义设备脚本实现个性化设备功能定制。默认情况下,该摄像机无法进行自定义编程。需进行先升级至开发者固件后,用户才能安装自定义的 Python 脚本。

1. 设备升级开发者固件

  1. 设备配网添加到萤石云App账户下

  2. 登录萤石开放平台控制台

  3. 进入可编程设备开发控制台菜单

  4. 点击开发者固件升级

  5. 输入支持的设备序列号。

  6. 等待固件升级完成。

升级成果验证

  • 升级完成后,设备型号在萤石云App中会变为 "CS-C6c-V100-6L10WFL-PROG" ,原生功能将消失。
  • 此时设备可以运行 Python 脚本,实现功能自定义开发。

2. 设备功能自定义编程

本章我们的目标云台自动巡航(-150~150度水平往返转动),当接收到停止指令时,停止转动.

2.1 开发流程

  1. 开发环境准备:任意可以编辑Python代码的程序,推荐VS code或Pycharm
  2. 模板下载:获取Python代码模板
  3. 查询Python SDK 指南
  4. 在用户自定义的部分实现云台循环自动巡航以及停止巡航的方法
  5. 下载Python最佳实现的demo到设备上进行验证调试,示例demo

2.2 代码实现与说明

功能一:云台循环自动巡航

复制代码
#引入线程,将巡航的方法放入到异步线程中执行,避免阻塞主线程
import threading
#巡航的方法
def cruise_ptz():
    while True:
        # 调用Python SDK 指南中的ptz_rotate方法水平旋转150度
        ezapp.ptz_rotate(json.dumps({"pan_angle": 150, "tilt_angle": 0, "speed": 3}))
        # 等待5秒,等待动作完成
        time.sleep(5)
        # 调用Python SDK 指南中的ptz_rotate方法水平旋转-150度
        ezapp.ptz_rotate(json.dumps({"pan_angle": -150, "tilt_angle": 0, "speed": 3}))
        # 等待5秒,等待动作完成
        time.sleep(5)
#创建一个线程,用来启动巡航的程序,线程名为PTZThread,设置为守护线程(daemon=True),这样主线程退出时,后台线程也会被终止,避免阻塞退出
ptz_thread = threading.Thread(target=cruise_ptz, name="PTZThread", daemon=True)
#启动线程,执行巡航
ptz_thread.start()

功能二:添加响应平台停止指令的逻辑

复制代码
#使用线程中的事件对象,来停止巡航的程序
stop_sign = threading.Event() 
#修改巡航的程序,添加退出的判断
def cruise_ptz():
    # 如果停止的事件对象是设置的状态,则退出循环
    while not stop_sign.is_set():
        # 调用[Python SDK 指南]中的ptz_rotate方法水平旋转150度
        ezapp.ptz_rotate(json.dumps({"pan_angle": 150, "tilt_angle": 0, "speed": 3}))
        # 等待5秒,等待动作完成
        time.sleep(5)
        # 调用[Python SDK 指南]中的ptz_rotate方法水平旋转-150度
        ezapp.ptz_rotate(json.dumps({"pan_angle": -150, "tilt_angle": 0, "speed": 3}))
        # 等待5秒,等待动作完成
        time.sleep(5)
#停止巡航的程序
def stop_ptz():
     # 设置停止事件
    stop_sign.set() 
    # 执行停止PTZ操作,调用[Python SDK 指南]中的ptz_stop方法
    ezapp.ptz_stop()
  1. 将编写完毕的代码保存到python模板中用户自定义部分里。

  2. 保存代码为.py的格式,完整代码示例下载

2.3 Python脚本上传&功能调试

3.1 调试步骤

    1. 点击开发产品,进入设备开发。
    1. 点击开发,上传编写的python代码成果物。
    1. 点击设备调试,输入已升级的设备的序列号,选择设备
  1. 下载Python代码:点击下载按钮将代码下载到设备本地。
  2. 验证功能一:查看设备验证云台是否在自动巡航
  3. 验证功能二:下发停止指令,验证云台停止转动
  • 使用api调试工具调用安装到设备的脚本接口,接口说明:https://open.ys7.com/help/1514,示例代码如下。

    curl --location --request PUT 'https://open.ys7.com/api/v3/device/otap/action'
    --header 'accessToken: at.XXXXXX'
    --header 'deviceSerial: XXXXXX'
    --header 'localIndex: 0'
    --header 'resourceCategory: global'
    --header 'domainIdentifier: EZLink'
    --header 'actionIdentifier: TriggerExecuteScript'
    --header 'Content-Type: application/json'
    --data '{
    "name": "stop_ptz",
    "input": ""
    }'

更多设备能力开放,请查看Python SDK 指南

相关推荐
用户7783366132114 小时前
用 React Hook 封装搜索数据:useSerp 的防抖、缓存与错误处理
python·api
65岁退休Coder8 小时前
LangGraph v1.2.9 节点容错策略 & 流式输出 & 持久化记忆管理
后端·python·langchain
ikun_文10 小时前
Django框架路由Router的使用
python·pycharm·django
IvanCodes10 小时前
Python 基础语法(二):字符串与常用操作
python
昭昭日月明10 小时前
LangChain 生态:从链到代理,开发者需要掌握的三大核心
python·langchain·agent
Csvn10 小时前
🐍 Day 8:面向对象编程
后端·python
程序员天天困10 小时前
向量检索不准怎么办:混合检索与 Rerank 重排序召回优化实战
后端·python·ai编程
alphaTao12 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼12 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君12 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python