{"id":14978031,"url":"https://github.com/abnormaldistributions/e_paper_weather_display","last_synced_at":"2025-05-16T01:07:36.681Z","repository":{"id":44813741,"uuid":"297178790","full_name":"AbnormalDistributions/e_paper_weather_display","owner":"AbnormalDistributions","description":"Raspberry Pi weather display using Waveshare e-paper display and Open Weather Map API","archived":false,"fork":false,"pushed_at":"2024-11-03T19:48:57.000Z","size":3204,"stargazers_count":424,"open_issues_count":3,"forks_count":37,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-05-16T01:07:30.514Z","etag":null,"topics":["e-ink","e-paper","eink","epaper","python","raspberry-pi","raspberrypi","waveshare","weather"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbnormalDistributions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"patreon":"AbnormalDistributions","ko_fi":"AbnormalDistributions"}},"created_at":"2020-09-20T23:01:37.000Z","updated_at":"2025-05-01T11:12:36.000Z","dependencies_parsed_at":"2024-12-01T01:13:51.730Z","dependency_job_id":null,"html_url":"https://github.com/AbnormalDistributions/e_paper_weather_display","commit_stats":{"total_commits":60,"total_committers":4,"mean_commits":15.0,"dds":0.4666666666666667,"last_synced_commit":"2a96a70bc1f2466a7f148248307e98225dc923e4"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbnormalDistributions%2Fe_paper_weather_display","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbnormalDistributions%2Fe_paper_weather_display/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbnormalDistributions%2Fe_paper_weather_display/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbnormalDistributions%2Fe_paper_weather_display/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbnormalDistributions","download_url":"https://codeload.github.com/AbnormalDistributions/e_paper_weather_display/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"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":["e-ink","e-paper","eink","epaper","python","raspberry-pi","raspberrypi","waveshare","weather"],"created_at":"2024-09-24T13:56:44.481Z","updated_at":"2025-05-16T01:07:31.672Z","avatar_url":"https://github.com/AbnormalDistributions.png","language":"Python","funding_links":["https://patreon.com/AbnormalDistributions","https://ko-fi.com/AbnormalDistributions","https://ko-fi.com/abnormaldistributions"],"categories":[],"sub_categories":[],"readme":"\n\n# E-paper Weather Display\n\nThis project uses a Raspberry Pi to show weather updates and trash reminders on a Waveshare 7.5-inch e-paper display. It fetches weather data from OpenWeatherMap and refreshes the display at set intervals. Minimal energy consumption makes this setup ideal for continuous display without frequent updates.\n\n![Display Photo 1](https://github.com/AbnormalDistributions/e_paper_weather_display/blob/master/photos/photo1.jpg?raw=true)\n![Display Photo 2](https://raw.githubusercontent.com/AbnormalDistributions/e_paper_weather_display/refs/heads/master/photos/photo2.jpg)\n\nIf you find this project useful, consider [buying me a coffee ☕️](https://ko-fi.com/abnormaldistributions).\n\n---\n\n## Table of Contents\n- [What’s New](#whats-new-version-20)\n- [Parts List](#parts-list)\n- [Setup Instructions](#setup-instructions)\n  - [Installation](#installation)\n  - [Configuration](#configuration)\n- [Running the Script](#running-the-script)\n- [Setting up Automatic Updates (Cron)](#setting-up-automatic-updates-optional)\n- [Repository Structure](#files-in-this-repository)\n- [Troubleshooting](#troubleshooting)\n- [Credit and License](#credit-and-license)\n\n## What’s New (Version 2.0)\n- **Upgraded to OpenWeatherMap One Call API 3.0**: This update now uses the latest version of the OpenWeatherMap API (3.0), which may require users to update their subscriptions if they were previously using version 2.5. See the [OpenWeatherMap One Call Migration Guide](https://openweathermap.org/one-call-transfer) for details on the API changes and subscription requirements.\n- **Automatic Log Management**: Logs now rotate when they get too large, making maintenance easier.\n- **User-Friendly Settings**: All essential settings are grouped together for quick customization.\n- **More Reliable Error Handling**: Logs network and API errors for easier troubleshooting.\n- **Improved Directory Handling**: The script finds the right directories automatically, without manual path adjustments.\n- **Trash Day Reminders**: Customize specific days to get reminders on the display.\n\n### Parts List\n- **Waveshare 7.5-inch e-Paper HAT**: [Available on Amazon](https://amzn.to/3UBxuah) (affiliate link).  \n- **Raspberry Pi** (tested on a Pi 3; any model should work except the Pi Zero without soldered headers).\n- **SD card** (at least 8 GB).\n- **Power supply** for the Raspberry Pi.\n- **5 x 7 inch photo frame** (thrift store find recommended).\n\n\u003e **Note**: If you use this affiliate link, it helps support this project at no additional cost to you. Thank you!\n\n\n## Setup Instructions\n\n### Installation\n1. **Clone the Project**:\n   Open a terminal and run:\n   ```bash\n   git clone https://github.com/AbnormalDistributions/e_paper_weather_display.git\n   cd e_paper_weather_display\n   ```\n\n2. **Install Python Libraries**:\n   ```bash\n   pip install pillow requests\n   ```\n\n### Configuration\n1. **Add Your OpenWeatherMap API Key**:\n   Sign up on [OpenWeatherMap](https://home.openweathermap.org/users/sign_up) for an API key, then open `weather.py` and add your API key where it says `API_KEY = 'XXXXXXXX'`.\n\n2. **Customize Your Settings**:\n   Edit the following user-defined settings at the top of `weather.py`:\n   - `API_KEY`: Your OpenWeatherMap API key.\n   - `LOCATION`: Name of the location to display (e.g., `New Orleans`).\n   - `LATITUDE` and `LONGITUDE`: Coordinates for weather updates (use [Google Maps](https://maps.google.com) to find these).\n   - `UNITS`: Choose `'imperial'` (Fahrenheit) or `'metric'` (Celsius).\n   - `CSV_OPTION`: Set this to `True` if you’d like to save a daily log of weather data in `records.csv`.\n   - `TRASH_DAYS`: Add the days for trash reminders as numbers (0=Monday, 6=Sunday).\n\n\u003e **Note**: If you are not using a 7.5 inch Version 2 display, you will want to replace 'epd7in5_V2.py' in the 'lib' folder with the appropriate version from [Waveshare's e-Paper library](https://github.com/waveshare/e-Paper/tree/master/RaspberryPi_JetsonNano/python/lib/waveshare_epd). Adjustments will be required for other screen sizes.\n\n## Running the Script\n1. **To Run Manually**:\n   From the `e_paper_weather_display` directory, run:\n   ```bash\n   python weather.py\n   ```\n   This will fetch the weather data and update the display immediately.\n\n## Setting up Automatic Updates (Optional)\nYou can set up a scheduled update every 15 minutes using `crontab`. This will make sure your display updates automatically.\n\nIn the terminal, type:\n```bash\ncrontab -e\n```\nThen, add the following line at the end of the file:\n```bash\n*/15 * * * * /usr/bin/python /home/pi/e_paper_weather_display/weather.py \u003e\u003e /home/pi/e_paper_weather_display/weather_display.log 2\u003e\u00261\n```\n- This command updates the display every 15 minutes.\n- Be sure to replace `/home/pi/e_paper_weather_display/` with the path where the project is stored, if different.\n\n## Files in This Repository\n- **weather.py**: Main script file that fetches weather data and updates the display.\n- **lib/**: Contains display drivers for the Waveshare e-paper display.\n- **font/** and **pic/**: Folders with fonts and images used by the display.\n- **photos/**: Sample images of the display in action.\n- **records.csv**: Optional log file for weather data if `CSV_OPTION` is enabled.\n\n## Troubleshooting\n- Make sure the **API_KEY** is correct and has permissions for OpenWeatherMap’s One Call API.\n- Confirm that required Python libraries (`pillow` and `requests`) are installed.\n- Double-check any custom paths used in `crontab` if the automatic updates aren’t working as expected.\n\n## Credit and License\n- Icon designs by [Erik Flowers](https://erikflowers.github.io/weather-icons/), with some modifications.\n- **Weather Icons**: Licensed under [SIL OFL 1.1](http://scripts.sil.org/OFL).\n- **Code**: Licensed under [MIT License](http://opensource.org/licenses/mit-license.html).\n- **Documentation**: Licensed under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabnormaldistributions%2Fe_paper_weather_display","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabnormaldistributions%2Fe_paper_weather_display","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabnormaldistributions%2Fe_paper_weather_display/lists"}