You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

144 lines
4.8 KiB

Metadata-Version: 2.1
Name: async-upnp-client
Version: 0.13.4
Summary: Async UPnP Client
Home-page: https://github.com/StevenLooman/async_upnp_client
Author: Steven Looman
Author-email: steven.looman@gmail.com
License: http://www.apache.org/licenses/LICENSE-2.0
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Dist: voluptuous (>=0.11.1)
Requires-Dist: aiohttp (>=3.3.2)
Requires-Dist: async-timeout (>=3.0.0)
Requires-Dist: python-didl-lite (==1.2.0)
Async UPnP Client
=================
Asyncio UPnP Client library for Python/asyncio.
Written initially for use in `Home Assistant <https://github.com/home-assistant/home-assistant>`_ to drive `DLNA DMR`-capable devices, but useful for other projects as well.
Status
------
.. image:: https://img.shields.io/travis/StevenLooman/async_upnp_client.svg
:target: https://travis-ci.org/StevenLooman/async_upnp_client/branches
.. image:: https://img.shields.io/pypi/v/async_upnp_client.svg
:target: https://pypi.python.org/pypi/async_upnp_client
.. image:: https://img.shields.io/pypi/format/async_upnp_client.svg
:target: https://pypi.python.org/pypi/async_upnp_client
.. image:: https://img.shields.io/pypi/pyversions/async_upnp_client.svg
:target: https://pypi.python.org/pypi/async_upnp_client
.. image:: https://img.shields.io/pypi/l/async_upnp_client.svg
:target: https://pypi.python.org/pypi/async_upnp_client
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
- discover devices
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 discovering devices::
$ upnp-client --pprint discover
{
"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"
}
Abstractions
------------
- `DLNA Digital Media Renderer` (DLNA DMR) devices
- Primarily built for use with `Home Assistant <https://github.com/home-assistant/home-assistant>`_, but might be useful in other projects too.
- `Internet Gateway Devices` (IGD)
- Printers