projekte:ionpy:ideen
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| projekte:ionpy:ideen [2026/02/13 08:45] – removed - external edit (Unknown date) 127.0.0.1 | projekte:ionpy:ideen [2026/02/13 09:16] (current) – [Implementierung (Code-Skizze)] dominik | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== ionpy Framework: Erweiterte Architektur-Spezifikation (Vollständig) ====== | ||
| + | Dieses Dokument beschreibt die integrale Architektur-Erweiterung des ionpy-Frameworks. Es dient als verbindliche Grundlage für die Implementierung neuer Entitätstypen, | ||
| + | |||
| + | ===== 1. Dynamische Eingabesynchronisation (Race Condition Schutz) ===== | ||
| + | Um zu verhindern, dass Hintergrund-Polling Benutzereingaben im Frontend überschreibt, | ||
| + | |||
| + | ==== 1.1 Backend: Mute-Timer (AbstractDevice) ==== | ||
| + | [cite_start]In der Klasse '' | ||
| + | * [cite_start]**Mechanismus**: | ||
| + | * **Logik**: | ||
| + | * [cite_start]Sobald '' | ||
| + | * [cite_start]Die Methode '' | ||
| + | * **Ziel**: Die Hardware hat Zeit, den Wert intern zu setzen, und der Polling-Loop liest keine " | ||
| + | |||
| + | ==== 1.2 Frontend: Universeller Focus-Lock (JS) ==== | ||
| + | In der Web-UI (settings.html) wird eine automatische Erkennung aktiver Eingabefelder implementiert. | ||
| + | * **Mechanismus**: | ||
| + | * **Event-Delegation**: | ||
| + | * '' | ||
| + | * '' | ||
| + | * **WebSocket-Logik**: | ||
| + | |||
| + | ===== 2. Strukturierte Daten: TableEntity (Deep Dive) ===== | ||
| + | Die '' | ||
| + | |||
| + | ==== 2.1 Datenstruktur & Schema ==== | ||
| + | Eine '' | ||
| + | * **Schema (columns)**: | ||
| + | * Jede Spalte definiert: '' | ||
| + | * **Daten (value)**: Eine Liste von Dictionaries, | ||
| + | * **Typen**: Unterscheidung zwischen '' | ||
| + | |||
| + | ==== 2.2 Erweiterte Interaktions-Logik ==== | ||
| + | * **Row-Updates**: | ||
| + | * **Atomic Row Actions**: Unterstützung einer Spalte vom Typ '' | ||
| + | * **Active Row Tracking**: Ein zusätzliches Attribut '' | ||
| + | * **Zell-basiertes Muting**: Die Mute-Logik aus Kapitel 1 wird auf Zellebene angewendet, sodass eine Bearbeitung in Zeile 1 nicht die Live-Updates von Zeile 2 blockiert. | ||
| + | |||
| + | ===== 3. Gamepad-Integration (HID-Steuerung) ===== | ||
| + | Haptische Steuerung via USB-Controller, | ||
| + | |||
| + | ==== 3.1 GamepadManager (hardware/ | ||
| + | Ein neuer Treiber-Typ, | ||
| + | * [cite_start]**Discovery**: | ||
| + | * [cite_start]**GamepadEntity**: | ||
| + | |||
| + | ==== 3.2 Haptisches Feedback & Visualisierung ==== | ||
| + | * [cite_start]**UI-Widgets**: | ||
| + | * **Sicherheitskonzept**: | ||
| + | |||
| + | ===== 4. LogicService: | ||
| + | [cite_start]Zentraler asynchroner Dienst in der '' | ||
| + | |||
| + | ==== 4.1 Die Rule-Engine ==== | ||
| + | [cite_start]Der Dienst abonniert den '' | ||
| + | * [cite_start]**Trigger**: | ||
| + | * **Transformation (Scaling)**: | ||
| + | * [cite_start]**Action**: | ||
| + | |||
| + | ==== 4.2 Cross-Device Szenarien (Beispiele) ==== | ||
| + | * **Synchronisation**: | ||
| + | * **Master-Slave**: | ||
| + | |||
| + | ===== 5. Erweiterter Entitäten-Katalog ===== | ||
| + | [cite_start]Zusätzliche spezialisierte Typen für professionelle Laboranforderungen[cite: | ||
| + | |||
| + | ^ Typ ^ UI-Repräsentation ^ Funktionalität ^ | ||
| + | | **LogEntity** | Scrollende Konsole | Lokaler Ereignis-Speicher für gerätespezifische Fehler (z.B. SCPI-Fehlermeldungen). | | ||
| + | | **StatusIndicator** | Virtuelle LED | Farb-Mapping für Zustände (z.B. 0=Off, 1=OK/Grün, 2=Warnung/ | ||
| + | | **XYGraphEntity** | Kennlinien-Plot | Darstellung von X-Y-Beziehungen (z.B. Batterie-Entladekurve: | ||
| + | | **FileEntity** | Upload/ | ||
| + | | **RangeEntity** | Multi-Slider/ | ||
| + | | **ScheduleEntity** | Zeitplan-Editor | Verwaltung von Zeitereignissen (z.B. " | ||
| + | |||
| + | ===== 6. Implementierungs-Leitfaden für KI-Entwicklung ===== | ||
| + | * [cite_start]**Concurrency**: | ||
| + | * [cite_start]**Caching**: | ||
| + | * **Modularität**: | ||
| + | |||
| + | ===== 7. Erweiterte Web-Views (Advanced Visualization) ===== | ||
| + | |||
| + | Um die wachsende Komplexität der Daten (Gamepad, BMS, IMU-Sensoren) beherrschbar zu machen, werden spezialisierte Views implementiert. | ||
| + | |||
| + | ==== 7.1 XYZ / 3D-Visualisierung (Spatial View) ==== | ||
| + | Diese View nutzt Bibliotheken wie **Three.js** oder **Plotly.js**, | ||
| + | * [cite_start]**Anwendungsfall A: IMU/ | ||
| + | * **Anwendungsfall B: Multi-Parameter-Sweeps**: | ||
| + | * **Anwendungsfall C: Raum-Mapping**: | ||
| + | |||
| + | ==== 7.2 Multi-Device Dashboard (Global View) ==== | ||
| + | [cite_start]Die aktuelle UI ist stark auf einzelne Tabs pro Gerät fokussiert[cite: | ||
| + | * **Konzept**: | ||
| + | * [cite_start]**Beispiel**: | ||
| + | |||
| + | ==== 7.3 Logic-Flow Visualizer (Automation View) ==== | ||
| + | Da der geplante '' | ||
| + | * **Konzept**: | ||
| + | * [cite_start]**Darstellung**: | ||
| + | * [cite_start]**Live-Feedback**: | ||
| + | |||
| + | ==== 7.4 Session Replay & Analyse (History View) ==== | ||
| + | [cite_start]Basierend auf dem '' | ||
| + | * **Konzept**: | ||
| + | * [cite_start]**Funktion**: | ||
| + | * **Vergleichs-Modus**: | ||
| + | |||
| + | ==== 7.5 Synoptic View (Prozessgrafik) ==== | ||
| + | * **Konzept**: | ||
| + | * **Nutzen**: Extrem intuitive Überwachung von komplexen Verdrahtungen. | ||
| + | |||
| + | ==== Sonstiges ==== | ||
| + | Was ich mir sonst noch vorstellen könnte: | ||
| + | * Virtuelle Instrumente (Skins): Dass du für das UDP3305 eine View baust, die exakt so aussieht wie die Frontplatte des echten Geräts. Das macht die Bedienung im Web viel natürlicher. | ||
| + | * Webcam-Integration mit Overlay: Wenn dein Pi eine Kamera hat, könntest du den Videostream anzeigen und die Messwerte (z.B. Temperatur) direkt über das Bild legen (ähnlich wie Augmented Reality). | ||
| + | * Alarm-Management: | ||
| + | |||
| + | ===== 7.6 Webcam & Augmented Reality (AR) Overlay ===== | ||
| + | |||
| + | Diese View kombiniert visuelles Feedback der Hardware mit den Live-Daten des EventBus. | ||
| + | |||
| + | ==== Architektur des Datenflusses ==== | ||
| + | * **Video-Pfad**: | ||
| + | * **Daten-Pfad**: | ||
| + | * **Vorteil**: | ||
| + | |||
| + | ==== Features ==== | ||
| + | * **AR-Overlay**: | ||
| + | * **Visual CV**: Optionale Bilderkennung im Backend, die Ergebnisse (z.B. " | ||
| + | |||
| + | ==== Implementierung (Code-Skizze) ==== | ||
| + | * **Backend**: | ||
| + | * **Frontend**: | ||
| + | |||
| + | ==== 7.7 Visual Event Trigger (Virtual Sensor) ==== | ||
| + | Zusätzlich zum Videostream kann das System Bildbereiche (ROI) analysieren, | ||
| + | |||
| + | * **Funktion**: | ||
| + | * **Verarbeitung**: | ||
| + | 1. ROI Definition via Koordinaten. | ||
| + | 2. HSV-Farbraumfilterung zur Detektion von Statusfarben. | ||
| + | 3. State-Machine zur Vermeidung von Bus-Spam (nur Änderungen werden publiziert). | ||
| + | * **Anwendung**: | ||
| + | |||
| + | ==== 7.8 Optical Character Recognition (OCR) Sensor ==== | ||
| + | Verwandelt visuelle Anzeigen in digitale Datenströme. | ||
| + | |||
| + | * **Technologie**: | ||
| + | * **Datenfluss**: | ||
| + | 1. Extraktion der Anzeige via ROI. | ||
| + | 2. Bildvorbehandlung (Grayscale, Thresholding, | ||
| + | 3. Konvertierung String -> Float/Int. | ||
| + | 4. Publikation als '' | ||
| + | * **Anwendung**: | ||
| + | ===== 8. Zusammenfassung der Datenfluss-Architektur ===== | ||
| + | |||
| + | Der Datenfluss im erweiterten System folgt nun diesem Muster: | ||
| + | - [cite_start]**Hardware/ | ||
| + | - [cite_start]**LogicService** (Abonniert Bus) -> Berechnet Transformation -> **Engine.execute_command**[cite: | ||
| + | - [cite_start]**Web-Views** (Abonnieren Bus via WebSocket [cite: 427]) -> Filtern nach Focus-Lock -> **Visualisierung** (3D, Table, Graph). | ||
