Metadata-Version: 2.1
Name: ssdp
Version: 1.1.0
Summary: Python asyncio library for Simple Service Discovery Protocol (SSDP).
Home-page: https://github.com/codingjoe/ssdp
Author: Johannes Hoppe
Author-email: info@johanneshoppe.com
License: MIT
Keywords: ssdp,python,asyncio,upnp,iot
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Framework :: AsyncIO
Classifier: Topic :: System :: Networking
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Home Automation
License-File: LICENSE

Python SSDP
===========

Python asyncio library for Simple Service Discovery Protocol (SSDP).

SSDP is a UPnP sub standard. For more information see: https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol

Setup
-----

.. code:: shell

    python3 -m pip install ssdp


Usage
-----

.. code:: python

    import asyncio
    import socket

    import ssdp


    class MyProtocol(ssdp.SimpleServiceDiscoveryProtocol):

        def response_received(self, response, addr):
            print(response, addr)

        def request_received(self, request, addr):
            print(request, addr)


    loop = asyncio.get_event_loop()
    connect = loop.create_datagram_endpoint(MyProtocol, family=socket.AF_INET)
    transport, protocol = loop.run_until_complete(connect)

    notify = ssdp.SSDPRequest('NOTIFY')
    notify.sendto(transport, (MyProtocol.MULTICAST_ADDRESS, 1982))

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass

    transport.close()
    loop.close()


Examples
--------

The `examples <examples/>`_ directory contains examples on how to use this library.


