daq-tools / kotori

A flexible data historian based on InfluxDB, Grafana, MQTT, and more. Free, open, simple.
https://getkotori.org/
GNU Affero General Public License v3.0
107 stars 17 forks source link
daq data-historization grafana historian internet-of-things iot-platform kotori-daq m2m mosquitto mqtt multi-channel multi-protocol open-data python scada sensor-network telemetry time-series visualization

.. _kotori-readme:

Kotori

.. container:: align-center

.. figure:: https://ptrace.getkotori.org/2016-05-23_chart-recorder.png
    :alt: Chart recorder
    :width: 240px
    :target: .

|

*Telemetry data acquisition and sensor networks for humans.*

.. image:: https://assets.okfn.org/images/ok_buttons/oc_80x15_blue.png
    :target: https://okfn.org/opendata/

.. image:: https://assets.okfn.org/images/ok_buttons/ok_80x15_red_green.png
    :target: https://okfn.org/opendata/

.. image:: https://assets.okfn.org/images/ok_buttons/os_80x15_orange_grey.png
    :target: https://okfn.org/opendata/



About


Kotori is a multi-channel, multi-protocol telemetry data acquisition and graphing toolkit for time-series_ data processing.

It supports a variety of scenarios in scientific environmental monitoring projects, for building and operating distributed sensor networks, and for industrial data acquisition applications.

Details

Kotori takes the role of the data historian component within a SCADA / MDE system, exclusively built upon industry-grade free and open-source software like Grafana, Mosquitto, or InfluxDB. It is written in Python, and uses the Twisted_ networking library.

The best way to find out what you can do with Kotori, is by looking at some outlined scenarios and by reading how others are using it at the `example gallery <gallery>_. To learn more about the technical details, have a look at the usedtechnologies`_.

Features


Installation


Kotori can be installed in different ways. You may prefer using a Debian package, install it from the Python Package Index (PyPI), or run it within a development sandbox_ directly from the Git repository.

Corresponding installation instructions are bundled at https://getkotori.org/docs/setup/.


Synopsis


A compact example how to submit measurement data on a specific channel, using MQTT and HTTP, and export it again.

Data acquisition

First, let's define a data acquisition channel::

CHANNEL=amazonas/ecuador/cuyabeno/1

and some example measurement data::

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

Submit with MQTT::

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

Submit with 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 a stack to all the contributors_ who helped to co-create and conceive Kotori in one way or another. You know who you are.


Project information


Contributions

Every kind of contribution, feedback, or patch, is much welcome. Create an issue_ or submit a patch if you think we should include a new feature, or to report or fix a bug.

Development

In order to setup a development environment on your workstation, please head over to the development sandbox_ documentation. When you see the software tests succeed, you should be ready to start hacking.

Resources

License

The project is licensed under the terms of the GNU AGPL license, see LICENSE_.

.. _Autobahn: https://crossbar.io/autobahn/ .. _contributors: https://getkotori.org/docs/project/contributors.html .. _Create an issue: https://github.com/daq-tools/kotori/issues/new .. _data historian: https://en.wikipedia.org/wiki/Operational_historian .. _development sandbox: https://getkotori.org/docs/setup/sandbox.html .. _free and open-source software: https://en.wikipedia.org/wiki/Free_and_open-source_software .. _gallery: https://getkotori.org/docs/gallery/ .. _Grafana: https://en.wikipedia.org/wiki/Grafana .. _InfluxDB: https://en.wikipedia.org/wiki/InfluxDB .. _LICENSE: https://github.com/daq-tools/kotori/blob/main/LICENSE .. _MDE: https://de.wikipedia.org/wiki/Maschinendatenerfassung .. _MongoDB: https://en.wikipedia.org/wiki/MongoDB .. _Mosquitto: https://github.com/eclipse/mosquitto .. _MQTT: https://en.wikipedia.org/wiki/MQTT .. _Python: https://www.python.org/ .. _SCADA: https://en.wikipedia.org/wiki/SCADA .. _scenarios: https://getkotori.org/docs/about/scenarios.html .. _technologies: https://getkotori.org/docs/about/technologies.html .. _time-series: https://en.wikipedia.org/wiki/Time_series .. Twisted: https://en.wikipedia.org/wiki/Twisted(software)