Ich neige manchmal dazu, unkonventionelle Ideen zu haben und diese auch umzusetzen. In diesem Fall ist die Idee nicht komplett von mir, es passt trotzdem gut ins Bild.

Aber der Reihe nach.

Die Idee

Ich habe bisher eine normale ToDo-App benutzt, aber das Problem, dass ich da wenig drauf schaue und daher auch eher wenig abarbeite. Durch Zufalll bin ich im Internet auf ein Video gestoßen, wo jemand einen Kassenbondrucker für ToDo-Tickets in Verbindung mit einer Pinnwand nutzt, um die zu erledigenden Aufgaben nicht aus dem Auge zu verlieren (wortwörtlich in dem Fall). Ich fand das so gut, dass ich recht schnell bei eBay unterwegs war und auch ein passendes Angebot gefunden hab, auch die Pläne für eine Software hatte ich ziemlich schnell im Kopf.

Der Drucker

Ich habe mich umgeschaut, was es an Druckern gibt. Bei Kassen sind Geräte von Epson recht weit verbreitet, dementsprechend gibt es hier auch einen guten Gebrauchtmarkt. Ich wollte ein Gerät haben, was halbwegs aktuell ist und auch ans Netzwerk angebunden werden kann (ob LAN oder WLAN war mir egal). Auch musste es von gängigen Bibliotheken für Python (bei mir python-escpos - auch wenn es für dieses spezielle Modell keinen direkten Support gibt; vergleichbare Modelle werden aber unterstützt und andere Profile (ich nutze TM-T20II) funktionieren fehlerfrei).

Gefunden habe ich einen Epson TM-m30II-S. Das ist ein Kassendrucker, der für den Einsatz bei Tabletkassen vorgesehen ist und dementsprechend auf der Oberseite auch eine Halterung für Tablets hat. Die Halterung brauche ich zwar nicht, aber das Angebot war wirklich gut (um die 25€ für ein Gerät in ordentlichem Zustand). Ich hab den dann auch bestellt.

Der Drucker war ein wenig staubig, aber ansonsten einwandfrei. Die “Abnutzung” (also gedruckte Kilometer und Schnittvorgänge) passten zwar nicht zu den Verkäuferangaben, waren aber trotzdem brauchbar - der Käufer hatte angegeben, dass das Gerät keine 5 Bonrollen gedruckt hat, mit 80m-Rollen waren das allerdings eher 35 Rollen. Und knapp 10000 Schnitte. Beides sind aber trotzdem Werte, die vollkommen im Rahmen liegen dürften und eher geringe Nutzung sein dürften. Ich will nicht wissen, wie viele Rollen und Schnitte ein Drucker in einem gut besuchten Supermarkt an der Kasse so auf dem Zähler haben…

An Schnittstellen hat dieses Modell USB, LAN und Bluetooth direkt an Board, über ein (teures) Dongle lässt sich theoretisch auch WLAN nachrüsten. Mir genügt LAN vollkommen bzw. es ist sogar meine bevorzugte Anschlussmethode.

Die Software

Planka

Ich habe mich dazu entschlossen, für die Software keine reine ToDo-Liste, sondern ein Kanban-Board zu nutzen. Die Wahl fiel hierbei auf Planka, da es Open Source ist, OIDC enthalten ist und die API gut beschrieben ist und gute Bibliotheken für Python existieren.

Planka läuft einfach als Docker, der User für den API-Zugriff ist ein normaler, lokaler Benutzer. Ansonsten hat das Board folgende Spalten:

  • Irgendwann: Für ToDo-Einträge, die noch nicht zu erledigen sind, aber irgendwann gemacht werden sollten/müssen
  • Zeitnahe: ToDos, die grob in den nächsten 1-2 Wochen zu erledigen sind
  • Morgen
  • Heute
  • In Arbeit
  • Blocked: Aufgaben, die angefangen oder noch anzufangen sind, die aber noch nicht gemach twerden können. Beispielsweise, wenn noch andere Dinge zu erledigen sind, Teile fehlen oder ich auf Dinge warten muss.
  • Done: Fertige Aufgaben von heute
  • Archiv: Ältere fertige Aufgaben

