MQTT-Django Bridge
Interface MQTT ASGI compatible with Django Channels 3.
Installation
pip install django-mqtt-bridge
Configuration
First you would to configure a valid channel_layer endpoint to consume and connect between django-mqtt-bridge and channels.
In your_channel_application/asgi.py:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_channel_application.settings")
import django
from channels.routing import get_default_application
from channels.layers import get_channel_layer
django.setup()
# Application
application = get_default_application()
# Layers
channel_layer = get_channel_layer()
In your_channel_application/consumers.py:
from channels.consumer import SyncConsumer
class MqttConsumer(SyncConsumer):
def mqtt_sub(self, event):
topic = event['text']['topic']
payload = event['text']['payload']
# do something with topic and payload
print('{} - {}'.format(topic, payload))
def mqtt_pub(self, event):
pass
In your_channel_application/routing.py:
from django.core.asgi import get_asgi_application
from .consumers import MqttConsumer
from channels.routing import ProtocolTypeRouter, ChannelNameRouter, URLRouter
from channels.auth import AuthMiddlewareStack
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"channel": ChannelNameRouter(
{
"mqtt.pub": MqttConsumer.as_asgi()
}
)
})
Usage
django_mqtt_bridge -H iot.eclipse.org -p 1883 --topic=some_topic:2 your_channel_application.asgi:channel_layer
Options
django_mqtt_bridge -h
usage: django_mqtt_bridge [-h] [-H HOST] [-p PORT] [-v] [-U USERNAME] [-P PASSWORD]
[--topic TOPICS] [-n CHANNEL_NAME] [-s CHANNEL_SUB]
[-x CHANNEL_PUB]
channel_layer
Simple MQTT bridge for ASGI
positional arguments:
channel_layer The ASGI channel layer instance to use as
path.to.module:instance.path
optional arguments:
-h, --help show this help message and exit
-H HOST, --host HOST MQTT broker host
-p PORT, --port PORT MQTT broker port
-v, --verbosity Set verbosity
-U USERNAME, --username USERNAME
MQTT username to authorised connection
-P PASSWORD, --password PASSWORD
MQTT password to authorised connection
--topic TOPICS MQTT topics with qos to subscribe --topic TOPIC:QOS
--topic /office/sensor:0 --topic /home/sensor:1 If
empty (#, 2) is set as default
-n CHANNEL_NAME, --channel-name CHANNEL_NAME
Name of Channels's channel to send and receive
messages
-s CHANNEL_SUB, --channel-sub CHANNEL_SUB
Name of Channels's channel for MQTT Sub messages,
default is mqtt.pub
-x CHANNEL_PUB, --channel-pub CHANNEL_PUB
Name of Channels's channel for MQTT Pub messages,
default is mqtt.sub
HOST: MQTT broker host
PORT: MQTT broker port, default 1883
USERNAME: MQTT username to authorised connection
PASSWORD: MQTT password to authorised connection
TOPICS: MQTT topics with qos to subscribe. This option expect a valid topic name and a QOS value splited by :
To subscribe to a list of topics use the same option --topic.
django-mqtt-bridge --topic some_topic:qos --topic another_topic:qos --topic home/kitchen_gas_sensor:2 --topic home/office_air_sensor:0
CHANNEL_NAME : Name of Channels's channel to send and receive messages, this channel_name must to exist in your channel's consumer, default is mqtt.
CHANNEL_SUB : Name of Channels's channel for MQTT Sub messages, default is mqtt.sub.
CHANNEL_PUB : Name of Channels's channel for MQTT Pub messages, default is mqtt.pub.
Release files for django-mqtt-bridge 0.4.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_mqtt_bridge-0.4.6.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_mqtt_bridge-0.4.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.7 kB
Release files / django_mqtt_bridge-0.4.6.tar.gz
| Download URL | django_mqtt_bridge-0.4.6.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d4b5f280b5312de03a9f0f98d73985e892a94f1ab737a410d22c97fca2cfb62
|
|
BLAKE2b-256 checksum How to use checksums |
efa9efdb601ba4631039be0d57c86b209336873172189739129daca34d574cc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / django_mqtt_bridge-0.4.6-py3-none-any.whl
| Download URL | django_mqtt_bridge-0.4.6-py3-none-any.whl |
|---|---|
| Size | 19.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
96c29251d46df58b0e9267f184dd44838f7320e1460843a896de76867a1bf405
|
|
BLAKE2b-256 checksum How to use checksums |
ca749dfe424f7691273f71287c30fe1904d9734593875aae3d33ef1c0fa0d7e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|