System Overview

Mainflux is IoT cloud platform. It allows device, user and application connections over various network protocols, like HTTP, MQTT, WebSocket and CoAP, making a seamless bridge between them.

It is used as the IoT middleware for building complex IoT solutions.

More precisely, Mainflux is multi-protocol device-agnostic message relay with distributed time-series data storage and multi-user, multi-tenant device and application management middleware.

Even more precisely Mainflux is:

  • Device manager - accepts device connections on southbound interface
  • Application manager - accepts application connections on northbound interface
  • User manager - provides user management for the applications
  • Messaging bridge - relays messages between devices and applications
  • Time-series storage engine - stores and queries measurements datapoints in the time-series format
  • CEP machine with rules engine - it does Complex Event Processing of incoming time-series streams and can automatize triggers and actions based on configurable set of rules

We say that Mainflux is "multi-protocol" because it supports several networking protocols that proliferate in IoT world:

  • HTTP
  • WebSocket
  • MQTT
  • CoAP

We say that Mainflux is "device-agnostic" because type of device that connects to it is completely transparent to Mainflux due it's generic internal device model (representation). That means that you can connect absolutely every device to Mainflux.

Basic Terminology

Devices

Devices are usually constrained microcontrollers with limited power budget. Because of constrained memory (several KB of RAM and ROM) they usually can not hold heavy-weight protocol stacks in their firmware. That's where MQTT and CoAP come into the play - as they are lightweight protocols designed for M2M communications.

Also, on the security side, TLS can be heavy-weight. CoAP and LwM2M propose usage of the DTLS instead.

Mainflux exposes MQTT and CoAP APIs to connect devices via these protocols.

If the devices are more powerful machines (like for example Raspberry Pi) they can be connected via standard HTTP or WebSocket protocols - as this is usually the case for web applications.

Applications

Applications are run on the servers, and Mainflux devloper can make an application similar to Twitter or Facebook application - this app will use Mainflux in the background.

Applications connect often via HTTP REST or WebSockets, as this is fast and bidirectional socket, so updates can be pushed from the Mainflux (server) to the application (client) in the RT.

Never the less, applications can choose any of the other protocols for connections (MQTT or CoAP).

Messages

Measurements

Commands

Data Models

Devices

Channels

Features

An extensive (and incomplete) list of features includes:

  • Responsive and scalable architecture based on a set of microservices
  • Set of clean APIs: HTTP RESTful, MQTT, WebSocket and CoAP
  • SDK - set of client libraries for many HW platforms in several programming languages: C/C++, JavaScript, Go and Python
  • Device management and provisioning and OTA FW updates
  • Highly secured connections via TLS and DTLS
  • Enhanced and fine-grained security via Reverse Proxy, OAuth 2.0 identity management and RBAC Authorization Server.
  • Easy deployment and high system scalability via Docker images
  • Clear project roadmap, extensive development ecosystem and highly skilled developer community
  • And many more

results matching ""

    No results matching ""