mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-01 13:48:56 +08:00

* Use Normalizer as a lib To normalize messages on the consumer side, Normalizer is moved to the internal pkgs. Writers being message consumers are modified to do message normalization instead of subscribing to normalized messages subject. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Fix logging middleware for readers and writers Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove normalizer interface Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Use Normalizer in writers As we agreed on #919, we'll use normalizer as an interface and provide the default SenML implementation. Because of that, Normalizer is removed from `internal` and we'll use the project structure proposed in the aforementioned issue. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Fix tests Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove unused batch settings from influxDB reader Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update docs Move Normalizer service to `addons`. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Rename channels input topic Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update Noramlizer docs Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove commented code Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update readers logging Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update addons docker-compose files Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update topcis explanations Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
## Components
|
|
|
|
Mainflux IoT platform is comprised of the following services:
|
|
|
|
| Service | Description |
|
|
|:--------------------------------------------------------------------------|:------------------------------------------------------------------------|
|
|
| [users](https://github.com/mainflux/mainflux/tree/master/users) | Manages platform's users and auth concerns |
|
|
| [things](https://github.com/mainflux/mainflux/tree/master/things) | Manages platform's things, channels and access policies |
|
|
| [http-adapter](https://github.com/mainflux/mainflux/tree/master/http) | Provides an HTTP interface for accessing communication channels |
|
|
| [ws-adapter](https://github.com/mainflux/mainflux/tree/master/ws) | Provides a WebSocket interface for accessing communication channels |
|
|
| [mqtt-adapter](https://github.com/mainflux/mainflux/tree/master/mqtt) | Provides an MQTT interface for accessing communication channels |
|
|
| [coap-adapter](https://github.com/mainflux/mainflux/tree/master/coap) | Provides a CoAP interface for accessing communication channels |
|
|
| [lora-adapter](https://github.com/mainflux/mainflux/tree/master/lora) | Provides a LoRa Server forwarder for accessing communication channels |
|
|
| [mainflux-cli](https://github.com/mainflux/mainflux/tree/master/cli) | Command line interface |
|
|
|
|

|
|
|
|
## Domain model
|
|
|
|
The platform is built around 3 main entities: **users**, **things** and **channels**.
|
|
|
|
`User` represents the real (human) user of the system. It is represented via its
|
|
e-mail and password, which he uses as platform access credentials in order to obtain
|
|
an access token. Once logged into the system, user can manage his resources (i.e.
|
|
things and channels) in CRUD fashion, and define access control policies by
|
|
connecting them.
|
|
|
|
`Thing` represents devices (or applications) connected to Mainflux that uses the
|
|
platform for message exchange with other "things".
|
|
|
|
`Channel` represents a communication channel. It serves as message topic that
|
|
can be consumed by all of the things connected to it.
|
|
|
|
## Messaging
|
|
|
|
Mainflux uses [NATS](https://nats.io) as its messaging backbone, due to its
|
|
lightweight and performant nature. You can treat its *subjects* as physical
|
|
representation of Mainflux channels, where subject name is constructed using
|
|
channel unique identifier.
|
|
|
|
In general, there is no constrained put on content that is being exchanged
|
|
through channels. However, in order to be post-processed and normalized,
|
|
messages should be formatted using [SenML](https://tools.ietf.org/html/draft-ietf-core-senml-08).
|