通过海康萤石API控制家里相机的云台及抓图

通过海康萤石API控制家里相机的云台及抓图

    • 一、背景
    • 二、环境准备
      • 2.1 注册开发者账号
      • 2.2 安装依赖库
      • 2.3 创建`.`env`文件
    • 三、代码片段解释
      • 3.1 加载并使用环境变量
      • 3.2 发送HTTP请求的封装函数
      • 3.3 获取AccessToken
      • 3.4 分页查询设备列表
      • 3.5 抓拍图片
      • 3.6 开始云台控制
      • 3.7 控制云台并抓拍图片
    • 四、完整的代码
    • 五、参考链接

一、背景

在智能家居时代,摄像头已经成为我们生活中不可或缺的一部分。很多朋友都选择使用海康威视或萤石摄像头来监控家中的情况。然而,只用它们的原生App来进行云台控制和抓图似乎并不够灵活方便。借助于海康威视和萤石提供的API,我们可以通过编写自定义代码来实现更加智能化、定制化的摄像头控制。

在这篇技术博客中,我将带你了解如何利用Python完成家里摄像头的云台控制及抓图操作。无论您是一个热爱DIY家居的创客、还是一个追求极致体验的智能家居爱好者,希望这篇博客都能帮助您更好地掌握这一技术。

二、环境准备

2.1 注册开发者账号

访问萤石开放平台,完成以下步骤:

  1. 创建新应用
  2. 获取AppKey和Secret(相当于API的账号密码)
  3. 绑定需要控制的摄像头设备

为什么需要AppKey和Secret?
这是API访问的身份凭证,确保只有授权用户才能操作设备。就像银行账户需要密码才能操作一样。

2.2 安装依赖库

首先,我们需要安装python-dotenv库来读取环境变量。打开终端并运行以下命令:

pip install python-dotenv requests

上面这条命令同时会安装requests库,它是Python中发送HTTP请求的标准库。

2.3 创建.env`文件

为了保密和安全起见,我们将把一些敏感信息(比如AppKey和Secret)存放在环境变量中。在项目根目录下创建一个名为.env的文件,并添加以下内容:

AppKey=你的AppKey
Secret=你的Secret

三、代码片段解释

3.1 加载并使用环境变量

首先我们需要通过读取环境变量获取到你的AppKeySecret,这些信息将用于认证你的请求。

from dotenv import load_dotenv
import os
import requests# 加载环境变量
load_dotenv()
AppKey = os.getenv("AppKey")
Secret = os.getenv("Secret")

3.2 发送HTTP请求的封装函数

接下来,我们需要一个函数来封装常用的HTTP POST请求操作。

def http_requests(url, data):headers = {'Content-Type': 'application/x-www-form-urlencoded'}print(f'Request URL: {url}')response = requests.post(url, headers=headers, data=data)response.raise_for_status()  # 检查是否成功return response.json()

3.3 获取AccessToken

首先我们要获取accessTokenaccessToken是一个认证令牌,用于通过验证来访问海康威视提供的API。

def get_accessToken():url = 'https://open.ys7.com/api/lapp/token/get'data = {"appKey": AppKey, "appSecret": Secret}try:return http_requests(url, data)["data"]['accessToken']except requests.exceptions.RequestException as e:print("Error:", e)return None

关键点说明

  • 获取到的accessToken有效期是7天
  • 每次API调用都需要携带此令牌
  • 实际生产环境需要实现令牌刷新机制

3.4 分页查询设备列表

通过accessToken,我们可以获取到所有绑定了应用的设备。

