Mainflux IoT: Lightweight Open Source IoT Platform in Go

Mainflux IoT: Lightweight Open Source IoT Platform in Go

Mainflux is a secure, scalable open-source IoT platform developed and maintained by a startup in France, built using the Go programming language and adopting a microservices architecture. Mainflux supports various access devices, including devices, users, and apps; it also supports multiple protocols, including HTTP, MQTT, WebSocket, and CoAP, and facilitates protocol conversion between them.

Mainflux’s southbound interface connects devices, while the northbound interface connects applications, providing a complete solution from the device side to the platform and then to the application.

01

Features

Mainflux IoT platform includes the following features:

  • Support for multiple protocol connections and bridging (HTTP, MQTT, WebSocket, and CoAP)

  • Device management and configuration (zero-touch provisioning)

  • Mutual authentication using X.509 digital certificates

  • Granular access control

  • Support for message persistence (Cassandra, InfluxDB, MongoDB, PostgreSQL)

  • Platform logging and instrumentation support (Grafana, Prometheus, and OpenTracing)

  • Platform supports logging and infrastructure

  • Container-based deployment using Docker and Kubernetes

  • Integration with LoRaWAN

  • SDK

  • CLI

  • Low memory footprint and fast execution speed

  • Domain-driven design architecture with high-quality code and test coverage

02

Mainflux Service Architecture

Mainflux IoT: Lightweight Open Source IoT Platform in Go

Mainflux IoT platform includes the following services:

Service Description

User

Manage users of the platform and issues related to user and group authentication
Thing Manage things, channels, and issues related to authentication of things and channels
HTTP Adapter Provides an HTTP interface for sending messages over HTTP
MQTT Adapter Provides MQTT and MQTT over WS interfaces for sending and receiving messages via MQTT
WS Adapter Provides a WebSocket interface for sending and receiving messages via WS
CoAP Adapter Provides a CoAP interface for sending and receiving messages via CoAP
OPC-UA Adapter Provides an OPC-UA interface for sending and receiving messages via OPC-UA
LoRa Adapter Provides a LoRa server forwarder for sending and receiving messages via LoRa
Mainflux-CLI Command-line interface

Mainflux Core Modules

Mainflux IoT: Lightweight Open Source IoT Platform in Go

03

Edge Computing Gateway

Mainflux IoT platform provides edge gateway device management services, including raw data processing, filtering, and storage functions for sensors, reducing the load on devices (sensors/actuators) when moving to the cloud and simplifying configuration.

Mainflux IoT: Lightweight Open Source IoT Platform in Go

The above image shows the minimal deployment of the edge gateway running Agent, Export, and Mainflux services.

Mainflux services support device management and MQTT protocol, with NATS as the central message bus, as it is the default message broker in Mainflux. It also serves as the central message bus for other services and any new custom Agent developed Export services, which can be built to interface with any hardware-supported devices on the gateway. These services publish data to the message broker, and the Export service can retrieve data from the message broker and send it to the cloud.

04

Official Website and Source Code

Official Website: https://mainflux.com

GitHub: https://github.com/mainflux

Development Documentation: https://docs.mainflux.io

Mainflux IoT: Lightweight Open Source IoT Platform in Go

Leave a Comment