Async UPnP Client
Project description
Asyncio UPnP Client library for Python/asyncio.
Written initially for use in Home Assistant to drive DLNA DMR-capable devices, but useful for other projects as well.
Status
Contributing
See CONTRIBUTING.rst.
Usage
See examples/ for examples on how to use async_upnp_client.
upnp-client
A command line interface is provided via the upnp-client script. This script can be used to:
call an action
subscribe to services and listen for events
show UPnP traffic (–debug-traffic) from and to the device
show pretty printed JSON (–pprint) for human readability
search for devices
listen for advertisements
The output of the script is a single line of JSON for each action-call or subscription-event. See the programs help for more information.
An example of calling an action:
$ 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 } }
An example of subscribing to all services, note that the program stays running until you stop it (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 } } ...
You can subscribe to list of services by providing these names or abbreviated names, such as:
$ upnp-client --pprint subscribe http://192.168.178.10:49152/description.xml RC AVTransport
An example of searching for devices:
$ 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", "_address": "192.168.178.1:49152", "_udn": "uuid:e3a17dd5-9d85-3131-3c34-b827eb498d72", "_source": "search" }
An example of listening for advertisements, note that the program stays running until you stop it (ctrl-c):
$ upnp-client --pprint 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" }
Abstractions
DLNA Digital Media Renderer (DLNA DMR) devices - Primarily built for use with Home Assistant, but might be useful in other projects too.
Internet Gateway Devices (IGD)
Printers
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for async_upnp_client-0.14.15.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d6f4422347cc0aa206377354ee8869792930630c2f9f6ae9d31115091bd808a |
|
MD5 | c4d651b948e9e00c64b624a65587adf7 |
|
BLAKE2b-256 | 0ae9518fefecb83d9bc804ca603491bb2abefb54ab7db3e2e5e9ed8381f8fee3 |
Hashes for async_upnp_client-0.14.15-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 331a7999317f450d0fafc0872ae0c15623f16a7deebd7a1e8f06828cce941705 |
|
MD5 | 8425025a1120825ba5f3cb43dc0d8311 |
|
BLAKE2b-256 | c9f1f1cdf3e1a9325ade9e6f7ede229926a531fd8b419f462ea254cdacd70d9f |