def list_devices(accessToken):url = 'https://open.ys7.com/api/lapp/device/list'data = {"accessToken": accessToken, "pageStart": 0, "pageSize": 10}try:response_data = http_requests(url, data)return [(x['deviceSerial'], x['deviceName']) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XCUITest 是什么

XCUITest(全称 Xcode UI Test)是苹果官方提供的 iOS/macOS UI 自动化测试框架,集成在 Xcode 开发工具中,专门用于测试 Swift/Objective-C 开发的应用程序。 1. XCUITest 的核心特点 ✅ 官方支持:苹果原生框架&#xf…

mapbox高阶,PMTiles介绍,MBTiles、PMTiles对比,加载PMTiles文件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️Fill面图层样式1.4 ☘️PMTiles介绍1.5…

5.0以上版本antv/g6使用心得

1. 画布只重新渲染数据 graph.render graph.drawgraph,fitview()graph.fitCenter()setData塞入新的数据 const updateGraph (data) > {if (!graph) {console.warn("Graph is not initialized");return;}graph.clear();graph.setData(data);graph.render(); };…

4.5V~100V, 3.8A 峰值电流限, 非同步, 降压转换器,LA1823完美替换MP9487方案

一:综述 LA1823 是一款易用的非同步,降压转换器。 该模块集成了 500mΩ 低导通阻抗的高侧 MOSFET。LA1823 使用 COT 控制技术。此种控制方式有利于快速动态响应,同时简化了反馈环路的设计。LA1823 可以提供最大 2A 的持续负载电流。LA1823有150kHz/240kH…

如何定位并优化慢 SQL?

如何定位并优化慢 SQL? 一、慢 SQL 的定义与影响 1.1 什么是慢 SQL? 慢 SQL是指执行时间超过预期阈值的SQL语句,通常由以下特征: 执行时间超过慢查询阈值(如MySQL默认10秒)消耗大量CPU/IO资源导致连接堆积或系统负载升高关键结论:慢SQL是数据库性能瓶颈的主要诱因,可…

提升WSL中Ubuntu编译速度的完整指南

在 WSL(Windows Subsystem for Linux)中使用 make 编译项目时,如果发现编译速度非常慢,通常是由以下几个原因导致的。以下是一些常见的排查和优化方法: 🔍 一、常见原因及解决方案 ✅ 1. 文件系统性能问题…

77. 组合【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 77. 组合 一、题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 二、测试用例 示例 1: 输入&…

C++中指针与引用的区别详解:从原理到实战

C中指针与引用的区别详解:从原理到实战 1. 引言:指针与引用的重要性 在C编程中,指针和引用是两个极其重要的概念,也是许多初学者容易混淆的地方。作为C的核心特性,它们直接操作内存地址,提供了对内存的直…

WebFuture:网站部分图片突然无法显示的原因

问题描述: 主站群迁移到linux系统后,原先部署在windows下的子站群节点部分图片无法显示。 原因分析: 检查无法显示的图片的路径,发现调用的是原先主站的图片。主站重新部署到linux系统后,图片路径会区分大小写所以统…

uniapp使用Canvas生成电子名片

uniapp使用Canvas生成电子名片 工作中有生成电子名片的一个需求&#xff0c;刚刚好弄了发一下分享分享 文章目录 uniapp使用Canvas生成电子名片前言一、上代码&#xff1f;总结 前言 先看效果 一、上代码&#xff1f; 不对不对应该是上才艺&#xff0c;哈哈哈 <template…

PostgreSQL ALTER TABLE 命令详解

PostgreSQL ALTER TABLE 命令详解 引言 PostgreSQL 是一款功能强大的开源关系型数据库管理系统&#xff0c;它提供了丰富的命令来帮助数据库管理员和开发者管理数据库中的表。其中&#xff0c;ALTER TABLE 命令是 PostgreSQL 中最常用的命令之一&#xff0c;用于修改表的结构…

Kafka KRaft + SSL + SASL/PLAIN 部署文档

本文档介绍如何在 Windows 环境下部署 Kafka 4.x&#xff0c;使用 KRaft 模式、SSL 加密和 SASL/PLAIN 认证。stevensu1/kafka_2.13-4.0.0 1. 环境准备 JDK 17 或更高版本Kafka 4.x 版本&#xff08;本文档基于 kafka_2.13-4.0.0&#xff09; 2. 目录结构 D:\kafka_2.13-4.…

MQTT协议,EMQX部署,MQTTX安装学习

一、MQTT概述 1.什么是MQTT MQTT是一种基于“发布订阅“”模式的消息传输协议。 消息&#xff1a;设备和设备之间传输的数据&#xff0c;或者服务和服务之间要传输的数据。 协议&#xff1a;传输数据时所遵循的规范。 2.常见的通讯模式 &#xff08;1&#xff09;客户端-服…

Java Web 开发详细流程

&#x1f9ed; 一、项目立项与需求分析阶段&#xff08;0%&#xff09; 1.1 商业需求确认 与产品经理沟通核心业务目标 目标&#xff1a;构建一个图书管理系统用户&#xff1a;图书管理员、普通用户功能&#xff1a;登录、查看、增删改图书、权限控制、分页、搜索 1.2 输出文…

学习路之PHP--easyswoole_panel安装使用

学习路之PHP--easyswoole_panel安装使用 一、新建文件夹二、安装三、改配置地址四、访问 IP:Port 自动进入index.html页面 一、新建文件夹 /www/wwwroot/easyswoole_panel 及配置ftp 解压easyswoole_panel源码 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

软件设计综合知识

software-design 软考中级-软件设计师-综合知识&#xff1a;计算机系统基础、操作系统、计算机网络与信息安全、程序语言基础、数据库基础、数据结构与算法、软件工程基础知识、标准与知识产权等。 —— 2025 年 3 月 5 日 甲辰年二月初六 惊蛰 目录 software-design1、计算机基…

海思 35XX MIPI读取YUV422

1.项目背景&#xff1a; 使用海思芯片&#xff0c;接收FPGA发送的MIPI数据&#xff0c;不需要ISP处理&#xff0c;YUV图像格式为YUV422。 2.移植MIPI驱动 修改IMX347的驱动远吗&#xff0c;将I2C读写的部分注释&#xff0c;其他的不用再做修改。 int imx347_slave_i2c_init(ot…

算力租赁革命:弹性模式如何重构数字时代的创新门槛​

一、算力革命&#xff1a;第四次工业革命的核心驱动力​ 在科技飞速发展的当下&#xff0c;我们正悄然迎来第四次工业革命。华为创始人任正非在一场程序设计竞赛中曾深刻指出&#xff0c;这场革命的基础便是大算力。随着 5G、人工智能、大数据、物联网等信息技术的迅猛发展&am…

改写自己的浏览器插件工具 myChromeTools

1. 起因&#xff0c; 目的: 前面我写过&#xff0c; 自己的一个浏览器插件小工具 最近又增加一个小功能&#xff0c;可以自动滚动页面&#xff0c;尤其是对于那些瀑布流加载的网页。最新的代码都在这里 2. 先看效果 3. 过程: 代码 1, 模拟鼠标自然滚动 // 处理滚动控制逻辑…

深度学习篇---OC-SORT简介

OC-SORT&#xff08;Observation-Centric SORT&#xff09;是一种以观测为中心的多目标跟踪算法&#xff0c;旨在解决传统 SORT 算法在目标遮挡、外观变化和复杂交互场景下关联准确性不足的问题。以下是其详细介绍&#xff1a; 核心创新点 以观测为中心的在线平滑&#xff08…