AI prompts
base on E-Ink Display with a Raspberry Pi and a Web Interface to customize and update the display with various plugins # InkyPi
<img src="./docs/images/inky_clock.jpg" />
## About InkyPi
InkyPi is an open-source, customizable E-Ink display powered by a Raspberry Pi. Designed for simplicity and flexibility, it allows you to effortlessly display the content you care about, with a simple web interface that makes setup and configuration effortless.
**Features**:
- Natural paper-like aethetic: crisp, minimalist visuals that are easy on the eyes, with no glare or backlight
- Web Interface allows you to update and configure the display from any device on your network
- Minimize distractions: no LEDS, noise, or notifications, just the content you care about
- Easy installation and configuration, perfect for beginners and makers alike
- Open source project allowing you to modify, customize, and create your own plugins
- Set up scheduled playlists to display different plugins at designated times
**Plugins**:
- Image Upload: Upload and display any image from your browser
- Newspaper: Show daily front pages of major newspapers from around the world
- Clock: Customizable clock faces for displaying time
- AI Image: Generate images from text prompts using OpenAI's DALL·E
- AI Text: Display dynamic text content using OpenAI's GPT-4o text models
- Weather: Display current weather conditions and multi-day forecasts with a customizable layout
And additional plugins coming soon! For documentation on building custom plugins, see [Building InkyPi Plugins](./docs/building_plugins.md).
## Hardware
- Raspberry Pi (4 | 3 | Zero 2 W)
- Recommended to get 40 pin Pre Soldered Header
- MicroSD Card (min 8 GB)
- E-Ink Display: (affiliate links)
- Inky Impression by Pimoroni
- **[13.3 Inch Display](https://collabs.shop/q2jmza)**
- **[7.3 Inch Display](https://collabs.shop/q2jmza)**
- **[5.7 Inch Display](https://collabs.shop/ns6m6m)**
- **[4 Inch Display](https://collabs.shop/cpwtbh)**
- Inky wHAT by Pimoroni
- **[4.2 Inch Display](https://collabs.shop/jrzqmf)**
- [Waveshare EPD devices](#waveshare-device-support)
- **[7.3 inch 7 color display](https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(E))**
- as supported via the waveshare epd device drivers at **[Waveshare e-Paper](https://github.com/waveshareteam/e-Paper)**. See later section on [Waveshare e-Paper](#waveshare-device-support) compatibilty for more infromation.
- Picture Frame or 3D Stand
- See [community.md](./docs/community.md) for 3D models, custom builds, and other submissions from the community
## Installation
To install InkyPi, follow these steps:
1. Clone the repository:
```bash
git clone https://github.com/fatihak/InkyPi.git
```
2. Navigate to the project directory:
```bash
cd InkyPi
```
3. Run the installation script with sudo:
```bash
sudo bash install/install.sh [-W <waveshare device model>]
```
Option:
* -W \<waveshare device model\> - specify this parameter **ONLY** if installing for a Waveshare device. After the -W option specify the Waveshare device model e.g. epd7in3f.
e.g. for Inky device use:
```bash
sudo bash install/install.sh
```
and for [Waveshare devices](#waveshare-device-support) use:
```bash
sudo bash install/install.sh -W epd7in3f
```
After the installation is complete, the script will prompt you to reboot your Raspberry Pi. Once rebooted, the display will update to show the InkyPi splash screen.
Note:
- The installation script requires sudo privileges to install and run the service. We recommend starting with a fresh installation of Raspberry Pi OS to avoid potential conflicts with existing software or configurations.
- The installation process will automatically enable the required SPI and I2C interfaces on your Raspberry Pi.
For more details, including instructions on how to image your microSD with Raspberry Pi OS, refer to [installation.md](./docs/installation.md). You can also checkout [this YouTube tutorial](https://youtu.be/L5PvQj1vfC4).
## Update
To update your InkyPi with the latest code changes, follow these steps:
1. Navigate to the project directory:
```bash
cd InkyPi
```
2. Fetch the latest changes from the repository:
```bash
git pull
```
3. Run the update script with sudo:
```bash
sudo bash install/update.sh
```
This process ensures that any new updates, including code changes and additional dependencies, are properly applied without requiring a full reinstallation.
## Uninstall
To install InkyPi, simply run the following command:
```bash
sudo bash install/uninstall.sh
```
## Roadmap
The InkyPi project is constantly evolving, with many exciting features and improvements planned for the future.
- Plugins, plugins, plugins
- Modular layouts to mix and match plugins
- Support for buttons with customizable action bindings
- Improved Web UI on mobile devices
Check out the public [trello board](https://trello.com/b/SWJYWqe4/inkypi) to explore upcoming features and vote on what you'd like to see next!
## Waveshare Device Support
Waveshare have a range of E-Paper screens, similar to the Inky screens from Pimoroni. They have slightly different requirements.
Waveshare device support is now available, but unlike the Inky screens which are auto configuring they require specific [Waveshare EPD drivers](https://github.com/waveshareteam/e-Paper/tree/master/RaspberryPi_JetsonNano/python/lib/waveshare_epd).
When running the installation for waveshare displays, specify the driver for the device model (without the _.py_ extension) with the -W option, and the script will automatically fetch the appropriate driver.
It is assumed that if the display is supported as part of Waveshares EPD package then it should work. However, note thate some displays—such as the 7.8" (7in8)—use a different SPI configuration (single CS) and are not currently supported out of the box.
## License
Distributed under the GPL 3.0 License, see [LICENSE](./LICENSE) for more information.
This project includes fonts and icons with separate licensing and attribution requirements. See [Attribution](./docs/attribution.md) for details.
## Issues
Check out the [troubleshooting guide](./docs/troubleshooting.md). If you're still having trouble, feel free to create an issue on the [GitHub Issues](https://github.com/fatihak/InkyPi/issues) page.
If you're using a Pi Zero W, note that there are known issues during the installation process. See [Known Issues during Pi Zero W Installation](./docs/troubleshooting.md#known-issues-during-pi-zero-w-installation) section in the troubleshooting guide for additional details..
## Sponsoring
InkyPi is maintained and developed with the help of sponsors. If you enjoy the project or find it useful, consider supporting its continued development.
<p align="center">
<a href="https://github.com/sponsors/fatihak" target="_blank"><img src="https://user-images.githubusercontent.com/345274/133218454-014a4101-b36a-48c6-a1f6-342881974938.png" alt="Become a Patreon" height="35" width="auto"></a>
<a href="https://www.patreon.com/akzdev" target="_blank"><img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patreon" height="35" width="auto"></a>
<a href="https://www.buymeacoffee.com/akzdev" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="35" width="auto"></a>
</p>
## Acknowledgements
Check out these similar projects:
- [PaperPi](https://github.com/txoof/PaperPi) - awesome project that supports waveshare devices
- shoutout to @txoof for assisting with InkyPi's installation process
- [InkyCal](https://github.com/aceinnolab/Inkycal) - has modular plugins for building custom dashboards
- [PiInk](https://github.com/tlstommy/PiInk) - inspiration behind InkyPi's flask web ui
- [rpi_weather_display](https://github.com/sjnims/rpi_weather_display) - alternative eink weather dashboard with advanced power effiency
", Assign "at most 3 tags" to the expected json: {"id":"13183","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"