https://github.com/lds133/weather_landscape Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions By size + Enterprise + Teams + Startups By industry + Healthcare + Financial services + Manufacturing By use case + CI/CD & Automation + DevOps + DevSecOps * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} lds133 / weather_landscape Public * Notifications You must be signed in to change notification settings * Fork 15 * Star 546 Visualizing Weather Forecasts Through Landscape Imagery License MIT license 546 stars 15 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights lds133/weather_landscape This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 6 Commits esp32 esp32 p_weather p_weather pic pic .gitignore .gitignore LICENSE LICENSE README.md README.md makevenv.bat makevenv.bat makevenv.sh makevenv.sh requirements.txt requirements.txt run_server.py run_server.py run_test.py run_test.py weather_landscape.py weather_landscape.py View all files Repository files navigation * README * MIT license Weather as Landscape Visualizing Weather Forecasts Through Landscape Imagery house Traditional weather stations often display sensor readings as raw numerical data. Navigating these dashboards can be overwhelming and stressful, as it requires significant effort to locate, interpret, and visualize specific parameters effectively. Viewing a landscape image feels natural to the human eye. The calming effect of observing landscape elements reduces stress and requires minimal effort, allowing for a more relaxed visual experience. The method below demonstrates how to encode weather information within a landscape image, with no or minimal reliance on numerical data. Encoding principles The landscape depicts a small house in the woods. The horizontal axis of the image represents a 24-hour timeline, starting from the current moment on the left, marked by the house, and extending to the conditions of the next day on the right. Various landscape elements distributed along the vertical axis symbolize weather events and conditions. The further an event is from the present, the farther it is positioned to the right in the image. encode The following information can be encoded within the landscape image: * Time markers to simplify timeline navigation: + Sunrise and sunset times + Noon and midnight * Weather forecast information: + Wind direction and strength + Temperature fluctuations + Maximum and minimum temperature values + Cloud cover + Precipitation * Current weather conditions: + Temperature + Atmospheric pressure * Non weather events: + Birthdays + Holidays Implementation The image generation code is written in Python using the Pillow library and is based on data from OpenWeather. The image is designed specifically for use on a 296x128 E-Ink display. The code tested on Python 3.9. Event image Description example Sunrise example Sunset example Cloud cover example Current time position example Midnight example Midday example South wind example East wind example West wind example North wind example Rain Examples Landscape image Description It's around noon, with clear skies and a few clouds expected. A moderate north wind will develop overnight. Temperatures are currently example rising but will begin to fall after sunset, reaching their lowest point before sunrise. During this time, the wind is expected to shift to the northeast. The sun is rising and it will be a hot sunny day with a light southeast breeze. The temperature example will remain high even after sunset, and the wind will shift to the east, becoming stronger throughout the evening. It will be cold and rainy throughout the example day and night. The south wind will shift to the northeast overnight. How the landscape changed during the day Dynamic Running the code Preparing environment Linux ./makevenv.sh source .venv/bin/activate Preparing environment Windows makevenv.bat .venv/Scripts/Activate Image creation test Update OWM_KEY variable in the weather_landscape.py file with your OpenWeather API key. python run_test.py Run server python run_server.py Hardware Setup The hardware setup includes an ESP32 development board and 2.9inch E-Ink display module. Currently, the setup only displays an image sourced from the internet, updating every 15 minutes. It is uncertain whether the image generation code can be adapted for use with MicroPython on the ESP32 at this time. More information About Visualizing Weather Forecasts Through Landscape Imagery Topics micropython esp32 python3 openweathermap-api weather-forecast eink Resources Readme License MIT license Activity Stars 546 stars Watchers 4 watching Forks 15 forks Report repository Languages * Python 99.5% * Other 0.5% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.