https://github.com/daq-tools/kotori

A flexible data historian based on InfluxDB, Grafana, MQTT, and more. Free, open, simple.

https://github.com/daq-tools/kotori

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.6%) to scientific vocabulary

Keywords

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

Keywords from Contributors

agents interactive transformers projection sequences genomics observability autograding hacking shellcodes
Last synced: 5 months ago · JSON representation

Repository

A flexible data historian based on InfluxDB, Grafana, MQTT, and more. Free, open, simple.

Basic Info
  • Host: GitHub
  • Owner: daq-tools
  • License: agpl-3.0
  • Language: Python
  • Default Branch: main
  • Homepage: https://getkotori.org/
  • Size: 3.46 MB
Statistics
  • Stars: 116
  • Watchers: 9
  • Forks: 17
  • Open Issues: 62
  • Releases: 1
Topics
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
Created over 9 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License

README.rst

.. _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/

----

- **Status**:

  .. image:: https://github.com/daq-tools/kotori/workflows/Tests/badge.svg
        :target: https://github.com/daq-tools/kotori/actions?workflow=Tests
        :alt: CI outcome

  .. image:: https://codecov.io/gh/daq-tools/kotori/branch/main/graph/badge.svg
        :target: https://codecov.io/gh/daq-tools/kotori
        :alt: Test suite code coverage

  .. image:: https://img.shields.io/pypi/pyversions/kotori.svg
        :target: https://pypi.org/project/kotori/
        :alt: Supported Python versions

  .. image:: https://img.shields.io/pypi/v/kotori.svg
        :target: https://pypi.org/project/kotori/
        :alt: Package version on PyPI

  .. image:: https://img.shields.io/pypi/status/kotori.svg
        :target: https://pypi.org/project/kotori/
        :alt: Project status (alpha, beta, stable)

  .. image:: https://img.shields.io/pypi/l/kotori.svg
        :target: https://pypi.org/project/kotori/
        :alt: Project license

- **Usage**:

  .. image:: https://static.pepy.tech/personalized-badge/kotori?period=month&left_text=PyPI%20downloads%20%2F%20month&left_color=gray&right_color=orange
        :target: https://pepy.tech/project/kotori
        :alt: PyPI downloads per month

  .. image:: https://img.shields.io/docker/pulls/daqzilla/kotori.svg?label=docker%20pulls%20(kotori)
        :target: https://hub.docker.com/r/daqzilla/kotori
        :alt: Docker image pulls for `kotori` (total)

  .. image:: https://img.shields.io/docker/pulls/daqzilla/kotori-standard.svg?label=docker%20pulls%20(kotori-standard)
        :target: https://hub.docker.com/r/daqzilla/kotori-standard
        :alt: Docker image pulls for `kotori-standard` (total)

- **Compatibility**:

  .. image:: https://img.shields.io/badge/Mosquitto-1.5%2C%201.6%2C%202.0-blue.svg
        :target: https://github.com/eclipse/mosquitto
        :alt: Supported Mosquitto versions

  .. image:: https://img.shields.io/badge/Grafana-5.x%20--%2010.x-blue.svg
        :target: https://github.com/grafana/grafana
        :alt: Supported Grafana versions

  .. image:: https://img.shields.io/badge/InfluxDB-1.6%2C%201.7%2C%201.8-blue.svg
        :target: https://github.com/influxdata/influxdb
        :alt: Supported InfluxDB versions

  .. image:: https://img.shields.io/badge/MongoDB-3.x%20--%205.x-blue.svg
        :target: https://github.com/mongodb/mongo
        :alt: Supported MongoDB versions


----