PlankaPrinter

Mein Python-Script sortiert täglich die Tickets. Dabei werden Tickets von Morgen nach Heute verschoben, Termine von Google importiert und in die passenden Spalten (Heute bzw. Morgen) verschoben, Aufgaben mit Zieldatum werden auch automatisch in die passende Spalte verschoben. Alles von Done wird dabei auch ins Archiv verschoben.

Termine

Ich importiere meine Kalender via ICS-URLs, mit einer passenden Library werden auch wiederkehrende Termine korrekt ausgewertet. Termine haben dabei ein eigenes Tag, um sie in der Übersicht direkt erkennen zu können.

Drucken

Die Tickets, die heute zu erledigen sind und noch nicht gedruckt sind, werden an den Drucker geschickt. Bereits gedruckte Aufgaben haben ein Printed-Tag.

Aufwandsschätzungen

Ich habe mir Tags mit geschätzten Zeitaufwänden (XS bis XL) erstellt. Der Tickettitel und die Beschreibung werden an ein lokal betriebenes LLM (konkret gemma3n) geschickt und von diesem der Aufwand geschätzt. Die Schätzungen sind nicht perfekt, aber gehen meistens zumindest in die richtige Richtung. Braucht man wahrscheinlich nicht wirklich, aber ist ein cooles Zusatzfeature.

HomeAssistant-Integration

Die Aktionen (täglicher Durchlauf mit Import, Sortieren und co sowie das Drucken von den Tickets) werden via MQTT von HomeAssistant aus getriggert, damit dies in Abhängigkeit von meiner Anwesenheit zuhause und auch der Tageszeit passieren kann. Via MQTT lassen sich auch direkt Dinge mit Titel und Nachricht drucken, das nutze ich bisher allerdings noch nicht.

Sonstige Features

Ich habe ein kleines Script gebaut, was Bilder ausdrucken kann. Sehr simpel, aber funktioniert. Das muss allerdings noch irgendwie an den Rest mit angebunden werden, da das bisher nur ein eigenständiges Python-Script ist.

Mein Aufbau

Ich habe den Drucker in einem Regal stehen, daneben dann ein Glas für die fertigen Aufgaben und oben drauf die Pinnwand für die aktuellen Aufgaben.

Der Gesamtaufbau

Der Epson TM-m30II-S mit dem Glas für erledigte Aufgaben

Um die Pinnadeln aufzubewahren, habe ich für die Tablethalterung eine kleine Schlade zum darüberstecken designed und gedruckt. Damit sieht man auch die offenen Metallflächen für die Halterung nicht mehr, was nebenbei auch noch schicker ist.

Fach für Pinnadeln

Der Drucker hängt per LAN am Netzwerk und läuft durchgängig. Der Stromverbrauch liegt tatsächlich nur bei etwas über 1 Watt, also nur etwas mehr als eine WLAN-Steckdose braucht; es lohnt sich also gar nicht, den Drucker abzuschalten bzw. über eine WLAN-Steckdose steuerbar zu machen.

Wie es weitergeht

Ich bin aktuell noch dabei, diverse kleinere Bugs zu beheben, dazu gehört beispielsweise das Erzeugen von neuen Tickets für wiederkehrende Termine - bisher verschiebt die Software dann das bestehende Ticket vom Archiv wieder auf Heute, behält dabei aber das Printed-Tag bei… Ansonsten läuft das meiste ziemlich gut, nur den Code könnte ich noch etwas aufräumen.

Dokumentieren muss ich hier auch noch viel. Aber wer hat auf Doku schon Lust?

Am Ende soll PlankaPrinter irgendwann auch Open Source werden, damit andere sich hier etwas abschauen können oder die Software direkt so einsetzen können.