Kotori
Documentation: https://getkotori.org/
Source Code: https://github.com/daq-tools/kotori
Status:
Infrastructure:
Usage:
At a glance
Kotori is a data historian based on InfluxDB, Grafana, MQTT and more. Free, open, simple.
It is a telemetry data acquisition, time series data processing and graphing toolkit aiming to become a fully integrated data historian. It supports scientific environmental monitoring projects, distributed sensor networks and likewise scenarios.
The best way to find out more about Kotori is by looking at how others use it already. Enjoy visiting the gallery to read about some examples where Kotori has been used.
Features
The key features are:
- Multi-channel and multi-protocol data-acquisition and -storage.
- Built-in sensor adapters, flexible configuration capabilities, durable database storage and unattended graph visualization out of the box.
- Based on an infrastructure toolkit assembled from different components suitable for data-acquisition, -storage, -fusion, -graphing and more.
- The system is used for building flexible telemetry solutions in different scenarios. It has been used to support conceiving data logging systems, test benches, sensor networks for environmental monitoring as well as other data-gathering and -aggregation projects.
- It integrates well with established hardware-, software- and data acquisition workflows through flexible adapter interfaces.
Technologies
Kotori is based on a number of fine infrastructure components and technologies and supports a number of protocols in one way or another. Standing on the shoulders of giants.
- Infrastructure: Mosquitto, Grafana, InfluxDB, MongoDB
- Runtime: Twisted, Autobahn
- Protocols: MQTT, HTTP, TCP, UDP, WebSockets, WAMP.
Installation
Kotori can be installed through a Debian package, from the Python Package Index (PyPI) or from the Git repository. Please follow up to the corresponding installation instructions:
https://getkotori.org/docs/setup/
Examples
Data acquisition
Submitting measurement data is easy and flexible, both MQTT and HTTP are supported.
First, let's define a data acquisition channel:
CHANNEL=amazonas/ecuador/cuyabeno/1
and some data to submit:
DATA='{"temperature": 42.84, "humidity": 83.1}'
MQTT:
MQTT_BROKER=daq.example.org echo "$DATA" | mosquitto_pub -h $MQTT_BROKER -t $CHANNEL/data.json -l
HTTP:
HTTP_URI=https://daq.example.org/api/ echo "$DATA" | curl --request POST --header 'Content-Type: application/json' --data @- $HTTP_URI/$CHANNEL/data
Data export
Measurement data can be exported in a variety of formats.
This is a straight-forward example for CSV data export:
http $HTTP_URI/$CHANNEL/data.csv
Acknowledgements
Thanks to all the contributors who helped to co-create and conceive Kotori in one way or another. You know who you are.
License
This project is licensed under the terms of the AGPL license.