异步upnp客户端
async-upnp-client的Python项目详细描述
用于python/asyncio的asyncio upnp客户端库。
最初编写用于Home Assistant以驱动支持dlna dmr的设备,但对其他项目也很有用。
贡献
请参见contribution.rst。
用法
有关如何使用异步upnp_客户端的示例,请参见examples/。
upnp客户端
通过upnp客户端脚本提供命令行界面。此脚本可用于:
- 采取行动
- 订阅服务并收听活动
- 显示从设备到设备的UPNP流量(–调试流量)
- 显示打印精美的json(–pprint)以提高可读性
- 搜索设备
- 收听广告
脚本的输出是每个操作调用或订阅事件的一行json。有关详细信息,请参阅程序帮助。
调用操作的示例:
$ upnp-client --pprint call-action http://192.168.178.10:49152/description.xml RC/GetVolume InstanceID=0 Channel=Master { "timestamp": 1531482271.5603056, "service_id": "urn:upnp-org:serviceId:RenderingControl", "service_type": "urn:schemas-upnp-org:service:RenderingControl:1", "action": "GetVolume", "in_parameters": { "InstanceID": 0, "Channel": "Master" }, "out_parameters": { "CurrentVolume": 70 } }
订阅所有服务的一个示例,请注意程序在停止前一直运行(ctrl-c):
$ upnp-client --pprint subscribe http://192.168.178.10:49152/description.xml \* { "timestamp": 1531482518.3663802, "service_id": "urn:upnp-org:serviceId:RenderingControl", "service_type": "urn:schemas-upnp-org:service:RenderingControl:1", "state_variables": { "LastChange": "<Event xmlns=\"urn:schemas-upnp-org:metadata-1-0/AVT_RCS\">\n<InstanceID val=\"0\">\n<Mute channel=\"Master\" val=\"0\"/>\n<Volume channel=\"Master\" val=\"70\"/>\n</InstanceID>\n</Event>\n" } } { "timestamp": 1531482518.366804, "service_id": "urn:upnp-org:serviceId:RenderingControl", "service_type": "urn:schemas-upnp-org:service:RenderingControl:1", "state_variables": { "Mute": false, "Volume": 70 } } ...
您可以通过提供这些名称或缩写名称订阅服务列表,例如:
$ upnp-client --pprint subscribe http://192.168.178.10:49152/description.xml RC AVTransport
搜索设备的示例:
$ upnp-client --pprint search { "cache-control": "max-age=3600", "date": "Sat, 27 Oct 2018 10:43:42 GMT", "ext": "", "location": "http://192.168.178.1:49152/description.xml", "opt": "\"http://schemas.upnp.org/upnp/1/0/\"; ns=01", "01-nls": "906ad736-cfc4-11e8-9c22-8bb67c653324", "server": "Linux/4.14.26+, UPnP/1.0, Portable SDK for UPnP devices/1.6.20.jfd5", "x-user-agent": "redsonic", "st": "upnp:rootdevice", "usn": "uuid:e3a17dd5-9d85-3131-3c34-b827eb498d72::upnp:rootdevice", "_timestamp": "2018-10-27 12:43:09.125408" }
收听广告的示例:
$ upnp-client --print advertisements { "Host": "239.255.255.250:1900", "Cache-Control": "max-age=30", "Location": "http://192.168.178.1:1900/WFADevice.xml", "NTS": "ssdp:alive", "Server": "POSIX, UPnP/1.0 UPnP Stack/2013.4.3.0", "NT": "urn:schemas-wifialliance-org:device:WFADevice:1", "USN": "uuid:99cb221c-1f15-c620-dc29-395f415623c6::urn:schemas-wifialliance-org:device:WFADevice:1", "_timestamp": "2018-12-23 11:22:47.154293", "_address": "('192.168.178.1', 1900)", "_udn": "uuid:99cb221c-1f15-c620-dc29-395f415623c6", "_source": "advertisement" }
摘要
- DLNA数字媒体渲染器(DLNA DMR)设备 -主要用于Home Assistant,但在其他项目中也可能有用。
- Internet网关设备(IGD)
- 打印机