Klipper-WS281x_LED_Status
Klipper-WS281x_LED_Status copied to clipboard
Use WS281x LED strips with Klipper
Klipper-WS281x_LED_Status
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.
Directions for use
- Install prerequsits
-
sudo apt update && sudo apt install -y git
-
sudo pip3 install requests PyYAML RPi.GPIO rpi_ws281x adafruit-circuitpython-neopixel
-
- Clone code to Raspberry Pi running Klipper and Moonraker
-
cd /home/pi
-
git clone https://github.com/11chrisadams11/Klipper-WS281x_LED_Status.git
-
cd Klipper-WS281x_LED_Status
-
- Make script executable
-
chmod 744 ./klipper_ledstrip.py
-
- Change strip values in settings.conf (LED pin, brightness, timeout)
- Optionally, change effects and colors 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
-
Directions to run as a systemd service
- 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
Directions to change settings (when using service)
- Modify settings in settings.conf
- Run
systemctl restart ledstrip
to restart the ledstrip service
Single run for static colors
Will only work by itself, not if running as a 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