python - 触发 Google Nest 相机拍照
问题描述
我知道这是一个相对简单的问题,但我不清楚是否可以安排谷歌巢相机每 15 分钟拍摄一次图像并将其上传到云端。
我查看了 SDM(智能设备管理)API 并发现了以下 POST 请求:
sdm.devices.traits.CameraEventImage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
"params" : {
"eventId" : "26TU35cUFaYxYbQFumKQIilunU..."
}
}
我想知道是否有人对此有任何经验。是否使此 API 调用足以触发相机拍摄图像,或者是否需要直接在相机上进行编程。
解决方案
我还没有找到直接通过该命令生成图像的方法。但是,我能够执行 GenerateRtspStream ,它会为您提供一个有效期为 5 分钟的 rtsps 链接,然后使用此堆栈溢出答案中显示的命令通过ffmpeg从该直播链接创建图像
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
"params" : {
}
}
返回模型的响应
{
"results": {
"streamUrls": {
"rtspUrl": "rtsps://stream:xxx"
},
"streamExtensionToken": "xxxx",
"streamToken": "xxxx",
"expiresAt": "datetime"
}
}
并执行此命令以将 rtsp(s) 转换为名称为“nest-camera-image.jpg”的图像
ffmpeg -y -i rtsp://admin:admin@192.168.10.113:554/live -vframes 1 nest-camera-image.jpg
推荐阅读
- asp.net - 如何以编程方式将“包含虚拟”分配给 asp.net 下拉列表项?
- php - 嵌套 Foreach 循环从 PHP 中的多维数组构造数据列表 - 嵌套 foreach 问题仅重复第一个数组的值
- javascript - 如何进行从数组调用的正则表达式替换
- node.js - CORS 将 HTTP 请求锁定到在 Firebase 上提供的 Angular 上的 Elasticsearch 服务器
- java - Java:如何使用 JNA 执行 ldap 搜索?
- c# - 防止 Page.ClientScript.RegisterOnSubmitStatement 在每次提交时运行
- php - 如何以编程方式检查 .mp4 文件是否未损坏且未丢失电影帧或音频片段
- mysql - Laravel 上不匹配的重复行
- c# - 如何重置 ASP.NET MVC 中验证属性的格式化错误消息?
- ruby-on-rails - 从数组数据创建反应组件