Skip to main content

萤石云开放平台 Python SDK - 支持云台控制、设备管理、播放地址获取等功能

Project description

lsyiot_ys7_sdk

领数云萤石云SDK - Python版本

简介

这是一个用于对接萤石云开放平台API的Python SDK,提供了简单易用的接口来访问萤石云的各项服务。

特性

  • Token 自动管理 - 自动获取、缓存和刷新 AccessToken,无需手动管理
  • 10002 错误自动重试 - 当 token 过期时自动刷新并重试请求
  • 完整的类型提示 - 使用 dataclass 定义返回实体,IDE 友好
  • 统一的异常处理 - 完善的异常层次结构,便于错误处理

安装

pip install lsyiot-ys7-sdk

快速开始

from lsyiot_ys7_sdk import LsyiotYs7API, PTZDirection, PTZSpeed

# 创建API实例
api = LsyiotYs7API(
    app_key="your_app_key",
    app_secret="your_app_secret"
)

# 无需手动获取 token,SDK 会自动管理
# 获取设备列表
result = api.get_device_list(page_start=0, page_size=10)
print(f"设备总数: {result.page.total}")
for device in result.devices:
    print(f"设备: {device.device_name}, 状态: {'在线' if device.status == 1 else '离线'}")

# 云台控制
api.ptz_start("DEVICE_SERIAL", 1, PTZDirection.LEFT, PTZSpeed.MEDIUM)
api.ptz_stop("DEVICE_SERIAL", 1, direction=PTZDirection.LEFT)

# 设备抓拍
capture = api.capture("DEVICE_SERIAL", 1)
print(f"图片地址: {capture.pic_url}")

Token 自动管理

SDK 内置了完善的 token 管理机制:

  1. 自动获取: 首次调用 API 时自动获取 token
  2. 提前刷新: token 过期前 5 分钟自动刷新
  3. 失败重试: 收到 10002 错误码时自动刷新 token 并重试
# 你也可以手动获取 token(可选)
token_info = api.get_access_token()
print(f"Token: {token_info.access_token}")
print(f"过期时间: {token_info.expire_time}")

API 参考

初始化

api = LsyiotYs7API(app_key: str, app_secret: str)

Token 管理

方法 说明 返回类型
get_access_token() 获取 AccessToken AccessToken

云台控制

方法 说明 返回类型
ptz_start(device_serial, channel_no, direction, speed) 开始云台控制 None
ptz_stop(device_serial, channel_no, direction?) 停止云台控制 None
ptz_mirror(device_serial, channel_no, command) 镜像翻转 None

预置点

方法 说明 返回类型
preset_add(device_serial, channel_no) 添加预置点 PresetIndex
preset_move(device_serial, channel_no, index) 调用预置点 None
preset_clear(device_serial, channel_no, index) 清除预置点 None

设备管理

方法 说明 返回类型
capture(device_serial, channel_no, quality?) 设备抓拍 CaptureResult
get_device_capacity(device_serial) 获取设备能力集 DeviceCapacity
get_device_info(device_serial) 获取设备信息 DeviceInfo
get_device_connection_info(device_serial) 获取设备连接信息 DeviceConnectionInfo
get_device_status(device_serial, channel?) 获取设备状态 DeviceStatus
get_device_list(page_start?, page_size?) 获取设备列表 DeviceListResult

播放地址

方法 说明 返回类型
get_live_address(device_serial, ...) 获取播放地址 LiveAddress
get_stream_address(stream_id, protocol, ...) 获取直播流地址 StreamAddress

枚举类型

PTZDirection - 云台方向

PTZDirection.UP         # 上
PTZDirection.DOWN       # 下
PTZDirection.LEFT       # 左
PTZDirection.RIGHT      # 右
PTZDirection.UP_LEFT    # 左上
PTZDirection.DOWN_LEFT  # 左下
PTZDirection.UP_RIGHT   # 右上
PTZDirection.DOWN_RIGHT # 右下
PTZDirection.ZOOM_IN    # 放大
PTZDirection.ZOOM_OUT   # 缩小
PTZDirection.FOCUS_NEAR # 近焦距
PTZDirection.FOCUS_FAR  # 远焦距
PTZDirection.AUTO       # 自动

PTZSpeed - 云台速度

PTZSpeed.SLOW   # 慢
PTZSpeed.MEDIUM # 适中
PTZSpeed.FAST   # 快

MirrorCommand - 镜像方向

MirrorCommand.UP_DOWN    # 上下翻转
MirrorCommand.LEFT_RIGHT # 左右翻转
MirrorCommand.CENTER     # 中心翻转

异常处理

SDK 提供了统一的异常层次结构:

from lsyiot_ys7_sdk import (
    Ys7SdkError,           # 基础异常
    Ys7SdkAccessTokenError, # Token 相关错误
    Ys7SdkPTZControlError,  # 云台控制错误
    Ys7SdkDeviceCaptureError, # 抓拍错误
    Ys7SdkDeviceError,      # 设备相关错误
    Ys7SdkLiveStreamError,  # 直播流错误
)

try:
    api.ptz_start("DEVICE", 1, PTZDirection.LEFT, PTZSpeed.MEDIUM)
except Ys7SdkPTZControlError as e:
    print(f"云台控制失败: {e}")
except Ys7SdkError as e:
    print(f"SDK错误: {e}")

错误码说明

错误码 说明
200 操作成功
10001 参数错误
10002 accessToken异常或过期(SDK 会自动处理)
10005 appKey被冻结
10017 appKey不存在
10030 appKey和appSecret不匹配
60000 设备不支持云台控制
60001 用户无云台控制权限
60006 网络异常,设备不在线

开发计划

  • AccessToken 获取与自动管理
  • 云台控制(PTZ)
  • 预置点管理
  • 设备抓拍
  • 设备信息查询
  • 播放地址获取
  • 录像回放
  • 告警消息

许可证

Apache-2.0

联系方式

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lsyiot_ys7_sdk-1.1.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lsyiot_ys7_sdk-1.1.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file lsyiot_ys7_sdk-1.1.0.tar.gz.

File metadata

  • Download URL: lsyiot_ys7_sdk-1.1.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for lsyiot_ys7_sdk-1.1.0.tar.gz
Algorithm Hash digest
SHA256 0597e1278b78659d9af2fd3cb18d33e3d04836da968856841ace1ef1b36147cc
MD5 210063605e9d1d846889b04a7f2d9d27
BLAKE2b-256 596ecb0b2993a4fd40d5af3183c91684227457edd629ccc60f9b5f977635b993

See more details on using hashes here.

File details

Details for the file lsyiot_ys7_sdk-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: lsyiot_ys7_sdk-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for lsyiot_ys7_sdk-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 880d64708fe8e3a0715aa61eb7273459403520bbd8e035770b19571127dd9d9d
MD5 67d8a154e9fae5e960a1d5d931b0030a
BLAKE2b-256 bec5a934e33b3a6021c750e155c0cab45e8d8951bde1d0ea3a4fcb094b0d7170

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page