Building new integrations

ChirpStack provides three kinds of integrations.

  • Per application integrations
  • Global integrations
  • Standalone integrations

Per application integrations

These integrations can be configured per application through the ChirpStack web-interface. As these are user-configurable, this kind of integration is stateless thus it does not maintain a connection to the integration. Adding such integration requires implementing the integration, adding API methods and modifying the ChirpStack UI.

Global integrations

These integrations are provided by ChirpStack and once configured, will be globally enabled. An example is the MQTT integration. Adding such integration requires implementing the integration. No API or UI changes are required.

Standalone integrations

Standalone integrations operate independent from ChirpStack, that means no ChirpStack changes will be required to add a new integration of this kind. These integrations will subscribe to a Redis Stream to which ChirpStack publishes integration events. Please see the device_frame_log_max_history setting in the ChirpStack Configuration to enable this feature.

GChirpStackChirpStackRedis StreamRedis StreamChirpStack->Redis StreamIntegration 1Integration 1Redis Stream->Integration 1Integration 2Integration 2Redis Stream->Integration 2Integration ...Integration ...Redis Stream->Integration ...

ChirpStack provides a chirpstack-intergration crate which provides the Redis Stream interface and a framework to easily build integrations. The Apache Pulsar integration can be used as an example implementation.