Zum Inhalt

Druckweiche

Im Schützenhaus stehen meist zwei Arten von Druckern: ein Etikettendrucker an der Kasse (z.B. Niimbot B1) und ein Blattdrucker im Büro für Kranzkarten, Ranglisten und den Kassenabschluss. Dazu kann ein Bondrucker für Kassenzettel kommen (z.B. Epson TM-m30III). Ein Browser kann keinen der beiden direkt ansprechen – er öffnet höchstens den Druckdialog.

Die Druckweiche löst das: Ein kleines Agent-Gerät im Vereinsnetz (z.B. ein M5Stack Core2) sucht die Drucker selbst und meldet sie der App. In der Verwaltung legt man nur noch fest, welches Dokument auf welchen Drucker geht. Danach druckt „Drucken“ ohne Dialog direkt am richtigen Gerät.

Paket Verein

Die Druckweiche gehört zum Paket Verein. Ohne dieses Paket druckt die App über den Browser; Geräte und Zuordnung bleiben gespeichert. Siehe Abo.


So hängt es zusammen

flowchart LR
    subgraph app["Schiess-Auswertungen"]
        direction TB
        doks["Etiketten · Kranzkarten<br/>Ranglisten · Abschluss"] --> weiche{{"Druckweiche<br/>Zuordnung"}}
        weiche --> ws[("Warteschlange<br/>pro Drucker")]
    end

    subgraph haus["Vereinsnetz im Schützenhaus"]
        direction TB
        agent["Agent-Gerät<br/>M5Stack Core2"]
        niimbot["Etikettendrucker<br/>Niimbot B1"]
        laser["Blattdrucker<br/>z.B. Samsung, HP"]
    end

    agent -- "1 · meldet seine Drucker" --> ws
    ws -- "2 · holt Aufträge ab" --> agent
    agent -- Bluetooth --> niimbot
    agent -- "WLAN / IPP" --> laser
    agent -- "3 · Quittung" --> ws
  • Das Agent-Gerät holt ab, die App schickt nie. Deshalb braucht es keine offenen Ports und keine feste IP – es funktioniert hinter jedem Router.
  • Drucker findet es selbst: Niimbot-Drucker über Bluetooth, Netzwerkdrucker über das Netz (AirPrint/IPP). Beim Start, alle 10 Minuten und auf Knopfdruck.
  • Jeder Auftrag wird quittiert. Ist der Drucker aus, schläft er oder fehlt Papier, bleibt der Auftrag in der Warteschlange und kommt, sobald der Drucker wieder bereit ist.
  • Die App rendert im Format, das der Drucker versteht – PDF oder PostScript für Blattdrucker, ein fertiges Bild für Etiketten. Treiber braucht es keine.

Mit Box im Schützenhaus

Steht eine Box im Schützenhaus, fragt das Agent-Gerät beide ab: die Cloud und die Box. Die Box findet es von selbst im Vereinsnetz (mDNS), eine Adresse muss man nicht eintragen. So druckt die Kasse auf der Box auch ohne Internet.

flowchart LR
    cloud[("Cloud")] -- "Einrichtung<br/>(Geräte, Schlüssel, Zuordnung)" --> box[("Box")]
    agent["Agent-Gerät"] -- holt ab --> cloud
    agent -- "holt ab<br/>(auch offline)" --> box
    box -. "findet sie per mDNS" .- agent

Eingerichtet wird in der Cloud. Die Box übernimmt Geräte, Schlüssel und Zuordnung mit dem Abgleich (stündlich oder über Gerät → Jetzt abgleichen).

Ein paar Tage ohne Internet

Fällt das Internet aus, lässt sich auf der Box weiter einrichten:

  • Neue Drucker meldet das Agent-Gerät der Box selbst.
  • Eigene Agent-Geräte lassen sich auf der Box anlegen (markiert mit „nur auf dieser Box“); ihr Schlüssel gilt sofort.
  • Rollensorten lassen sich eintragen.
  • Die Zuordnung lässt sich übersteuern – sie gilt dann nur auf der Box („auf der Box übersteuert“). Zuordnung der Cloud verwenden nimmt das zurück.

