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/15 11:35] (current) – [TODO] 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 und Automatisierung. | + | ===== TODO ===== |
| + | * Checkn ob Webseite Reconnect macht wenn man ionpy neu startet | ||
| + | * Inventar über Web View einstellbar machen | ||
| + | * Inventar ist nicht bestandteil vom Projekt (Idee vielleicht die Inventar.yaml mit im Projekt speichern | ||
| + | * Gerät hinzufügen, | ||
| + | * Settings nicht überschreiben beim Einstellen -> siehe Punkt 1 | ||
| + | * Projekt anlegen / speichern / laden -> Frontend | ||
| + | * Speichern im Backend | ||
| + | * RP2350 als Testgerät | ||
| + | * Buttons mit X Settings ausführen | ||
| - | ===== 1. Synchronisations- & Sperrstrategie | + | |
| - | Um Konflikte zwischen automatischem | + | 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 | ||
| + | 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**: Verhindert das Zurückspringen | + | * [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**: | ||
| + | |||
| + | ===== Neue View Multisensor Device ===== | ||
| + | * auf einen Schlag alle Readings anzeigen | ||
| + | * Checkbox on/off für MAIN = " | ||
| + | * Device basiert | ||
| + | |||
| + | |||
| + | |||
| + | ===== 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. | ||
| + | |||
| + | ==== Software Liste ==== | ||
| + | * Abspulen von Lastprofilen für PSU / Senke -> rein Softwar5e basiert | ||
| + | |||
| + | ==== Settings auf Button legen ==== | ||
| + | * **neue View** ! | ||
| + | * Buttons Beschriftung setzen (Größe ??) | ||
| + | * (mehrere) Aktions hinterlegen | ||
| + | * ggf. inkl. Start ?? | ||
| + | * Beispiel -> PSU -> 12V Setzen, max 1A, OCP an, Output ON | ||
| + | |||
| + | |||
| + | |||
| + | ===== 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**: Die '' | ||
| + | * **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**: Darstellung | ||
| + | * **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. | ||
| - | ==== 1.2 Frontend: Focus-Lock (Web-UI) | + | ==== Sonstiges |
| - | Universelle Sperre im JavaScript-Frontend | + | Was ich mir sonst noch vorstellen könnte: |
| - | * **Mechanismus**: Ein zentrales '' | + | * Virtuelle Instrumente |
| - | * **Logik**: Eingehende WebSocket-Updates werden ignoriert, wenn die Element-ID im '' | + | * Webcam-Integration mit Overlay: Wenn dein Pi eine Kamera hat, könntest du den Videostream anzeigen und die Messwerte |
| - | * **Beispiel**: | + | * Alarm-Management: Eine View, die nur dann aufpoppt, wenn Grenzwerte überschritten werden (z.B. BMS-Alarm ). |
| - | ===== 2. Strukturierte Daten: TableEntity | + | ===== 7.6 Webcam & Augmented Reality (AR) Overlay |
| - | Einführung einer komplexen Entität zur Abbildung von Speicherplätzen, | + | |
| - | * **Struktur**: | + | Diese View kombiniert visuelles Feedback |
| - | * '' | + | |
| - | * '' | + | |
| - | * **Beispiel (UDP3305 Sequenzer)**: | + | |
| - | * Spalten: '' | + | |
| - | * **Interaktion**: | + | |
| - | ===== 3. Gamepad Integration (Human Interface Device) ===== | + | ==== Architektur des Datenflusses |
| - | Anbindung von Gamecontrollern zur haptischen Steuerung von Laborgeräten | + | * **Video-Pfad**: |
| + | * **Daten-Pfad**: | ||
| + | * **Vorteil**: | ||
| - | ==== 3.1 GamepadManager & Discovery | + | ==== Features |
| - | Ein neuer System-Treiber scannt mittels '' | + | * **AR-Overlay**: Positionierung |
| - | * [cite_start]** gamepad.py**: Erbt von '' | + | * **Visual CV**: Optionale Bilderkennung im Backend, die Ergebnisse |
| - | * **GamepadEntity**: Kapselt den gesamten Zustand | + | |
| - | ==== 3.2 Visualisierung | + | ==== Implementierung (Code-Skizze) |
| - | * [cite_start]**Achsen**: Darstellung als Fadenkreuz oder analoge Level-Balken (analog zu '' | + | * **Backend**: Neuer API-Endpunkt unter '' |
| - | * **Buttons**: Darstellung als virtuelle Status-LEDs. | + | * **Frontend**: Dynamisches Canvas-Mapping. Koordinaten für Overlays werden in der '' |
| - | ===== 4. LogicService & Automation Bridge ===== | + | ==== 7.7 Visual Event Trigger (Virtual Sensor) |
| - | Der zentrale Dienst zur Verknüpfung von Events | + | Zusätzlich zum Videostream kann das System Bildbereiche |
| - | * [cite_start]**Funktionsweise**: Ein asynchroner Task in der Engine abonniert den '' | + | * **Funktion**: Überwachung von analogen Anzeigen oder LEDs, die keine Datenschnittstelle besitzen. |
| - | * **Regel-Engine**: Vergleicht eintreffende Samples mit einer JSON-basierten Regelliste. | + | * **Verarbeitung**: |
| - | * **Beispiel-Regel**: | + | 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**: "BMS Alarm LED" |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | * **Cross-Device-Talking**: | + | |
| - | ===== 5. Neue Entitätstypen | + | ==== 7.8 Optical Character Recognition |
| - | [cite_start]Erweiterung der '' | + | Verwandelt visuelle Anzeigen in digitale Datenströme. |
| - | ^ Typ ^ Beschreibung ^ Beispiel ^ | + | |
| - | | **LogEntity** | Chronologischer Ereignis-Feed pro Gerät | "OVP triggered", | + | * **Datenfluss**: |
| - | | **StatusIndicator** | Visuelle " | + | 1. Extraktion der Anzeige |
| - | | **FileEntity** | Schnittstelle für Up/Downloads | Firmware-Update, | + | 2. Bildvorbehandlung |
| - | | **XYGraphEntity** | Kennliniendarstellung (X vs Y statt Zeit) | U/I-Kurve, Bode-Plot | | + | 3. Konvertierung String |
| - | | **RangeEntity** | Kapselung | + | 4. Publikation als '' |
| - | | **ScheduleEntity** | Zeitbasierte Steuerbefehle | " | + | |
| + | ===== 8. Zusammenfassung der Datenfluss-Architektur ===== | ||
| - | ===== 6. Technische Basis ===== | + | Der Datenfluss im erweiterten System folgt nun diesem Muster: |
| - | | + | |
| - | | + | |
| - | | + | |
projekte/ionpy/ideen.1770968718.txt.gz · Last modified: by dominik
