Schnelleinstieg 2: Werte in eine Datenbank schreiben
Dieser zweite Schnelleinstieg baut auf dem ersten Flow auf und bleibt bei Bordmitteln: Statt eines Fremdsystems dient eine SQLite-Datenbank als Ziel – eine einzelne Datei, kein Server. Ein Flow erzeugt alle 10 Sekunden einen wandernden Messwert und schreibt ihn mit dem DB Log Table-Transferobjekt in eine Tabelle, die der OPC Router selbst anlegt; ein zweiter Flow liest den jeweils letzten Wert zurück in eine Variable, und ein dritter räumt regelmäßig auf, damit die Datei nicht unbegrenzt wächst.
Eine SQLite-Datei neben dem OPC Router ist ideal zum Ausprobieren – ohne Server, ohne Anmeldung. Für den Produktionseinsatz ist dieser Aufbau nicht gedacht: Dort gehören Prozessdaten in einen richtigen Datenbankserver, etwa PostgreSQL, Microsoft SQL Server oder MySQL/MariaDB; die Best Practice Datenbanken zeigt, worauf es dabei ankommt.
Vorbereitung: die SQLite-Anbindung
- Legen Sie im Bereich „Plug-ins“ unter „Storage“ → Dateibasierte Datenbanken eine SQLite-Anbindung an: Name
SQLite, als Datei ein Pfad, auf dem der OPC Router schreiben darf – unter Windows zum BeispielC:\Data\produktion.db, im Docker-Container/data/db/quickstart.db. - Prüfen Sie die Angaben mit „Verbindung testen“ und bestätigen Sie mit „OK“.

Im Docker-Container gehört der Datenpfad /data selbst dem Root-Benutzer, die Dienste laufen aber unter einem eigenen Benutzerkonto – direkt unter /data kann der OPC Router nicht schreiben. Legen Sie deshalb einmalig ein dienst-eigenes Unterverzeichnis an; die Datenbankdatei darin erzeugt der OPC Router anschließend selbst:
docker exec <container> sh -c 'mkdir -p /data/db && chown opcrouter:opcrouter /data/db'
Die Hintergründe stehen beim SQLite Plug-in.
Legen Sie außerdem – wie im ersten Schnelleinstieg – eine globale Variable LetzteTemperatur vom Typ Float64 an; sie nimmt am Ende den zurückgelesenen Wert auf.
1. Der Schreib-Flow: Messwert erzeugen und ablegen
Legen Sie einen Flow Temperatur aufzeichnen an und projektieren Sie vier Objekte:
- Time-Trigger – zyklische Übertragung, Intervall 10 Sekunden.
- Formel & Taschenrechner aus „Tools & ETL“ – als Formel
21.5 + RAND() * 2: Sie liefert bei jedem Transfer einen Wert zwischen 21,5 und 23,5, wie ihn ein echter Fühler liefern würde. Legen Sie das Ergebnis als AusgangTemperaturan. - Konstanten – ein Wert
Linie 1vom TypString, damit jede Zeile ihre Herkunft trägt. - DB Log Table aus der Gruppe „Datenbank“ – die Anbindung
SQLite, als TabellennameTemperaturverlauf, und in den Tabellenspalten:
| Spalte | Datentyp | Besonderheit |
|---|---|---|
| ID | Int64 | Primärschlüssel mit Auto-Inkrement (unter „Erweiterte Optionen anzeigen“) |
| Temperatur | Double | |
| Linie | String |


Verbinden Sie per Item Link das Rechnerergebnis Temperatur mit der Spalte Temperatur und die Konstante Linie 1 mit der Spalte Linie. Die Spalte ID bleibt unverbunden – sie zählt selbst hoch.

