This script will take the printer status from Klipper/Moonraker and apply different effects to a WS281x LED strip.
The code has been migrated from the OctoPrint-WS281x_LED_Status (https://github.com/cp2004/OctoPrint-WS281x_LED_Status) plugin to work with Klipper.
- Clone/copy code to files on Raspberry Pi running Klipper and Moonraker
- Make script executable
chmod 744 ./klipper-ledstrip.py
- Install prerequsits
pip3 install requests rpi_ws281x adafruit-circuitpython-neopixel
- Change values in settings.conf (LED pin, colors, reverse)
- Optionally, change effect called for standby, paused, and error states in settings.conf
- If you want to run it manually, start script before starting print (otherwise use the service below)
./klipper-ledstrip.py
- Copy contents of ledstrip.service to /etc/systemd/system/ledstrip.service
- Modify User, Group, WorkingDirectory, and ExecStart to match your setup
- Run
systemctl daemon-reload
to enable the service - Run
systemctl enable ledstrip
to have the service start on boot - Run
systemctl start ledstrip
to start the service
- Modify settings in settings.conf
- Run
systemctl restart ledstrip
to restart the ledstrip service
./klipper-ledstrip.py <red> <green> <blue> <brightness:optiona>
Example:
./klipper-ledstrip.py 255 255 255 255 ## Full brightness white
./klipper-ledstrip.py 255 0 0 ## Red with default brightness specified in the script
To call from gcode shell commands (thanks to JV_JV for the setup directions)
Add custom entries to printer.cfg
[gcode_shell_command led_off]
command: ./home/pi/my_klipper_ledstrip.py 0 0 0
timeout: 2.
verbose: True
[gcode_shell_command led_white]
command: ./home/pi/my_klipper_ledstrip.py 255 255 255
timeout: 2.
verbose: True
[gcode_shell_command led_purple]
command: ./home/pi/my_klipper_ledstrip.py 255 0 255
timeout: 2.
verbose: True
[gcode_macro LED_OFF]
gcode:
RUN_SHELL_COMMAND CMD=led_off
[gcode_macro LED_WHITE]
gcode:
RUN_SHELL_COMMAND CMD=led_white
[gcode_macro LED_PURPLE]
gcode:
RUN_SHELL_COMMAND CMD=led_purple
rpi_ws281x library instructions for needed changes depending on GPIO pin used: https://github.com/jgarff/rpi_ws281x