Sony微单相机alpha6000 wifi远程控制(1)

引言Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device.索尼于2017年三月Re...
摘要由CSDN通过智能技术生成

引言

Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device.
索尼于2017年三月Release了远程控制API SDK(beta), 给用户提供用WIFI来控制索尼系列相机, 包括运动相机,Alpha系列,以及棱镜组相机。

The Camera Remote API is a flexible API that builds on commonly-used protocols such as HTTP and JSON. And you can develop apps for any operating system, such as Android, iOS or Microsoft® Windows®.
相机控制端芯片搭建了UPnP服务,用户可以通过UDP,HTTP方式向服务端发起请求,访问数据,控制相机和镜头等。

支持的系列 (2020/04)

Sony官网描述

Sony_CameraRemoteAPIbeta_API-Reference_v2.40.pdf
Fig1

工作流示意图

Sony_CameraRemoteAPIbeta_DevelopmentGuide_v1.20.pdf

Fig2

相机设置

  1. 打开相机,按menu进入主菜单
    在这里插入图片描述
  2. 设置Remote control 部分为On。目的是为了让相机允许被远程API控制
    在这里插入图片描述
  3. USB Connection设置为任意。我这里当时是用了PC Remote,因为之前测试了Sony 2020年刚出的SDK USB控制版, 发现目前不支持Alpha6000系列。
    在这里插入图片描述
  4. 进入Appliation List, 选择Smart Remote Embedded,按确定键进入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这个时候,上面会显示相机广播的WIFI名称和密码,在电脑端WIFI找到该热点,连接。

以上就是相机端的准备工作。

连接测试

在这里插入图片描述
根据下载的手册 下载地址

  1. 先通过发送SSDP请求来获得设备相关信息。
  2. 命令格式如上图Request Example

python socket测试

step 1

为方便起见,这里用socket来测试该通信。
代码可以从我的github上找到。

[github.com/MarkMa1990/sonyCameraRemoteCtl_tutorial]

  1. 向IP : 239.255.255.250,端口1900 发送请求
SSDP_ADDR = "239.255.255.250";
SSDP_PORT = 1900;
SSDP_MX = 1;
SSDP_ST = "urn:schemas-sony-com:service:ScalarWebAPI:1";
  1. 请求内容:
ssdpRequest = "M-SEARCH * HTTP/1.1\r\n" + \
                "HOST: %s:%d\r\n" % (SSDP_ADDR, SSDP_PORT) + \
                "MAN: \"ssdp:discover\"\r\n" + \
                "MX: %d\r\n" % (SSDP_MX, ) + \
                "ST: %s\r\n" % (SSDP_ST, ) + "\r\n";

需要注意的是,由于相机端用的Fedora/Linux系统,\r\n是Linux的换行符,windows下的\n 不接受。一开始我没主要到这个问题,所以今天花了很长时间才把第二部分(见下文)调试完。

完整代码如下所示:

import sys
import socket

SSDP_ADDR = "239.255.255.250";
SSDP_PORT = 1900;
SSDP_MX = 1;
SSDP_ST = "urn:schemas-sony-com:service:ScalarWebAPI:1";

ssdpRequest = "M-SEARCH * HTTP/1.1\r\n" + \
                "HOST: %s:%d\r\n" % (SSDP_ADDR, SSDP_PORT) + \
                "MAN: \"ssdp:discover\"\r\n" + \
                "MX: %d\r\n" % (SSDP_MX, ) + \
                "ST: %s\r\n" % (SSDP_ST, ) + "\r\n";

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2)
try:
    # send request to UPnP server
    sock.sendto(ssdpRequest.encode(), (SSDP_ADDR, SSDP_PORT))
    print (sock.recv(1000).decode())
except:
    None

运行python程序:

$python3 test1
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值