首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用upnp发布网页

使用upnp发布网页
EN

Stack Overflow用户
提问于 2020-08-19 10:57:39
回答 1查看 108关注 0票数 0

我正在创建一个使用覆盆子pi的IoT设备。它是由同一个RPi提供的web应用程序控制的。我想用uPnP发布这个网络应用程序,允许任何与uPnP兼容的设备列出并打开它,但我无法实现它。

该服务是用python 3编写的,我尝试使用iot模块。我从这个例子开始,但是它既没有显示在我的PC上的VLC中,也没有显示在我的android手机中的DMS Explorer中。

我怎么发动汽车呢?

这就是我当前配置服务的方式:只是一个没有导出任何有用的测试,只是为了看看它是否有效:

代码语言:javascript
复制
import upnp

class UPNPAnnouncer(object):
    def __init__(self):
        self._loop = None
        self._device = upnp.Device({
            'deviceType': 'urn:sadmin-fr:device:demo:1',
            'friendlyName': 'UPnP Test',
            'uuid': '00a56575-78fa-40fe-b107-8f4b5043a2b0',
            'manufacturer': 'BONNET',
            'manufacturerURL': 'http://sadmin.fr'
        })
        self._service = upnp.Service({
            'serviceType': 'sadmin-fr:service:dummy',
            'serviceId': 'sadmin-fr:serviceId:1',
        })
        self._device.addService(self._service)

    def configure(self, loop):
        self._loop = loop
        self._server = upnp.Annoncer(self._device)
        self._server.initLoop(loop)
        loop.create_task(self._send_announces())


    async def _send_announces(self):
        while True:
            print("Notify upnp")
            self._server.notify()
            await asyncio.sleep(2)
EN

回答 1

Stack Overflow用户

发布于 2022-07-01 13:34:10

正如注释中所说的,实现UPnP设备和服务并不是那么简单。似乎特定库的目标是做大量繁重的工作,但是它的文档非常糟糕,缺少API文档之外的用法示例和说明。

尽管如此,以下是一些建议:

  • 正如前面提到的,如果您正在尝试使用UPnP设备架构2.0版,则必须阅读UPnP。还请看一下官方网站,那里有大量的文档,它们的upnpresources.zip非常有用。
  • 看看使用这个(或另一个)库的工作示例。您可以从upnp-server.py开始,它是从这个库中分叉出来的一个概念证明。看看它是否有效,然后从那里继续。
  • 了解实现UPnP服务器所需的所有部分。至少您需要:
    • 侦听来自客户端的传入多播/单播SSDP M-SEARCH消息的UDP端口1900,并回复它们。这是客户了解设备/服务的主要方式。您还应该定期通过SSDP NOTICE消息为自己做广告。
    • 通过HTTP (TCP,任何端口)为根设备提供一个描述XML文件,并为每个服务提供一个额外的XML。任何one服务器都可以,通常是来自Python的http.server或库的嵌入式服务器,但是如果已经运行了一个one服务器,也可以使用Apache。
    • 创建一些HTTP端点(每个服务2个),并侦听请求调用服务操作和订阅事件的客户端发出的SOAP调用的POST请求
    • 响应SOAP操作调用的返回值,并在需要时使用订阅的HTTP端点向订阅者发送事件。

这个库已经执行了多少上面的操作?使用网络嗅探器,如tcpdump,找出并填写缺失的部分!

最后但并非最不重要的一点是,客户端可能只列出支持他们感兴趣的服务的设备: VLC和智能电视只关心媒体服务器,而且很可能忽略Internet网关设备(家庭路由器)等等。为了进行测试,您需要一个通用的UPnP客户端扫描器/资源管理器,它列出网络上的所有设备和服务

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63485475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档