Ist das Internet zurück, führt der Abgleich alles zusammen: Derselbe Drucker erscheint nur einmal, wartende Aufträge bleiben. Geräte aus der Cloud lassen sich auf der Box nicht ändern – das geht nur in der Cloud.

Die Box druckt selbst

Die Box ist selbst ein Agent-Gerät für Drucker in ihrem Netz – ohne Zusatzgerät und ohne Schlüssel von Hand. Nach dem Koppeln richtet sie sich bei der Cloud selbst ein und erscheint in der Verwaltung als Gerät „Box …“.

  • Blattdrucker (z.B. Samsung, HP) findet sie per AirPrint/IPP und druckt PDF bzw. PostScript.
  • WLAN-Etikettendrucker: Zebra (ZPL) und Brother QL. Die Etikettengrösse liest sie aus dem Drucker.
  • Bondrucker im Netz: Epson TM (z.B. TM-m30III, TM-T20, TM-T88) über Port 9100. Modell, Seriennummer und Papierstand liest sie aus dem Drucker.
  • Niimbot (z.B. B1): am USB-Kabel der Box oder per Bluetooth, wenn die Box einen Adapter hat (z.B. Mini-PC) – Modell, Seriennummer, Rolle und Akku liest sie aus dem Drucker. Ohne Bluetooth (RUTC) über eine Core2. Der B1 nimmt nur eine Verbindung an: Box oder Core2, nicht beide gleichzeitig.

Auf der Box lässt sich das unter Drucken → Drucker (Druckweiche) mit Box druckt selbst … abschalten, z.B. wenn eine Core2 alle Drucker bedient. Finden Box und Core2 denselben Drucker, erscheint er zweimal – zugeordnet wird einer, gedruckt wird nur dort.

Brother QL

Die Unterstützung für Brother QL folgt der Protokollbeschreibung, ist aber noch nicht an einem echten Gerät erprobt.


Einrichten

1. Agent-Gerät anlegen

Verwaltung → Drucken → Drucker (Druckweiche), unten bei Neues Agent-Gerät einen Namen eingeben (z.B. „Core2 Stand“) und Anlegen. Die App zeigt den Agent-Schlüssel und die Server-Adresse – nur jetzt, einmal.

Schlüssel gleich übertragen

Der Schlüssel wird nur als Prüfsumme gespeichert und ist später nicht mehr lesbar. Ging er verloren: beim Gerät Neuer Schlüssel – der alte gilt dann nicht mehr. Ziele und Zuordnung bleiben stehen.

