Skip to content

Raspberry Pi weather display using Waveshare e-paper display and Open Weather Map API

License

Notifications You must be signed in to change notification settings

AbnormalDistributions/e_paper_weather_display

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-paper Weather Display

This 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.

Display Photo 1 Display Photo 2

If you find this project useful, consider buying me a coffee ☕️.


Table of Contents

What’s New (Version 2.0)

  • 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 for details on the API changes and subscription requirements.
  • Automatic Log Management: Logs now rotate when they get too large, making maintenance easier.
  • User-Friendly Settings: All essential settings are grouped together for quick customization.
  • More Reliable Error Handling: Logs network and API errors for easier troubleshooting.
  • Improved Directory Handling: The script finds the right directories automatically, without manual path adjustments.
  • Trash Day Reminders: Customize specific days to get reminders on the display.

Parts List

  • Waveshare 7.5-inch e-Paper HAT: Available on Amazon (affiliate link).
  • Raspberry Pi (tested on a Pi 3; any model should work except the Pi Zero without soldered headers).
  • SD card (at least 8 GB).
  • Power supply for the Raspberry Pi.
  • 5 x 7 inch photo frame (thrift store find recommended).

Note: If you use this affiliate link, it helps support this project at no additional cost to you. Thank you!

Setup Instructions

Installation

  1. Clone the Project: Open a terminal and run:

    git clone https://github.com/AbnormalDistributions/e_paper_weather_display.git
    cd e_paper_weather_display
  2. Install Python Libraries:

    pip install pillow requests

Configuration

  1. Add Your OpenWeatherMap API Key: Sign up on OpenWeatherMap for an API key, then open weather.py and add your API key where it says API_KEY = 'XXXXXXXX'.

  2. Customize Your Settings: Edit the following user-defined settings at the top of weather.py:

    • API_KEY: Your OpenWeatherMap API key.
    • LOCATION: Name of the location to display (e.g., New Orleans).
    • LATITUDE and LONGITUDE: Coordinates for weather updates (use Google Maps to find these).
    • UNITS: Choose 'imperial' (Fahrenheit) or 'metric' (Celsius).
    • CSV_OPTION: Set this to True if you’d like to save a daily log of weather data in records.csv.
    • TRASH_DAYS: Add the days for trash reminders as numbers (0=Monday, 6=Sunday).

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. Adjustments will be required for other screen sizes.

Running the Script

  1. To Run Manually: From the e_paper_weather_display directory, run:
    python weather.py
    This will fetch the weather data and update the display immediately.

Setting up Automatic Updates (Optional)

You can set up a scheduled update every 15 minutes using crontab. This will make sure your display updates automatically.

In the terminal, type:

crontab -e

Then, add the following line at the end of the file:

*/15 * * * * /usr/bin/python /home/pi/e_paper_weather_display/weather.py >> /home/pi/e_paper_weather_display/weather_display.log 2>&1
  • This command updates the display every 15 minutes.
  • Be sure to replace /home/pi/e_paper_weather_display/ with the path where the project is stored, if different.

Files in This Repository

  • weather.py: Main script file that fetches weather data and updates the display.
  • lib/: Contains display drivers for the Waveshare e-paper display.
  • font/ and pic/: Folders with fonts and images used by the display.
  • photos/: Sample images of the display in action.
  • records.csv: Optional log file for weather data if CSV_OPTION is enabled.

Troubleshooting

  • Make sure the API_KEY is correct and has permissions for OpenWeatherMap’s One Call API.
  • Confirm that required Python libraries (pillow and requests) are installed.
  • Double-check any custom paths used in crontab if the automatic updates aren’t working as expected.

Credit and License