Le logging avec Dobot Lua est la base de l'assurance qualité, de l'analyse d'erreurs et de la documentation traçable des processus dans la production automatisée. Cet article couvre les deux voies : la journalisation locale rapide directement sur le robot, et la solution centralisée fondée sur Leif, le serveur de logs et d'équipements de needful-apps. Avec Leif, vous voyez les messages de chaque robot Dobot en direct dans le navigateur, sur le plan de votre atelier et, si vous le souhaitez, comme alerte directement dans Microsoft Teams. Et quand une cellule s'arrête, la chronologie rejoue tout l'incident : images caméra, signaux DI/DO en clair et la ligne de programme Lua qui s'exécutait à cet instant précis.
Pourquoi le logging est indispensable sur les robots Dobot
Dès qu'un Dobot tourne en production, vous voulez pouvoir répondre à trois questions à tout moment : qu'a fait le robot, et quand ? Pourquoi un cycle a-t-il échoué ? Et tout tourne-t-il correctement en ce moment, sans que personne ne se tienne à côté de la machine ? Sans logging structuré, vous répondez avec des suppositions ; avec logging, vous répondez avec des données. Cela paie directement : preuves qualité pour vos clients, traçabilité des pièces individuelles et dépannage rapide en travail posté.
Démarrage rapide : journalisation locale avec Dobot Lua
Pour un premier essai, la journalisation locale directement dans DobotStudio Pro suffit, sans infrastructure supplémentaire. Nous ajoutons à Global.lua une petite fonction qui écrit chaque message dans la console et le stocke aussi dans un fichier sur le robot :
-- Global.lua : journalisation locale simple
LOG_FILE = "/mnt/sdcard/logs/robot_log.txt"
function log_local(level, message)
local line = "[" .. os.date("%Y-%m-%d %H:%M:%S") .. "] [" .. level .. "] " .. message
print(line) -- sortie dans le panneau de logs de DobotStudio
local f = io.open(LOG_FILE, "a")
if f then
f:write(line .. "\n")
f:close()
end
end
Où les fichiers de logs locaux atteignent leurs limites
La journalisation locale fonctionne tant que vous exploitez un seul robot et que vous allez lire le fichier à la machine. En pratique, cela craque vite : chaque robot écrit son propre fichier dans son propre format. Quand quelque chose tourne mal, personne ne remarque à temps que la ligne est à l'arrêt trois postes plus loin. Et quand l'audit arrive, des heures partent à collecter des fichiers texte sur différents contrôleurs. Nous avons construit Leif exactement pour ce problème.
Leif : le serveur de logs central pour votre production
Leif est un serveur de logs et d'équipements auto-hébergé, développé pour les environnements robotiques et de production. Vos Dobot, automates et périphériques envoient leurs messages à Leif par TCP ou REST :
- Vue en direct dans le navigateur : les nouveaux logs apparaissent en temps réel, avec recherche plein texte et filtres par robot, niveau et poste.
- Chronologie : chaque incident comme une relecture avec images caméra, signaux DI/DO en clair et la ligne de programme Lua active.
- Plan d'atelier en direct : téléversez votre plan, placez un marqueur par robot, voyez l'état d'un coup d'œil, aussi en wallboard TV.
- Alertes dans Microsoft Teams : les messages critiques arrivent immédiatement dans le bon canal, avec déduplication et temporisation contre les avalanches d'alertes.
- Traçabilité : les trace IDs permettent de suivre des séquences liées à travers plusieurs postes.
- Compatible Grafana et Metabase : API compatible Loki, stockage PostgreSQL pour des analyses SQL approfondies.
- Multilingue : l'interface existe en allemand, français et anglais.
- 100 % auto-hébergé : Docker Compose, pas de cloud, aucune donnée transmise à des tiers.
Généré par IA
Connecter un Dobot à Leif
Dans le panneau d'administration de Leif, vous créez un client_id avec sa propre api_key par robot. Les clés compromises se révoquent alors centralement sans toucher aux autres robots. Le code de logging vit entièrement dans Global.lua, tolérant aux pannes et avec des timeouts courts pour que le robot n'attende jamais le logging :
-- Logging Leif pour Dobot (Global.lua)
LEIF_ENABLED = true -- mettre à false pour les tests hors ligne
LEIF_HOST = "192.168.10.50" -- IP ou nom d'hôte du serveur Leif
LEIF_PORT = 49090 -- ingestion TCP des logs (défaut Leif)
CLIENT_ID = "MG400_001" -- créé dans le panneau d'administration Leif
API_KEY = "your-api-key" -- généré dans le panneau d'administration Leif
SOCKET_TIMEOUT = 0.2 -- secondes, le robot ne doit jamais attendre
Des alertes directement dans Microsoft Teams
Les messages critiques ne doivent pas dormir dans le log jusqu'à ce que quelqu'un regarde : dans Leif, vous définissez motifs regex, niveaux de log et délais de grâce par canal Teams. Déduplication et temporisation empêchent les avalanches d'alertes, l'équipe voit donc immédiatement quand un poste a besoin d'attention.
De l'entrée de log à la cause racine : la chronologie
Dès que vos logs arrivent avec un trace_id partagé par incident, les messages isolés deviennent une relecture complète. La chronologie de Leif place un curseur sur tout ce qui appartient à l'incident : la relecture caméra de la cellule, chaque signal DI et DO avec un nom en clair au lieu d'un numéro de broche et la ligne de programme Lua qui s'exécutait à cet instant précis. Vous déplacez le curseur et voyez par exemple : la pince se ferme, la pompe à vide tourne, mais « vide atteint » reste inactif, et le programme est arrêté sur if not vakuum_ok() à la ligne 6. Une analyse de cause racine qui coûtait des heures de fichiers de logs et de visionnage vidéo prend désormais quelques minutes.
Les noms de signaux se maintiennent une seule fois, centralement : DI 3 devient « vide atteint », DO 1 devient « fermer la pince ». Une comparaison avec un bon cycle superpose des traces de référence issues de cycles sans erreur et marque les écarts. Pour votre fournisseur ou la maintenance, vous exportez l'incident complet sous forme de dossier d'incident.
Questions fréquentes
Comment écrire un log dans un fichier en Dobot Lua ?
Avec io.open en mode append : une petite fonction dans Global.lua écrit chaque message horodaté dans la console via print et en plus dans un fichier, par exemple sous /mnt/sdcard/logs/. Pour la production, la rotation des logs et la protection contre les accès concurrents font aussi partie du tableau.
Comment superviser plusieurs robots Dobot de façon centralisée ?
Avec un serveur de logs central comme Leif : chaque robot envoie ses messages au serveur par TCP ou REST. Vous y trouvez une vue en direct dans le navigateur, un plan d'atelier, la recherche plein texte, des alertes Teams et une API compatible Loki pour Grafana.
Le logging bloque-t-il le robot ?
Non, pas s'il est bien implémenté : l'intégration Leif utilise des timeouts de socket courts (0,2 seconde) et tolère les pannes. Si l'envoi échoue, le programme du robot continue simplement sans délai.
Comment trouver rapidement la cause après un incident ?
Avec la chronologie de Leif : tous les logs d'un incident partagent un trace_id, rejoints par les fronts de signaux DI/DO, la relecture caméra de la cellule et la ligne de programme Lua active. Un curseur parcourt le tout de façon synchrone, et une comparaison avec un bon cycle marque les écarts par rapport aux cycles sans erreur.