A lightweight Python script that updates a Posiflex PD-2800/320 VFD display with live 3D printer status from Home Assistant.
I came across an old POS display that had been tossed in the bin, and I couldn’t just let it go to waste. It felt like a challenge to breathe new life into it. After some research, I thought it would be perfect to repurpose it as a status display for my 3D printer. Now, from my workbench, I can easily monitor the printing process happening in another room. It’s amazing to see how something that was once discarded can serve a useful purpose in my projects!

π Features
- Live Print Status β Displays
"Printing","Paused","Idle", etc. - Print Progress Bar β Dynamic bar graph with percentage.
- Time Remaining β Converts seconds to a readable HH:MM format.
- “Printer Ready” Mode β Hides progress/time when idle.
- Auto-Start on Boot β Runs on Raspberry Pi via systemd service.
- Easy Customization β Change Home Assistant entity names via
config.py.
π§ What You Need
- Raspberry Pi (or any Linux system)
- Posiflex PD-2800/320 VFD display (connected via USB)
- Home Assistant with Moonraker Plugin
- Python 3 & Dependencies
π₯ Installation
1. Install Required Packages
Run these commands on your Raspberry Pi:
sudo apt update && sudo apt install -y python3 python3-pip
pip3 install requests
2. Clone This Repository
git clone https://github.com/2wenty2wo/PrintStatusVFD.git
cd PrintStatusVFD
3. Configure Home Assistant API
Edit config.py:
nano config.py
Modify it to match your Home Assistant API token & entities:
# Home Assistant Configuration
HA_URL = "http://homeassistant.local:8123/api/states"
HA_TOKEN = "YOUR_LONG_LIVED_ACCESS_TOKEN"
# Home Assistant Entity IDs (Update based on your setup)
PRINTER_STATUS_ENTITY = "sensor.k1c_current_print_state" # Printer state
PRINTER_PROGRESS_ENTITY = "sensor.k1c_progress" # Print completion %
PRINTER_TIME_LEFT_ENTITY = "sensor.k1c_print_time_left" # Time remaining in seconds
Save and exit (CTRL+X, then Y, then ENTER).
4. Test the Script
Run manually to check for errors:
python3 homeassistant_display.py
If everything works, press CTRL+C to stop.
π οΈ Setting Up Auto-Start on Boot
To ensure PrintStatusVFD starts automatically on reboot, create a systemd service.
1. Create a Service File
sudo nano /etc/systemd/system/vfd-display.service
Paste this inside:
[Unit]
Description=VFD Display Printer Status
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/PrintStatusVFD/homeassistant_display.py
WorkingDirectory=/home/pi/PrintStatusVFD
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
Save and exit (CTRL+X, then Y, then ENTER).
2. Enable & Start the Service
sudo systemctl daemon-reload
sudo systemctl enable vfd-display.service
sudo systemctl start vfd-display.service
3. Verify That Itβs Running
sudo systemctl status vfd-display.service
You should see "active (running)" in green.
4. Reboot & Confirm It Works
sudo reboot
Check the display after rebooting!
π Contributing
If youβd like to improve PrintStatusVFD, feel free to:
- Report bugs via GitHub Issues.
- Suggest features by opening a discussion.
- Submit a pull request if you add something awesome!
Github Repo: https://github.com/2wenty2wo/PrintStatusVFD


