https://assets.okfn.org/images/ok_buttons/ok_80x15_red_green.png https://assets.okfn.org/images/ok_buttons/oc_80x15_blue.png https://assets.okfn.org/images/ok_buttons/os_80x15_orange_grey.png

Chart recorder

Telemetry data acquisition and sensor networks for humans.

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.


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.


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.


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:



Data acquisition

Submitting measurement data is easy and flexible, both MQTT and HTTP are supported.

First, let’s define a data acquisition channel:


and some data to submit:

DATA='{"temperature": 42.84, "humidity": 83.1}'


echo "$DATA" | mosquitto_pub -h $MQTT_BROKER -t $CHANNEL/data.json -l


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


Thanks to all the contributors who helped to co-create and conceive Kotori in one way or another. You know who you are.


This project is licensed under the terms of the AGPL license.