Metadata-Version: 2.1
Name: mqttasgi
Version: 0.3.3
Summary: MQTT ASGI Protocol Server
Home-page: https://github.com/sivulich/mqttasgi
Author: Santiago Ivulich
Author-email: sivulich@itba.edu.ar
License: MIT
Description: # mqttasgi - MQTT ASGI Protocol Server for Django
        mqttasgi is an ASGI protocol server that implements a complete interface for MQTT for the Django development framework. Built following [daphne](https://github.com/django/daphne) protocol server.
        
        # Features
        - Publish / Subscribe to any topic
        - Multiple workers to handle different topics / subscriptions.
        - Full Django ORM support within consumers.
        - Full testing consumer to enable TDD.
        - Lightweight.
        - Django 2.x / Channels 2.x support
        
        # Instalation
        To install mqttasgi
        ```bash
        pip install mqttasgi
        ```
        
        # Usage
        Mqttasgi provides a cli interface to run the protocol server. 
        ```bash
        mqttasgi -H localhost -p 1883 my_application.asgi:application
        ```
        Parameters:
        | Parameter   | Explanaation      |
        |-------------|:-----------------:|
        | -H / --host | MQTT broker host |
        | -p / --port | MQTT broker port |
        | -c / --cleansession | MQTT Clean Session |
        | -v / --verbosity | Logging verbosity |
        | -U / --username | MQTT Username |
        | -P / --password | MQTT Password |
        | -i / --id | MQTT Client ID |
        | Last argument | ASGI Apllication |
        
        To add your consumer to the routing in your django application:
        ```python
            application = ProtocolTypeRouter({
              'websocket': AllowedHostsOriginValidator(URLRouter([
                  url('.*', WebsocketConsumer)
              ])),
              'mqtt': MqttConsumer,
              ....
            })
        ```    
        Your consumer should inherit from MqttConsumer in mqttasgi.consumers. It implements helper functions such as publish and subscribe. A simple example:
        ```python
        from mqttasgi.consumers import MqttConsumer
        class MyMqttConsumer(MqttConsumer):
        
            async def connect(self):
                await self.subscribe('my/testing/topic', 2)
        
            async def receive(self, mqtt_message):
                print('Received a message at topic:', mqtt_mesage['topic'])
                print('With payload', mqtt_message['payload'])
                print('And QOS:', mqtt_message['qos'])
                pass
        
            async def disconnect(self):
                await self.unsubscribe('my/testing/topic')
            
        ```
        
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: MIT License
Classifier: Framework :: Django
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
Classifier: Topic :: Home Automation
Description-Content-Type: text/markdown
