-
Notifications
You must be signed in to change notification settings - Fork 120
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update for new klipper paths * Synax Errors Fixed * limit effect rate to frame rate in strobe effect * reworked installation script * installation script: fix for moonraker restart * Added uninstaller * Improve Commands for stopping effects (#118) * Better stopping of effects by defining LED * Added Replace Parameter to SET_LED_EFFECTS command * Improved STOP_LED_EFFECTS command for certain LEDs * Updated documentation for new STOP possibilities * Use constructor instead of copy() (#121) Fixes #120 * Updated simulator, fix coordinates * Add Homing effect (#129) * Added homing effect * Add endstop to simulator * homing: cycle through palette * Added documentation for homing effect * Updated docs for homing effect --------- Co-authored-by: Michael <89716126+mlee12382@users.noreply.github.com>
- Loading branch information
1 parent
785a398
commit 35cf587
Showing
8 changed files
with
611 additions
and
357 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,74 +1,145 @@ | ||
#!/bin/bash | ||
# Force script to exit if an error occurs | ||
set -e | ||
|
||
KLIPPER_PATH="${HOME}/klipper" | ||
SYSTEMDDIR="/etc/systemd/system" | ||
MOONRAKER_CONFIG_DIR="${HOME}/printer_data/config" | ||
|
||
# Fall back to old directory for configuration as default | ||
if [ ! -d "${MOONRAKER_CONFIG_DIR}" ]; then | ||
echo "\"$MOONRAKER_CONFIG_DIR\" does not exist. Falling back to "${HOME}/klipper_config" as default." | ||
MOONRAKER_CONFIG_DIR="${HOME}/klipper_config" | ||
fi | ||
|
||
usage(){ echo "Usage: $0 [-k <klipper path>] [-c <configuration path>]" 1>&2; exit 1; } | ||
# Parse command line arguments | ||
while getopts "k:c:uh" arg; do | ||
case $arg in | ||
k) KLIPPER_PATH=$OPTARG;; | ||
c) MOONRAKER_CONFIG_DIR=$OPTARG;; | ||
u) UNINSTALL=1;; | ||
h) usage;; | ||
esac | ||
done | ||
|
||
# Find SRCDIR from the pathname of this script | ||
SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/src/ && pwd )" | ||
|
||
# Step 1: Verify Klipper has been installed | ||
# Verify Klipper has been installed | ||
check_klipper() | ||
{ | ||
if [ "$(sudo systemctl list-units --full -all -t service --no-legend | grep -F "klipper.service")" ]; then | ||
echo "Klipper service found!" | ||
echo "Klipper service found." | ||
else | ||
echo "Klipper service not found, please install Klipper first" | ||
echo "[ERROR] Klipper service not found, please install Klipper first" | ||
exit -1 | ||
fi | ||
} | ||
|
||
check_folders() | ||
{ | ||
if [ ! -d "$KLIPPER_PATH/klippy/extras/" ]; then | ||
echo "[ERROR] Klipper installation not found in directory \"$KLIPPER_PATH\". Exiting" | ||
exit -1 | ||
fi | ||
echo "Klipper installation found at $KLIPPER_PATH" | ||
|
||
if [ ! -f "${MOONRAKER_CONFIG_DIR}/moonraker.conf" ]; then | ||
echo "[ERROR] Moonraker configuration not found in directory \"$MOONRAKER_CONFIG_DIR\". Exiting" | ||
exit -1 | ||
fi | ||
echo "Moonraker configuration found at $MOONRAKER_CONFIG_DIR" | ||
} | ||
|
||
# Step 2: link extension to Klipper | ||
# Link extension to Klipper | ||
link_extension() | ||
{ | ||
echo "Linking extension to Klipper..." | ||
echo -n "Linking extension to Klipper... " | ||
ln -sf "${SRCDIR}/led_effect.py" "${KLIPPER_PATH}/klippy/extras/led_effect.py" | ||
echo "[OK]" | ||
} | ||
|
||
# Step 3: Add updater | ||
# webcamd to moonraker.conf | ||
echo -e "Adding update manager to moonraker.conf" | ||
|
||
update_section=$(grep -c '\[update_manager led_effect\]' \ | ||
${HOME}/klipper_config/moonraker.conf || true) | ||
if [ "${update_section}" -eq 0 ]; then | ||
echo -e "\n" >> ${HOME}/klipper_config/moonraker.conf | ||
while read -r line; do | ||
echo -e "${line}" >> ${HOME}/klipper_config/moonraker.conf | ||
done < "$PWD/file_templates/moonraker_update.txt" | ||
echo -e "\n" >> ${HOME}/klipper_config/moonraker.conf | ||
else | ||
echo -e "[update_manager led_effect] already exist in moonraker.conf [SKIPPED]" | ||
fi | ||
# Restart moonraker | ||
restart_moonraker() | ||
{ | ||
echo -n "Restarting Moonraker... " | ||
sudo systemctl restart moonraker | ||
echo "[OK]" | ||
} | ||
|
||
# Add updater for led_effect to moonraker.conf | ||
add_updater() | ||
{ | ||
echo -e -n "Adding update manager to moonraker.conf... " | ||
|
||
update_section=$(grep -c '\[update_manager led_effect\]' ${MOONRAKER_CONFIG_DIR}/moonraker.conf || true) | ||
if [ "${update_section}" -eq 0 ]; then | ||
echo -e "\n" >> ${MOONRAKER_CONFIG_DIR}/moonraker.conf | ||
while read -r line; do | ||
echo -e "${line}" >> ${MOONRAKER_CONFIG_DIR}/moonraker.conf | ||
done < "$PWD/file_templates/moonraker_update.txt" | ||
echo -e "\n" >> ${MOONRAKER_CONFIG_DIR}/moonraker.conf | ||
echo "[OK]" | ||
restart_moonraker | ||
else | ||
echo -e "[update_manager led_effect] already exists in moonraker.conf [SKIPPED]" | ||
fi | ||
} | ||
|
||
# Step 4: restarting Klipper | ||
restart_klipper() | ||
{ | ||
echo "Restarting Klipper..." | ||
echo -n "Restarting Klipper... " | ||
sudo systemctl restart klipper | ||
echo "[OK]" | ||
} | ||
|
||
start_klipper() | ||
{ | ||
echo -n "Starting Klipper... " | ||
sudo systemctl start klipper | ||
echo "[OK]" | ||
} | ||
|
||
stop_klipper() | ||
{ | ||
echo -n "Stopping Klipper... " | ||
sudo systemctl start klipper | ||
echo "[OK]" | ||
} | ||
|
||
uninstall() | ||
{ | ||
if [ -f "${KLIPPER_PATH}/klippy/extras/led_effect.py" ]; then | ||
echo -n "Uninstalling... " | ||
rm -f "${KLIPPER_PATH}/klippy/extras/led_effect.py" | ||
echo "[OK]" | ||
echo "You can now remove the [update_manager led_effect] section in your moonraker.conf and delete this directory. Also remove all led_effect configurations from your Klipper configuration." | ||
else | ||
echo "led_effect.py not found in \"${KLIPPER_PATH}/klippy/extras/\". Is it installed?" | ||
echo "[FAILED]" | ||
fi | ||
} | ||
|
||
# Helper functions | ||
verify_ready() | ||
{ | ||
if [ "$EUID" -eq 0 ]; then | ||
echo "This script must not run as root" | ||
echo "[ERROR] This script must not run as root. Exiting." | ||
exit -1 | ||
fi | ||
} | ||
|
||
# Force script to exit if an error occurs | ||
set -e | ||
|
||
# Find SRCDIR from the pathname of this script | ||
SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/src/ && pwd )" | ||
|
||
# Parse command line arguments | ||
while getopts "k:" arg; do | ||
case $arg in | ||
k) KLIPPER_PATH=$OPTARG;; | ||
esac | ||
done | ||
|
||
# Run steps | ||
verify_ready | ||
link_extension | ||
restart_klipper | ||
check_klipper | ||
check_folders | ||
stop_klipper | ||
if [ ! $UNINSTALL ]; then | ||
link_extension | ||
add_updater | ||
else | ||
uninstall | ||
fi | ||
start_klipper | ||
|
Oops, something went wrong.