使用SoCo创建Sonos组

时间:2017-11-28 01:21:31

标签: python sonos

有谁知道是否可以通过编程方式创建一个使用SoCo的组?

例如,假设我想将5个设备组合在一起并指定协调员:

ZoneGroup(uid='...', coordinator=SoCo("192.168.0.115"), members=set([SoCo("192.168.0.101"), SoCo("192.168.0.111"), SoCo("192.168.0.102"), SoCo("192.168.0.100"), SoCo("192.168.0.115")]))

我可以在本地实例化此对象,但不知道如何将配置发送到设备以设置拓扑。

2 个答案:

答案 0 :(得分:0)

是。首先,您要加入您希望成为组长的区域。这会将其从之前的任何组中删除。然后将每个其他区域连接到该区域。你了解你的网络,所以你可以提出更好的名字。

one, two, three, four, five = [SoCo("192.168.0.101"), SoCo("192.168.0.111"), SoCo("192.168.0.102"), SoCo("192.168.0.100"), SoCo("192.168.0.115")]

one.unjoin()
two.join(one)
three.join(one)
four.join(one)
five.join(one)

您可以使用one.group(属性,而不是方法)检查​​组成员资格。

one.group

从SoCo对象访问所有内容。无需直接处理ZoneGroup类。

答案 1 :(得分:0)

您可以致电partymode()将所有可用的发言者分组:

#!/usr/bin/env python
import soco
# Use a specific speaker named Livingroom to be the master
device = soco.discovery.by_name("Livingroom")
device.group.coordinator.partymode()

如果您不在乎哪个扬声器是主扬声器,则可以找到其中任何一个:

# Use any speaker as the master
device = soco.discovery.any_soco()

有关更多详细信息,请参见soco.core