{"id":13585870,"url":"https://github.com/balena-io-experimental/inkyshot","last_synced_at":"2025-08-21T20:33:15.990Z","repository":{"id":37680569,"uuid":"237601374","full_name":"balena-io-experimental/inkyshot","owner":"balena-io-experimental","description":"Get a daily random inspirational quote delivered direct to your desk with Inkyshot. Build multiple Inkyshots and share the inspiration with your friends, family and loved ones ❤️","archived":false,"fork":false,"pushed_at":"2024-01-24T22:22:14.000Z","size":5040,"stargazers_count":124,"open_issues_count":11,"forks_count":35,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-08-28T02:59:20.194Z","etag":null,"topics":["balena","balenacloud","inky","inkyphat","raspberry-pi","raspberry-pi-zero","raspberrypi"],"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/balena-io-experimental.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2020-02-01T10:59:12.000Z","updated_at":"2024-08-15T07:36:21.000Z","dependencies_parsed_at":"2024-01-12T20:22:35.933Z","dependency_job_id":"7c77625c-64d3-41f8-ad43-10a803f12a19","html_url":"https://github.com/balena-io-experimental/inkyshot","commit_stats":null,"previous_names":["balena-io-experimental/inkyshot","balena-labs-projects/inkyshot"],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-experimental%2Finkyshot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-experimental%2Finkyshot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-experimental%2Finkyshot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-experimental%2Finkyshot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/balena-io-experimental","download_url":"https://codeload.github.com/balena-io-experimental/inkyshot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230532448,"owners_count":18240792,"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":["balena","balenacloud","inky","inkyphat","raspberry-pi","raspberry-pi-zero","raspberrypi"],"created_at":"2024-08-01T15:05:11.621Z","updated_at":"2024-12-20T04:08:09.389Z","avatar_url":"https://github.com/balena-io-experimental.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Inkyshot - a shot of inspiration to start the day\n\n![](https://raw.githubusercontent.com/balena-labs-projects/inkyshot/master/assets/header-photo.jpg)\n\n**Get a daily random inspirational quote delivered direct to your desk with Inkyshot. Build multiple Inkyshots and share the inspiration with your friends, family and loved ones ❤️**\n\n## Hardware required\n\n![](https://raw.githubusercontent.com/balena-labs-projects/inkyshot/master/assets/hardware-photo.jpg)\n\n- Raspberry Pi (tested with Zero and 3B so far)\n- [Pimoroni InkyPHAT display](https://shop.pimoroni.com/products/inky-phat?variant=12549254938707)\n- 8GB SD Card (Sandisk Extreme Pro recommended)\n- Power supply\n- **Optional:** 3D printed case with [micro USB sockets](https://www.aliexpress.com/item/4000484202812.html)\n- **Optional:** [Waveshare 2.13\" e-paper display V2](https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT) (**Note:** the case designs will need modification to fit this display. Set the `WAVESHARE` environment variable to `1` to enable support)\n\n## Setup \u0026 Installation\n\nRunning this project is as simple as deploying it to a balenaCloud application. You can do it in just one click by using the button below:\n\n[![](https://balena.io/deploy.png)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/balena-labs-projects/inkyshot)\n\nYou can also deploy in the traditional manner using the balena CLI and `balena push` command. For more information [check out the docs](https://www.balena.io/docs/learn/deploy/deployment/).\n\n## Customization\n\nYour fleet of Inkyshots can all be managed centrally via balenaCloud. Try any of the environment variables below to add some customization.\n\n### Update time\n\nInkyshot wants to deliver a shot of inspiration to start your day, and by default will do this at 9AM/0900 hours UTC. You can change the hour that the update will happen with the `UPDATE_HOUR` variable; set it anywhere from `0` to `23`.\n\n### Timezone\n\nIn order for the update time to work correctly, you'll of course have to tell Inkyshot what timezone you'd like to use. Set the `TZ` environment variable to any [IANA timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g. `Europe/London`, `America/Los_Angeles`, `Asia/Taipei` etc.\n\nThis timezone is also used for displaying the correct date when the environment variable `MODE` is set to `weather`.\n\n### Message override\n\nIs there a special occasion in your family? Override the daily quote with a shot of celebration by setting the `INKY_MESSAGE` environment variable. Try `Happy birthday Sister!`, `Congratulations on the new job, mate!`, or `Happy mother's day!`.\n\n### Quote of the day category\n\nThe quote api has several quote categories available. Use the `QOD_CATEGORY` environment variable to change the type of quote retreived. Available categories: `inspire` (default), `management`, `sports`, `life`, `funny`, `love`, `art`, `students`.\n\n### Font\n\nThere are a few fonts built in that you can try. The default is `AmaticSC`, but you can use the `FONT` variable and set it to any of: `FredokaOne`, `HankenGrotesk`, `Intuitive`, `SourceSerifPro`, `SourceSansPro`, `Caladea`, `Roboto` and `Grand9KPixel`. You're welcome to PR more options into the project!\n\n### Font size\n\nInkyshot will automatically choose the largest font size for your message that still fits on the display. Too big? Override it with the `FONT_SIZE` variable and Inkyshot will use this as a maximum and continue to resize downwards if your message doesn't fit.\n\n### Test character\n\nWhen figuring out what size font to use, Inkyshot (invisibly) fills the screen with the `a` character to see how many will fit. You can override this by setting the `TEST_CHARACTER` environment variable with any wider (`w`) or slimmer (`i`) characters of your choosing to adjust this behavior.\n\n### Rotation\n\nIf Inkyshot is living in a different house where things aren't necessarily always the same way up, use the `ROTATE` environment variable to rotate the output by 180 degrees.\n\n### Weather\n\nTo enable the weather display, set the environment variable `MODE` to `weather`.\n\nNext, use either `LATLONG` (e.g. 39.9199,32.8543) or `WEATHER_LOCATION` (e.g. Ankara, Turkey) environment variables to define the location for weather information. Entering only an empty `WEATHER_LOCATION` is also sufficient and in this case Inkyshot will lookup the latitude and longitude information from device's IP address.\n\nSet `SCALE` environment variable to `F` to display the temperature values in Fahrenheit scale. The default is Celcius scale.\n\nUse the `WEATHER_FONT` variable to customize the font used in weather display mode.\n\nUse the `WEATHER_INVERT` variable to invert the Image being displayed - `WAVESHARE` specific.\n\n`LOCALE` variable allows to display the date of temperature reading in any language supported by [the date library](https://arrow.readthedocs.io/en/latest/#module-arrow.locales).\n\nFinally, you can set the environment variable `MODE` to `alternate` for Inkyshot to rotate between `quote` and `weather` modes.\nYou can put number of minutes in the `ALTERNATE_FREQUENCY` environment variable in order to configure Inkyshot to update periodically.\nBy default, the first display is quote mode and you can instead chose weather by setting `current_display` tag to `weather` on the device.\n\n### Hostname\n\nBy default the device will be assigned the hostname `inkyshot` so it can be easily found on a network. This can be changed with the `SET_HOSTNAME` environment variable.\n\n## Wifi Connect\n\nAs from v1.2.0 this project includes [wifi-connect](https://github.com/balena-io/wifi-connect) which is a utility for dynamically setting the WiFi configuration on a Linux device via a captive portal. If your device is not connected to the internet, an access point will be created. You can refer to the docs [here](https://github.com/balenablocks/wifi-connect#customisation) for customizing the different settings for wifi-connect.\n\n## Case\n\nSTL files are included within the assets folder of the project for you to 3D print your own case.\n\n![](https://raw.githubusercontent.com/balena-labs-projects/inkyshot/master/assets/inky-print.png)\n\nThe case has two positions for a captive M3 nut, and can be fastened together with two countersunk 8mm M3 machine screws. If you're using design 2, the screws you'll need are something [like this](https://www.accu.co.uk/en/self-tapping-raised-torx-screws/21738-SHRKT-No-2-1-2-A2).\n\nA position is open in the rear of the case for the use of a [micro USB PCB socket](https://www.aliexpress.com/item/4000484202812.html), allowing for direct connection of power to the back of a Raspberry Pi Zero.\n\n![](https://raw.githubusercontent.com/balena-labs-projects/inkyshot/master/assets/inky-rear.png)\n\n## Contributing \u0026 Commit structure\n\n_When submitting a pull request, please use the guidance outlined below._\n\nEach commit message should consist of a _body_ and a _footer_, structured in the following format:\n\n```\n\u003cscope (optional)\u003e: \u003csubject (mandatory)\u003e\n--BLANK LINK--\n(optional) \u003cbody\u003e\n--BLANK LINE--\n(optional) Connects-to: #issue-number\n(mandatory) Change-type: major | minor | patch\n(optional) Signed-off-by: Foo Bar \u003cfoobar@balena.io\u003e\n```\n\n## Credits\n\nQuotes are delivered from the\n\u003cspan style=\"z-index:50;font-size:0.9em; font-weight: bold;\"\u003e\n\u003cimg src=\"https://theysaidso.com/branding/theysaidso.png\" height=\"20\" width=\"20\" alt=\"theysaidso.com\"/\u003e\n\u003ca href=\"https://theysaidso.com\" title=\"Powered by quotes from theysaidso.com\" style=\"color: #ccc; margin-left: 4px; vertical-align: middle;\"\u003e\nThey Said So®\n\u003c/a\u003e\n\u003c/span\u003e REST API.\n\nLocation information based on IP address is retrieved from [ipinfo.io](https://ipinfo.io).\n\nWe use Norwegian Meteorological Institute's [weather API](https://api.met.no/weatherapi/locationforecast/2.0/documentation) to get the weather forecast of the day. Weather symbols are customized from [yr.no's repository](https://github.com/nrkno/yr-weather-symbols).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-io-experimental%2Finkyshot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbalena-io-experimental%2Finkyshot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-io-experimental%2Finkyshot/lists"}