{"id":19758825,"url":"https://github.com/daq-tools/kotori","last_synced_at":"2026-02-27T02:09:52.708Z","repository":{"id":9693259,"uuid":"63014639","full_name":"daq-tools/kotori","owner":"daq-tools","description":"A flexible data historian based on InfluxDB, Grafana, MQTT, and more. Free, open, simple.","archived":false,"fork":false,"pushed_at":"2025-04-01T05:18:01.000Z","size":3633,"stargazers_count":116,"open_issues_count":62,"forks_count":17,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-04T03:16:01.652Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://getkotori.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daq-tools.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-10T19:16:37.000Z","updated_at":"2025-04-02T09:17:33.000Z","dependencies_parsed_at":"2024-06-13T21:46:20.112Z","dependency_job_id":"3bbb8b49-dbae-4ec6-acac-8639e7fd51a3","html_url":"https://github.com/daq-tools/kotori","commit_stats":{"total_commits":1088,"total_committers":13,"mean_commits":83.6923076923077,"dds":0.484375,"last_synced_commit":"9698bb6c6b40d7f0f56a5374231c1e66aca29e97"},"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daq-tools%2Fkotori","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daq-tools%2Fkotori/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daq-tools%2Fkotori/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daq-tools%2Fkotori/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daq-tools","download_url":"https://codeload.github.com/daq-tools/kotori/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248637972,"owners_count":21137579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"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"],"created_at":"2024-11-12T03:26:09.328Z","updated_at":"2026-02-27T02:09:52.665Z","avatar_url":"https://github.com/daq-tools.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. _kotori-readme:\n\n######\nKotori\n######\n\n.. container:: align-center\n\n    .. figure:: https://ptrace.getkotori.org/2016-05-23_chart-recorder.png\n        :alt: Chart recorder\n        :width: 240px\n        :target: .\n\n    |\n\n    *Telemetry data acquisition and sensor networks for humans.*\n\n    .. image:: https://assets.okfn.org/images/ok_buttons/oc_80x15_blue.png\n        :target: https://okfn.org/opendata/\n\n    .. image:: https://assets.okfn.org/images/ok_buttons/ok_80x15_red_green.png\n        :target: https://okfn.org/opendata/\n\n    .. image:: https://assets.okfn.org/images/ok_buttons/os_80x15_orange_grey.png\n        :target: https://okfn.org/opendata/\n\n----\n\n- **Status**:\n\n  .. image:: https://github.com/daq-tools/kotori/workflows/Tests/badge.svg\n        :target: https://github.com/daq-tools/kotori/actions?workflow=Tests\n        :alt: CI outcome\n\n  .. image:: https://codecov.io/gh/daq-tools/kotori/branch/main/graph/badge.svg\n        :target: https://codecov.io/gh/daq-tools/kotori\n        :alt: Test suite code coverage\n\n  .. image:: https://img.shields.io/pypi/pyversions/kotori.svg\n        :target: https://pypi.org/project/kotori/\n        :alt: Supported Python versions\n\n  .. image:: https://img.shields.io/pypi/v/kotori.svg\n        :target: https://pypi.org/project/kotori/\n        :alt: Package version on PyPI\n\n  .. image:: https://img.shields.io/pypi/status/kotori.svg\n        :target: https://pypi.org/project/kotori/\n        :alt: Project status (alpha, beta, stable)\n\n  .. image:: https://img.shields.io/pypi/l/kotori.svg\n        :target: https://pypi.org/project/kotori/\n        :alt: Project license\n\n- **Usage**:\n\n  .. image:: https://static.pepy.tech/personalized-badge/kotori?period=month\u0026left_text=PyPI%20downloads%20%2F%20month\u0026left_color=gray\u0026right_color=orange\n        :target: https://pepy.tech/project/kotori\n        :alt: PyPI downloads per month\n\n  .. image:: https://img.shields.io/docker/pulls/daqzilla/kotori.svg?label=docker%20pulls%20(kotori)\n        :target: https://hub.docker.com/r/daqzilla/kotori\n        :alt: Docker image pulls for `kotori` (total)\n\n  .. image:: https://img.shields.io/docker/pulls/daqzilla/kotori-standard.svg?label=docker%20pulls%20(kotori-standard)\n        :target: https://hub.docker.com/r/daqzilla/kotori-standard\n        :alt: Docker image pulls for `kotori-standard` (total)\n\n- **Compatibility**:\n\n  .. image:: https://img.shields.io/badge/Mosquitto-1.5%2C%201.6%2C%202.0-blue.svg\n        :target: https://github.com/eclipse/mosquitto\n        :alt: Supported Mosquitto versions\n\n  .. image:: https://img.shields.io/badge/Grafana-5.x%20--%2010.x-blue.svg\n        :target: https://github.com/grafana/grafana\n        :alt: Supported Grafana versions\n\n  .. image:: https://img.shields.io/badge/InfluxDB-1.6%2C%201.7%2C%201.8-blue.svg\n        :target: https://github.com/influxdata/influxdb\n        :alt: Supported InfluxDB versions\n\n  .. image:: https://img.shields.io/badge/MongoDB-3.x%20--%205.x-blue.svg\n        :target: https://github.com/mongodb/mongo\n        :alt: Supported MongoDB versions\n\n\n----\n\n\n*****\nAbout\n*****\n\nKotori is a multi-channel, multi-protocol telemetry data acquisition and graphing\ntoolkit for `time-series`_ data processing.\n\nIt supports a variety of scenarios in scientific environmental monitoring projects,\nfor building and operating distributed sensor networks, and for industrial data\nacquisition applications.\n\n\nDetails\n=======\n\nKotori takes the role of the `data historian`_ component within a `SCADA`_ / `MDE`_\nsystem, exclusively built upon industry-grade `free and open-source software`_\nlike Grafana_, Mosquitto_, or InfluxDB_. It is written in Python_,\nand uses the Twisted_ networking library.\n\nThe best way to find out what you can do with Kotori, is by looking at\nsome outlined `scenarios`_ and by reading how others are using it at the\n`example gallery \u003cgallery_\u003e`_. To learn more about the technical details, have\na look at the used `technologies`_.\n\n\nFeatures\n========\n\n- Multi-channel and multi-protocol data-acquisition and -storage. Collect and\n  store sensor data from different kinds of devices, data sources, and protocols.\n- Built-in sensor adapters, flexible configuration capabilities, durable\n  database storage and unattended graph visualization.\n- Based on an infrastructure toolkit assembled from different components\n  suitable for data-acquisition, -storage, -fusion, -graphing and more.\n- Leverage the flexible data acquisition integration framework for building\n  telemetry data acquisition and logging systems, test benches, or sensor\n  networks for environmental monitoring systems, as well as other kinds of\n  data-gathering and -aggregation projects.\n- It integrates well with established hardware-, software- and\n  data acquisition workflows through flexible adapter interfaces.\n\n\n************\nInstallation\n************\n\nKotori can be installed in different ways. You may prefer using a Debian\npackage, install it from the Python Package Index (PyPI), or run it within\na `development sandbox`_ directly from the Git repository.\n\nCorresponding installation instructions are bundled at\nhttps://getkotori.org/docs/setup/.\n\n\n********\nSynopsis\n********\n\nA compact example how to submit measurement data on a specific channel, using\nMQTT and HTTP, and export it again.\n\nData acquisition\n================\n\nFirst, let's define a data acquisition channel::\n\n    CHANNEL=amazonas/ecuador/cuyabeno/1\n\nand some example measurement data::\n\n    DATA='{\"temperature\": 42.84, \"humidity\": 83.1}'\n\nSubmit with MQTT::\n\n    MQTT_BROKER=daq.example.org\n    echo \"$DATA\" | mosquitto_pub -h $MQTT_BROKER -t $CHANNEL/data.json -l\n\nSubmit with HTTP::\n\n    HTTP_URI=https://daq.example.org/api/\n    echo \"$DATA\" | curl --request POST --header 'Content-Type: application/json' --data @- $HTTP_URI/$CHANNEL/data\n\nData export\n===========\nMeasurement data can be exported in a variety of formats.\n\nThis is a straight-forward example for CSV data export::\n\n    http $HTTP_URI/$CHANNEL/data.csv\n\n\n****************\nAcknowledgements\n****************\n\nThanks a stack to all the `contributors`_ who helped to co-create and conceive\nKotori in one way or another. You know who you are.\n\n\n*******************\nProject information\n*******************\n\nContributions\n=============\n\nEvery kind of contribution, feedback, or patch, is much welcome. `Create an\nissue`_ or submit a patch if you think we should include a new feature, or to\nreport or fix a bug.\n\nDevelopment\n===========\n\nIn order to setup a development environment on your workstation, please head over\nto the `development sandbox`_ documentation. When you see the software tests succeed,\nyou should be ready to start hacking.\n\nResources\n=========\n\n- `Source code \u003chttps://github.com/daq-tools/kotori\u003e`_\n- `Documentation \u003chttps://getkotori.org/\u003e`_\n- `Python Package Index (PyPI) \u003chttps://pypi.org/project/kotori/\u003e`_\n\nLicense\n=======\n\nThe project is licensed under the terms of the GNU AGPL license, see `LICENSE`_.\n\n\n************\nSupported by\n************\n\n.. image:: https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg\n    :target: https://jb.gg/OpenSourceSupport\n\nSpecial thanks to the people at JetBrains s.r.o. for supporting us with\nexcellent development tooling.\n\n\n.. _Autobahn: https://crossbar.io/autobahn/\n.. _contributors: https://getkotori.org/docs/project/contributors.html\n.. _Create an issue: https://github.com/daq-tools/kotori/issues/new\n.. _data historian: https://en.wikipedia.org/wiki/Operational_historian\n.. _development sandbox: https://getkotori.org/docs/setup/sandbox.html\n.. _free and open-source software: https://en.wikipedia.org/wiki/Free_and_open-source_software\n.. _gallery: https://getkotori.org/docs/gallery/\n.. _Grafana: https://en.wikipedia.org/wiki/Grafana\n.. _InfluxDB: https://en.wikipedia.org/wiki/InfluxDB\n.. _LICENSE: https://github.com/daq-tools/kotori/blob/main/LICENSE\n.. _MDE: https://de.wikipedia.org/wiki/Maschinendatenerfassung\n.. _MongoDB: https://en.wikipedia.org/wiki/MongoDB\n.. _Mosquitto: https://github.com/eclipse/mosquitto\n.. _MQTT: https://en.wikipedia.org/wiki/MQTT\n.. _Python: https://www.python.org/\n.. _SCADA: https://en.wikipedia.org/wiki/SCADA\n.. _scenarios: https://getkotori.org/docs/about/scenarios.html\n.. _technologies: https://getkotori.org/docs/about/technologies.html\n.. _time-series: https://en.wikipedia.org/wiki/Time_series\n.. _Twisted: https://en.wikipedia.org/wiki/Twisted_(software)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaq-tools%2Fkotori","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaq-tools%2Fkotori","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaq-tools%2Fkotori/lists"}