2016-05-05 9 views
6

Il mio obiettivo è configurare un'applicazione Django, recuperando i messaggi MQTT da un broker. (Ad esempio utilizzando Paho MQTT Client).Posso utilizzare i canali Django per visualizzare i messaggi MQTT in tempo reale?

Mi sembra che il recupero asincrono dei messaggi in arrivo sarebbe una buona idea per il nuovo Django Channels. Poiché ciò fornirebbe una configurazione guidata dagli eventi.

La mia domanda è: i canali Django possono davvero essere uno strumento per collegare i messaggi MQTT? Se è così: come posso impostare questo?

risposta

1

Ho implementato un very simple interface between MQTT broker and ASGI. È ancora sperimentale e presenta alcune limitazioni, ma è possibile utilizzarlo per recuperare i messaggi pubblicati nel broker MQTT (o utilizzare il codice come esempio).

Eseguire il broker MQTT:

$ systemctl start mosquitto 

eseguire l'interfaccia MQTT-ASGI (simile a daphne)

$ asgimqtt my_django_project.asgi:channels_layer 

Definire un percorso 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), 
] 

Implementare un consumatore (per esempio memorizzare i messaggi MQTT nel database) 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() 
Problemi correlati