Passer au contenu principal

Dépannage

Commencez par le plus petit chemin :
  1. Santé du processus du pilote.
  2. Accessibilité TCP du pilote à l’imprimante.
  3. État de la file d’attente.
  4. Configuration de l’imprimante de la console.
  5. HTTPS ou problèmes de confiance du navigateur.

Pilote non joignable

Vérifier:
curl http://localhost:8080/health
Si la santé locale échoue :
  • Confirmez que plato-printer.exe est en cours d’exécution.
  • Confirmez que config.json est valide JSON.
  • Confirmez que server.port n’est pas déjà utilisé.
  • Vérifiez les journaux de démarrage de Port already in use.
Si le service de santé local passe mais que POS ne peut pas l’atteindre :
  • Ouvrez le pare-feu Windows pour server.port.
  • Utilisez l’adresse réseau du pilote indiquée dans la bannière de démarrage.
  • Confirmez que le périphérique POS est sur le même réseau ou sur le même VLAN autorisé.

Imprimante hors ligne

Appel:
curl -X POST http://localhost:8080/status \
  -H "Content-Type: application/json" \
  -d '{"ip_address":"192.168.1.50","port":"9100","validate":true}'
Causes courantes :
Dernière erreurSignificationRéparer
Connection RefusedL’hôte est joignable mais le port est fermé.Vérifiez le port de l’imprimante et les paramètres TCP bruts.
Connection TimeoutImpossible d’atteindre l’adresse IP/le port de l’imprimante.Vérifiez l’IP, le réseau, le VLAN, le pare-feu et l’alimentation de l’imprimante.
Printer open timed out after 2000msLa connexion TCP n’a pas abouti.Vérifiez le chemin réseau de l’imprimante.
Printer write timed out after 6000msLe socket s’est ouvert mais n’a pas vidé l’écriture.Redémarrez l’imprimante, vérifiez le tampon, le réseau ou le micrologiciel de l’imprimante.
TCP connection closedL’imprimante a fermé le socket de manière inattendue.Revérifiez le port brut de l’imprimante et la taille de la charge utile de la tâche.

Emplois bloqués

Inspecter les files d’attente :
curl http://localhost:8080/queue-status
Lire:
  • waiting : tâches prêtes mais non actives.
  • active : impression en cours.
  • delayed : tâches futures planifiées ou avec nouvelle tentative retardée.
  • failed : travaux ayant échoué conservés par BullMQ.
  • totalPending : attente et retard sur toutes les imprimantes.
  • isProcessing : il existe au moins un travail actif.
Si les tâches ayant échoué sont réessayées indéfiniment, corrigez d’abord la connexion de l’imprimante. La file d’attente sera automatiquement récupérée une fois que l’imprimante sera accessible.

Demande d’impression acceptée mais rien ne s’imprime

Si /print renvoie { "ok": true, "queued": true }, le conducteur a accepté le travail. Vérifications suivantes :
  1. GET /queue-status.
  2. POST /status avec validate: true.
  3. IP de l’imprimante et port dans la configuration de la console.
  4. Le modèle d’imprimante prend en charge le raster ESC/POS sur TCP.
  5. L’imprimante a du papier et n’est pas en pause.

Adresse de l’imprimante manquante

Le pilote actuel nécessite à la fois :
{
  "ip_address": "192.168.1.50",
  "port": "9100"
}
Dans la console, cela signifie généralement que l’adresse IP ou le port de l’imprimante physique est manquant. Le pilote URL n’est pas le même que l’IP de l’imprimante.

HTTPS échoue

Vérifier:
curl http://localhost:8080/ca.crt
curl https://plato-printer.local/health
Corrections probables :
  • Installez le certificat CA sur l’appareil POS.
  • Faites en sorte que plato-printer.local soit résolu sur la machine pilote.
  • Ouvrez le port 443.
  • Confirmez que assets/certs existe.
  • Confirmez que Caddy a démarré dans les journaux.

Échec du maillage

Vérifier:
curl http://localhost:8080/mesh-status
Si le maillage est désactivé, définissez :
{
  "features": {
    "meshEnabled": true
  }
}
Si HTTPS est utilisé, le maillage utilise :
wss://plato-printer.local/mesh

Redis ne parvient pas à démarrer

Le démarrage de Redis intégré peut échouer si :
  • La version binaire Redis configurée est manquante ou corrompue.
  • Le port Redis configuré est déjà utilisé.
  • Windows bloque le binaire téléchargé.
  • La version détectée de Redis ne correspond pas à redis.version.
Correctifs :
  • Exécutez le script du bundle pour préparer redis-binaries.
  • Remplacez redis.port.
  • Supprimez le mauvais dossier redis-binaries/<version> et reconstruisez-le.
  • Utilisez redis.mode: "external" avec un serveur Redis connu et en bon état.

Réinitialisation sécurisée

Pour une réinitialisation locale pendant le développement :
pnpm --filter @plato/pc-printer clean
Cela supprime dist, output, logs, plato-printer.zip et dump.rdb. En production, ne supprimez pas dump.rdb, sauf si vous souhaitez intentionnellement effacer les files d’attente persistantes et l’état connu du registre de l’imprimante.