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

设备固件自定义开发

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

相关推荐
无风听海2 小时前
深入讲解 C# 中 string 如何支持 CultureInfo
开发语言·c#
yaoxin5211232 小时前
291. Java Stream API - 从正则表达式创建 Stream
java·开发语言
liu****2 小时前
能源之星案例
人工智能·python·算法·机器学习·能源
BHXDML2 小时前
Java 设计模式详解
java·开发语言·设计模式
程序员三藏2 小时前
软件测试环境搭建及测试过程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
CCPC不拿奖不改名2 小时前
数据处理与分析:pandas基础+面试习题
开发语言·数据结构·python·面试·职场和发展·pandas
余瑜鱼鱼鱼2 小时前
Java数据结构:从入门到精通(十三)
java·开发语言
wzfj123452 小时前
FreeRTOS xTaskCreateStatic 详解
开发语言·c#