Tiskový agent¶
Tiskový agent (agent.py) je malý program, který běží na počítači s tiskárnou a tiskne úlohy ze serveru OdbavTo. Hodí se, když:
- skenujete mobilem nebo tabletem (WebUSB na nich nefunguje),
- aplikace běží v cloudu a tiskárna je v lokální síti akce.
Agent se k serveru připojuje sám (WebSocket, případně polling), takže funguje i za NAT a firewallem bez otevírání portů.
sequenceDiagram
participant M as Mobil (skener)
participant S as Server OdbavTo
participant A as Agent (PC u vstupu)
participant T as Tiskárna
M->>S: sken QR kódu
S->>A: tisková úloha (WebSocket)
A->>T: tisk
A->>S: potvrzení
Instalace¶
Na PC s tiskárnou potřebujete Python 3.11+ a soubor agent.py z repozitáře.
Podle systému ještě:
Konfigurace¶

- V aplikaci u akce nastavte tiskárně metodu Agent.
- V Nastavení → Tisk a odbavení → Tiskový agent zkopírujte token agenta.
- Číslo akce zjistíte z adresy:
https://odbavto.example.cz/events/12/…. - Vedle
agent.pyvytvořteagent_config.ini(vzor je vagent_config.ini.example):
[server]
url = https://odbavto.example.cz
event_pk = 12
token = <token-agenta>
; websocket (vychozi) nebo polling
transport = websocket
; jen pro polling, v sekundach
poll_interval = 2
[printers]
; cislo tiskarny v akci (#1, #2 ... z Nastaveni) = nazev tiskarny v systemu
1 = TDP-225
2 = TDP-225 (2)
Název tiskárny v systému zjistíte příkazem:
Spuštění¶
Parametry z konfigurace jdou přepsat z příkazové řádky:
Stav připojení agenta uvidíte v Nastavení → Tiskárny a ve stavu tiskárny ve skeneru.
Chování¶
- Výchozí transport je WebSocket (úloha dorazí okamžitě). Po třech neúspěšných pokusech o připojení agent automaticky přejde na polling (dotaz každé 2 s).
- Úlohy starší než 5 minut se nevytisknou (
PENDING_JOB_MAX_AGE_SECONDS), aby se po výpadku nevytiskly staré jmenovky. - Úloha „zaseknutá“ v tisku déle než 60 s se vrátí do fronty.
Jeden agent na tiskárnu
Dvě instance agenta se stejným tokenem pro stejnou tiskárnu vedou k dvojitému tisku.
Únik tokenu
Token agenta jde v Nastavení přegenerovat. Starý token okamžitě přestane platit. Opakované pokusy se špatným tokenem server blokuje (5 pokusů za minutu z jedné IP).