{ "info": { "author": "Andreas Motl", "author_email": "andreas@hiveeyes.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)", "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Topic :: Communications", "Topic :: Database", "Topic :: Internet", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Embedded Systems", "Topic :: Software Development :: Libraries", "Topic :: System :: Archiving", "Topic :: System :: Networking :: Monitoring" ], "description": ".. image:: https://img.shields.io/badge/Python-2.7-green.svg\n :target: https://pypi.org/project/grafanimate/\n\n.. image:: https://img.shields.io/pypi/v/grafanimate.svg\n :target: https://pypi.org/project/grafanimate/\n\n.. image:: https://img.shields.io/github/tag/daq-tools/grafanimate.svg\n :target: https://github.com/daq-tools/grafanimate\n\n|\n\n###########\ngrafanimate\n###########\n\nAnimate timeseries data with Grafana.\n\n\n*****\nAbout\n*****\n`grafanimate` captures screenshots while animating a\nGrafana dashboard by manipulating its `time range control`_,\ni.e. navigating through time. The result can be rendered as a\nsequence of png images, an animated gif file and as a video file.\n\n\n.. attention::\n\n This program can put significant load on your Grafana instance\n and the underlying database machinery. Handle with care!\n\n\n********\nExamples\n********\n**Composition**: `The Hiveeyes Project`_. Developing a flexible beehive monitoring infrastructure.\nClicking on an image will take you to the animated version.\n\n.. _The Hiveeyes Project: https://hiveeyes.org/\n\n\nluftdaten.info coverage\n=======================\n.. figure:: https://ptrace.hiveeyes.org/2018-12-28_luftdaten-info-coverage.gif\n :target: https://ptrace.hiveeyes.org/2018-12-28_luftdaten-info-coverage.mp4\n :width: 480px\n :height: 306px\n :scale: 125%\n\n Coverage of luftdaten.info sensors starting October 2015 across Europe.\n\n- **Data source**: `luftdaten.info`_ (LDI)\n- **Production**: `Luftdatenpumpe`_, `LDI data plane v2`_, daily.\n- **Development**: `Erneuerung der Luftdatenpumpe`_. All contributions welcome.\n\n\nFine dust pollution on New Year's Eve\n=====================================\n.. figure:: https://ptrace.hiveeyes.org/2019-02-04_M0h7br_ik_2019-01-01T00-15-00.png\n :target: https://ptrace.hiveeyes.org/2019-02-03_particulates-on-new-year-s-eve.mp4\n :width: 1290px\n :height: 824px\n :scale: 50%\n\n `Animation of fine dust pollution on New Year's Eve 2018 across Europe `_.\n\n- **Data source**: `luftdaten.info`_ (LDI)\n- **Production**: `Luftdatenpumpe`_, `LDI data plane v2`_, historical.\n- **Development**: `Erneuerung der Luftdatenpumpe`_. All contributions welcome.\n\n.. _luftdaten.info: http://luftdaten.info/\n.. _Luftdatenpumpe: https://github.com/hiveeyes/luftdatenpumpe\n.. _Erneuerung der Luftdatenpumpe: https://community.hiveeyes.org/t/erneuerung-der-luftdatenpumpe/1199\n.. _LDI data plane v2: https://community.hiveeyes.org/t/ldi-data-plane-v2/1412\n\n\nDWD CDC\n=======\n.. figure:: https://ptrace.hiveeyes.org/2019-02-04_DLOlE_Rmz_2018-03-10T13-00-00.png\n :target: https://ptrace.hiveeyes.org/2018-12-28_wetter-dwd-temperatur-sonne-niederschlag-karten-cdc.mp4\n :width: 1428px\n :height: 829px\n :scale: 50%\n\n `Short weather film about temperature, sun and precipitation based on DWD/CDC data in March 2018 `_.\n\n- **Data source**: `DWD Open Data`_ (DWD)\n- **Production**: `DWD Climate Data Center (CDC), 10m-Werte: Aktuelle Lufttemperaturen, Sonnenscheindauer & Niederschlag `_\n- **Development**: \n\n.. _DWD Open Data: https://opendata.dwd.de/\n\n\nIR-Sensor SVG-Pixmap\n====================\n.. figure:: https://ptrace.hiveeyes.org/2019-02-04_acUXbj_mz_2018-08-14T03-16-12.png\n :target: https://ptrace.hiveeyes.org/2019-02-04_ir-sensor-svg-pixmap.mp4\n :width: 666px\n :height: 700px\n :scale: 50%\n\n IR-Sensor SVG-Pixmap displaying temperature changes inside a beehive.\n\n- **Data source**: `Clemens Gruber`_ (CG)\n- **Development**: `How to Visualize 2-Dimensional Temperature Data in Grafana `_\n\n.. _Clemens Gruber: https://community.hiveeyes.org/u/clemens\n\n\n\n*****\nUsage\n*****\n::\n\n $ grafanimate --help\n\n Usage:\n grafanimate [options] [--target=]...\n grafanimate --version\n grafanimate (-h | --help)\n\n Options:\n --grafana-url= Base URL to Grafana, [default: http://localhost:3000].\n --scenario= Which scenario to run. Scenarios are defined as methods.\n --dashboard-uid= Grafana dashboard uid.\n\n Optional:\n --panel-id= Render single panel only by navigating to \"panelId=&fullscreen\".\n --dashboard-view= Use Grafana's \"d-solo\" view for rendering single panels without header.\n\n --header-layout= The header rendering subsystem offers different modes\n for amending the vanilla Grafana user interface.\n Multiple modes can be combined.\n [default: large-font]\n\n - no-chrome: Set kiosk mode, remove sidemenu and more chrome\n - large-font: Use larger font sizes for title and datetime\n - collapse-datetime: Collapse datetime into title\n - studio: Apply studio modifications. This options aggregates\n \"no-chrome\", \"large-font\" and \"collapse-datetime\".\n - no-folder: Don't include foldername in title\n\n - no-title: Turn off title widget\n - no-datetime: Turn off datetime widget\n\n --datetime-format= Datetime format to use with header layouts like \"studio\".\n Examples: YYYY-MM-DD HH:mm:ss, YYYY, HH:mm.\n\n There are also some format presets available here:\n - human-date: on 2018-08-14\n - human-time: at 03:16:05\n - human-datetime: on 2018-08-14 at 03:16:05\n\n When left empty, the default is determined by the configured interval.\n\n --debug Enable debug logging\n -h --help Show this screen\n\n\n Examples for scenario mode. Script your animation in file \"scenarios.py\".\n\n # Generate sequence of .png files in ./var/spool/ldi_all/1aOmc1sik\n grafanimate --grafana-url=http://localhost:3000/ --scenario=ldi_all --dashboard-uid=1aOmc1sik\n\n # Use more parameters to control the rendering process.\n grafanimate --grafana-url=http://localhost:3000/ --scenario=ir_sensor_svg_pixmap --dashboard-uid=_TbvFUyik --header-layout=studio --datetime-format=human-time --panel-id=6\n\n\n*****\nSetup\n*****\n\nPrerequisites\n=============\nThis program uses the fine ffmpeg_ for doing the heavy lifting.\n\n.. _ffmpeg: https://ffmpeg.org/\n\n\ngrafanimate\n===========\n.. note::\n\n As Marionette for Firefox is not available for Python 3,\n this program works with Python 2 only. We recommend installing\n the program into a Python virtualenv.\n\n::\n\n virtualenv --python=python2 .venv2\n source .venv2/bin/activate\n pip install grafanimate\n\n\n**********************\nBackground and details\n**********************\n\nIntroduction\n============\nAnimating things in Grafana_ across the time-axis in the spirit\nof the `GeoLoop Panel Plugin`_ hasn't been unlocked for Grafana\nin a more general way yet. Challenge accepted!\n\nTime warp\n=========\nAt this programs' core is the code to `set time range in Grafana`_::\n\n timeSrv = angular.element('grafana-app').injector().get('timeSrv');\n timeSrv.setTime({from: \"2015-10-01\", to: \"2018-12-31\"});\n\nRendering engine\n================\nTurtles all the way up, the main rendering work horse is a Firefox Browser\nautomated through `Marionette Python Client`_ fame:\n\n The Marionette Python client library allows you to remotely control\n a Gecko-based browser or device which is running a Marionette server.\n\nOutlook\n=======\nNeither Playlists_ nor `Scripted Dashboards`_ offer these things\nto the user, but this program can be combined with both in order\nto implement more complex animations on top of Grafana.\n\n\n----\n\n*******************\nProject information\n*******************\n``grafanimate`` is released under the GNU AGPL v3 license.\n\nThe code lives on `GitHub `_ and\nthe Python package is published to `PyPI `_.\n\nThe software has been tested on Python 2.7.\n\n\nContributing\n============\nWe are always happy to receive code contributions, ideas, suggestions\nand problem reports from the community.\nSpend some time taking a look around, locate a bug, design issue or\nspelling mistake and then send us a pull request or create an issue.\n\n\nLicense\n=======\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published by\nthe Free Software Foundation; either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program; if not, see:\n,\nor write to the Free Software Foundation,\nInc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n\n\n\n.. _Grafana: https://grafana.com/\n.. _GeoLoop Panel Plugin: https://grafana.com/plugins/citilogics-geoloop-panel\n.. _time range control: http://docs.grafana.org/reference/timerange/\n.. _Playlists: http://docs.grafana.org/reference/playlist/\n.. _Scripted Dashboards: http://docs.grafana.org/reference/scripting/\n.. _set time range in Grafana: https://stackoverflow.com/questions/48264279/how-to-set-time-range-in-grafana-dashboard-from-text-panels/52492205#52492205\n.. _Marionette Python Client: https://marionette-client.readthedocs.io/", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/daq-tools/grafanimate", "keywords": "grafana animate animation automation time gif video", "license": "AGPL 3, EUPL 1.2", "maintainer": "", "maintainer_email": "", "name": "grafanimate", "package_url": "https://pypi.org/project/grafanimate/", "platform": "", "project_url": "https://pypi.org/project/grafanimate/", "project_urls": { "Homepage": "https://github.com/daq-tools/grafanimate" }, "release_url": "https://pypi.org/project/grafanimate/0.5.5/", "requires_dist": null, "requires_python": "", "summary": "Animate timeseries data with Grafana", "version": "0.5.5" }, "last_serial": 4776253, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "aedfbeae11142ee0638ff9de160d5740", "sha256": "f410df204d14b642a742a4c93f681be9fdc371db4c275f86492c6871886b4d21" }, "downloads": -1, "filename": "grafanimate-0.1.0.tar.gz", "has_sig": false, "md5_digest": "aedfbeae11142ee0638ff9de160d5740", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7979, "upload_time": "2018-12-25T03:38:06", "url": "https://files.pythonhosted.org/packages/2a/80/05e751e9acb53f7f0ce3fe92b5a49f395e465b31c4699356c96c6934e43d/grafanimate-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "04e1314e93c9809570201c17a1ae67d7", "sha256": "4fcf1cb16ffd48922f61bb9861a9c03421565b2ed884502ffbaaf91f166867fa" }, "downloads": -1, "filename": "grafanimate-0.2.0.tar.gz", "has_sig": false, "md5_digest": "04e1314e93c9809570201c17a1ae67d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12275, "upload_time": "2018-12-26T17:56:50", "url": "https://files.pythonhosted.org/packages/40/54/6933c53879f6e6469677e056afd863b9a3551f8df1d9403130b33e76ab19/grafanimate-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "01c9de1f29775a43172c157051633ac2", "sha256": "9fe6d6bc247f153412cfcffdb63a5dd59eebadc0ed44b8fc1dc189dda1611697" }, "downloads": -1, "filename": "grafanimate-0.3.0.tar.gz", "has_sig": false, "md5_digest": "01c9de1f29775a43172c157051633ac2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17266, "upload_time": "2018-12-26T23:15:22", "url": "https://files.pythonhosted.org/packages/92/8c/57ca9148e0e197d23b89fd101a81401763ebcc0da18c99f8f3e7d983bea9/grafanimate-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "89d79b7c296daa64ab412665b692dbf0", "sha256": "3637a31fef0a67f7f71f4cd761592a4225d0a5d6746963d67b5f40b44a8d7135" }, "downloads": -1, "filename": "grafanimate-0.4.0.tar.gz", "has_sig": false, "md5_digest": "89d79b7c296daa64ab412665b692dbf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22304, "upload_time": "2018-12-28T10:32:14", "url": "https://files.pythonhosted.org/packages/70/b8/c0231b05ea1265228b825e37659a38a03f2c46d0db4afd621b00be851596/grafanimate-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "d221f4aca6ffed799d956abb94873638", "sha256": "ae730c082b0addb3e13d87bc5b8ea51bd602b32d1cc07e11094cdc5a8adee522" }, "downloads": -1, "filename": "grafanimate-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d221f4aca6ffed799d956abb94873638", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22370, "upload_time": "2018-12-28T11:08:39", "url": "https://files.pythonhosted.org/packages/64/77/8c1955c1ba4985a0c3371493c7776e0b3ffd732bccd9261fd529eff0ee2a/grafanimate-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "8c03c7264ea95e18e34e00cd09dc9578", "sha256": "a40444d8d4e90ab40d6fdb366894a30d30d37f9f4ce9adb1f9c6f9c0dbcea22e" }, "downloads": -1, "filename": "grafanimate-0.5.0.tar.gz", "has_sig": false, "md5_digest": "8c03c7264ea95e18e34e00cd09dc9578", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23754, "upload_time": "2019-02-04T00:58:24", "url": "https://files.pythonhosted.org/packages/fb/c7/e331f6039d26b42c019a8b85641af1498cbf2f7330a0e5f9236acf6c0c2e/grafanimate-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "b6588fe69b2f5a4691fdc0dd0e02d35f", "sha256": "734f6a398fd9ee771413cff062c4992f2fa075b4f99f1646f4483295cd8160f5" }, "downloads": -1, "filename": "grafanimate-0.5.1.tar.gz", "has_sig": false, "md5_digest": "b6588fe69b2f5a4691fdc0dd0e02d35f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23803, "upload_time": "2019-02-04T01:08:08", "url": "https://files.pythonhosted.org/packages/45/57/632ce612e3e6c32b3e95d51491b6614928c2605b32bf629afffc1e947f0f/grafanimate-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "e310528182894686e64bc2731f1a0b6b", "sha256": "de7b39400fc0f5382ae510abed16f318e808cd713d664d0eee63c5739564511a" }, "downloads": -1, "filename": "grafanimate-0.5.2.tar.gz", "has_sig": false, "md5_digest": "e310528182894686e64bc2731f1a0b6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23891, "upload_time": "2019-02-04T01:26:44", "url": "https://files.pythonhosted.org/packages/2a/64/bfb5a08d1cfe0e5acf9bff360d761e134f01447c74c51a2d5ae56c0a3a32/grafanimate-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "ffc2f636e2870f2af35394372003164d", "sha256": "0fcdfe68bf0b008cfd838da0c959d5baa129440a3992d5854488f112aa9d6bad" }, "downloads": -1, "filename": "grafanimate-0.5.3.tar.gz", "has_sig": false, "md5_digest": "ffc2f636e2870f2af35394372003164d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23877, "upload_time": "2019-02-04T01:31:36", "url": "https://files.pythonhosted.org/packages/53/24/25f9ab6e61d7d9b071bd92b0c3ee47af03885d18253d1e26b677f87f2c29/grafanimate-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "aa63222637d2b267b63d36f7d7f6c0ce", "sha256": "553d1a74486de6b2d5697c701639d86c95667e18bdfea13ff7be53db6065dac4" }, "downloads": -1, "filename": "grafanimate-0.5.4.tar.gz", "has_sig": false, "md5_digest": "aa63222637d2b267b63d36f7d7f6c0ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23933, "upload_time": "2019-02-04T02:06:53", "url": "https://files.pythonhosted.org/packages/e3/49/443b3f1e735d288e45aaa2520e19c0803e8bd51c7b2be1e69e706a730663/grafanimate-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "aee89de3edb0eb5eea7493f815110a57", "sha256": "3d48e729d645f6e0f1ab4d29cd41151d170a58f77d74e4b07cf723b0a05d997e" }, "downloads": -1, "filename": "grafanimate-0.5.5.tar.gz", "has_sig": false, "md5_digest": "aee89de3edb0eb5eea7493f815110a57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23940, "upload_time": "2019-02-04T02:11:24", "url": "https://files.pythonhosted.org/packages/93/a2/7d6e52848e59cd5a15194c5b59e13a7ef3bb12fb7646d8d7129c03585ba8/grafanimate-0.5.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aee89de3edb0eb5eea7493f815110a57", "sha256": "3d48e729d645f6e0f1ab4d29cd41151d170a58f77d74e4b07cf723b0a05d997e" }, "downloads": -1, "filename": "grafanimate-0.5.5.tar.gz", "has_sig": false, "md5_digest": "aee89de3edb0eb5eea7493f815110a57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23940, "upload_time": "2019-02-04T02:11:24", "url": "https://files.pythonhosted.org/packages/93/a2/7d6e52848e59cd5a15194c5b59e13a7ef3bb12fb7646d8d7129c03585ba8/grafanimate-0.5.5.tar.gz" } ] }