Technologie

Dyfus II: Modulare Tankstellen-Automatisierung

Eine verteilte, event-getriebene Systemarchitektur für den modernen Tankstellenbetrieb. Von der Zapfsäulensteuerung über die Kassensysteme bis zur zentralen Datenverarbeitung - vollständig offline-fähig und hochverfügbar.

Systemübersicht

Dyfus II ist ein modernes Tankstellen-Management-System, das aus sechs spezialisierten Komponenten besteht. Die Kommunikation erfolgt vollständig über MQTT (Message Queuing Telemetry Transport), was Entkopplung, Skalierbarkeit und Ausfallsicherheit gewährleistet.

Komponentenarchitektur

DPOS Angular

POS-Frontend

BusinessLogicHub

Geschäftslogik

CashRegister

Fiskalkassen

Persistor

Lokale DB

Replicator

Synchronisation

DispensersController

Zapfsäulen

MQTT Message Broker

Komponenten im Detail

BusinessLogicHub

Python | MQTT | Firebird SQL

Der zentrale Orchestrator des Systems. Koordiniert alle Geschäftsprozesse: Kraftstoffverkäufe, Zahlungsabwicklung, Bestandsverwaltung und Schichtmanagement.

Event-Bus Station Supervisor Blocking System State Persistence

DPOS Angular

Angular 18 | TypeScript | RxJS | Material Design

Das moderne Point-of-Sale Frontend für Kassenbediener. Echtzeit-Darstellung der Zapfsäulenstatus, Artikelverwaltung, Kundenverwaltung und umfassende Berichtsfunktionen.

Real-time Updates Touch-optimiert RSA-Verschlüsselung Offline-fähig

DispensersController

Python | Serial Communication | SK Protocol (RAFCi 3.A)

Kommunikationsbrücke zwischen POS-System und Zapfsäulenhardware (RAFCI-Controller). Steuert Tankfreigaben, überwacht Tankvorgänge in Echtzeit und kommuniziert mit Füllstandsmessern.

Sale Authorization Level Gauge Heartbeat Monitor Emulator

CashRegisterCommunicator

Python | DATECS Protocol | Serial Communication

Middleware für die Kommunikation mit Fiskalkassen (DATECS FP-800, Eltrade). Übersetzt MQTT-Befehle in das binäre Kassenprotokoll und verarbeitet Antworten.

Fiskalbelege Rechnungen Tagesabschluss Emulator

Persistor

Python | SQLite | MQTT

MQTT-zu-SQLite-Bridge für lokale Datenpersistenz. Ermöglicht Offline-Betrieb durch lokale Datenhaltung und synchronisiert Änderungen bei Wiederverbindung.

WAL-Mode Change Tracking RAIN Triggers Concurrent Access

Replicator

Python | Firebird | SQLite | MQTT

Bidirektionale Datenbank-Replikation zwischen zentraler Firebird-Datenbank und dezentralen SQLite-Stationen. Implementiert ID-Mapping und dreiphasige FK-Verarbeitung.

FB → SQLite SQLite → FB ID-Mapping Verifikation

Technologie-Stack

Backend

  • Py

    Python 3.11+

    Alle Backend-Services

  • MQ

    MQTT (Mosquitto)

    Message Broker

  • FB

    Firebird 3/4

    Zentrale Datenbank

  • SQ

    SQLite

    Lokale Station-DB

Frontend

  • Ng

    Angular 18

    Standalone Components

  • TS

    TypeScript 5.5

    Type-safe Development

  • Rx

    RxJS

    Reactive Programming

  • M3

    Material Design

    UI-Komponenten

Architekturprinzipien

Event-Driven Architecture

Alle Komponenten kommunizieren über asynchrone Events. Dies ermöglicht lose Kopplung, einfache Erweiterbarkeit und hohe Fehlertoleranz.

Offline-First

Jede Station arbeitet autark mit lokaler SQLite-Datenbank. Bei Netzwerkproblemen läuft der Betrieb unterbrechungsfrei weiter.

Ausfallsicherheit

Dreistufiges Blocking-System schützt vor inkonsistenten Zuständen. State-Persistence ermöglicht saubere Wiederherstellung nach Abstürzen.

Modularität

Jede Komponente ist eigenständig deploybar und aktualisierbar. Docker-Container ermöglichen einfaches Deployment und Skalierung.

Beispiel: Tankvorgang

1

Zapfpistole wird abgenommen

DispensersController erkennt Event über RAFCI und sendet Authorization-Request via MQTT

2

BusinessLogicHub prüft Freigabe

Prüfung auf Tanksperre, Kundenkredit, verfügbaren Kraftstoff im Reservoir

3

DPOS zeigt aktiven Tankvorgang

Echtzeit-Updates von Menge und Betrag im Frontend via MQTT Events

4

Tankvorgang beendet

Sale-End-Event triggert Belegdruck und Datenbankaktualisierung

5

Kassenbon wird gedruckt

CashRegisterCommunicator sendet Druckbefehl an Fiskalkasse

6

Daten werden repliziert

Persistor schreibt in SQLite, Replicator synchronisiert zur Zentrale

Interesse an einer Demo?

Wir zeigen Ihnen gerne das Dyfus II System in Aktion und besprechen, wie es sich an Ihre Anforderungen anpassen lässt.

Demo vereinbaren