Installation¶
Requirements¶
- Python 3.10+
- Django 4.2+
Install¶
Optional extras¶
| Extra | What it adds | Install command |
|---|---|---|
mqtt |
MQTT broker support (paho-mqtt) | pip install django-devicehub[mqtt] |
drf |
REST API (Django REST Framework) | pip install django-devicehub[drf] |
timescale |
TimescaleDB storage backend | pip install django-devicehub[timescale] |
influxdb |
InfluxDB 2.x storage backend | pip install django-devicehub[influxdb] |
channels |
WebSocket realtime (Django Channels) | pip install django-devicehub[channels] |
all |
Everything above | pip install django-devicehub[all] |
Configuration¶
1. Add to INSTALLED_APPS¶
2. Configure settings¶
DJANGO_DEVICEHUB = {
"BROKERS": {
"default": {
"ENGINE": "django_devicehub.brokers.mqtt.MQTTBroker",
"HOST": "localhost",
"PORT": 1883,
"USERNAME": "",
"PASSWORD": "",
"CLIENT_ID": "",
"KEEPALIVE": 60,
"USE_TLS": False,
"CA_CERTS": "",
"CERTFILE": "",
"KEYFILE": "",
"USE_SHARED_SUBSCRIPTIONS": True,
"SHARE_GROUP": "django-devicehub",
"AUTH_BACKEND": False,
}
},
"STORAGE": {
"ENGINE": "django_devicehub.storage.django_orm.DjangoORMStorage",
},
"TOPIC_PREFIX": "myproject",
"AUTO_API": True,
"AUTO_ADMIN": True,
}
Most settings have sensible defaults. The minimum configuration is:
DJANGO_DEVICEHUB = {
"BROKERS": {
"default": {
"HOST": "localhost",
"PORT": 1883,
}
},
"TOPIC_PREFIX": "myproject",
}
3. Add URLs¶
# urls.py
from django.urls import path, include
from django_devicehub.generators.urls import get_iot_urlpatterns
urlpatterns = [
...
path("iot/", include("django_devicehub.urls")), # broker auth + realtime
*get_iot_urlpatterns("api"), # auto-generated REST API
]