{"id":26181468,"url":"https://github.com/markmybytes/rpi-paper-eta","last_synced_at":"2026-04-11T16:07:32.054Z","repository":{"id":238662718,"uuid":"699265139","full_name":"markmybytes/rpi-paper-eta","owner":"markmybytes","description":"Display ETAs with Raspberry Pi and E-paper.","archived":false,"fork":false,"pushed_at":"2024-12-12T04:39:08.000Z","size":78026,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T08:51:22.600Z","etag":null,"topics":["epaper","eta","python","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markmybytes.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2023-10-02T09:32:32.000Z","updated_at":"2024-12-12T04:39:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"65c0154d-5cbc-4896-b764-7da82eb5e9d1","html_url":"https://github.com/markmybytes/rpi-paper-eta","commit_stats":null,"previous_names":["superdumbtm/rpi-paper-eta","markmybytes/rpi-paper-eta"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmybytes%2Frpi-paper-eta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmybytes%2Frpi-paper-eta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmybytes%2Frpi-paper-eta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markmybytes%2Frpi-paper-eta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markmybytes","download_url":"https://codeload.github.com/markmybytes/rpi-paper-eta/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243119568,"owners_count":20239321,"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":["epaper","eta","python","raspberry-pi"],"created_at":"2025-03-11T21:59:36.514Z","updated_at":"2025-12-24T16:45:24.684Z","avatar_url":"https://github.com/markmybytes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003cdiv align=\"center\"\u003e\n  \n  [![Contributors][contributors-shield]][contributors-url]\n  [![Forks][forks-shield]][forks-url]\n  [![Stargazers][stars-shield]][stars-url]\n  [![Issues][issues-shield]][issues-url]\n  [![MIT License][license-shield]][license-url]\n  \n\u003c/div\u003e\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/markmybytes/rpi-paper-eta\"\u003e\n    \u003cimg src=\"https://github.com/user-attachments/assets/89d2baf0-205e-4ee8-8d28-2b2743ec5fb1\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003erpi-paper-eta\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Display ETAs with Raspberry Pi and E-paper with a comprehensive web management interface.\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/markmybytes/rpi-paper-eta/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/markmybytes/rpi-paper-eta/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/c81dfa25-83ce-4125-80d4-e1efae8db166\" width=\"70%\"\u003e\n\u003cp align=\"right\"\u003e\n\nThis is a ETA display hardware gadget that provide ETA information for various transport within Hong Kong using a Raspberry Pi and a E-paper display.\n\nUnlike most of the similar project, minimal setup is required without any of the configuration file modification, command entering or steep learning curve.\nMost of the configuration can be done via a web management interface.\n\nThe data source of ETAs are [DATA.GOV.HK](https://data.gov.hk/en/).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n\n[\u003cimg src=\"https://img.shields.io/badge/Alpine.js-77c1d2?style=for-the-badge\u0026logo=Alpine.js\u0026logoColor=white\"\u003e](https://alpinejs.dev/)\n[\u003cimg src=\"https://img.shields.io/badge/bootstrap-7532fa?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\"\u003e](https://getbootstrap.com/)\n[\u003cimg src=\"https://img.shields.io/badge/flask-1b6d74?style=for-the-badge\u0026logo=flask\u0026logoColor=white\"\u003e](https://flask.palletsprojects.com/)\n[\u003cimg src=\"https://img.shields.io/badge/htmx-3d72d7?style=for-the-badge\u0026logo=htmx\u0026logoColor=white\"\u003e](https://htmx.org/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\nThis is an example of how you may give instructions on setting up your project locally.\nTo get a local copy up and running follow these simple example steps.\n\n### Prerequisites\n\n* Python \u003e= 3.10\n\nDependening on the E-paper display you are using, the required dependency will be different.\nPlease refer to the instruction from your display manufacturer.\n\n* [Waveshare](https://www.waveshare.com/wiki/Main_Page#e-Paper)\n\n### Installation\n\n#### Setup\n\n1. Clone the repo\n   ```sh\n   git clone https://github.com/markmybytes/rpi-paper-eta.git\n   ```\n2. Install Pip packages\n   ```sh\n   pip install -r requirments.txt\n   ```\n\n#### Deploy\n\n* Development\n   ```sh\n   flask run\n   ```\n* Production\n   ```sh\n   gunicorn\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\n### Web Management Interface\n\n  - Route Bookmarking\n  \u003cimg src=\"https://github.com/user-attachments/assets/b0eb4290-b4cf-4c37-ace9-95a3b1e1e64f\" width=\"65%\"\u003e\n\n  - Display Refresh Scheduling\n  \u003cimg src=\"https://github.com/user-attachments/assets/71b0e205-7ae2-418d-b0cb-74b00bb882e5\" width=\"65%\"\u003e\n\n### Customisation\n\nSome of the default behaviour or storage path can be altered with a .env file (recommanded) or OS environment variable.\nThe setting is intended not to be able to configure via the web interface.\n\nThe details is as follow:\n\n| **Variable**            \t| **Description**                                                                                \t|\n|-------------------------\t|------------------------------------------------------------------------------------------------\t|\n| BABEL_DEFAULT_LOCALE    \t| A local code for the default displaying language of the CMS.                                   \t|\n| BABEL_DEFAULT_TIMEZO    \t| A local code for the default time zone of the CMS (only used for   translation-related needs). \t|\n| DIR_STORAGE             \t| The directory name for the CMS to store the data (cache, logs, temporary   files) into.        \t|\n| DIR_SCREEN_DUMP         \t| The directory name for the CMS to store the screen dump images.                                \t|\n| DIR_LOG                  \t| The directory name for the CMS to store logs.                                                 \t|\n| SECRET_KEY              \t| The key for the CMS to sing for security related needs such as session   cookie                \t|\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/markmybytes/rpi-paper-eta.svg?style=for-the-badge\n[contributors-url]: https://github.com/markmybytes/rpi-paper-eta/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/markmybytes/rpi-paper-eta.svg?style=for-the-badge\n[forks-url]: https://github.com/markmybytes/rpi-paper-eta/network/members\n[stars-shield]: https://img.shields.io/github/stars/markmybytes/rpi-paper-eta.svg?style=for-the-badge\n[stars-url]: https://github.com/markmybytes/rpi-paper-eta/stargazers\n[issues-shield]: https://img.shields.io/github/issues/markmybytes/rpi-paper-eta.svg?style=for-the-badge\n[issues-url]: https://github.com/markmybytes/rpi-paper-eta/issues\n[license-shield]: https://img.shields.io/github/license/markmybytes/rpi-paper-eta.svg?style=for-the-badge\n[license-url]: https://github.com/markmybytes/rpi-paper-eta/blob/master/LICENSE.txt\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkmybytes%2Frpi-paper-eta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkmybytes%2Frpi-paper-eta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkmybytes%2Frpi-paper-eta/lists"}