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

设备固件自定义开发

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

相关推荐
SeaTunnel30 分钟前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
深度研习笔记38 分钟前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付
python·opencv·webpack
碎光拾影1 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
CCPC不拿奖不改名1 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
Marst Code1 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
databook2 小时前
当散点图不够用时:用 t-SNE 可视化多维数据
python·数据分析·数据可视化
Miao121312 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城3 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience4 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao4 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具