Waveshare E-Ink Meets AI: 15 Steps to a Self-Updating Dashboard with ASI Biont

A few years ago, I built a weather dashboard with a Waveshare E-Ink display and a Raspberry Pi. It worked — for a week. Then I had to manually re-run the script every time I wanted fresh data. Fast forward to last month, I rebuilt the entire thing using ASI Biont, and now I just send a chat message to update the display. No cron edits, no SSH into the Pi, no debugging API changes at 11pm. The AI agent writes the code, schedules it, and handles the integration.

In this guide, I'll share 15 steps that took me from a static screen to a self-updating smart display. If you're a Pi enthusiast or a tinkerer who loves E-Ink but hates maintaining glue code, this is for you.

1. Choose the Right E-Ink Model

I used the Waveshare 7.5" e-Paper HAT (800×480, black/white). It's affordable, has a ton of Python examples, and runs on a Raspberry Pi Zero 2 W without breaking a sweat. If you need grayscale, the 4.2" or 7.5" ACeP panels are also supported, but the classic black/white is the most beginner-friendly. Check the official Waveshare wiki for pinouts: https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT.

2. Enable SPI on Your Raspberry Pi

The E-Ink HAT talks over SPI. On a fresh Raspberry Pi OS install, SPI is disabled by default. Run sudo raspi-config, go to Interface Options → SPI, and enable it. Reboot when prompted. Without this, your display will stay stubbornly white.

3. Install the Official Waveshare Python Library

The guys at Waveshare maintain a Python library for most of their e-paper panels. Clone the repo and install the dependencies:

git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/python
pip install -r requirements.txt

The library includes sample scripts for every display. For the 7.5" HAT, the module is epd7in5.

4. Test the Display with a Built-in Example

Before integrating with AI, make sure the hardware works. Run one of the examples:

python3 examples/image_demo.py

If you see the Waveshare logo appear on the screen, you're golden. If not, double-check the SPI connection and the ribbon cable orientation. I once spent an hour debugging because the cable was flipped.

5. Define Your Data Sources

A dashboard is only useful if it shows something you care about. I wanted:
- Current temperature (from OpenWeatherMap)
- My next Google Calendar event
- A Bitcoin price ticker

Each of these has a simple JSON API. You can use any public API — the point is that the AI agent will generate the code to fetch and parse them.

6. Understand How ASI Biont Connects to Devices

ASI Biont doesn't need a special plugin for Waveshare displays. It talks to the Pi over SSH (using paramiko) or MQTT, and it can also write and run Python scripts directly on the Pi via execute_python. The beauty is that the AI agent decides the best method based on your description. In our case, SSH is perfect because the Pi is on the same LAN and we want to run a local display script.

If you have an ESP32 or an industrial PLC, ASI Biont can use Modbus, CAN bus, OPC-UA, or any of the ten other protocols it supports. For E-Ink, SSH is the natural choice.

7. Describe Your Device in Chat

This is the "zero-code onboarding" step. Instead of wiring up dashboard panels, you just tell ASI Biont what you want. My message was:

I have a Waveshare 7.5" E-Ink display connected to a Raspberry Pi at 192.168.1.42. User is pi, password raspberry. Write a Python script that fetches temperature from OpenWeatherMap (use your API key) and shows it on the display along with my next calendar event.

The more context you give, the better the AI's output. I included the IP, username, and API key placeholders.

8. AI Writes the Display Script for You

Within seconds, ASI Biont generated a Python script that uses the epd7in5 library to render text and updated the display. Here's a snippet of what it produced (simplified for clarity):

import epd7in5
from PIL import Image, ImageDraw, ImageFont
import requests

epd = epd7in5.EPD()
epd.init()
image = Image.new('1', (epd.width, epd.height), 255)
draw = ImageDraw.Draw(image)

# Fetch weather
resp = requests.get(f"https://api.openweathermap.org/data/2.5/weather?q=London&appid={API_KEY}")
temp = resp.json()['main']['temp'] - 273.15

draw.text((10, 10), f"Temp: {temp:.1f}", font=font)
# ... calendar parsing ...
epd.display(epd.getbuffer(image))
epd.sleep()

It also added error handling and a fallback font. That alone saved me an hour of wrestling with PIL's font rendering.

9. AI Uses execute_python to Send the Script via SSH

Next, ASI Biont generated a second script to push the display script to the Pi and run it. It relied on paramiko to open an SSH connection, upload the file, and execute it. Here's a simplified version:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.42', username='pi', password='raspberry')
sftp = ssh.open_sftp()
with sftp.open('/home/pi/display.py', 'w') as f:
    f.write(display_script)
sftp.close()
stdin, stdout, stderr = ssh.exec_command('python3 /home/pi/display.py')
print(stdout.read().decode())
ssh.close()

This ran inside the sandboxed execute_python environment. The whole thing took about 4 seconds.

10. Schedule the Update Automatically

I didn't want to manually trigger updates every hour, so I asked ASI Biont to set up a cron job on the Pi. The AI wrote:

crontab -l > /tmp/cron
echo "0 * * * * python3 /home/pi/display.py" >> /tmp/cron
crontab /tmp/cron

Now the display refreshes hourly. If the script fails, I get a Telegram notification — but that's another story.

11. Run the First Update and See the Display Change

I watched the command output for errors, and the first line said Display update successful. A second later, the E-Ink panel refreshed with the temperature, my next meeting, and the Bitcoin price. The effect is satisfying — it's like a printed newspaper that updates itself.

12. Debug Like a Pro: Read stdout and stderr

When something goes wrong, the execute_python response includes both stdout and stderr. In my case, the first version of the script used requests with a proxy variable that the Pi didn't have. The stderr showed ProxyError. I pasted the error into the chat, and ASI Biont fixed the script by removing the proxy and using requests.get(..., proxies={}). No manual Googling.

13. Switch to MQTT for Real-Time Updates

SSH polling works fine for hourly updates, but if you want event-driven refreshes (e.g., when a new email arrives), use MQTT. ASI Biont can publish a message to a broker (like Mosquitto) and the Pi subscribes and updates the display immediately. The AI agent can even install paho-mqtt on the Pi and set up a daemon. I tested this: I sent a message in chat saying "update the display now", and the screen changed within two seconds — no cron involved.

14. Secure Your Setup

I know it's tempting to use password as your Pi password, but real-world integration should use SSH keys. I uploaded my public key to the Pi, and then told ASI Biont to use key-based authentication instead of a password. The AI agent generated a paramiko script that loaded a private key file and connected with look_for_keys=True. It's a small step that avoids a lot of pain.

15. Scale to Multiple Displays or Add Sensors

Once you have one E-Ink working, adding more is just a chat message away. I now have a second display in my kitchen showing a countdown timer and a grocery list. ASI Biont manages both by running scripts on each Pi, or by using a single Pi with multiple SPI devices. You can also connect a temperature sensor (like a DS18B20) to the Pi and have the display show live sensor readings. The AI will write the w1thermsensor code for you.

The biggest takeaway? You don't need to understand every protocol or library. ASI Biont acts like a senior engineer who has already read the datasheets. It learns your setup from a chat description and writes safe, working code in seconds. The result is a self-updating dashboard that I actually enjoy using.

If you want to try this with your own Waveshare E-Ink — or any other device — head over to asibiont.com and describe your setup in the chat. No dashboards to configure, no buttons to click. Just talk to the AI and watch the magic happen.

← All posts

Comments