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] – ↷ Page moved from projekte:ideen to projekte:ionpy:ideen dominik | projekte:ionpy:ideen [2026/02/13 09:16] (current) – [Implementierung (Code-Skizze)] dominik | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== ionpy Framework | + | ====== ionpy Framework: Erweiterte Architektur-Spezifikation |
| - | Dieses Dokument beschreibt die geplanten Erweiterungen für das ionpy-Framework zur Verbesserung der Benutzerinteraktion, Datenstrukturierung | + | Dieses Dokument beschreibt die integrale Architektur-Erweiterung des ionpy-Frameworks. Es dient als verbindliche Grundlage für die Implementierung neuer Entitätstypen, haptischer Steuerungen |
| - | ===== 1. Synchronisations- & Sperrstrategie | + | ===== 1. Dynamische Eingabesynchronisation |
| - | Um Konflikte zwischen automatischem | + | Um zu verhindern, dass Hintergrund-Polling Benutzereingaben |
| ==== 1.1 Backend: Mute-Timer (AbstractDevice) ==== | ==== 1.1 Backend: Mute-Timer (AbstractDevice) ==== | ||
| - | [cite_start]In der Basisklasse | + | [cite_start]In der Klasse |
| - | * **Mechanismus**: | + | * [cite_start]**Mechanismus**: |
| - | * [cite_start]**Logik**: | + | * **Logik**: |
| - | * **Ziel**: | + | * [cite_start]Sobald '' |
| + | * [cite_start]Die Methode '' | ||
| + | * **Ziel**: | ||
| - | ==== 1.2 Frontend: Focus-Lock (Web-UI) ==== | + | ==== 1.2 Frontend: |
| - | Universelle Sperre im JavaScript-Frontend | + | In der Web-UI (settings.html) |
| - | * **Mechanismus**: | + | * **Mechanismus**: |
| - | * **Logik**: Eingehende WebSocket-Updates werden ignoriert, wenn die Element-ID | + | * **Event-Delegation**: |
| - | * **Beispiel**: Während ein User "12.5" in ein Feld tippt, darf ein eintreffendes Sample das Feld nicht auf "10.0" zurücksetzen. | + | * '' |
| + | * '' | ||
| + | * **WebSocket-Logik**: Die Funktion '' | ||
| - | ===== 2. Strukturierte Daten: TableEntity ===== | + | ===== 2. Strukturierte Daten: TableEntity |
| - | Einführung einer komplexen Entität zur Abbildung von Speicherplätzen, Profilen und Sequenzen. | + | Die '' |
| - | * **Struktur**: | + | ==== 2.1 Datenstruktur & Schema ==== |
| - | | + | Eine '' |
| - | * '' | + | * **Schema |
| - | * **Beispiel | + | * Jede Spalte definiert: '' |
| - | * Spalten: '' | + | * **Daten (value)**: Eine Liste von Dictionaries, |
| - | * **Interaktion**: Das Frontend sendet bei Änderung ein Koordinaten-Objekt: '' | + | * **Typen**: Unterscheidung zwischen |
| - | ===== 3. Gamepad Integration (Human Interface Device) ===== | + | ==== 2.2 Erweiterte Interaktions-Logik |
| - | Anbindung von Gamecontrollern zur haptischen Steuerung von Laborgeräten auf Basis von '' | + | * **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.1 GamepadManager & Discovery | + | ===== 3. Gamepad-Integration (HID-Steuerung) ===== |
| - | Ein neuer System-Treiber scannt mittels | + | Haptische Steuerung via USB-Controller, realisiert durch das '' |
| - | * [cite_start]** gamepad.py**: | + | |
| - | * **GamepadEntity**: | + | |
| - | ==== 3.2 Visualisierung | + | ==== 3.1 GamepadManager (hardware/ |
| - | * [cite_start]**Achsen**: Darstellung als Fadenkreuz oder analoge Level-Balken (analog zu '' | + | Ein neuer Treiber-Typ, |
| - | * **Buttons**: Darstellung | + | * [cite_start]**Discovery**: Nutzt '' |
| + | * [cite_start]**GamepadEntity**: Eine neue Entitätsklasse, | ||
| - | ===== 4. LogicService | + | ==== 3.2 Haptisches Feedback |
| - | Der zentrale Dienst zur Verknüpfung von Events | + | * [cite_start]**UI-Widgets**: |
| + | * **Sicherheitskonzept**: | ||
| - | * [cite_start]**Funktionsweise**: | + | ===== 4. LogicService: |
| - | * **Regel-Engine**: | + | [cite_start]Zentraler |
| - | * **Beispiel-Regel**: | + | |
| - | < | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Cross-Device-Talking**: | + | |
| - | ===== 5. Neue Entitätstypen (Katalog) ===== | + | ==== 4.1 Die Rule-Engine |
| - | [cite_start]Erweiterung der '' | + | [cite_start]Der Dienst abonniert den '' |
| + | * [cite_start]**Trigger**: | ||
| + | * **Transformation (Scaling)**: | ||
| + | * [cite_start]**Action**: | ||
| - | ^ Typ ^ Beschreibung ^ Beispiel ^ | + | ==== 4.2 Cross-Device Szenarien |
| - | | **LogEntity** | Chronologischer Ereignis-Feed pro Gerät | "OVP triggered", | + | * **Synchronisation**: Die elektronische Last (Senke) folgt automatisch der Spannung des Netzteils (Quelle), um eine konstante Leistung (CP-Mode) über das Framework zu simulieren. |
| - | | **StatusIndicator** | Visuelle " | + | * **Master-Slave**: Zwei Netzteile werden so gekoppelt, dass Kanal 2 immer exakt dem Wert von Kanal 1 folgt. |
| - | | **FileEntity** | Schnittstelle für Up/ | + | |
| - | | **XYGraphEntity** | Kennliniendarstellung | + | |
| - | | **RangeEntity** | Kapselung von Start, Stopp und Step | Sweep-Definition (Frequenz) | | + | |
| - | | **ScheduleEntity** | Zeitbasierte Steuerbefehle | " | + | |
| - | ===== 6. Technische Basis ===== | + | ===== 5. Erweiterter Entitäten-Katalog ===== |
| - | * [cite_start]**Backend**: Python 3.10+, FastAPI | + | [cite_start]Zusätzliche spezialisierte Typen für professionelle Laboranforderungen[cite: |
| - | * [cite_start]**Kommunikation**: JSON-Samples | + | |
| - | * [cite_start]**Frontend**: HTML5/ | + | ^ 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**: Alle Logik-Operationen müssen asynchron ('' | ||
| + | * [cite_start]**Caching**: | ||
| + | * **Modularität**: | ||
| + | |||
| + | ===== 7. Erweiterte Web-Views | ||
| + | |||
| + | 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: | ||
| + | | ||
| + | * [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**: Über eine Timeline kann eine aufgezeichnete Session | ||
| + | * **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/ | ||
| + | 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 | ||
projekte/ionpy/ideen.1770968718.txt.gz · Last modified: by dominik