2. Agent-Gerät einrichten (M5Stack Core2)

  1. Core2 einschalten. Ohne Einstellungen öffnet sie das WLAN PWA-Agent-XXXX.
  2. Mit Handy oder Laptop verbinden; die Einrichtungsseite öffnet sich meist von selbst (sonst http://192.168.4.1).
  3. Eintragen: WLAN und Passwort des Schützenhauses, Server-URL und Agent-Schlüssel aus Schritt 1. Bei Box im Vereinsnetz die Vorgabe „automatisch finden“ lassen.
  4. Speichern & neu starten.

Nach einigen Sekunden steht das Gerät in der Verwaltung als online, darunter die Drucker, die es gefunden hat.

2b. PWA-Agent koppeln (eigenständiger PWA-Agent)

Der PWA-Agent läuft auch ohne Box, z.B. auf einem Mini-PC beim Drucker. Er kennt die Cloud nicht von sich aus – man koppelt ihn mit einem Link:

  1. Beim ersten Start druckt er einen Einrichtungs-Bon (Bon, Etikett oder A4) mit Adresse der WebUI, PIN und QR-Code. Auf dem Gerät zeigt pwa-agent pin die PIN; pwa-agent pin neu setzt eine neue.
  2. Hier unten PWA-Agent koppeln wählen. Die App zeigt einen Koppel-Link mit Code (gilt 15 Minuten, nur einmal).
  3. In der WebUI des PWA-Agenten (http://<Gerät>:2000/) mit der PIN anmelden, bei Verbindung hinzufügen den Link einfügen – oder „Schiess-Auswertungen“ wählen und nur den Code eingeben – und Prüfen. Er zeigt, wer antwortet (Verein), dann Verbinden.

Danach steht er hier als PWA-Agent … mit seinen Druckern. Steht eine Box desselben Vereins im Netz, findet er sie selbst und druckt über sie auch ohne Internet.

Netzwerkdrucker suchen (WebUI, Karte Drucker, mit PIN; ab Agent 0.9.40): Eingeschaltet sucht der Agent Drucker im Netz (Bonjour und Niimbot im eigenen /24-Netz). Den Agenten am besten nur dort installieren, wo Drucker hängen: Netzwerkdrucker über einen Agenten (z.B. den RUTC), USB- und Bluetooth-Drucker am Gerät, an dem sie angeschlossen sind. Auf diesen Geräten die Suche ausschalten, sobald der Einrichtungs-Bon gedruckt ist – sonst meldet jeder Agent dieselben Netzwerkdrucker noch einmal. Ausgeschaltet vergisst er schon gemeldete Netzwerkdrucker sofort; fest eingetragene Adressen gelten weiter.

Trennen:

  • Box oder App am Agenten (z.B. eine alte Kopplung unter „Apps im Netz“): in der WebUI des Agenten mit der PIN, bei Apps im Netz → Trennen.
  • Cloud-Kopplung des Agenten: in der WebUI unter Verbindungen → Trennen. Einträge „von der App“ verwaltet die Box auf demselben Gerät.
  • Agent ganz entfernen: in der Cloud hier bei den PWA-Agenten ✕, dann wirklich löschen? – danach auch auf dem Gerät trennen, sonst meldet er sich mit seinem alten Schlüssel weiter.

Rollen (Apps, die direkt an den PWA-Agenten drucken)

Apps, die selbst an den PWA-Agenten schicken (z.B. ein Kassensystem), drucken an eine Rolle wie „Bon“ oder „Küche“ statt an einen bestimmten Drucker. Eine Rolle ist eine Reihenfolge: Drucker, Ersatz, 2. Ersatz. Der Agent nimmt den ersten Drucker, der bereit ist und das Format kann; fällt einer aus, wechseln auch die wartenden Aufträge.

In der WebUI, Karte Rollen: mit der PIN Rolle, Drucker, Ersatz und 2. Ersatz wählen, Speichern – ebenso ändern oder entfernen. Die Karte zeigt die Kette jeder Rolle; der Drucker, der gerade druckt, trägt aktiv.

Für App-Entwickler: POST /v1/auftraege mit { rolle: "Bon", format, daten } statt ziel; die Rollen liefert GET /v1/rollen.

3. Drucker prüfen

Jeder gemeldete Drucker hat eine eigene Zeile mit Status (bereit, nicht gesehen, Fehler), Akku und restlichen Etiketten bzw. Papier im Fach.

  • Anzeigename – z.B. „Kasse“ oder „Büro“ statt der Modellnummer. Erscheint auch auf dem Display des Agent-Geräts. Gespeichert wird beim Verlassen des Felds, ohne Knopf. Hat der Drucker selbst einen Namen (Hostname, z.B. „Bon-Theke“ im Webmenü des Epson), zeigt die App diesen, solange kein Anzeigename gesetzt ist. Unter dem Namen stehen Modell und Seriennummer – so sind zwei gleiche Drucker auseinanderzuhalten. Kennt ein Agent einen Niimbot im Netz nur über die IP-Adresse, steht nur über die IP … bekannt dabei (in Zuordnung und Ersatz „· über IP …“). Den mit Seriennummer wählen – die IP wechselt mit DHCP.
  • Testdruck (Etikettendrucker), Testbon (Bondrucker) bzw. Testseite (Blattdrucker, A4) prüft das Gerät selbst – auch ohne Zuordnung.
  • Warteschlange zeigt wartende, gedruckte und fehlgeschlagene Aufträge mit Zählern und Hinweisen, warum etwas nicht druckt – mit nochmals und löschen (mit Rückfrage).
  • Drucker suchen beim Gerät, wenn ein Drucker neu dazukommt.

Neue Etikettenrolle

Der Niimbot meldet die Sorte seiner Rolle, nicht ihre Grösse. Bei einer unbekannten Sorte fragt die Verwaltung einmal nach Breite und Höhe in Millimetern (z.B. Rolle 10262260 = 50 × 30 mm). Danach wird jede Rolle dieser Sorte erkannt.

4. Zuordnen

Oben bei Zuordnung wählt man pro Dokumentart den Drucker:

Dokumentart Drucker Was
Etiketten Etikettendrucker Etiketten an der Kasse, Ersatzetiketten
Kranzkarten Blattdrucker Kranzkarten (A6)
Urkunden Blattdrucker Urkunden (A4) – leer = wie Dokumente
Dokumente Blattdrucker Rangliste, Kassenabschluss, Meisterschaft, Kränze-Liste, Munitionsabrechnung, AMM (A4)
Kassenzettel Bondrucker Kassenzettel nach dem Bezahlen an der Kasse
Auszahlungsbon Bondrucker Bon mit QR nach dem Erfassen einer Auszahlung (Auszahlung); leer = der Drucker der Kassenzettel
Resultat-Bon Bondrucker Resultat mit Einzelschüssen und Trefferbild (Kränze); leer = der Drucker der Kassenzettel
Resultat-Portal: Bon / A4 Bondrucker / A4-Drucker beim Kiosk des Resultat-Portals; leer = am Portal nicht drucken (nie der Drucker im Büro)

Zur Auswahl stehen nur Drucker der passenden Art. „– wie bisher –“ heisst: keine Weiche, der Browser druckt wie früher. Ausnahme Etiketten: Sie drucken nur über die Druckweiche – ohne Zuordnung meldet die Kasse „Für „Etiketten“ ist kein Drucker zugeordnet.“

Jede Zuordnung hat einen Knopf Test. Er druckt über denselben Weg wie im Betrieb (Testetikett, Testkarte A6, Testbon bzw. Testseite A4) und prüft so Drucker und Zuordnung. Die Testseite nennt Drucker, Zuordnung und Format.

Hinweis „Format“

Kann ein Blattdrucker weder PDF noch PostScript, schickt die App PDF mit „Drucker erkennt selbst“. Das klappt bei vielen, aber nicht allen Modellen – die Verwaltung zeigt dann einen Hinweis. Mit der Testseite gleich ausprobieren.

Ersatzdrucker

Unter dem Drucker jeder Zuordnung steht Ersatz: „– kein Ersatz –“ oder ein anderer Drucker derselben Art. Ist der Drucker nicht bereit – er meldet einen Fehler (z.B. Papier leer, Deckel offen), ist nicht gesehen oder sein Agent-Gerät ist offline – und der Ersatz ist bereit, gehen neue Aufträge an den Ersatz. Auch Aufträge, die noch warten und vom Agenten noch nicht abgeholt sind, wechseln (innert etwa 10 Sekunden); schon abgeholte bleiben – nichts druckt doppelt. Das gilt auch für die Etiketten der Kasse. Ist der Drucker wieder bereit, gehen neue Aufträge wieder an ihn.

Solange der Ersatz druckt, steht bei der Zuordnung „Drucker ist nicht bereit – es druckt Ersatz.“; gewechselte Aufträge zeigen in der Warteschlange „(Ersatz für Drucker)“.

Den Ersatz stellt man in der Cloud ein; auf der Box steht er nur zum Ansehen („Der Ersatzdrucker wird in der Cloud eingestellt.“) und kommt mit dem Abgleich. Wird der Ersatzdrucker entfernt, hat die Zuordnung einfach keinen Ersatz mehr.

5. Fach, Papier, Farbe, Seiten

Kann der zugeordnete Blattdrucker es, erscheinen unter der Zuordnung Auswahlfelder – gefüllt mit dem, was der Drucker selbst meldet:

Feld Beispiel
Fach Schublade 1, Mehrfacheinzug
Papier Normalpapier, Karton
Farbe Farbe, Schwarzweiss
Seiten einseitig, doppelseitig

So bedient ein Drucker beides: Dokumente aus der Schublade, schwarzweiss und doppelseitig, Kranzkarten aus dem Mehrfacheinzug auf Karton. „– Drucker entscheidet –“ lässt die Wahl dem Drucker.

Geht ein Druck an ein Fach zum Nachlegen (Mehrfacheinzug), zeigt die App gleich „Papier bzw. Karten in … einlegen“; der Drucker wartet, bis Karten drin sind. Ein Papierstau oder fehlendes Papier steht im Status des Druckers im Klartext.

Core2

Die Core2 berücksichtigt Fach und Papier erst mit einem Firmware-Update; bis dahin druckt sie wie bisher.


Im Betrieb

  • Etiketten gehen nach dem Lösen an der Kasse direkt an den zugeordneten Etikettendrucker.
  • Kranzkarten drucken aus dem Kranz-Fenster direkt.
  • Kassenzettel: Nach Bar kassiert bzw. TWINT → Bezahlt geht ein Bon an den Bondrucker – nur, wenn der Zuordnung „Kassenzettel“ ein Drucker zugewiesen ist. Ohne Zuordnung gibt es keinen Bon. Auf dem Bon stehen Verein (auf Wunsch mit Logo), Anlass, Name, die bezahlten Stiche mit Betrag, Rundung, Total und Zahlungsart. Klemmt der Drucker, ist die Zahlung trotzdem verbucht; die Kasse sagt, ob der Bon wartet.
  • Dokumente: „Drucken“ auf Rangliste, Kassenabschluss & Co. setzt die Seite auf A4 (breite Tabellen quer, Kopfzeile auf jeder Seite, Seitenzahlen) und schickt sie an den Drucker. Danach erscheint unten rechts ein Hinweis mit Im Browser drucken – falls man doch lieber den Druckdialog will.
  • Ohne Anmeldung (öffentliche Rangliste) druckt immer der Browser.

Firmware der Agent-Geräte

Neue Firmware für die Agent-Geräte (z.B. die Core2) kommt über den Server – das Gerät holt sie selbst, so wie die Druckaufträge. Von allein aktualisiert nichts: Eine neue Version kommt erst aufs Gerät, wenn die Verwaltung sie freigibt.

Unter Drucken → Drucker (Druckweiche) → Firmware der Agent-Geräte steht pro Gerätetyp (z.B. esp32-core2):

  1. Version wählen und auf Freigeben tippen. Ohne Zeitfenster geht es sofort los; mit Zeitfenster (z.B. 02:00–05:00) nur in dieser Zeit. Nur die Version wählen genügt nicht: Solange nicht freigegeben ist, steht „noch nicht freigegeben“ und der Knopf heisst z.B. „0.11.4 freigeben“.
  2. Darunter stehen die Geräte dieses Typs mit der Version, die gerade läuft, und dem Stand des Updates: läuft auf Probe, aktualisiert oder Update fehlgeschlagen. Steht dabei „Bootloader ohne Rückfall – einmal per USB aktualisieren“, fehlt dem Gerät noch der neue Bootloader – ohne ihn gibt es keinen automatischen Rückfall auf die alte Version.
  3. Ein einzelnes Gerät kann rechts eine eigene Version bekommen (z.B. zuerst nur eines ausprobieren). „– wie alle –“ nimmt es wieder zur Freigabe für alle.

Ein Gerät aktualisiert nur, wenn es nichts zu drucken hat, keine Quittungen offen sind und es am Strom hängt bzw. der Akku über 50 % hat. Die neue Version läuft zuerst auf Probe: Erreicht sie innert 10 Minuten keinen Server, startet das Gerät neu und läuft wieder mit der alten Version. Dieselbe Version nochmals versuchen = nochmals Freigeben.

Mit Box im Schützenhaus

Freigegeben wird in der Cloud. Die Freigabe kommt mit dem Abgleich auf die Box, die Firmware-Datei holt die Box danach selbst. Ab dann bekommen die Geräte das Update auch ohne Internet. Die Box zeigt den Stand nur an.

Für den Betreiber

Firmware-Dateien lädt nur der Betreiber hoch (Master → Firmware), sie gelten für alle Vereine. Angenommen wird nur ein signiertes App-Image (pwa-agent.bin, signiert mit espsecure.py sign_data --version 2 --keyfile <schlüssel> …). Das Gerät prüft die Signatur selbst und startet eine fremde oder unsignierte Datei nie. Der private Schlüssel liegt offline beim Betreiber, nie auf dem Server.


Wenn es nicht druckt

Anzeige Ursache Abhilfe
Gerät offline Agent-Gerät ohne Strom oder WLAN Strom und WLAN prüfen; Server-Adresse auf dem Gerät kontrollieren
Drucker nicht gesehen Drucker aus, schläft, ausser Reichweite oder mit der Handy-App verbunden Drucker einschalten bzw. Handy-App trennen – der Auftrag wartet und kommt dann
Drucker bleibt nicht gesehen in Reparatur, ersetzt oder weg – das Gerät fragt ihn nach drei Versuchen nur noch alle paar Minuten (bis 30 Min.) in der Zeile ✕ und nochmals zum Bestätigen: Das Gerät vergisst ihn, offene Aufträge an ihn gehen mit. Kommt er (oder sein Ersatz) wieder, findet ihn die Suche – sofort mit Drucker suchen
Drucker Fehler (z.B. Papier leer, Deckel offen) Meldung des Druckers beheben; der Auftrag läuft weiter
Zuordnung zeigt „… ist nicht bereit – es druckt …“ Der zugeordnete Drucker ist nicht bereit, es druckt der Ersatz Drucker in Ordnung bringen – ist er wieder bereit, gehen neue Aufträge wieder an ihn
Bondrucker „Papier fast leer“ Rolle geht zu Ende (Status bleibt „bereit“) neue Rolle bereitlegen; bei „Papier leer“ wartet der Bon, bis die neue Rolle drin ist
Kasse meldet „Für „Etiketten“ ist kein Drucker zugeordnet.“ Der Zuordnung „Etiketten“ ist kein Drucker zugewiesen unter Zuordnung bei „Etiketten“ einen Etikettendrucker wählen
Auftrag fehlgeschlagen Drucker hat abgelehnt in der Warteschlange nochmals; Format-Hinweis beachten
Agent-Gerät zeigt „Schlüssel ungültig“ Schlüssel falsch oder in der Verwaltung neu erzeugt Schlüssel neu erzeugen und im Gerät eintragen
Agent-Gerät zeigt „Schlüssel an der Box (noch) unbekannt“ Die Box kennt das Gerät bzw. den neuen Schlüssel noch nicht – sie übernimmt beides erst mit dem Abgleich Auf der Box Gerät → Jetzt abgleichen. Bis dahin holt das Gerät weiter bei der Cloud ab; es geht nichts verloren.
Agent-Gerät findet keine Box Box und Agent-Gerät in verschiedenen Netzen (mDNS reicht nicht über einen Router), oder Box noch nicht gekoppelt Beide ins selbe Netz; sonst die Box-Adresse am Gerät von Hand eintragen

Nach jeder Änderung an Geräten oder Schlüsseln

Neues Agent-Gerät, Neuer Schlüssel oder geänderte Zuordnung gelten in der Cloud sofort, auf der Box erst nach dem nächsten Abgleich. Wer gleich weiterarbeiten will: auf der Box Gerät → Jetzt abgleichen.