← Alle Projekte

Produktiv im Einsatz

Mischanlage EDV

Windows-Desktop-Software zur Verwaltung von Einkauf, Produktion und Qualität einer Beton-Mischanlage

  • Python 3.13
  • Tkinter
  • ttkbootstrap
  • SQLite
  • openpyxl
  • pywin32 (Outlook COM)
  • OpenAI API
  • Pillow
  • OpenWeatherMap
  • PyInstaller

Die Herausforderung

In einem Beton-Fertigteilwerk fallen täglich wiederkehrende Büro- und Dokumentationsaufgaben an: Bestellungen bei Lieferanten, das Ausfüllen von Wiege- und Gewichtsprotokollen je Produkt, Etikettierung sowie die Erfassung von Produktionsfehlern. Diese Abläufe wurden bislang manuell und über einzelne Excel-Dateien abgewickelt, was fehleranfällig und zeitaufwändig ist. Es fehlte eine zentrale, bedienerfreundliche Oberfläche, die die Daten bündelt, Excel-Vorlagen automatisch befüllt und Bestell-E-Mails direkt aus dem laufenden Betrieb verschickt.

Das Ziel

Eine zentrale Windows-Desktop-Anwendung schaffen, die Einkauf, Produktion (Wiegeprotokolle/Etikettierung) und Qualitäts-/Fehlerdokumentation der Mischanlage in einer Oberfläche zusammenführt, Excel-Vorlagen automatisch ausfüllt und Bestellungen per Outlook versendet - robust genug für den dauerhaften Produktivbetrieb durch das Werkspersonal.

Die Lösung

  • Reitergegliederte Oberfläche (Tkinter/ttkbootstrap) mit sechs Hauptbereichen: Dashboard, Einkauf, Produktion, Tools, Fehlerbericht, Zuschläge (verwaltung.py: _create_tabs)
  • Einkaufsmodul mit durchsuchbaren Tabellen für Material, Gewinde, Schrauben, Torstahl sowie Bestellschein und Historie; Artikel-Editor zum Pflegen der Stammdaten (einkauf.py, einkauf_editor.py, database_manager.py)
  • Produktionsmodul bündelt sieben Protokoll-/Werkzeug-Reiter: ESM-Etikettierung, ESM-Protokolle, LTM 1650, Deitmers, Haulotte, Muhr sowie einen Prüfgewicht-Rechner (produktion.py)
  • Automatisches Befüllen vordefinierter Excel-Vorlagen mit den Wiege-/Gewichtsdaten je Auftrag, inkl. dynamischer Toleranzberechnung und Farbmarkierung von Soll-/Ist-Abweichungen (excel_helper.py, deitmers_protokoll_ui.py, changelog Version 1.4.2)
  • Live-Autosave laufender Eingaben in JSON-Standby-Dateien (*_active_job.json) gegen Datenverlust bei Neustart; zentrale, fortlaufende Protokollnummern über protocol_counters.json (changelog 1.4.2.3, 1.4.1.x)
  • Bestell- und Fertigmeldungs-E-Mails direkt über Microsoft Outlook (COM) - Einkaufsbestellung, LTM-Fertigmeldung sowie Zuschlags-Bestellungen für Sand/Kies, Magnetit, Winfill und Zement N/R (mail.py, zuschläge.py, HTML-Vorlagen in Vorlagen/)
  • Fehlerbericht-Modul mit Autocomplete-Eingabe und lokalem Fuzzy-Abgleich (difflib) gegen bestehende Begriffe sowie KI-gestützter Datenbankbereinigung über die OpenAI-API zur Deduplizierung und Rechtschreibkorrektur (fehler.py, autocomplete_entry.py, ai_database_cleaner.py)
  • Tools-Reiter mit Volumen-Rechner, Kompensations-/Dichte-Rechner und einem OpenAI-Assistant-Chat mit auswählbaren Modellen (tool.py, volumen_calc.py, dichte_comp_calc.py, openai_assistant_frame.py)
  • Dashboard als chronologische Aktivitätsübersicht (letzte Bestellungen, gespeicherte Protokolle/Fehlerberichte) und Fussleiste mit Live-Uhr (deutsche Locale) sowie Wetteranzeige über OpenWeatherMap (dashboard.py, verwaltung.py)

Technik & Architektur

  • Python-Desktop-App mit Tkinter und ttkbootstrap als GUI; Einstiegspunkt verwaltung.py mit App-Klasse, Notebook-Tabs und Hintergrund-Thread für Wetterabruf
  • Modularer Aufbau: 28 Python-Module, jeder Hauptbereich und jedes Protokoll in eigener Datei (z. B. produktion.py delegiert an deitmers_/ltm_/esm_/haulotte_/muhr_protokoll_ui.py)
  • Lokale SQLite-Datenbank (vg_db.db), gekapselt in database_manager.py mit Whitelist-Validierung von Tabellen- und Spaltennamen sowie parametrisierten Queries als SQL-Injection-Schutz
  • Konfiguration zentral über datenbank.ini (Abschnitte settings, pfade, openai, emails, ltm1650, esm_*, muhr), geladen von config_manager.py inkl. atomarem Schreiben und optionaler .env-Unterstützung
  • Excel-Verarbeitung mit openpyxl: Befüllen/Auslesen der Vorlagen in Vorlagen/ (BLANKO-M-Reihe, Deitmers, Haulotte, LTM, Fehlerliste)
  • Outlook-Anbindung über pywin32/win32com (COM) für den E-Mail-Versand; E-Mail-Validierung über die email-validator-Bibliothek
  • OpenAI-API-Integration (openai-Paket): Assistants/Threads-Chat sowie strukturierte JSON-Antwort für die Fehler-Datenbankbereinigung
  • Robustheit für den Produktivbetrieb: zentrales Logging mit RotatingFileHandler (log.txt), spezifische Exception-Behandlung (u. a. PermissionError bei geöffneten Excel-Dateien, Outlook-COM-Fehler) und PyInstaller-Packaging mit Splash-Screen

Nutzen in der Praxis

  • Bündelt Einkauf, Produktionsprotokolle und Fehlerdokumentation in einer einzigen Oberfläche statt verstreuter Excel-Dateien und manueller Abläufe
  • Automatisches Befüllen der Excel-Vorlagen und Versand der Bestellungen per Outlook reduziert manuelle Schreibarbeit und Übertragungsfehler
  • Live-Autosave und zentrale Protokollnummern verhindern Datenverlust und Doppelvergaben bei laufendem Betrieb
  • Whitelist-validierte SQL-Zugriffe und durchgängiges Logging sorgen für eine wartbare, im Dauerbetrieb stabile Anwendung
  • KI-gestützte Fehlerdatenbank hält die Begriffsliste sauber (Deduplizierung, Rechtschreibung) und erleichtert die Erfassung durch Autocomplete
  • Über datenbank.ini konfigurierbar (Empfänger, Pfade, Produktdefinitionen, KI-Modelle) - anpassbar ohne Code-Änderung

Meine Rolle

Konzept, Entwicklung und Umsetzung eigenständig durch Ricardo Rehfeldt - von der Architektur über die Module bis zur laufenden Pflege und Versionierung.