跳转到主要内容

用于与索尼Songpal设备交互的Python库

项目描述

PyPI version Black

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。最有趣的命令可能是poweroutputvolumesound

一般来说,不带有任何参数的命令会显示一些相关信息,如设置或活动输出。

对于调试,可以通过传递-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 (42.5 kB 查看哈希)

上传

构建分布

python_songpal-0.16.2-py3-none-any.whl (44.2 kB 查看哈希)

上传 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面