Inkyshot - a shot of inspiration to start the day
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
- Raspberry Pi (tested with Zero and 3B so far)
- Pimoroni InkyPHAT display
- 8GB SD Card (Sandisk Extreme Pro recommended)
- Power supply
- Optional: 3D printed case with micro USB sockets
- Optional: Waveshare 2.13" e-paper display V2 (Note: the case designs will need modification to fit this display. Set the
WAVESHAREenvironment variable to
1to enable support)
Setup & Installation
Running 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:
You can also deploy in the traditional manner using the balena CLI and
balena push command. For more information check out the docs.
Your fleet of Inkyshots can all be managed centrally via balenaCloud. Try any of the environment variables below to add some customization.
Inkyshot 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
In 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, e.g.
This timezone is also used for displaying the correct date when the environment variable
MODE is set to
Is 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!.
Quote of the day category
The quote api has several quote categories available. Use the
QOD_CATEGORY environment variable to change the type of quote retreived. Available categories:
There 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:
Grand9KPixel. You're welcome to PR more options into the project!
Inkyshot 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.
When 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.
If 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.
To enable the weather display, set the environment variable
Next, 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.
SCALE environment variable to
F to display the temperature values in Fahrenheit scale. The default is Celcius scale.
WEATHER_FONT variable to customize the font used in weather display mode.
WEATHER_INVERT variable to invert the Image being displayed -
LOCALE variable allows to display the date of temperature reading in any language supported by the date library.
Finally, you can set the environment variable
alternate for Inkyshot to rotate between
You can put number of minutes in the
ALTERNATE_FREQUENCY environment variable in order to configure Inkyshot to update periodically.
By default, the first display is quote mode and you can instead chose weather by setting
current_display tag to
weather on the device.
By 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.
As from v1.2.0 this project includes 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 for customizing the different settings for wifi-connect.
STL files are included within the assets folder of the project for you to 3D print your own case.
The 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.
A position is open in the rear of the case for the use of a micro USB PCB socket, allowing for direct connection of power to the back of a Raspberry Pi Zero.
Contributing & Commit structure
When submitting a pull request, please use the guidance outlined below.
Each commit message should consist of a body and a footer, structured in the following format:
<scope (optional)>: <subject (mandatory)> --BLANK LINK-- (optional) <body> --BLANK LINE-- (optional) Connects-to: #issue-number (mandatory) Change-type: major | minor | patch (optional) Signed-off-by: Foo Bar <firstname.lastname@example.org>
Quotes are delivered from the They Said So® REST API.
Location information based on IP address is retrieved from ipinfo.io.