Logging mit Dobot Lua ist die Grundlage für Qualitätssicherung, Fehleranalyse und nachvollziehbare Prozessdokumentation in der automatisierten Fertigung. Dieser Beitrag zeigt beide Wege: ein schnelles lokales Logging direkt auf dem Roboter und die zentrale Lösung mit Leif, dem Log- und Anlagen-Server von needful-apps. Mit Leif sehen Sie die Meldungen aller Dobot-Roboter live im Browser, auf dem Hallenplan Ihres Werks und auf Wunsch als Alarm direkt in Microsoft Teams. Und wenn eine Zelle steht, spielt der Zeitstrahl die Störung komplett nach: Kamerabild, DI/DO-Signale in Klartext und die Lua-Programmzeile, die genau in diesem Moment lief.
Warum Logging bei Dobot-Robotern unverzichtbar ist
Sobald ein Dobot produktiv arbeitet, wollen Sie drei Fragen jederzeit beantworten können: Was hat der Roboter wann gemacht? Warum ist ein Zyklus fehlgeschlagen? Und läuft gerade alles, ohne dass jemand daneben steht? Ohne strukturiertes Logging beantworten Sie diese Fragen mit Vermutungen, mit Logging beantworten Sie sie mit Daten. Das zahlt direkt auf Qualitätsnachweise gegenüber Kunden, Traceability einzelner Werkstücke und schnelle Fehlersuche im Schichtbetrieb ein.
Schnellstart: Lokales Logging mit Dobot Lua
Für erste Tests genügt ein lokales Logging direkt in DobotStudio Pro, ganz ohne zusätzliche Infrastruktur. Dazu legen wir eine kleine Funktion in der Global.lua an, die jede Meldung auf die Konsole schreibt und zusätzlich in eine Datei auf dem Roboter sichert:
-- Global.lua: einfaches lokales Logging
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) -- Ausgabe im DobotStudio-Log-Panel
local f = io.open(LOG_FILE, "a")
if f then
f:write(line .. "\n")
f:close()
end
end
Wo lokale Logdateien an ihre Grenzen stoßen
Lokales Logging funktioniert, solange Sie einen einzelnen Roboter betreiben und zum Auslesen an die Maschine gehen. In der Praxis kippt das schnell: Jeder Roboter schreibt seine eigene Datei in seinem eigenen Format. Bei einer Störung sieht niemand rechtzeitig, dass drei Stationen weiter die Linie steht. Und beim Audit beginnt das stundenlange Zusammensuchen von Textdateien aus verschiedenen Steuerungen. Genau für dieses Problem haben wir Leif gebaut.
Leif: Der zentrale Log-Server für Ihre Fertigung
Leif ist ein selbst gehosteter Log- und Anlagen-Server, entwickelt und ausgelegt auf Robotik- und Fertigungsumgebungen. Ihre Dobots, SPSen und Peripheriegeräte senden ihre Meldungen per TCP oder REST an Leif:
- Live-Ansicht im Browser: Neue Logs erscheinen in Echtzeit, mit Volltextsuche und Filtern nach Roboter, Level und Station.
- Zeitstrahl: Jede Störung als Replay mit Kamerabild, DI/DO-Signalen in Klartext und der aktiven Lua-Programmzeile.
- Live-Hallenplan: Grundriss hochladen, pro Roboter einen Marker platzieren, Status auf einen Blick, auch als TV-Wallboard.
- Alarme in Microsoft Teams: Kritische Meldungen landen sofort im richtigen Kanal, mit Deduplizierung und Cooldown gegen Alarmfluten.
- Traceability: Über Trace-IDs verfolgen Sie zusammenhängende Abläufe über mehrere Stationen.
- Grafana und Metabase ready: Loki-kompatible API, PostgreSQL-Storage für tiefe SQL-Auswertungen.
- Mehrsprachig: Die Oberfläche gibt es auf Deutsch, Französisch und Englisch.
- 100 Prozent selbst gehostet: Docker Compose, keine Cloud, keine Datenweitergabe.
Dobot mit Leif verbinden
Im Leif-Admin-Panel legen Sie pro Roboter eine client_id mit eigenem api_key an. Kompromittierte Schlüssel lassen sich damit zentral sperren, ohne andere Roboter anzufassen. Der Logging-Code lebt komplett in der Global.lua, fehlertolerant und mit kurzen Timeouts, damit der Roboter niemals auf das Logging wartet:
-- Leif-Logging fuer Dobot (Global.lua)
LEIF_ENABLED = true -- fuer Offline-Tests auf false setzen
LEIF_HOST = "192.168.10.50" -- IP oder Hostname des Leif-Servers
LEIF_PORT = 49090 -- TCP-Log-Ingest (Leif-Default)
CLIENT_ID = "MG400_001" -- im Leif-Admin-Panel angelegt
API_KEY = "ihr-api-key" -- im Leif-Admin-Panel erzeugt
SOCKET_TIMEOUT = 0.2 -- Sekunden, Roboter darf nie warten
Alarme direkt in Microsoft Teams
Kritische Meldungen sollen nicht im Log warten, bis jemand nachschaut: In Leif definieren Sie pro Teams-Kanal Regex-Pattern, Log-Level und Grace Periods. Deduplizierung und Cooldown verhindern Alarmfluten, die Schicht sieht sofort, wenn eine Station Aufmerksamkeit braucht.
Vom Log zur Störungsursache: der Zeitstrahl
Sobald Ihre Logs mit einer gemeinsamen trace_id beim Störfall ankommen, wird aus einzelnen Meldungen ein komplettes Replay. Der Zeitstrahl in Leif legt einen Cursor über alles, was zur Störung gehört: das Kamera-Replay der Zelle, jedes DI- und DO-Signal in Klartext statt Pin-Nummer und die Lua-Programmzeile, die genau in diesem Moment lief. Sie ziehen den Cursor und sehen zum Beispiel: Greifer schließt, die Vakuumpumpe läuft, aber Vakuum erreicht bleibt aus, und im Programm steht der Ablauf bei if not vakuum_ok() in Zeile 6. Die Ursachensuche, die früher Stunden mit Logdateien und Videosichtung kostete, dauert so wenige Minuten.
Die Signalnamen pflegen Sie einmal zentral: Aus DI 3 wird Vakuum erreicht, aus DO 1 wird Greifer schließen. Ein Gutlauf-Vergleich blendet Referenzspuren aus fehlerfreien Zyklen ein und markiert Abweichungen. Für Lieferant oder Instandhaltung exportieren Sie die komplette Störung als Störungspaket in eine Datei.
Häufige Fragen
Wie logge ich in Dobot Lua in eine Datei?
Mit io.open im Append-Modus: eine kleine Funktion in der Global.lua schreibt jede Meldung mit Zeitstempel per print auf die Konsole und zusätzlich in eine Datei, z. B. unter /mnt/sdcard/logs/. Für den Produktivbetrieb gehören Logrotation und Schutz vor parallelem Dateizugriff dazu.
Wie überwache ich mehrere Dobot-Roboter zentral?
Mit einem zentralen Log-Server wie Leif: Jeder Roboter sendet seine Meldungen per TCP oder REST an den Server. Dort stehen Live-Ansicht im Browser, Hallenplan, Volltextsuche, Teams-Alarme und eine Loki-kompatible API für Grafana zur Verfügung.
Blockiert das Logging den Roboter?
Nein, wenn es richtig umgesetzt ist: Die Leif-Anbindung arbeitet mit kurzen Socket-Timeouts (0,2 Sekunden) und ist fehlertolerant, schlägt das Senden fehl, läuft das Roboterprogramm ohne Verzögerung weiter.
Wie finde ich nach einer Störung schnell die Ursache?
Mit dem Zeitstrahl in Leif: Alle Logs eines Störfalls teilen sich eine trace_id, dazu kommen die DI/DO-Signalflanken, das Kamera-Replay der Zelle und die aktive Lua-Programmzeile. Ein Cursor läuft synchron über alles, ein Gutlauf-Vergleich markiert Abweichungen gegenüber fehlerfreien Zyklen.