From 7f813f5f992de6cdb48f4c7e4a6ccb477f6cec2d Mon Sep 17 00:00:00 2001 From: Fredrik Baberg Date: Thu, 12 Jan 2023 02:19:26 +0100 Subject: [PATCH] Added files for Klipper and Moonraker --- klipper/DEV.md | 18 +++++++++++---- klipper/Dockerfile | 25 +++++++++++++++++++++ klipper/config.yaml | 17 ++++++++++++++ klipper/rootfs/etc/cont-init.d/klipper.sh | 10 +++++++++ klipper/rootfs/etc/cont-init.d/moonraker.sh | 10 +++++++++ klipper/rootfs/etc/services.d/klipper/run | 14 ++++++++++++ klipper/rootfs/etc/services.d/moonraker/run | 19 ++++++++++++++++ 7 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 klipper/Dockerfile create mode 100644 klipper/config.yaml create mode 100644 klipper/rootfs/etc/cont-init.d/klipper.sh create mode 100644 klipper/rootfs/etc/cont-init.d/moonraker.sh create mode 100644 klipper/rootfs/etc/services.d/klipper/run create mode 100644 klipper/rootfs/etc/services.d/moonraker/run diff --git a/klipper/DEV.md b/klipper/DEV.md index b265405..022b4ee 100644 --- a/klipper/DEV.md +++ b/klipper/DEV.md @@ -1,8 +1,18 @@ # Klipper +Attempt at Klipper addon. + +Need a frontend: +- OctoPrint ( + OctoKlipper plugin) +- Mainsail ( + Moonraker ) +- Fluidd ( + Moonraker ) + +Both Klipper and OctoPrint/Mainsail/Fluidd needs access to klipper_config printer.cfg folder. + ## Ideas -Klipper container needs to communicate with one of: -- OctoPrint ( + OctoKlipper plugin) -- Moonraker -- Fluidd \ No newline at end of file +> install git +> add user, `useradd -ms /bin/bash docker && echo "docker:docker" | chpasswd && adduser docker sudo` +> install sudo +> set password, `passwd docker` +> git clone https://github.com/th33xitus/kiauh.git diff --git a/klipper/Dockerfile b/klipper/Dockerfile new file mode 100644 index 0000000..4ecb389 --- /dev/null +++ b/klipper/Dockerfile @@ -0,0 +1,25 @@ +ARG BUILD_FROM="ghcr.io/home-assistant/amd64-base" + +FROM ${BUILD_FROM} + +WORKDIR /root + +RUN apk add --no-cache \ + git \ + py3-virtualenv \ + python3-dev \ + libffi-dev \ + build-base \ + curl-dev + # && git clone https://github.com/KevinOConnor/klipper \ + # && git clone https://github.com/Arksine/moonraker.git + +# RUN virtualenv klippy-env \ +# && ./klippy-env/bin/pip install -r ./klipper/scripts/klippy-requirements.txt + +# RUN virtualenv moonraker-env \ +# && ./moonraker-env/bin/pip install -r ./moonraker/scripts/moonraker-requirements.txt + +COPY rootfs / +RUN chmod +x /etc/cont-init.d/*.sh +RUN chmod +x /etc/services.d/*/* diff --git a/klipper/config.yaml b/klipper/config.yaml new file mode 100644 index 0000000..fd85358 --- /dev/null +++ b/klipper/config.yaml @@ -0,0 +1,17 @@ +name: "3DPrinter-Klipper" +version: "2023.01.0" +slug: "3dprinter-klipper" +description: "Klipper as an addon." +url: "https://github.com/fredrikbaberg/3dprinter-addons/tree/klipper/3dprinter-klipper" +arch: + - armv7 + - amd64 + - armhf + - aarch64 + - i386 +stage: experimental +init: false +realtime: true +gpio: true +uart: true +usb: true diff --git a/klipper/rootfs/etc/cont-init.d/klipper.sh b/klipper/rootfs/etc/cont-init.d/klipper.sh new file mode 100644 index 0000000..1e45fd7 --- /dev/null +++ b/klipper/rootfs/etc/cont-init.d/klipper.sh @@ -0,0 +1,10 @@ +#!/usr/bin/with-contenv bashio + +if [ ! -d /data/klipper ]; then + git clone https://github.com/KevinOConnor/klipper /data/klipper +fi + +if [ ! -d /data/klippy-env ]; then + virtualenv /data/klippy-env + /data/klippy-env/bin/pip install -r /data/klipper/scripts/klippy-requirements.txt +fi diff --git a/klipper/rootfs/etc/cont-init.d/moonraker.sh b/klipper/rootfs/etc/cont-init.d/moonraker.sh new file mode 100644 index 0000000..82e8fea --- /dev/null +++ b/klipper/rootfs/etc/cont-init.d/moonraker.sh @@ -0,0 +1,10 @@ +#!/usr/bin/with-contenv bashio + +if [ ! -d /data/klipper ]; then + git clone https://github.com/Arksine/moonraker.git /data/moonraker +fi + +if [ ! -d /data/moonraker-env ]; then + virtualenv /data/moonraker-env + /data/moonraker-env/bin/pip install -r /data/moonraker/scripts/moonraker-requirements.txt +fi \ No newline at end of file diff --git a/klipper/rootfs/etc/services.d/klipper/run b/klipper/rootfs/etc/services.d/klipper/run new file mode 100644 index 0000000..0c36770 --- /dev/null +++ b/klipper/rootfs/etc/services.d/klipper/run @@ -0,0 +1,14 @@ +#!/usr/bin/with-contenv bashio + +bashio::log.info "Starting Klipper..." + +KLIPPER_PYTHON=/data/python/klipper/bin/python +KLIPPY=/data/src/klipper/klippy/klippy.py +KLIPPER_CFG=/data/config/klipper/printer.cfg +KLIPPY_LOGFILE=/tmp/klippy.log +KLIPPY_UDS=/tmp/klippy_uds + +touch ${KLIPPY_LOGFILE} +touch ${KLIPPER_CFG} + +exec ${KLIPPER_PYTHON} ${KLIPPY} ${KLIPPER_CFG} -l ${KLIPPY_LOGFILE} -a ${KLIPPY_UDS} diff --git a/klipper/rootfs/etc/services.d/moonraker/run b/klipper/rootfs/etc/services.d/moonraker/run new file mode 100644 index 0000000..a4ba535 --- /dev/null +++ b/klipper/rootfs/etc/services.d/moonraker/run @@ -0,0 +1,19 @@ +#!/usr/bin/with-contenv bashio + +bashio::log.info "Starting Moonraker..." + +MOONRAKER_PYTHON=/data/python/moonraker/bin/python +MOONRAKER=/data/src/moonraker/moonraker/moonraker.py +if [ -f /data/config/klipper/moonraker.conf ]; then + bashio::log.notice "Using custom moonraker.conf" + MOONRAKER_CFG=/data/config/klipper/moonraker.conf +else + bashio::log.notice "Using default moonraker.conf" + MOONRAKER_CFG=/root/config/moonraker/moonraker.conf +fi +MOONRAKER_LOGFILE=/tmp/moonraker.log + +touch ${MOONRAKER_LOGFILE} +touch ${MOONRAKER_CFG} + +exec ${MOONRAKER_PYTHON} ${MOONRAKER} -c ${MOONRAKER_CFG} -l ${MOONRAKER_LOGFILE}