Spoolman: Deine Filament-Rollenverwaltung
Tags: tools, spoolman, homeassistant, automatisiert
Published: 2023-12-16 19:00:26

![](https://blog.disane.dev/content/images/2023/12/spoolman_deine-filament-rollenverwaltung_banner.jpeg)Du verlierst den Überblick über deine Filamente? Ich habe eine Lösung dafür! 🛵

---

Jeder der einen 3D-Drucker besitzt kennt das Problem, dass man nach einiger Zeit anfängt Filament-Rollen zu hamstern. Hat man nun sehr viele Spulen, wird es irgendwann lästig diese zu verwalten oder sogar frühzeitig darüber informiert zu werden, wenn gewisse Spulen sich langsam dem Ende neigen. Um genau das Problem zu beheben hat ein Entwickler ([Donkie](https://github.com/Donkie)) Spoolman entwickelt:

[GitHub - Donkie/Spoolman: Keep track of your inventory of 3D-printer filament spools.Keep track of your inventory of 3D-printer filament spools. - GitHub - Donkie/Spoolman: Keep track of your inventory of 3D-printer filament spools.![](https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg)GitHubDonkie![](https://opengraph.githubassets.com/63bb34c3323e61213609849e472e309f11a94e438f657569e6e8edfe9ba8af1a/Donkie/Spoolman)](https://github.com/Donkie/Spoolman)

Spoolman ist sogar so gut integriert, dass es sogar nativ von Klipper und KlipperScreen unterstützt wird, so dass dein 3D-Drucker direkt mit Spoolman kommuniziert und auch den Verbrauch protokolliert.

## Installation 🛠️

Spoolman lässt sich per Docker ganz einfach installieren, vorausgesetzt du hast einen Docker-Host. Donkie hat auch in seiner Readme zu dem Projekt, eine Compose-File aufgeführt, diese kannst du einfach ausführen und danach sollte Spoolman installiert und lauffähig sein:

```yaml
version: '3.8'
services:
  spoolman:
    image: ghcr.io/donkie/spoolman:latest
    restart: unless-stopped
    volumes:
      # Mount the host machine's ./data directory into the container's /home/app/.local/share/spoolman directory
      - type: bind
        source: ./data # This is where the data will be stored locally. Could also be set to for example `source: /home/pi/printer_data/spoolman`.
        target: /home/app/.local/share/spoolman # Do NOT change this line
    ports:
      # Map the host machine's port 7912 to the container's port 8000
      - "7912:8000"
    environment:
      - TZ=Europe/Stockholm # Optional, defaults to UTC
```

## Der erste Blick 👀

Wenn du nun Spoolman öffnest, dann wirst du von einer recht schön gestalteten Oberfläche begrüßt.

![](https://blog.disane.dev/content/images/2023/12/192.168.1.13_8001-SpulenSpoolman.jpeg)

Beim ersten Start landest du auf der Startseite, die dir alle angelegten Spulen anzeigt. Da du noch keine angelegt hast, ist die Übersicht natürlich leer. Damit du nun deine Spulen hinzufügen kannst, musst du nun Filamente anlegen.

### Hersteller anlegen

Damit du Filamente anlegen kannst, solltest du in dem Tab "Hersteller" erst einmal alle deine verwendeten Hersteller eintragen. Diesen brauchst du dann später bei der Anlage der Filamente.

### Filamente anlegen

Filamente sind prinzipiell die angebotenen Filamentarten die man so kaufen kann und die Spulen sind die Spulen, die du tatsächlich gekauft und physisch bei dir liegen hast.

Wir legen hierzu einfach mal ein neues Filament an. Wechsle dazu auf den Reiter `Filamente`und dann klicke auf den Button "Erstellen":

![](https://blog.disane.dev/content/images/2023/12/image-16.png)

Nun kannst du alle deine Daten zu den verwendeten Filamenten anlegen. Ich empfehle hierbei immer, dass man alle Daten so gut es geht füllen sollte, das erspart einem später das Nachträgliche ändern. Das Schöne daran ist, dass man sogar Meta-Daten wie die Farbe, Düsentemperatur und Betttemperatur anlegen kann, was es einem dann später ermöglicht, eine bessere Übersicht zu haben.

Hast du alles ausgefüllt und gespeichert, hast du dein erstes Filament angelegt. Filamente dienen hier tatsächlich nur als "Blaupause" für die Daten einer Spule.

### Spulen anlegen

Dein Filament ist nun angelegt und du kannst nun aus dem Filament eine Spule anlegen. Dazu wechselst du einfach in den Tab "Spulen" und erzeugst hier eine neue Spule.

![](https://blog.disane.dev/content/images/2023/12/image-17.png)

Hier kannst du sogar so granular sein und sogar schon verwendete Spulen und deren Gewicht anlegen. Als Filament wählst du nun das zuvor angelegte Filament aus. Da meine fiktive Spule noch neu ist, nehmen wir als Verbrauch 0g an. Wenn du mehrere Spulen der selben Art und des selben Filamentes anlegen willst, kannst du sogar unten die Anzahl angeben.

Die Datumswerte der Verwendung lassen wir einmal leer - dazu kommen wir später noch einmal.

Meiner Erachtens nach ist es auch wichtig, dass du einen Ort der Lagerung angibst, auch wenn du nur einen Lagerort hast. So weiß0t du aber später, wenn du tatsächlich mal mehrere hast, wo sich die Spule befindet.

Eigentlich bist du damit auch schon durch. Aber Spoolman bietet auch noch so das eine oder andere Gimmick, wie z.B. QR-Codes.

### QR-Codes

Hast du nun alle deine Spulen digitalisiert, kannst du auch eigene QR-Codes drucken und die auf die Spulen kleben. Ich für meinen Teil brauche das Feature nicht, da ich nur wenige (< 15) Spulen habe. Aber sehr cool ist es schon. In der Spulenverwaltung hast du einen Button "QR-Code drucken". Mit einem Klick kommst du dann dort in das Menü, wo du entscheidest welche du drucken möchtest:  

![](https://blog.disane.dev/content/images/2023/12/image-18.png)

Danach öffnet sich ein Fenster wo du auch schon die Druckseite angezeigt bekommst:

![](https://blog.disane.dev/content/images/2023/12/image-19.png)

Das kannst du alles sogar so granular steuern, dass du sogar Klebebögen nutzen kannst. 

Wenn du diese QR-Codes dann auf die Rollen geklebt hast, kannst du die sogar einscannen. Dafür gibt es auf jeder Seite unten rechts einen Button: 

![](https://blog.disane.dev/content/images/2023/12/image-20.png)

⚠️

Das Scannen von QR-Codes funktioniert nur, wenn dein Spoolman via HTTPS erreichbar ist, also du auch ein Zertifikat besitzt. Das geht aber mit [Lets Encrypt](https://letsencrypt.org/de/) oder [Nginx Proxy Manager](https://nginxproxymanager.com/) mittlerweile sehr leicht und vor allem kostenfrei.

## Integration in Klipper/Moonraker

Wenn du die Klipper-Software für deinen 3D-Drucker verwendest, kannst du Spoolman sogar direkt dort integrieren. Dafür musst du einfach nur deine `moonraker.conf`anpassen und nachfolgenden Block hinzufügen:

```conf
# moonraker.conf

[spoolman]
server: http://192.168.0.123:7912 
#   URL to the Spoolman instance. This parameter must be provided.
sync_rate: 5
#   The interval, in seconds, between sync requests with the
#   Spoolman server.  The default is 5.
```

Damit wird dann (nach einem Neustart) Spoolman direkt integriert und du hast eine Filamentauswahl direkt in der Oberfläche:

![](https://blog.disane.dev/content/images/2023/12/image-21.png)

Und kannst nach einem Wechsel auch direkt eine neue Rolle "einlegen":

![](https://blog.disane.dev/content/images/2023/12/image-22.png)

Das hat den charmanten Vorteil, dass du sogar den Verbrauch an Spoolman gesendet bekommst und dort live sehen kannst, wie viel Filament noch auf der Spule ist. Sehr sehr nice! 

![](https://blog.disane.dev/content/images/2023/12/BoratBoratVeryNiceGIF.gif)

### Integration in KlipperScreen

Dadurch, dass du generell Spoolman in Klipper/Moonaker integriert hast, würdest du auch die selbe Verwaltung in KlipperScreen angezeigt bekommen:

![](https://blog.disane.dev/content/images/2023/12/IMG_0475.JPEG)

![](https://blog.disane.dev/content/images/2023/12/IMG_0476.JPEG)

### Gimmick: Integration in Home Assistant

Da mir das aber nicht alles genug ist, habe ich noch eine Integration für Home Assistant geschrieben, damit ich auch hier Benachrichtigungen an meine Geräte senden kann oder es anderweitig automatisieren kann.

[GitHub - Disane87/spoolman-homeassistant: Unofficial spoolman home assistant integrationUnofficial spoolman home assistant integration. Contribute to Disane87/spoolman-homeassistant development by creating an account on GitHub.![](https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg)GitHubDisane87![](https://opengraph.githubassets.com/8305de42c6074b1a7cdaa142144b0ebac3675566cba14de74d3e36a9a9dea11f/Disane87/spoolman-homeassistant)](https://github.com/Disane87/spoolman-homeassistant)

So kann ich dann auch schöne Dashboards haben:

![](https://blog.disane.dev/content/images/2023/12/image-23.png)

Die Installation ist recht einfach per [HACS](https://hacs.xyz/docs/faq/custom%5Frepositories/) gemacht (das sollte natürlich vorab installiert sein). Ist das alles gemacht, kannst du die Integration einfach unter "Integrationen" auswählen und konfigurieren.

![image](https://github.com/Disane87/spoolman-homeassistant/raw/main/resources/images/spoolman-integration-config.png?raw=true)

Hier kannst du auch Schwellenwerte definieren, bei dem ein Home Assistant-Event gefeuert wird. Es gibt Schwellenwerte für "Info", "Warnung" und "Kritisch". Je nach dem welcher Schwellenwert erreich wird, sendet die Integration ein Event mit folgendem Namen `spoolman_spool_threshold_exceeded`. Darauf kannst du in Automationen reagieren.

Ist die Integration eingerichtet, dann solltest du alle deine Spulen pro Lagerort sehen:

![image](https://github.com/Disane87/spoolman-homeassistant/raw/main/resources/images/spoolman-integration-devices.png?raw=true)

Jeder Lagerort hat dann alleine deine angelegten Spulen (dafür solltest du auch im Vorfeld Hersteller und Lagerort angeben):

![image](https://github.com/Disane87/spoolman-homeassistant/raw/main/resources/images/spoolman-integration-hass.png?raw=true)

Jede Spule wird dann mit der entsprechenden Farbe angelegt und hat alle Daten von Spoolman innerhalb der Attribute:

![image](https://github.com/Disane87/spoolman-homeassistant/raw/main/resources/images/spoolman-integration-sensor.png?raw=true)

Beispiele für eine Automatisierung oder die Templates für Karten findest du in der `Readme.md` des Projektes 👨‍🚀

Damit hast du nun deine Spulen digitalisiert, kannst sie überwachen und ggf. auch automatisieren via Home Assistant 🎉

---

Wäre eine Spulen-Verwaltung etwas für dich? Oder eher nicht? Lass es mich in den Kommentaren wissen 👇

---

If you like my posts, it would be nice if you follow my [Blog](https://blog.disane.dev) for more tech stuff.