{ "info": { "author": "Scott Sturdivant", "author_email": "scott.sturdivant@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": "About\n=====\n\nInspired by some DIY projects, this script allows you to quickly discern\nweather conditions by changing the colors of LEDs to reflect the current\nMETAR information. You will need a Raspberry Pi, some WS281X LEDs, and\nthe four letter designators of the airports you are interested in.\n\nThis code assumes you've connected to GPIO 18 (PWM0) and have added\n``blacklist snd_bcm2835`` to the ``/etc/modprobe.d/snd-blacklist.conf``\nfile.\n\nDon't want to DIY it? This is the code that powers the `Aviation Weather\nMaps `__ products. Enjoy a premade\nproduct, or continue reading and happy tinkering!\n\nInstall\n=======\n\n::\n\n sudo su\n apt install python3-venv python3-dev\n python3 -m venv /opt/rpi_metar\n source /opt/rpi_metar/bin/activate\n pip install wheel\n pip install rpi_metar\n\nConfiguration\n=============\n\nYou need to tell ``rpi_metar`` which LEDs correspond to which airports.\nYou may do this by creating the ``/etc/rpi_metar.conf`` file. There must\nbe an ``[airports]`` section where the airport codes are assigned to\nLEDs. For example:\n\n::\n\n [airports]\n KDEN = 0\n KBOS = 1\n\nThe LED indexes can be skipped and do not need to be continuous. If you\ndon't have an LED associated with an airport, it does not need to be\nentered.\n\nThe behavior of the program can be tweaked by including a ``settings``\nsection in the configuration file. These configuration values can be\nset:\n\n+-----------------+---------+--------------------------------------------------+\n| Option | Default | Description |\n+=================+=========+==================================================+\n| brightness | 128 | An integer (from 0 to 255) controlling the |\n| | | intensity of the LEDs appear. In a well lit |\n| | | room, 75 or 85 are recommended. In a bright |\n| | | room, try 128. |\n+-----------------+---------+--------------------------------------------------+\n| disable\\_gamma | False | A boolean that will allow you to disable the |\n| | | gamma correction. You may need this if using |\n| | | LEDs from different manufacturers / batches in a |\n| | | single run. |\n+-----------------+---------+--------------------------------------------------+\n| do\\_fade | True | A boolean controlling whether or not stations |\n| | | will fade into their new color during a |\n| | | transition. If ``False``, they will just |\n| | | abruptly change colors. |\n+-----------------+---------+--------------------------------------------------+\n| lightning | True | A boolean that controls if thunderstorm |\n| | | conditions should be visually indicated. They |\n| | | will appear as short blinks of white before |\n| | | going back to the station's original color. |\n+-----------------+---------+--------------------------------------------------+\n| lightning\\_dura | 1.0 | A float controlling how long a station blinks |\n| tion | | white before returning to its original color. |\n+-----------------+---------+--------------------------------------------------+\n| max\\_wind | 30 | An integer that sets the threshold for max wind |\n| | | speed in knots. Any steady or gusting winds |\n| | | above this value will result in yellow blinking |\n| | | lights. |\n+-----------------+---------+--------------------------------------------------+\n| metar\\_refresh\\ | 300 | An integer that controls how frequently (in |\n| _rate | | seconds) the METAR information is polled. |\n+-----------------+---------+--------------------------------------------------+\n| papertrail | True | A boolean controlling if logs are sent to a |\n| | | centralized system. Only METAR information and |\n| | | processing results are logged. |\n+-----------------+---------+--------------------------------------------------+\n| sources | NOAA,NO | The data sources to be used. A comma separated |\n| | AABacku | list of class names from the sources.py file. |\n| | p,SkyVe | ``BOM`` is another source for Australian |\n| | ctor | stations. |\n+-----------------+---------+--------------------------------------------------+\n| wind | True | A boolean that controls if high wind speeds |\n| | | should be visually indicated. They will appear |\n| | | as short blinks of yellow before going back to |\n| | | the station's original color. |\n+-----------------+---------+--------------------------------------------------+\n| wind\\_duration | 1.0 | A float controlling how long a station blinks |\n| | | yellow before returning to its original color. |\n+-----------------+---------+--------------------------------------------------+\n| unknown\\_off | True | A boolean that controls whether or not stations |\n| | | that are not reporting data will just turn off. |\n| | | If set to ``False``, after three attempts |\n| | | (during which time they appear as yellow), they |\n| | | will instead turn to orange. |\n+-----------------+---------+--------------------------------------------------+\n\nFor example, to reduce the brightness of the LEDs:\n\n::\n\n [settings]\n brightness = 85\n\nAnother feature includes setting up a legend. These are a series of\nlights that will always display their assigned static color. Similar to\nsetting up the airports by LED index, you can assign flight categories\nto LED indexes:\n\n::\n\n [legend]\n VFR = 10\n IFR = 11\n LIFR = 12\n MVFR = 13\n WIND = 14\n LIGHTNING = 15\n\nAutostart\n=========\n\nCreate the ``/etc/systemd/system/rpi_metar.service`` file with the\nfollowing contents:\n\n::\n\n [Unit]\n Description=METAR Display\n\n [Service]\n ExecStart=/opt/rpi_metar/bin/rpi_metar\n User=root\n Group=root\n Restart=always\n\n [Install]\n WantedBy=multi-user.target\n\nMake systemd aware of the changes:\n\n::\n\n systemctl daemon-reload\n\nMake sure it's set to run at boot:\n\n::\n\n systemctl enable rpi_metar\n\nStart the service:\n\n::\n\n systemctl start rpi_metar", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ScottSturdivant/rpi_metar", "keywords": "METAR,Raspberry Pi", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rpi-metar", "package_url": "https://pypi.org/project/rpi-metar/", "platform": "", "project_url": "https://pypi.org/project/rpi-metar/", "project_urls": { "Homepage": "https://github.com/ScottSturdivant/rpi_metar" }, "release_url": "https://pypi.org/project/rpi-metar/0.4/", "requires_dist": null, "requires_python": ">=3", "summary": "Visualizing METAR data on a Raspberry Pi with LEDs.", "version": "0.4" }, "last_serial": 5923399, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cc2d8ab55c57cd2bb3ae8a417b80ec8d", "sha256": "a4dc1e6792d84b85602155642b616f582001bf6db8c1d8904a4d7927cae19642" }, "downloads": -1, "filename": "rpi_metar-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cc2d8ab55c57cd2bb3ae8a417b80ec8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 7454, "upload_time": "2018-01-26T21:51:08", "url": "https://files.pythonhosted.org/packages/b1/63/1e1e071cc9daeb11069da8cc46a3e372a67a3dd924454d37b77cd26eedc8/rpi_metar-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "787022ce7133668533e99b8a07066534", "sha256": "ca65c9f267687ce80d63097290e0f58347ccaa701fdba0e275e2f28791d6d5dd" }, "downloads": -1, "filename": "rpi_metar-0.1.0.tar.gz", "has_sig": false, "md5_digest": "787022ce7133668533e99b8a07066534", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5510, "upload_time": "2018-01-26T21:51:10", "url": "https://files.pythonhosted.org/packages/95/76/47779cac9365e57ef04200fede5c08809c895b61336d4fdc2fdfbc90c4ac/rpi_metar-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2957d591518c56af998837b086adee3e", "sha256": "8977cc6d3a792a457f80874102539a05261ffdc96f099be8454f8a5f2c5f9573" }, "downloads": -1, "filename": "rpi_metar-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2957d591518c56af998837b086adee3e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5557, "upload_time": "2018-03-02T16:22:50", "url": "https://files.pythonhosted.org/packages/c5/bb/35deec62211b3e6c6d33f8644bf7a21ad01e866608e8880a095a8a04e314/rpi_metar-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "86ccf1ada56bf2905fa26ce7febcc3ec", "sha256": "b36352ed3554e69903b427463334abd5c984b8cd7cf44ae7b8d4296c19bda354" }, "downloads": -1, "filename": "rpi_metar-0.1.10.tar.gz", "has_sig": false, "md5_digest": "86ccf1ada56bf2905fa26ce7febcc3ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5943, "upload_time": "2018-05-30T13:09:12", "url": "https://files.pythonhosted.org/packages/03/95/231e108f26ad1bbc4c4f57192caff8537da149b7c65d352f1116ffa11341/rpi_metar-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "6f88b30fa4313d145113810b3b04d248", "sha256": "706526fe29ed1b2ba3331982bcb3464af0c2f1c22e9eb9cdd7c8d0acd2af2ef0" }, "downloads": -1, "filename": "rpi_metar-0.1.11.tar.gz", "has_sig": false, "md5_digest": "6f88b30fa4313d145113810b3b04d248", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5849, "upload_time": "2018-06-16T02:24:05", "url": "https://files.pythonhosted.org/packages/db/ea/40d0bd76997e7c0857b8a37c9e5b7a6e04396619bb59d4cf31ae0b21bd42/rpi_metar-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "a479d88ce5aedefae620696d9c2168ce", "sha256": "22da7b9794b67223224f3e38ed41cbc240888ea19c8d7575beadf79351abdd49" }, "downloads": -1, "filename": "rpi_metar-0.1.12.tar.gz", "has_sig": false, "md5_digest": "a479d88ce5aedefae620696d9c2168ce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5953, "upload_time": "2018-06-22T01:50:10", "url": "https://files.pythonhosted.org/packages/24/70/017629678add73e92a6daa92f2f6efc01f42b54e484d57ffc3b3f66299e3/rpi_metar-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "ba7e3e81d3293b21df197a3e670a3a7b", "sha256": "869cfd83e7545ce0477d41d40de0fbcdc6d88b9bec60bf9dcf4208ef9d75912e" }, "downloads": -1, "filename": "rpi_metar-0.1.13.tar.gz", "has_sig": false, "md5_digest": "ba7e3e81d3293b21df197a3e670a3a7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6314, "upload_time": "2018-08-01T01:39:02", "url": "https://files.pythonhosted.org/packages/f6/97/751906e9830d68385d105cc443cc4f519391e911d619922a05425ffdb61f/rpi_metar-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "8666bc2424a9c495d066b2733d351c8e", "sha256": "a492ded764ec7f8c35a82dd1bdadd2284fbc8b97e828f4ed6d24281f0aa819bc" }, "downloads": -1, "filename": "rpi_metar-0.1.14.tar.gz", "has_sig": false, "md5_digest": "8666bc2424a9c495d066b2733d351c8e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6517, "upload_time": "2018-08-21T21:41:56", "url": "https://files.pythonhosted.org/packages/3b/e2/be0348cdf4a72319c776122a68bc98d77a8f7fc014a70ed34dedd9b95d11/rpi_metar-0.1.14.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3bd7150262a523fe955f26844d963117", "sha256": "be33fff2599f6d9a3946221fbcba443323553e72bdb3163de4e5d4f8f824a327" }, "downloads": -1, "filename": "rpi_metar-0.1.2.tar.gz", "has_sig": false, "md5_digest": "3bd7150262a523fe955f26844d963117", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5624, "upload_time": "2018-03-02T16:32:25", "url": "https://files.pythonhosted.org/packages/11/4a/330a7c868ef74d0701871ca5158f2413262ed695f424412850c033fb5e9c/rpi_metar-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "56570d97ef422053069d1b058c7cd9d7", "sha256": "0ac9521362adb8ac55cc7738921d722d1ca3114c4b059c22003f614cfae1fa2c" }, "downloads": -1, "filename": "rpi_metar-0.1.3.tar.gz", "has_sig": false, "md5_digest": "56570d97ef422053069d1b058c7cd9d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5630, "upload_time": "2018-03-02T17:49:26", "url": "https://files.pythonhosted.org/packages/15/c8/ee515ae2a0101d6c48f23c737f8b1c9f6210fc6a45ab74a4f45cf82a3194/rpi_metar-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "3a9514ab7cc35d2ce837a1c07fc7149c", "sha256": "478f8d4add5c468ec472d96de181d098b638715f8365f4a60b2ae009a85d9d88" }, "downloads": -1, "filename": "rpi_metar-0.1.4.tar.gz", "has_sig": false, "md5_digest": "3a9514ab7cc35d2ce837a1c07fc7149c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5447, "upload_time": "2018-03-06T19:05:22", "url": "https://files.pythonhosted.org/packages/e3/93/f21c805cea926438c63b190b24bc50e91413ac9c15db6560edb83b79e579/rpi_metar-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "c2779365ee983e84246e2c5244efb699", "sha256": "e1d3ae6d8f3c7f50c7df87a51bac6fbea854ef52956987c9c95301ff210efbba" }, "downloads": -1, "filename": "rpi_metar-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c2779365ee983e84246e2c5244efb699", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5034, "upload_time": "2018-03-16T13:16:56", "url": "https://files.pythonhosted.org/packages/21/40/1258004255e11ae58856ca3392917655ee7396c21921924bbfa02e900bea/rpi_metar-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "3df837145022de1b22b8d9ed33b21980", "sha256": "dc8e87d795b6e00ae46637dd5efc0fcbacb87e3729687bd5278f230c36a39e63" }, "downloads": -1, "filename": "rpi_metar-0.1.6.tar.gz", "has_sig": false, "md5_digest": "3df837145022de1b22b8d9ed33b21980", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5196, "upload_time": "2018-04-03T21:57:50", "url": "https://files.pythonhosted.org/packages/86/46/dc136c777b67452f25a6cd4880234ec5250f44008a39b7d3fc776c5920b2/rpi_metar-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "db84999cf587a82ae3a54242322d2a7d", "sha256": "300b312e82334335a9e72230043cce63efe79d5abed1e4c415311ae668d907b1" }, "downloads": -1, "filename": "rpi_metar-0.1.7.tar.gz", "has_sig": false, "md5_digest": "db84999cf587a82ae3a54242322d2a7d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5212, "upload_time": "2018-04-21T15:22:54", "url": "https://files.pythonhosted.org/packages/5d/f1/f20ed33a54aa6bd428078b2a66461d1dbc6436e10455f31cc2fc863d5c97/rpi_metar-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "7b53dda8bc1a54687eea6f075039658b", "sha256": "05af970f27a9d5e13bca57b114b4c82c366f0ee682166ce31986f82932f5dc83" }, "downloads": -1, "filename": "rpi_metar-0.1.8.tar.gz", "has_sig": false, "md5_digest": "7b53dda8bc1a54687eea6f075039658b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5450, "upload_time": "2018-05-10T21:02:19", "url": "https://files.pythonhosted.org/packages/c3/5c/94ce14e773caa628c5c73ae5b6973ae982836474ff8907a144f3b8811fa5/rpi_metar-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "705283e73942664fb1e6b44a3b765d8f", "sha256": "a6fab06267690cd65db46ff82e44eb4abc8bfd701f7e4b4d3c522f752baf1789" }, "downloads": -1, "filename": "rpi_metar-0.1.9.tar.gz", "has_sig": false, "md5_digest": "705283e73942664fb1e6b44a3b765d8f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5590, "upload_time": "2018-05-27T02:49:47", "url": "https://files.pythonhosted.org/packages/73/e3/8f3a01eaae6e575e8c8bdffa87e3c0a45970181b5254021b86914e36ce8e/rpi_metar-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d3cbfb93132d4050980598e1b271d2ff", "sha256": "02ca8771e9e5179edd27bfdd4932d8b032b1b61eb8756451c9fbc1d77ad1b16d" }, "downloads": -1, "filename": "rpi_metar-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d3cbfb93132d4050980598e1b271d2ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 349378, "upload_time": "2018-08-24T15:21:41", "url": "https://files.pythonhosted.org/packages/40/a4/1a62680d327bd0124a806e69e3026697fabd83e0d5fecc4145899160e316/rpi_metar-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "59a206113e792984393a3bdbbec65c77", "sha256": "3cf047c67a26446f0fda2e00a581baf96271f8289d83c0d16d156201bb1cfdbd" }, "downloads": -1, "filename": "rpi_metar-0.3.0.tar.gz", "has_sig": false, "md5_digest": "59a206113e792984393a3bdbbec65c77", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 353668, "upload_time": "2019-01-23T16:05:08", "url": "https://files.pythonhosted.org/packages/3e/c4/b8e47c4c90df275de19edc03933e01e097d7cd90bf5d5a4edbb49ed70a6d/rpi_metar-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "7a67af4620c6817a63bdccb7e3c405a2", "sha256": "8f2a0c6c148cb544f3266d3b02acbcac2a31fd9fbda9290468d528055767a801" }, "downloads": -1, "filename": "rpi_metar-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7a67af4620c6817a63bdccb7e3c405a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 353669, "upload_time": "2019-02-20T15:57:51", "url": "https://files.pythonhosted.org/packages/6c/3e/66ad54a95c0749188e5c096c6291d0c77b27654715d60bcc319d9b7ba7cb/rpi_metar-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "87ed08c4f53b0fcd68ce0e65387a2adc", "sha256": "b5a993e87af1b3a92439292a65a361417ab5c8e31671a93c3f01725c92e1ec92" }, "downloads": -1, "filename": "rpi_metar-0.3.2.tar.gz", "has_sig": false, "md5_digest": "87ed08c4f53b0fcd68ce0e65387a2adc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 353808, "upload_time": "2019-02-23T20:28:03", "url": "https://files.pythonhosted.org/packages/8f/a5/7dfd2a48581216b1bed4f921317a1d2234909a4fbe01017cc750c4293b4d/rpi_metar-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "7aad8bbe13c3b07c9986a14ffc7e7341", "sha256": "823cc2db6381421f0c5a824a70f570d3bfd94f99acf994e780bfa35e546ababf" }, "downloads": -1, "filename": "rpi_metar-0.3.3.tar.gz", "has_sig": false, "md5_digest": "7aad8bbe13c3b07c9986a14ffc7e7341", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 355910, "upload_time": "2019-03-23T16:59:43", "url": "https://files.pythonhosted.org/packages/4d/92/56118f62ef9de2c2dfd1c8a32a259a4c36e14628734d1ec0c2e33cfa5f1e/rpi_metar-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "a8cbfdf7f91055eb5b64c86f27dae349", "sha256": "adfc68eebbb2b96148f77fe05faf7562cc68bb1bdfb07733a907bac106c55003" }, "downloads": -1, "filename": "rpi_metar-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a8cbfdf7f91055eb5b64c86f27dae349", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 355997, "upload_time": "2019-05-24T20:38:57", "url": "https://files.pythonhosted.org/packages/4d/78/91f03fabe6a15ab53e5075adae2ac0417957843660b0715d13ddd6f947df/rpi_metar-0.3.4.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "6a1acbc66e085bd455f947c712eae3a8", "sha256": "9918680b6aafb39e26a1ef7853d0ab7d2be75618b4b691dbb1372bfbfe3792c9" }, "downloads": -1, "filename": "rpi_metar-0.4.tar.gz", "has_sig": false, "md5_digest": "6a1acbc66e085bd455f947c712eae3a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 357590, "upload_time": "2019-10-03T13:14:23", "url": "https://files.pythonhosted.org/packages/5b/af/0114fd998990286fb30e9bf6e11d9d998c2a1757c8a3eb8cc98ca596d0f5/rpi_metar-0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6a1acbc66e085bd455f947c712eae3a8", "sha256": "9918680b6aafb39e26a1ef7853d0ab7d2be75618b4b691dbb1372bfbfe3792c9" }, "downloads": -1, "filename": "rpi_metar-0.4.tar.gz", "has_sig": false, "md5_digest": "6a1acbc66e085bd455f947c712eae3a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 357590, "upload_time": "2019-10-03T13:14:23", "url": "https://files.pythonhosted.org/packages/5b/af/0114fd998990286fb30e9bf6e11d9d998c2a1757c8a3eb8cc98ca596d0f5/rpi_metar-0.4.tar.gz" } ] }