2016-05-05 7 views
6

Mein Ziel ist es, eine Django-Anwendung einzurichten, die MQTT-Nachrichten von einem Broker abruft. (Zum Beispiel mit Paho MQTT Client).Kann ich mit Django Channels MQTT-Nachrichten in Echtzeit anzeigen?

Es scheint mir, dass das asynchrone Abrufen von eingehenden Nachrichten eine gute Ergänzung für die neue Django Channels wäre. Da dies eine ereignisgesteuerte Einrichtung bereitstellen würde.

Meine Frage ist: können Django-Kanäle tatsächlich ein Werkzeug sein, um MQTT-Nachrichten zu überbrücken? Wenn ja: Wie könnte ich das einrichten?

Antwort

1

Ich habe eine very simple interface between MQTT broker and ASGI implementiert. Es ist immer noch experimentell und hat einige Einschränkungen, aber Sie können es verwenden, um im MQTT-Broker veröffentlichte Nachrichten abzurufen (oder den Code als Beispiel zu verwenden).

Führen Sie den MQTT Makler:

$ systemctl start mosquitto 

Führen Sie das MQTT-ASGI Schnittstelle (ähnlich daphne)

$ asgimqtt my_django_project.asgi:channels_layer 

eine Route definieren in my_django_project/routing.py

from channels import route 

from my_django_app.consumers import on_mqtt_message 

channels_routing = [ 
    route("mqtt.sub", on_mqtt_message), 
] 

einen Verbraucher Implement (B. die MQTT-Nachrichten in der Datenbank speichern) in my_django_app/consumers.py

from .models import MqttMessage 

def on_mqtt_message(message): 
    # do something with the message 
    MqttMessage(topic=message["topic"], 
       payload=message["payload"], 
       qos=message["qos", 
       host=message["host"], 
       port=message["port"]).save() 
Verwandte Themen