【问题标题】:Sonos control api: polling rate & subscriptionSonos 控制 api:轮询率和订阅
【发布时间】:2020-07-02 15:13:55
【问题描述】:

我们正在通过一个小型物联网设备控制 Sonos。该设备将放置在我们客户的家中。 在我们的家庭自动化系统中,我们需要知道播放器/组的播放状态 + 音量。 我们可以以什么轮询速率询问这些参数?

我们不能使用云服务器来处理订阅事件。 我尝试在带有自签名证书的 IOT 设备中放置一个 https 网络服务,但这不起作用。 在我发布订阅后,我在我的网络服务中收到一个请求,但云 Sonos 服务器立即断开连接。 可能是因为证书是自签名的 - 或者还有其他原因吗?

还有其他接收状态事件的方法吗? 在发现期间在玩家 Json 对象中有一个键'websocketUrl'。 文档说“设备的安全 WebSocket URL。有关详细信息,请参阅连接”。 但我找不到有关此的更多信息。 这个可以用吗?

【问题讨论】:

    标签: controls cloud subscription sonos


    【解决方案1】:

    我们可以以什么轮询速率询问这些参数?

    考虑使用订阅而不是轮询。有关更多信息,请参阅此答案:https://stackoverflow.com/a/60893119/4902948

    我们不能使用云服务器来处理订阅事件... 或者还有其他原因吗?
    还有其他方法可以[接收]状态事件吗?

    您必须托管满足一组要求的服务才能接收事件。有关更多信息,请参阅此答案:https://stackoverflow.com/a/57189717/4902948

    另请参阅New features in versions 11.1, 11.2 (S1), & 12.0 (S2) 中的API 凭据和事件的详细信息

    可以使用 ['websocketUrl'] 吗?

    这是不可公开使用的。

    【讨论】:

      【解决方案2】:

      使用(未记录但更有用的)UPnP API 会容易得多。您可以简单地订阅 UPnP RenderingControl 端点,然后每次音量更改时您都会收到一个事件。要查找轨道何时更改,请订阅 AVTransport 端点。

      您可以使用本地服务器执行此操作(毕竟这是每个 Sonos 应用程序的工作方式),也没有特殊的证书要求。

      UPnP 事件在 UPnP 规范中有所描述。

      【讨论】:

        【解决方案3】:

        您的问题没有提供有关您正在使用的语言的详细信息,但如果设备功能强大到可以运行节点,您可以使用my sonos library 进行很好的更改。

        您可以根据需要随时从设备中提取所需信息。或使用build-in 事件订阅。如果你使用事件,它会自动设置一个 http 监听器并自动订阅你正在监听的所有事件。

        事件是即时的(如事件在设备上发生后 50 毫秒到 100 毫秒)。

        如果您请求信息,它会直接发送到设备,并且设备会做出响应。每秒提取多个数据点对我来说从来都不是问题。

        警告如上所述,这使用了未记录的本地 UPNP api,但由于他们自己的应用程序也使用它,我猜这不会很快改变。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-14
          • 2018-05-15
          • 2017-08-08
          • 2016-02-15
          • 1970-01-01
          相关资源
          最近更新 更多