Projekte
Diese Projektseite wird derzeit überarbeitet und aktualisiert.
In den vergangenen Jahren habe ich eine ganze Reihe von Anwendungen mit Microsoft-Technologien entworfen und entwickelt. Diese Seite beschreibt einige der interessanteren Projekte, an denen ich gearbeitet habe, und zwar ausschließlich öffentlich verfügbare Arbeiten. Die meisten davon sind für Theobald Software und Peakboard entstanden, zwei Softwarefirmen aus Stuttgart.
Die Peakboard-Plattform, entwickelt von der Peakboard GmbH, bringt Low-Code und KI in Produktion und Logistik. Sie verbindet Echtzeitdaten aus Maschinen, Sensoren und IT-Systemen wie SAP und macht daraus intelligente industrielle Anwendungen auf dem Shopfloor.
Die Theobald Software GmbH entwickelt Schnittstellen, die SAP-Daten für andere Systeme nutzbar machen. Produkte wie Xtract Universal, Xtract IS und ERPConnect bringen SAP-Daten in Datenbanken, BI- und Analyse-Werkzeuge sowie Cloud-Plattformen und werden von Unternehmen weltweit eingesetzt.
Peakboard Plattform heute
2026
Peakboard startete 2015 als Digital-Signage-Werkzeug und ist zu einer Plattform für industrielle Anwendungen gewachsen. Ich bin seit der ersten Zeile Code dabei. Die Anwendungen werden im Designer gebaut, sie laufen auf Bildschirmen, Panels und mobilen Geräten im Shopfloor, und der Peakboard Hub verwaltet Geräte und zentrale Daten. Heute verbindet die Plattform Livedaten aus SAP, Maschinen, Datenbanken und IT-Systemen und macht daraus interaktive Anwendungen.
Die folgenden Einträge beschreiben einige der neueren Plattform-Funktionen, an denen ich gearbeitet habe.
Kunde: Peakboard
Technologien: .NET, C#, WPF, Lua Scripting
Peakboard Flows
2024-2025
Im Sommer 2024 habe ich mit dem Entwurf und der Umsetzung von Flows begonnen, dem Teil eines Boards, der entscheidet, wann etwas passiert. Ausgeliefert wurde die Funktion 2025. Ein Flow legt fest, welche Datenquelle neu lädt, in welcher Reihenfolge und was danach läuft. Ein Trigger startet den Flow. Er kann periodisch laufen, zu einer festen Uhrzeit, bei einer Datenänderung in einer Liste oder beim Aufruf einer Funktion. Jeder Schritt lädt eine Datenquelle oder einen Dataflow neu, führt eine Funktion aus oder schreibt ein Ergebnis in eine Liste.
Das Modell habe ich bewusst klein gehalten. Ein Schritt, der eine Funktion ausführt, entscheidet über den weiteren Verlauf. Komplexere Logik gehört in eine Funktion, denn dort lässt sie sich testen. Mit Hub Flows braucht ein Flow kein Board mehr. Ein nächtlicher Job, der eine Liste lädt und ein Ergebnis speichert, braucht weder einen Bildschirm noch ein Gerät an der Wand.
Kunde: Peakboard
Technologien: .NET, C#, WPF
Peakboard Building Blocks
2021-2025
Ich habe Building Blocks entworfen und gebaut, den visuellen Skript-Editor des Peakboard Designers und einen zweiten Weg, Logik neben Lua zu schreiben. Anwender stecken grafische Blöcke zusammen, und der Editor erzeugt dabei den passenden Lua-Code. Er nutzt dieselbe Skript-Engine und dieselben Ereignisse wie normale Skripte. Lokale Variablen haben Typen, damit der Editor Kombinationen ablehnen kann, die zur Laufzeit fehlschlagen würden.
Es gibt allgemeine Blöcke für Logik, Schleifen, Mathematik, Text, Datum und Farbe. Weitere Blockfamilien kapseln die Peakboard-Datenschicht, zum Beispiel SQL, MQTT, Azure, Hub-Listen, Dataflows, Timer und eigene Funktionen. Die erste Version startete 2021 unter dem Namen Visual Coding und wurde 2022 ausgeliefert. 2025 habe ich den Editor überarbeitet und Kommentare, Blocksuche und weitere Hilfen für Boards mit hunderten Blöcken ergänzt.
Building Blocks Dokumentation (EN)
Kunde: Peakboard
Technologien: .NET, C#, WPF, Lua
Peakboard Extension Kit
2020-2025
2020 habe ich das Peakboard Extension Kit entworfen und entwickelt, ein NuGet-Paket mit einer Handvoll Schnittstellen. Man implementiert eine Schnittstelle, liefert eine DLL aus, und die eigene Datenquelle erscheint im Peakboard Designer neben den eingebauten. Extensions sind fremder Code und laufen deshalb nicht im Runtime-Prozess. Jede Extension läuft in einem eigenen Host-Prozess und spricht über einen IPC-Kanal mit der Runtime. Eine Extension, die Speicher verliert, einen Thread blockiert oder beim Start abstürzt, kann kein Board mitreißen.
Extensions gibt es für Dynamics 365, Microsoft Graph, OData, DB2, MySQL, PostgreSQL, Philips Hue, SICK RFID-Leser und viele weitere. Installiert werden sie über einen Galerie-Dialog im Designer. Das Kit startete auf dem .NET Framework mit Remoting und System.AddIn, 2025 habe ich es auf .NET 8 portiert.
Peakboard.ExtensionKit auf NuGet · Beispiel-Extensions auf GitHub · Peakboard Templates
Kunde: Peakboard
Technologien: .NET, C#, IPC, .NET Remoting
Peakboard Dataflows
2018
2018 habe ich Dataflows entwickelt, um Daten aufzubereiten, bevor sie auf den Bildschirm kommen. Ein Dataflow nimmt eine Datenquelle und legt eine geordnete Liste von Schritten darüber. Ein Schritt kann filtern, umbenennen, einen Typ ändern, verknüpfen oder etwas nachschlagen. Heraus kommt eine neue Liste, die sich wie jede andere Datenquelle verhält, und niemand muss dafür eine Zeile Lua schreiben. Eine Vorschau zeigt die Daten so, wie sie nach dem ausgewählten Schritt aussehen, damit die Wirkung jedes Schritts sofort sichtbar ist.
Die Schritte decken Spaltenoperationen, Typänderungen, Filter, Sortierung, Duplikate, Zeilenbereiche, Aggregation, Union und die vier üblichen Join-Arten ab. Am meisten gewünscht wurde die Lookup-Spalte. Eine Maschine meldet eine ID, der lesbare Text liegt woanders, und der Lookup ergänzt ihn. Ein Dataflow kann auch auf einem anderen Dataflow aufbauen, sodass sich eine lange Kette in kleinere Teile zerlegen lässt.
Erste Schritte mit Dataflows (EN)
Kunde: Peakboard
Technologien: .NET, C#, WPF
Peakboard Control Grouping
2018-2024
2018 habe ich die Gruppierung von Controls im Peakboard Designer umgesetzt. Eine Gruppe fasst mehrere Controls auf einem Screen zusammen, sodass sie gemeinsam verschoben, kopiert, fixiert, ein- oder ausgeblendet werden können. Gruppen haben Namen, sie lassen sich verschachteln, und eine Gruppe kann eine bedingte Formatierung bekommen, zum Beispiel um sie bei einem bestimmten Wert auszublenden.
Gruppen stehen auch in Skripten und Building Blocks zur Verfügung. Ein Skript kann eine Gruppe ein- oder ausblenden, sie drucken oder einen Screenshot davon per E-Mail, an OneDrive, an SharePoint oder an den Peakboard Hub senden. 2024 habe ich die Anordnungslogik überarbeitet.
Kunde: Peakboard
Technologien: .NET, C#, WPF
Peakboard Lua Scripting & Script Editor
2016-2024
Peakboard-Boards werden in Lua skriptet, die Runtime ist eine .NET-Anwendung. 2016 habe ich die Brücke zwischen beiden mit MoonSharp umgesetzt, einem in C# geschriebenen Lua-Interpreter. Skripte laufen im selben Prozess wie die Runtime, ohne native Bibliothek und ohne separaten Prozess. .NET-Objekte werden nicht automatisch freigegeben. Jeder Typ, den ein Skript verwenden darf, bekommt eine Descriptor-Klasse, und jedes Mitglied wird einzeln sichtbar gemacht, damit nichts versehentlich nach außen dringt.
Ein großer Teil der Arbeit steckt in den Konvertierungen zwischen den beiden Typsystemen. Lua kennt einen Zahlentyp, .NET viele, deshalb müssen Sammlungen vereinheitlicht werden. Datenzeilen haben überhaupt keine feste Form, denn ihre Spalten stammen aus der Abfrage, die der Board-Autor geschrieben hat. Eine fehlende Spalte liefert nil, statt das Board anzuhalten. 2024 habe ich diese Skriptschicht überarbeitet.
Peakboard Scripting Dokumentation (EN)
Kunde: Peakboard
Technologien: .NET, C#, Lua, MoonSharp
Peakboard Digital Signage Plattform
2015-2018
Im Herbst 2015 habe ich mit dem Entwurf und der Entwicklung der Peakboard Digital-Signage-Plattform begonnen. Das System besteht aus zwei Teilen: einem WPF-Designer und der Runtime-Anwendung auf Basis der Universal Windows Platform (UWP).
Für die Runtime habe ich einen eigenen Webserver und eine Administrationswebsite entwickelt, um Peakboard-Pakete mit dem Board, allen Screen-Definitionen und Ressourcendateien hochzuladen und zu verwalten. Jedes Board lässt sich direkt aus dem Designer ausrollen.
Kunde: Theobald Software / Peakboard
Technologien: .NET, C#, UWP, WPF, Lua Scripting
Xtract IS Table Join Query Builder
2015
2015 habe ich einen visuellen Query Builder für Tabellen-Joins als Teil der Produktfamilie Xtract IS entwickelt. Mit der Komponente lassen sich Join-Abfragen grafisch entwerfen: SAP-Tabellen auswählen, Beziehungen definieren, Ausgabefelder und Einschränkungen ergänzen. Dazu gehört ein Kriterien-Designer, mit dem sich die WHERE- und HAVING-Klausel der fertigen Join-Anweisung visuell festlegen lässt.
Auf SAP-Seite habe ich einen eigenen BAPI-Funktionsbaustein (Z_XTRACT_IS_TABLE_JOIN) entwickelt, der die Join-Definition verarbeitet und daraus eine dynamische SAP-Open-SQL-Anweisung erzeugt (INNER und OUTER JOINS).
Kunde: Theobald Software
Technologien: .NET, C#, WPF, WinForms, SAP, ABAP
ERPConnect Services Core Plattform
2014
2014 habe ich die Arbeit an der ersten Version von ERPConnect Services Core abgeschlossen. ECS Core ist eine serviceorientierte, claims-basierte und cloud-fähige (Azure) Webanwendungsplattform (SOA), die unternehmensweite, SAP-bezogene REST- und OData-Webservices bereitstellt.
Kunde: Theobald Software
Technologien: .NET, C#, ASP.NET MVC, Web API, ERPConnect, Azure
ERPConnect Services Web Service Designer
2013
2013 habe ich die Anwendung Web Service Designer als Teil der Produktfamilie ERPConnect Services entwickelt, die die komplette Datenintegration zwischen SharePoint und SAP abdeckt.
Der Designer ist ein sehr praktisches Werkzeug, um SOAP- oder OData-Webservices für SharePoint ohne Code zu entwerfen und auszurollen, und zwar über eine Workflow-Designer-Oberfläche. Zusätzlich lassen sich C#-Ausdrücke einsetzen, um jedes Daten-Mapping fein abzustimmen.
Kunde: Theobald Software
Technologien: .NET, C#, WPF, SharePoint
SAP HTML5 Beispielanwendungen
2012
2012 habe ich zwei HTML5-Beispielanwendungen mit aufwendigen visuellen Effekten erstellt. Die Demos zeigen SAP-Kunden- und Bestandsdaten in Echtzeit. Die Verbindung zwischen SAP und .NET übernimmt die Bibliothek ERPConnect von Theobald Software.
Die folgenden Videos zeigen die verwendeten jQuery-Effekte:
YouTube-Video der Bestandsdemo
YouTube-Video der Kundeninformationsdemo
Kunde: Theobald Software
Technologien: .NET, C#, ASP.NET MVC, Web API, jQuery, ERPConnect
XQL - Xtract Query Language
2012
Vor einigen Jahren habe ich XQL entwickelt, die Xtract Query Language (XtractQL). Sie wurde inzwischen in verschiedene Theobald-Produkte integriert, um SAP-Geschäftsdaten dynamisch über eine einfache Abfragesprache zu lesen. Die Syntax ist an SQL und SAP-ABAP-Anweisungen angelehnt.
Kunde: Theobald Software
Technologien: .NET, C#, Compilerbau
BCS Connector für SharePoint
2010
2010 habe ich mit dem Entwurf und der Entwicklung des BCS Connectors für SharePoint begonnen. Die Anwendung ist Bestandteil der Produktfamilie ERPConnect Services und verbindet SharePoint-Listen mit SAP-Objekten oder Tabellen, ganz ohne Programmierkenntnisse.
Kunde: Theobald Software
Technologien: .NET, C#, WPF, SharePoint
ERPConnect Services für SharePoint
2010
2010 habe ich mit dem Entwurf und der Entwicklung der ERPConnect Services Runtime begonnen, der ersten Komponente der Produktfamilie ERPConnect Services. Das Werkzeug gibt .NET-Entwicklern die Möglichkeit, SharePoint als SAP-Datendrehscheibe zu nutzen.
Ein optionales Plugin für Visual Studio (siehe Screenshot) erlaubt es, SAP-Schnittstellen mit einem grafischen Designer zu entwerfen.
ERPConnect Services Produktseite
Kunde: Theobald Software
Technologien: .NET, C#, ASP.NET, Visual Studio Extension, SharePoint
Mindbak - Online Mind Mapping
2010
2010 hatte ich die Gelegenheit, den Prototyp eines Online-Mindmapping-Werkzeugs in Silverlight zu entwickeln. Es ist ein reines Test- und Machbarkeitsprojekt und stellenweise fehlerhaft, die Grundfunktionen laufen aber.
Die Maps lassen sich mit Tastatur und Maus bearbeiten, Themen können per Drag and Drop verschoben werden.
Einfach ausprobieren: Mindbak.com.
Technologien: .NET, C#, Silverlight
LINQ to SAP für Visual Studio
2008
2008 habe ich LINQ to SAP entwickelt, einen LINQ-Provider für SAP-Datenquellen und ein Visual-Studio-Plugin für ERPConnect, um SAP-Schnittstellen visuell zu entwerfen. Das Plugin bringt einen Designer und einen Codegenerator mit, der die SAP-Zugriffsschicht für C# und VB.NET automatisch erzeugt.
Die SAP-Objekte (BAPI, Tabelle, Query und weitere) werden einfach per Drag and Drop in die Designerfläche gezogen. Komplexe BAPIs lassen sich vereinfachen, sodass im generierten Code nur noch die Elemente übrig bleiben, die tatsächlich gefüllt werden sollen.
Kunde: Theobald Software
Technologien: .NET, C#, Visual Studio Extension, ERPConnect, DSL Tools (Modeling SDK für Visual Studio)
Stock Quote Add-In für Excel
2007-2018
Vor einigen Jahren gab es von Microsoft das MSN MoneyCentral Stock Quotes Add-In für Excel 2002, ein wirklich praktisches Werkzeug, das dann plötzlich nicht mehr verfügbar war. Mein Stock Quote Add-In für Excel ist der Ersatz dafür. Es baut auf der Excel-DNA-Bibliothek auf und liest Kurs- und Wechselkursdaten über neue Excel-Funktionen ein.
Technologien: .NET, C#, Office-Entwicklung
