Wenn du Odoo mit Hardware verbinden willst, denken viele zuerst an Odoo IoT. Das kann auch sinnvoll sein. Für einen sehr konkreten Use-Case, Labelprint direkt aus Odoo Shop Floor, geht es meiner Meinung nach aber noch einfacher.
Ich habe dafür eine sehr schlanke Lösung gebaut: Ein Raspberry Pi mit Touchscreen steht direkt am Arbeitsplatz. Daran hängt per USB ein Zebra Labelprinter. Auf dem Raspberry Pi läuft im Browser ganz normal Odoo Shop Floor. Zusätzlich läuft lokal ein sehr kleiner Python-Dienst, der nur eine Aufgabe hat, ZPL Labels an den Drucker zu schicken.
Für genau diesen Use-Case finde ich das aktuell die einfachste Art, Odoo mit Hardware zu integrieren. Kein Odoo IoT Abo, kein Netzwerkdrucker, keine Druckerfreigabe im LAN, keine komplizierte Middleware. Einfach Odoo im Browser und ein lokaler Print-Agent auf demselben Raspberry Pi.

Architektur für Odoo-Labelprint: KISS (keep it simple and stupid)
Ich mag einfache Abläufe und Strukturen. So wenig Code wie möglich. Gerade in Zeiten von KI-basiertem Coding ist das sehr wichtig.
Der Ablauf ist einfach: Der Mitarbeiter arbeitet im Shop Floor auf dem Raspberry Pi und öffnet dort seinen Arbeitsauftrag. Im Quality Check kann er den Labeldruck direkt auslösen. Zuerst öffnet sich ein sehr simples Mengenfenster, in dem er die Anzahl Labels wählen kann. Danach rendert Odoo das ZPL Label, und der Browser sendet es direkt an einen lokalen Endpunkt auf dem Raspberry Pi.
Wichtig ist hier das Wort lokal. Der Print-Agent läuft auf 127.0.0.1. Das heisst, er ist nur auf dem Raspberry Pi selbst erreichbar. Der Browser auf dem Pi spricht also direkt mit dem lokalen Dienst, und dieser schreibt das ZPL direkt auf den angeschlossenen Drucker. Genau dadurch braucht es keine eigentliche Netzwerk-Integration vom Drucker.
Das ist nicht nur einfach, sondern auch sauber. Der Drucker hängt lokal am Raspberry Pi. Odoo bleibt wie gewohnt auf dem Server oder auf Odoo.sh. Der Browser ist nur die Brücke zwischen Odoo Shop Floor und dem lokalen Print-Agent. Mehr braucht es für diesen Anwendungsfall nicht.
Ein weiterer Vorteil: Der Druck ist nicht von einem Netzwerk abhängig und ist blitzschnell. Vom Button-Klick bis zum gedruckten Label vergeht keine merkbare Verzögerung.

Warum ich diese Architektur so gut finde
Der grösste Vorteil ist für mich die Einfachheit. In Odoo braucht es nur ein kleines Modul mit einem Button, einem Wizard für die Labelmenge und einem ZPL Report. Auf dem Raspberry Pi läuft eine kleine Python App mit genau einer Aufgabe. Dadurch ist das Setup schnell aufgesetzt und auch später sehr gut verständlich.
- Keine IoT Subscription pro Gerät
- Keine Druckerfreigabe im internen Netzwerk
- Kein zentraler Print-Server
- Keine komplexe Odoo Custom-Logik auf Serverseite
- Sehr kleine und gut kontrollierbare Angriffsfläche, weil der Dienst nur lokal läuft
Ich mag solche Lösungen, weil sie genau das machen, was sie sollen, und nicht mehr. Wenn der Mitarbeiter auf Drucken klickt, wird das Label lokal gedruckt. Wenn etwas nicht funktioniert, bleibt der Ablauf sauber kontrollierbar. In unserem Fall geht der Quality Check sogar erst weiter, wenn der Druck erfolgreich war. Das ist in der Praxis wichtig, damit der Benutzer nicht einfach durchklickt und das Label am Ende gar nie gedruckt wurde.
App auf dem Raspberry Pi (nur ein Python File mit 177 LOC):

So sieht die Odoo Seite aus
Einfache Modul-Struktur mit Python und XML für den Wizard (Menge wählen und "Print"-Button), JS-Client-Action, die das ZPL File zum Localhost schickt, und dem ZPL Report selbst.

Im Qualitätskontrollpunkt kann, sobald der Typ auf "Etikett drucken" gesetzt ist, der Labeldruck über Raspberry Pi aktiviert und das ZPL Label ausgewählt werden. So kann ein Label pro Qualitätskontrollpunkt definiert werden.

In den nächsten Beiträgen werde ich noch weitere Raspberry Pi Use-Cases mit Odoo zeigen. Wenn du so etwas für deine Produktion brauchst, kontaktiere mich gerne oder schreibe einen Kommentar.
Nate