*****
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 `_. To learn more about the technical details, have
a look at the used `technologies`_.


Features
========

- Multi-channel and multi-protocol data-acquisition and -storage. Collect and
  store sensor data from different kinds of devices, data sources, and protocols.
- Built-in sensor adapters, flexible configuration capabilities, durable
  database storage and unattended graph visualization.
- Based on an infrastructure toolkit assembled from different components
  suitable for data-acquisition, -storage, -fusion, -graphing and more.
- Leverage the flexible data acquisition integration framework for building
  telemetry data acquisition and logging systems, test benches, or sensor
  networks for environmental monitoring systems, as well as other kinds of
  data-gathering and -aggregation projects.
- It integrates well with established hardware-, software- and
  data acquisition workflows through flexible adapter interfaces.


************
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
=========

- `Source code `_
- `Documentation `_
- `Python Package Index (PyPI) `_

License
=======

The project is licensed under the terms of the GNU AGPL license, see `LICENSE`_.


************
Supported by
************

.. image:: https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg
    :target: https://jb.gg/OpenSourceSupport

Special thanks to the people at JetBrains s.r.o. for supporting us with
excellent development tooling.


.. _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)

Owner

  • Name: daq-tools
  • Login: daq-tools
  • Kind: organization

Open source data acquisition, processing and visualization software

GitHub Events

Total
  • Watch event: 8
  • Delete event: 3
  • Issue comment event: 8
  • Push event: 1
  • Pull request event: 6
  • Create event: 2
Last Year
  • Watch event: 8
  • Delete event: 3
  • Issue comment event: 8
  • Push event: 1
  • Pull request event: 6
  • Create event: 2

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,091
  • Total Committers: 10
  • Avg Commits per committer: 109.1
  • Development Distribution Score (DDS): 0.058
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Andreas Motl a****l@e****e 1,028
Sebastian Henneke b****i@k****t 24
dependabot[bot] 4****] 17
Hiveeyes Labs k****i@e****g 7
Bastian Henneke s****e@d****e 4
root r****t@o****e 3
Basti Henneke b****i@c****e 3
Panzki b****5@w****e 2
Andrew Barber d****a@g****m 2
Matthias Büchner m****r@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 55
  • Total pull requests: 89
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 12
  • Total pull request authors: 3
  • Average comments per issue: 2.75
  • Average comments per pull request: 0.96
  • Merged pull requests: 63
  • Bot issues: 0
  • Bot pull requests: 31
Past Year
  • Issues: 0
  • Pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: 3 months
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 6
Top Authors
Issue Authors
  • amotl (43)
  • 18Scoobz (2)
  • danb35 (1)
  • timaseth (1)
  • scube38 (1)
  • Cr4ck3r32 (1)
  • hansj10 (1)
  • nadolny (1)
  • valentinbarral (1)
  • RuiPinto96 (1)
  • LichRene (1)
  • BabylonCoder (1)
Pull Request Authors
  • amotl (55)
  • dependabot[bot] (40)
  • thiasB (1)
Top Labels
Issue Labels
bug (2) enhancement (2)
Pull Request Labels
dependencies (40) python (2) enhancement (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 87 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 29
  • Total maintainers: 1
pypi.org: kotori

Kotori is a data acquisition, processing and graphing toolkit for humans

  • Versions: 29
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 87 Last month
Rankings
Stargazers count: 7.3%
Dependent packages count: 7.4%
Forks count: 9.6%
Average: 15.2%
Dependent repos count: 22.2%
Downloads: 29.4%
Maintainers (1)
Last synced: 7 months ago

Dependencies

requirements-release.txt pypi
  • bump2version >=1,<2
  • invoke >=1,<2
  • keyring >=20,<23
  • requests >=2,<3
  • sh >=1,<2
  • twine >=3,<4
requirements-test.txt pypi
  • coverage >=5.3.1,<6 test
  • datadiff >=2.0,<3 test
  • nose >=1.3.0,<1.4 test
  • pytest >=6.1.0,<7 test
  • pytest-twisted >=1.13.0,<1.14 test
.github/workflows/tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
  • namoshek/mosquitto-github-action v1 composite
  • ts-graphviz/setup-graphviz v1 composite
  • grafana/grafana ${{ matrix.grafana-version }} docker
  • influxdb ${{ matrix.influxdb-version }} docker
  • mongo 5 docker
docker-compose.yml docker
  • eclipse-mosquitto ${MOSQUITTO_VERSION}
  • grafana/grafana ${GRAFANA_VERSION}
  • influxdb ${INFLUXDB_VERSION}
  • mongo ${MONGODB_VERSION}
doc/source/requirements.txt pypi
  • furo *
  • jinja2 <4
  • myst-parser <2
  • pygments <3
  • sphinx >=6,<7
  • sphinx-copybutton <1
  • sphinx-design <1
  • sphinx-togglebutton <1
  • sphinxcontrib-mermaid <1
  • sphinxext-opengraph <1
pyproject.toml pypi
requirements.txt pypi
setup.py pypi