PrintStatusVFD: Live 3D Printer Status on a Posiflex VFD Display via Home Assistant

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