Skip to main content

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

https://img.shields.io/travis/StevenLooman/async_upnp_client.svg https://img.shields.io/pypi/v/async_upnp_client.svg https://img.shields.io/pypi/format/async_upnp_client.svg https://img.shields.io/pypi/pyversions/async_upnp_client.svg https://img.shields.io/pypi/l/async_upnp_client.svg

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, 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

async_upnp_client-0.13.5.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

async_upnp_client-0.13.5-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

File details

Details for the file async_upnp_client-0.13.5.tar.gz.

File metadata

  • Download URL: async_upnp_client-0.13.5.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.8 CPython/3.6.3

File hashes

Hashes for async_upnp_client-0.13.5.tar.gz
Algorithm Hash digest
SHA256 25c172811e594bf2444efab45281708751b98f2c8735450fb8e0affc2eae3271
MD5 308eac5d5a57cbeeff9d96da8b201d54
BLAKE2b-256 1558bb09eb73f9871473bc14ae443da375df4e4b795b19f70299825ee66037eb

See more details on using hashes here.

File details

Details for the file async_upnp_client-0.13.5-py3-none-any.whl.

File metadata

  • Download URL: async_upnp_client-0.13.5-py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.8 CPython/3.6.3

File hashes

Hashes for async_upnp_client-0.13.5-py3-none-any.whl
Algorithm Hash digest
SHA256 02c0f81fd6d09fb379b8142a5e7949e78151551af559804c1e3ea557b90d2cbf
MD5 8173c70c33f9ed239f487f37371a59f7
BLAKE2b-256 335d60d842d79ca65c7b12b7ba55099507a51aff4d6e607e54e22e7aa36fb408

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page