{"id":13646358,"url":"https://github.com/blixt/sol-mate-eink","last_synced_at":"2025-12-30T00:03:07.454Z","repository":{"id":243076029,"uuid":"811397421","full_name":"blixt/sol-mate-eink","owner":"blixt","description":"The Sol Mate GPT but on your e-Paper display!","archived":false,"fork":false,"pushed_at":"2024-11-02T08:28:05.000Z","size":42,"stargazers_count":311,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-24T06:55:39.065Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blixt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-06-06T14:16:30.000Z","updated_at":"2025-02-16T11:54:37.000Z","dependencies_parsed_at":"2024-06-06T16:05:51.898Z","dependency_job_id":"0d155e92-e6a3-454e-9a4d-d1ddd3af94fa","html_url":"https://github.com/blixt/sol-mate-eink","commit_stats":null,"previous_names":["blixt/sol-mate-eink"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blixt%2Fsol-mate-eink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blixt%2Fsol-mate-eink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blixt%2Fsol-mate-eink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blixt%2Fsol-mate-eink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blixt","download_url":"https://codeload.github.com/blixt/sol-mate-eink/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241360980,"owners_count":19950372,"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":[],"created_at":"2024-08-02T01:02:53.667Z","updated_at":"2025-12-30T00:03:07.391Z","avatar_url":"https://github.com/blixt.png","language":"Python","funding_links":[],"categories":["Others","Python"],"sub_categories":[],"readme":"# Sol Mate e-Paper Display ☀️\n\nI initially made [the ☀️ Sol Mate GPT](https://chatgpt.com/g/g-QIydQSFRm-sol-mate), but it didn't take too long until I wondered what it would look like on [an e-Paper display](https://www.amazon.com/dp/B0BMQ83W7W).\n\n![Picture of the screen installed with a wooden frame](https://github.com/user-attachments/assets/dbd29ded-63bb-4075-aca4-658bf9e4e0f5)\n\nThe script to update the screen takes a location (maybe your own, maybe your best friend's, or even a fictional place!) and get the weather for that location, then generate an illustration of the location including the current weather and lighting conditions. So if it's raining, there will be people with umbrellas in the picture, and so on. If you do generate for a fictional location, the weather service will be given the latitude/longitude of the most similar place on Earth (according to GPT). The illustrations are rendered using Dall-E 3. This is why an OpenAI API token is necessary to run it.\n\nThis repository contains all the code that was needed to generate and display a weather report for any specified location on a Raspberry Pi with an attached Waveshare e-Paper display.\n\n## Hardware\n\n- [Raspberry Pi 5](https://www.raspberrypi.com/products/raspberry-pi-5/)\n- [Waveshare e-Paper 7.3\" display](https://www.amazon.com/dp/B0BMQ83W7W) (code needs to be updated for other sizes)\n\n## More pictures\n\n- [3 more nice examples](https://x.com/blixt/status/1812941960451399909)\n- [3D-printing the case](https://x.com/blixt/status/1811077705804169416)\n- [4 examples, some with more color](https://x.com/blixt/status/1797317001372750301)\n- [The setup, without the box](https://x.com/blixt/status/1796616909611278356)\n- [Video of the thinness of the display](https://x.com/blixt/status/1797350136080699837)\n\n## Software \u0026 Usage\n\nThis should all run on your Raspberry Pi.\n\nI recommend setting up a virtual environment for Python, [such as uv](https://github.com/astral-sh/uv), first. Here are the instructions for if you're using `uv` (to be run inside the clone of this repo):\n\n```sh\nuv venv\nsource .venv/bin/activate\nuv pip install -r requirements.txt\n```\n\nWithout `uv`:\n\n```sh\npython -m venv .\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\nYou will need to specify an `OPENAI_API_KEY` environment variable. For your convenience, the code will load environment variables from a `.env` file in the current working directory.\n\nNow you can use the `control.py` script to generate an image and show it on the screen:\n\n```sh\npython control.py show Barcelona\n```\n\n[Waveshare recommends](https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manual#Precautions) you don't leave the same image on the display for too long.\n\nUse the `clear` command to clear it:\n\n```sh\npython control.py clear\n```\n\nI set up a cron job (`crontab -e`) to update the image two times per day, but keep in mind this can end up costing a non-trivial amount:\n\n```crontab\n0 8 * * * cd ~/src/sol-mate-eink \u0026\u0026 .venv/bin/python control.py show Barcelona\n0 18 * * * cd ~/src/sol-mate-eink \u0026\u0026 .venv/bin/python control.py show Barcelona\n0 2 * * * cd ~/src/sol-mate-eink \u0026\u0026 .venv/bin/python control.py clear\n```\n\n(You'll need to tweak the paths for your setup, of course.)\n\n## Backend\n\nFeel free to use the private API I hosted to get the weather if you're not going to hammer it. I also use this backend for my GPT. However, if you have high volume ideas in mind, please self-host it! The source code is here:\n\nhttps://github.com/blixt/sol-mate\n\n## Having issues?\n\nI'd love to help if I can – [reach out on Twitter](https://twitter.com/blixt) or create an issue in this repo!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblixt%2Fsol-mate-eink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblixt%2Fsol-mate-eink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblixt%2Fsol-mate-eink/lists"}