Die ID-Spalte lohnt sich von Anfang an: Über sie liest der zweite Flow gleich den neuesten Datensatz, und nachträglich lässt sich ein Primärschlüssel bei SQLite nicht mehr ergänzen – der Strukturabgleich kann einer bestehenden Tabelle keine solche Spalte hinzufügen, erst eine neue Tabelle bekommt sie.
2. Der Lese-Flow: den letzten Wert zurückholen
Legen Sie einen zweiten Flow Letzte Temperatur lesen an:
- Time-Trigger – Intervall 30 Sekunden.
- DB Select aus der Gruppe „Datenbank“ – Anbindung
SQLite, TabelleTemperaturverlauf, als SpalteTemperatur, sortiert absteigend nachID, Limit 1: Das liefert genau den neuesten Datensatz. - Variablen-Transferobjekt – die Variable
LetzteTemperatur.
Verbinden Sie den Select-Ausgang Temperatur mit der Variablen.

3. Der Aufräum-Flow: alte Werte löschen
Ein Flow, der alle 10 Sekunden schreibt und nie löscht, lässt die Datei unbegrenzt wachsen. Zu jedem Log-Flow gehört deshalb ein Gegenstück, das alte Daten wieder entfernt. Legen Sie einen dritten Flow Alte Werte löschen an:
- Time-Trigger – Intervall 60 Sekunden.
- DB Select – Anbindung
SQLite, TabelleTemperaturverlauf, als SpalteID, absteigend sortiert, Limit 1: Das liefert die höchste bisher vergebene ID. - Formel & Taschenrechner – ein Platzhalter
HoechsteIDals Eingang und die FormelHoechsteID - 12; das Ergebnis heißtGrenze. - DB Delete aus der Gruppe „Datenbank“ – Anbindung
SQLite, TabelleTemperaturverlauf, und auf dem Reiter „Filter“ eine Bedingung: SpalteID, VergleichSMALLER OR EQUAL. Sobald der Grenzwert aus dem Flow verknüpft ist, zeigt die Bedingung ihn alsDynamischer Wertan.

Verbinden Sie per Item Link das Select-Ergebnis ID mit dem Platzhalter HoechsteID und das Rechnerergebnis Grenze mit dem Filter-Eingang. Der Flow behält so immer die zwölf neuesten Zeilen – zum Zusehen im Schnelleinstieg genau richtig. In einem echten Aufbau wäre die Grenze deutlich größer („behalte die letzten 100.000") oder ein Zeitraum über eine Zeitstempelspalte.

4. Veröffentlichen
Haken Sie in der Ansicht „Veröffentlichen“ den Wurzelknoten an – er nimmt alle ausstehenden Änderungen mit: die SQLite-Anbindung, die neue Variable und die drei neuen Flows – und klicken Sie „Änderungen produktiv schalten“.

5. Zusehen, wie Daten entstehen
Im Status-Bereich zeigt der Flow Temperatur aufzeichnen, wie alle 10 Sekunden ein neuer Transferpunkt auf der Zeitleiste ankommt und der gerade geschriebene Wert über die Verbindung zum DB Log Table läuft:

Im Flow Letzte Temperatur lesen steht am Variablen-Objekt der zuletzt gelesene Messwert:

Die Tabelle selbst füllt sich derweil Zeile um Zeile – mit wandernden Werten, einer Herkunftsspalte und einer hochzählenden ID. Dass auch der Aufräum-Flow arbeitet, zeigt die Tabelle selbst: Die Zeilenzahl pendelt um die eingestellte Grenze, während die kleinste ID im Minutentakt nachrückt. Damit ist der Kreis geschlossen: erzeugen, ablegen, zurücklesen, aufräumen.
Weiterlesen
- DB Log Table – alle Optionen des Transferobjekts, das seine Tabelle selbst pflegt.
- DB Select – Filter, Sortierung und Transfermarkierungen beim Lesen.
- DB Delete – Löschen mit Filtern: das Gegenstück, das Logtabellen klein hält.
- Formel & Taschenrechner – rechnen mit Platzhaltern aus dem Flow.
- Best Practice Datenbanken – Selects mit Filtern, Transferflags und Indizes, sobald es ernst wird.