Add initial Klipper with Moonraker setup. Untested.
This commit is contained in:
parent
19fa0eea41
commit
6e02571291
2
3dprinter-klipper/CHANGELOG.md
Normal file
2
3dprinter-klipper/CHANGELOG.md
Normal file
@ -0,0 +1,2 @@
|
||||
## 2024.02.0
|
||||
* Initial version
|
||||
1
3dprinter-klipper/DOCS.md
Normal file
1
3dprinter-klipper/DOCS.md
Normal file
@ -0,0 +1 @@
|
||||
# Startup
|
||||
38
3dprinter-klipper/Dockerfile
Normal file
38
3dprinter-klipper/Dockerfile
Normal file
@ -0,0 +1,38 @@
|
||||
ARG BUILD_FROM="ghcr.io/home-assistant/amd64-base"
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
# Setup path for persistent install of Python packages
|
||||
ENV KLIPPER_PATH=/data/klipper
|
||||
ENV KLIPPER_VENV_PATH=/data/python/klipper
|
||||
ENV MOONRAKER_PATH=/data/moonraker
|
||||
ENV MOONRAKER_VENV_PATH=/data/python/moonraker
|
||||
ENV ADDON_CONFIG_PATH=/config
|
||||
ENV SIMULAVR_PATH=/data/simulavr
|
||||
|
||||
# Preparations for Klipper
|
||||
RUN apk add -U \
|
||||
caddy \
|
||||
git \
|
||||
py3-virtualenv \
|
||||
python3-dev \
|
||||
gcc \
|
||||
g++ \
|
||||
libffi-dev \
|
||||
make \
|
||||
dbus \
|
||||
# For building for different platforms
|
||||
# AVR chip installation and building
|
||||
avrdude gcc-avr binutils-avr avr-libc \
|
||||
# ARM chip installation and building
|
||||
stm32flash newlib-arm-none-eabi \
|
||||
gcc-arm-none-eabi binutils-arm-none-eabi libusb pkgconf \
|
||||
# Simulavr
|
||||
cmake swig \
|
||||
# For Moonraker
|
||||
patch \
|
||||
libsodium-dev \
|
||||
iproute2 \
|
||||
screen
|
||||
|
||||
# Copy root filesystem
|
||||
COPY rootfs /
|
||||
3
3dprinter-klipper/README.md
Normal file
3
3dprinter-klipper/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# 3DPrinter-Klipper
|
||||
|
||||
Provides Klipper as an addon to Home Assistant.
|
||||
27
3dprinter-klipper/config.yaml
Normal file
27
3dprinter-klipper/config.yaml
Normal file
@ -0,0 +1,27 @@
|
||||
name: "3DPrinter-Klipper"
|
||||
version: "2024.2.0"
|
||||
slug: "3dprinter-klipper"
|
||||
description: "Klipper with Moonraker as an addon, bring your own frontend."
|
||||
arch:
|
||||
- armv7
|
||||
- amd64
|
||||
- armhf
|
||||
- aarch64
|
||||
url: "https://github.com/fredrikbaberg/ha-3dprinter-addons/tree/main/3dprinter-klipper"
|
||||
ingress: true
|
||||
webui: http://[HOST]:[PORT:7125]
|
||||
ports:
|
||||
7125/tcp: null
|
||||
ports_description:
|
||||
7125/tcp: Moonraker
|
||||
map:
|
||||
- addon_config:rw
|
||||
usb: true
|
||||
options:
|
||||
simulavr: false
|
||||
schema:
|
||||
simulavr: "bool?"
|
||||
panel_icon: mdi:printer-3d
|
||||
panel_title: 3DPrinter-Klipper
|
||||
init: false
|
||||
realtime: true
|
||||
BIN
3dprinter-klipper/icon.png
Normal file
BIN
3dprinter-klipper/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
BIN
3dprinter-klipper/logo.png
Normal file
BIN
3dprinter-klipper/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
10
3dprinter-klipper/rootfs/etc/caddy/Caddyfile
Normal file
10
3dprinter-klipper/rootfs/etc/caddy/Caddyfile
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
# debug
|
||||
log {
|
||||
format console
|
||||
output file /var/log/caddy/caddy.log
|
||||
}
|
||||
auto_https disable_redirects
|
||||
}
|
||||
|
||||
import sites-enabled/*.caddy
|
||||
2
3dprinter-klipper/rootfs/etc/caddy/env
Normal file
2
3dprinter-klipper/rootfs/etc/caddy/env
Normal file
@ -0,0 +1,2 @@
|
||||
XDG_CONFIG_HOME="/data/config"
|
||||
XDG_DATA_HOME="/data/config"
|
||||
0
3dprinter-klipper/rootfs/etc/caddy/sites-enabled/.gitignore
vendored
Normal file
0
3dprinter-klipper/rootfs/etc/caddy/sites-enabled/.gitignore
vendored
Normal file
33
3dprinter-klipper/rootfs/etc/cont-init.d/klippy.sh
Normal file
33
3dprinter-klipper/rootfs/etc/cont-init.d/klippy.sh
Normal file
@ -0,0 +1,33 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
|
||||
# Install Klipper
|
||||
if [ ! -d "$KLIPPER_PATH" ]; then
|
||||
echo "Get Klipper source"
|
||||
git clone https://github.com/Klipper3d/klipper "$KLIPPER_PATH" --depth 1
|
||||
else
|
||||
echo "Klipper already installed"
|
||||
fi
|
||||
if [ ! -d "$KLIPPER_VENV_PATH" ]; then
|
||||
echo "Prepare Klippy-env"
|
||||
virtualenv "$KLIPPER_VENV_PATH"
|
||||
"$KLIPPER_VENV_PATH"/bin/python -m pip install --upgrade pip
|
||||
"$KLIPPER_VENV_PATH"/bin/pip install -r "$KLIPPER_PATH"/scripts/klippy-requirements.txt
|
||||
else
|
||||
echo "Klippy env already installed"
|
||||
fi
|
||||
|
||||
# Add host simulator process
|
||||
if [ ! -f "$ADDON_CONFIG_PATH"/bin/klipper_mcu_sim ]; then
|
||||
mkdir -p "$ADDON_CONFIG_PATH"/bin/
|
||||
cp /etc/klipper/config_host_simulator /data/klipper/.config
|
||||
cd /data/klipper || exit
|
||||
make
|
||||
./scripts/flash-linux.sh
|
||||
cp /usr/local/bin/klipper_mcu "$ADDON_CONFIG_PATH"/bin/klipper_mcu_sim
|
||||
fi
|
||||
|
||||
# Make sure config file exists.
|
||||
if [ ! -f "$ADDON_CONFIG_PATH"/moonraker/config/printer.cfg ]; then
|
||||
mkdir -p "$ADDON_CONFIG_PATH"/moonraker/config
|
||||
cp /etc/klipper/printer.cfg "$ADDON_CONFIG_PATH"/moonraker/config/printer.cfg
|
||||
fi
|
||||
20
3dprinter-klipper/rootfs/etc/cont-init.d/moonraker.sh
Normal file
20
3dprinter-klipper/rootfs/etc/cont-init.d/moonraker.sh
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
|
||||
# Install Moonraker
|
||||
if [ ! -d "$MOONRAKER_PATH" ]; then
|
||||
echo "Get Moonraker source"
|
||||
git clone https://github.com/Arksine/moonraker.git "$MOONRAKER_PATH" --depth 1
|
||||
fi
|
||||
if [ ! -d "$MOONRAKER_VENV_PATH" ]; then
|
||||
echo "Prepare Moonraker-env"
|
||||
virtualenv "$MOONRAKER_VENV_PATH"
|
||||
"$MOONRAKER_VENV_PATH"/bin/python -m pip install --upgrade pip
|
||||
"$MOONRAKER_VENV_PATH"/bin/pip install -r "$MOONRAKER_PATH"/scripts/moonraker-requirements.txt
|
||||
"$MOONRAKER_VENV_PATH"/bin/pip install msgspec uvloop
|
||||
fi
|
||||
|
||||
# Make sure config exists.
|
||||
if [ ! -f "$ADDON_CONFIG_PATH"/moonraker/config/moonraker.conf ]; then
|
||||
mkdir -p "$ADDON_CONFIG_PATH"/moonraker/config
|
||||
cp /etc/klipper/moonraker.conf "$ADDON_CONFIG_PATH"/moonraker/config/moonraker.conf
|
||||
fi
|
||||
19
3dprinter-klipper/rootfs/etc/cont-init.d/proxy.sh
Normal file
19
3dprinter-klipper/rootfs/etc/cont-init.d/proxy.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-octoprint
|
||||
# Configures proxy
|
||||
# ==============================================================================
|
||||
|
||||
# Generate proxy configuration
|
||||
bashio::var.json \
|
||||
addon_hostname "$(bashio::addon.hostname)" \
|
||||
addon_ip "$(bashio::addon.ip_address)" \
|
||||
trusted_proxies "$(bashio::config 'trusted_proxies')" \
|
||||
camera_url "$(bashio::config 'camera_url')" \
|
||||
ingress_port "^$(bashio::addon.ingress_port)" \
|
||||
| tempio \
|
||||
-template /usr/share/tempio/caddy/Caddyfile.gtpl \
|
||||
-out /etc/caddy/sites-enabled/moonraker.caddy
|
||||
|
||||
# Make sure config is correctly formatted.
|
||||
caddy fmt --overwrite /etc/caddy/Caddyfile
|
||||
25
3dprinter-klipper/rootfs/etc/cont-init.d/simuavr.sh
Normal file
25
3dprinter-klipper/rootfs/etc/cont-init.d/simuavr.sh
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
|
||||
if bashio::config.false 'simulavr'; then
|
||||
bashio::log "Disable Simulavr"
|
||||
touch /etc/services.d/simulavr/down
|
||||
return
|
||||
fi
|
||||
|
||||
# Install Simuavr
|
||||
if [ ! -d "$SIMULAVR_PATH" ]; then
|
||||
echo "Get SimulAVR source"
|
||||
git clone git://git.savannah.nongnu.org/simulavr.git "$SIMULAVR_PATH"
|
||||
cd "$SIMULAVR_PATH" || exit
|
||||
make python
|
||||
make build
|
||||
fi
|
||||
|
||||
# Add simulavr process
|
||||
if [ ! -f "$ADDON_CONFIG_PATH"/bin/klipper_mcu_simulavr ]; then
|
||||
mkdir -p "$ADDON_CONFIG_PATH"/bin/
|
||||
cp /etc/klipper/config_simulavr /data/klipper/.config
|
||||
cd /data/klipper || exit
|
||||
make
|
||||
cp out/klipper.elf "$ADDON_CONFIG_PATH"/bin/klipper_mcu_simulavr.elf
|
||||
fi
|
||||
32
3dprinter-klipper/rootfs/etc/klipper/config_host_simulator
Normal file
32
3dprinter-klipper/rootfs/etc/klipper/config_host_simulator
Normal file
@ -0,0 +1,32 @@
|
||||
# CONFIG_LOW_LEVEL_OPTIONS is not set
|
||||
# CONFIG_MACH_AVR is not set
|
||||
# CONFIG_MACH_ATSAM is not set
|
||||
# CONFIG_MACH_ATSAMD is not set
|
||||
# CONFIG_MACH_LPC176X is not set
|
||||
# CONFIG_MACH_STM32 is not set
|
||||
# CONFIG_MACH_HC32F460 is not set
|
||||
# CONFIG_MACH_RP2040 is not set
|
||||
# CONFIG_MACH_PRU is not set
|
||||
# CONFIG_MACH_AR100 is not set
|
||||
# CONFIG_MACH_LINUX is not set
|
||||
CONFIG_MACH_SIMU=y
|
||||
CONFIG_BOARD_DIRECTORY="simulator"
|
||||
CONFIG_CLOCK_FREQ=20000000
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_SIMULATOR_SELECT=y
|
||||
CONFIG_SERIAL_BAUD=250000
|
||||
CONFIG_USB_VENDOR_ID=0x1d50
|
||||
CONFIG_USB_DEVICE_ID=0x614e
|
||||
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||
CONFIG_WANT_GPIO_BITBANGING=y
|
||||
CONFIG_WANT_DISPLAYS=y
|
||||
CONFIG_WANT_SENSORS=y
|
||||
CONFIG_WANT_LIS2DW=y
|
||||
CONFIG_WANT_SOFTWARE_SPI=y
|
||||
CONFIG_NEED_SENSOR_BULK=y
|
||||
CONFIG_CANBUS_FREQUENCY=1000000
|
||||
CONFIG_HAVE_GPIO=y
|
||||
CONFIG_HAVE_GPIO_ADC=y
|
||||
CONFIG_HAVE_GPIO_SPI=y
|
||||
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||
CONFIG_INLINE_STEPPER_HACK=y
|
||||
58
3dprinter-klipper/rootfs/etc/klipper/config_simulavr
Normal file
58
3dprinter-klipper/rootfs/etc/klipper/config_simulavr
Normal file
@ -0,0 +1,58 @@
|
||||
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||
CONFIG_MACH_AVR=y
|
||||
# CONFIG_MACH_ATSAM is not set
|
||||
# CONFIG_MACH_ATSAMD is not set
|
||||
# CONFIG_MACH_LPC176X is not set
|
||||
# CONFIG_MACH_STM32 is not set
|
||||
# CONFIG_MACH_HC32F460 is not set
|
||||
# CONFIG_MACH_RP2040 is not set
|
||||
# CONFIG_MACH_PRU is not set
|
||||
# CONFIG_MACH_AR100 is not set
|
||||
# CONFIG_MACH_LINUX is not set
|
||||
# CONFIG_MACH_SIMU is not set
|
||||
CONFIG_AVR_SELECT=y
|
||||
CONFIG_BOARD_DIRECTORY="avr"
|
||||
# CONFIG_MACH_atmega2560 is not set
|
||||
# CONFIG_MACH_atmega1280 is not set
|
||||
# CONFIG_MACH_at90usb1286 is not set
|
||||
# CONFIG_MACH_at90usb646 is not set
|
||||
# CONFIG_MACH_atmega32u4 is not set
|
||||
# CONFIG_MACH_atmega1284p is not set
|
||||
CONFIG_MACH_atmega644p=y
|
||||
# CONFIG_MACH_atmega328p is not set
|
||||
# CONFIG_MACH_atmega328 is not set
|
||||
# CONFIG_MACH_atmega168 is not set
|
||||
CONFIG_MCU="atmega644p"
|
||||
CONFIG_AVRDUDE_PROTOCOL="arduino"
|
||||
CONFIG_AVR_FREQ_16000000=y
|
||||
# CONFIG_AVR_FREQ_20000000 is not set
|
||||
# CONFIG_AVR_FREQ_8000000 is not set
|
||||
CONFIG_CLOCK_FREQ=16000000
|
||||
CONFIG_AVR_CLKPR=-1
|
||||
CONFIG_AVR_STACK_SIZE=256
|
||||
CONFIG_AVR_WATCHDOG=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_AVR_SERIAL_UART0=y
|
||||
# CONFIG_AVR_SERIAL_UART1 is not set
|
||||
CONFIG_SERIAL_PORT=0
|
||||
CONFIG_SIMULAVR=y
|
||||
CONFIG_SERIAL_BAUD=250000
|
||||
CONFIG_USB_VENDOR_ID=0x1d50
|
||||
CONFIG_USB_DEVICE_ID=0x614e
|
||||
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||
CONFIG_WANT_GPIO_BITBANGING=y
|
||||
CONFIG_WANT_DISPLAYS=y
|
||||
CONFIG_WANT_SENSORS=y
|
||||
CONFIG_WANT_LIS2DW=y
|
||||
CONFIG_WANT_SOFTWARE_I2C=y
|
||||
CONFIG_WANT_SOFTWARE_SPI=y
|
||||
CONFIG_NEED_SENSOR_BULK=y
|
||||
CONFIG_CANBUS_FREQUENCY=1000000
|
||||
CONFIG_INITIAL_PINS=""
|
||||
CONFIG_HAVE_GPIO=y
|
||||
CONFIG_HAVE_GPIO_ADC=y
|
||||
CONFIG_HAVE_GPIO_SPI=y
|
||||
CONFIG_HAVE_GPIO_I2C=y
|
||||
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||
CONFIG_HAVE_STRICT_TIMING=y
|
||||
CONFIG_INLINE_STEPPER_HACK=y
|
||||
10
3dprinter-klipper/rootfs/etc/klipper/moonraker.conf
Normal file
10
3dprinter-klipper/rootfs/etc/klipper/moonraker.conf
Normal file
@ -0,0 +1,10 @@
|
||||
[machine]
|
||||
provider: none
|
||||
validate_service: False
|
||||
|
||||
[update_manager]
|
||||
enable_system_updates: False
|
||||
|
||||
[server]
|
||||
host: 127.0.0.1
|
||||
port: 7125
|
||||
3
3dprinter-klipper/rootfs/etc/klipper/printer.cfg
Normal file
3
3dprinter-klipper/rootfs/etc/klipper/printer.cfg
Normal file
@ -0,0 +1,3 @@
|
||||
[mcu]
|
||||
serial: /tmp/klipper_mcu_sim
|
||||
|
||||
10
3dprinter-klipper/rootfs/etc/services.d/klipper_host/run
Normal file
10
3dprinter-klipper/rootfs/etc/services.d/klipper_host/run
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-Klipper
|
||||
# Runs Host Sim MCU
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting Host MCU..."
|
||||
|
||||
## Run your program
|
||||
exec "$ADDON_CONFIG_PATH"/bin/klipper_mcu_host
|
||||
10
3dprinter-klipper/rootfs/etc/services.d/klipper_sim/run
Normal file
10
3dprinter-klipper/rootfs/etc/services.d/klipper_sim/run
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-Klipper
|
||||
# Runs Host Sim MCU
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting Host Sim MCU..."
|
||||
|
||||
## Run your program
|
||||
exec "$ADDON_CONFIG_PATH"/bin/klipper_mcu_sim
|
||||
10
3dprinter-klipper/rootfs/etc/services.d/klippy/run
Normal file
10
3dprinter-klipper/rootfs/etc/services.d/klippy/run
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-Klipper
|
||||
# Runs Klippy
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting Klippy..."
|
||||
|
||||
## Run your program
|
||||
exec "$KLIPPER_VENV_PATH"/bin/python "$KLIPPER_PATH"/klippy/klippy.py "$ADDON_CONFIG_PATH"/moonraker/config/printer.cfg -a /tmp/klippy_uds -l "$ADDON_CONFIG_PATH"/moonraker/logs/klippy.log
|
||||
10
3dprinter-klipper/rootfs/etc/services.d/moonraker/run
Normal file
10
3dprinter-klipper/rootfs/etc/services.d/moonraker/run
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-Klipper
|
||||
# Runs Moonraker
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting Moonraker..."
|
||||
|
||||
## Run your program
|
||||
exec "$MOONRAKER_VENV_PATH"/bin/python "$MOONRAKER_PATH"/moonraker/moonraker.py -d "$ADDON_CONFIG_PATH"/moonraker
|
||||
9
3dprinter-klipper/rootfs/etc/services.d/proxy/run
Normal file
9
3dprinter-klipper/rootfs/etc/services.d/proxy/run
Normal file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-octoprint
|
||||
# Runs the reverse proxy.
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting proxy..."
|
||||
|
||||
exec caddy run --config /etc/caddy/Caddyfile --envfile /etc/caddy/env
|
||||
11
3dprinter-klipper/rootfs/etc/services.d/simulavr/run
Normal file
11
3dprinter-klipper/rootfs/etc/services.d/simulavr/run
Normal file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Add-on: 3dprinter-Klipper
|
||||
# Runs Host SimulAVR MCU
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Starting SimulAVR MCU..."
|
||||
|
||||
## Run your program
|
||||
export PYTHONPATH="$SIMULAVR_PATH"/build/pysimulavr/
|
||||
exec "$KLIPPER_PATH"/scripts/avrsim.py "$ADDON_CONFIG_PATH"/bin/klipper_mcu_simulavr.elf
|
||||
@ -0,0 +1,9 @@
|
||||
# Will be exposed by default.
|
||||
# :7125 {
|
||||
# reverse_proxy http://127.0.0.1:7125
|
||||
# }
|
||||
|
||||
# Ingress
|
||||
:8099 {
|
||||
reverse_proxy http://127.0.0.1:7125
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user