我有一个运行Linux的自定义嵌入式硬件设备,由Python代码控制。我想创建一个Android客户端,它将自动在本地网络上找到我的任何设备,配置设备并显示它们的数据。
我希望尽可能简化我的实施,并尽可能利用开源软件进行快速实施(强烈倾向于积极维护/支持代码)。
到目前为止,我的研究使我支持 UPnP 实施,使用 SSDP 查找我的设备并让UPnP通过 SOAP 进行通信在我的Android客户端和Python控制的Linux设备之间。
答案 0 :(得分:1)
使用UPnP没有任何问题。这里有两个问题 - 相关但仍然独立:
问题是否真的不相关取决于您使用的库 - 我不知道是否例如Cling允许您仅将SSDP用于非UPnP用例。
对于UPnP问题:
(a)我对Android方面不是很熟悉,但对于Linux UPnP,我会建议GUPnP(我虽然有偏见,因为我参与了它的发展):它是一个稳定且经过良好测试的库。 Python绑定没有记录,但它们应该存在:from gi.repository import GUPnP
。如果您愿意,GUPnP还允许您使用SSDP:请参阅GSSDP库。
(b)绝对定制的设备,如果你找不到一个好的现有匹配,那就是UPnP的设计目标。在GUPnP的情况下,您将编写设备和服务描述(在xml中,请参阅源中的示例)并使用RootDevice加载它们。它负责设备/服务发现和托管描述文档。然后,您只需要实施服务说明中的操作。