用于与索尼Songpal设备交互的Python库
项目描述
Python 3版本的SongPal协议实现,用于索尼音响条和其他设备。
支持设备
该库已测试与以下设备兼容
BDV-N9200W
CMT-SX7B
HT-XT2, HT-XT3
HT-NT5
HT-MT500
HT-ZF9
HT-ST5000
SRS-X77, SRS-X88, SRS-X99
STR-DN1060, STR-DN1070, STR-DN1080
STR-AZ5000ES
STR-AN1000, TA-AN1000
入门
安装
最简单的方法是通过pip安装
$ pip install python-songpal
定位端点
要与设备通信,您需要定位其端点URL。最简单的方法是执行发现命令
$ songpal discover
Discovering for 3 seconds
Found HT-XT3 - BAR-2015
* API version: 1.0
* Endpoint: http://192.168.1.1:10000/sony
* Services:
- Service: guide
- Service: system
- Service: audio
- Service: avContent
这将运行UPnP发现来查找实现ScalarWebAPI的响应式设备。
终端可以通过--endpoint选项定义,或者可以通过设置SONGPAL_ENDPOINT环境变量来定义。
一般用法
附带的songpal工具可以用来控制您的设备。所有可用的命令都可以通过--help列出,并且可以通过传递给子命令来获取每个命令的更多帮助,例如songpal power --help。最有趣的命令可能是power、output、volume和sound。
一般来说,不带有任何参数的命令会显示一些相关信息,如设置或活动输出。
对于调试,可以通过传递-d(--debug)来获取协议级别的信息,也可以多次传递以增加详细程度。
一些命令可以用来调整与该功能相关的设置,通常通过将目标及其期望的值作为参数传递给命令。
$ songpal bluetooth mode off
对于主要不用于设置的命令,如power,需要显式使用set子命令来更改设置。
状态
$ songpal status
将显示有关设备的一些基本信息,例如是否开启以及音量设置。
电源控制
power命令可以用来开启和关闭设备,以及更改其电源设置。
$ songpal power
$ songpal power settings
$ songpal power
$ songpal power set quickStartMode on
音量控制
$ songpal volume [-- output 'output title'] [<value>|mute|unmute]
$ songpal volume 20
$ songpal volume +5
$ songpal volume -10
$ songpal volume --output 'Zone 2'
$ songpal volume --output 'Main Zone' 15
声音设置
您的设备可能支持各种与声音相关的设置,例如夜间模式或调整低音炮音量。
$ songpal sound
$ songpal sound nightMode off
$ songpal sound subwooferLevel 4
区域控制
$ songpal zone
Zones:
* Main Zone (uri: extOutput:zone?zone=1) (active)
* Zone 2 (uri: extOutput:zone?zone=2) (active)
* Zone 3 (uri: extOutput:zone?zone=3)
* HDMI Zone (uri: extOutput:zone?zone=4)
$ songpal zone 'Main Zone'
Activating Main Zone (uri: extOutput:zone?zone=1) (active)
$ songpal zone 'Zone 2' true
Activating Zone 2 (uri: extOutput:zone?zone=2) (active)
$ songpal zone 'Zone 2' false
Deactivating Zone 2 (uri: extOutput:zone?zone=2) (active)
输入控制
没有区域:.. code-block
$ songpal input * HDMI1 (uri: extInput:hdmi?port=1) * HDMI2 (uri: extInput:hdmi?port=2) (active) * HDMI3 (uri: extInput:hdmi?port=3) $ songpal input HDMI1
有区域:.. code-block
$ songpal input Inputs: * SOURCE (uri: extInput:source) - extOutput:zone?zone=2 - extOutput:zone?zone=3 - extOutput:zone?zone=4 * GAME (uri: extInput:game) (active) - extOutput:zone?zone=1 - extOutput:zone?zone=4 * SAT/CATV (uri: extInput:sat-catv) - extOutput:zone?zone=1 - extOutput:zone?zone=2 - extOutput:zone?zone=3 - extOutput:zone?zone=4 * VIDEO 1 (uri: extInput:video?port=1) - extOutput:zone?zone=1 - extOutput:zone?zone=2 - extOutput:zone?zone=3 - extOutput:zone?zone=4 * VIDEO 2 (uri: extInput:video?port=2) - extOutput:zone?zone=1 - extOutput:zone?zone=4 * TV (uri: extInput:tv) - extOutput:zone?zone=1 * SA-CD/CD (uri: extInput:sacd-cd) - extOutput:zone?zone=1 - extOutput:zone?zone=2 - extOutput:zone?zone=3 - extOutput:zone?zone=4 * Bluetooth Audio (uri: extInput:btAudio) - extOutput:zone?zone=1 - extOutput:zone?zone=2 - extOutput:zone?zone=3 $ songpal input 'VIDEO 1' $ songpal input 'SOURCE' --output 'Zone 2'
设备设置
要列出可用设置,请使用settings命令。
$ songpal settings
请注意,一些设置(例如蓝牙设置)未列入全局设置树,但必须单独使用bluetooth命令访问。
组控制
$ songpal group
组命令需要使用UPnP URL --url而不是API --endpoint,并且您还需要您想要分组设备的UUID。这两者都可以通过discover功能获得。所有组命令都应该在主设备上执行。
创建组
$ songpal group --url [upnpurl] create [groupname] [slave uuids]
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" create GroupName uuid:00000000-0000-1010-8000-xxxx uuid:00000000-0000-1010-8000-xxxx
中止组
$ songpal group --url [pnpurl] abort
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" abort
更改音量
$ songpal group --url [pnpurl] volume [value -100,100]
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" volume -- -5
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" volume 5
静音
$ songpal group --url [pnpurl] mute [true|false]
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" mute true
$ songpal group --url "http://x.x.x.x:52323/dmr.xml" mute false
执行自定义命令
对于实验,可以针对终端执行任意命令。您可以通过调用songpal list-all来访问可用的方法。
command可以用于此,如下所示
$ songpal command system getSystemInformation
通知支持
该协议支持基于子系统的订阅通知。执行 songpal 通知 不带任何参数将列出可用的通知。
每个通知都可以单独监听,或者可以选择订阅单个子系统中所有通知。
$ songpal notifications --listen-all avContent
贡献
报告错误或支持的设备
在报告错误或通知未列出的支持设备时,请考虑将 songpal dump-devinfo 的输出附加到您的报告。
API 信息
音频控制 API 描述了该项目(目前部分实现)所实现的 API。
相机远程 API 也与此类似,可能对开发者也很有用。
Home Assistant 支持
自 0.65 版本起,Home Assistant 支持使用此库的设备: https://home-assistant.io/components/media_player.songpal/
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
python_songpal-0.16.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3c1c82d272cb13681bda22e01c29495db082139d4e390b31039870c9bc236e92 |
|
MD5 | 80da6abe19db2b25a52e0b541f4188bc |
|
BLAKE2b-256 | 2712a41586ed15da6e355da914792bc7a6b5a58c1c7b0ff6fd25069a56bad423 |
python_songpal-0.16.2-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b09c5573c4aee8fd1765c1162ca9f7ac2d2a5a0c6ba05b96e2f84d2836be908a |
|
MD5 | 86b003f761c5e560ace8d391b07b3eeb |
|
BLAKE2b-256 | 222474de916c8547e5b87824e74004fdf89d05427d4898bd08f2958c8a1e4ccd |