From 1fedb1d2bc267cb09372a1b72c299a3e7b9b7040 Mon Sep 17 00:00:00 2001
From: naumueller <>
Date: Wed, 4 Feb 2026 00:12:04 +0100
Subject: [PATCH 1/3] Resources, README created
---
README.md | 18 ++++++++++
.../virtueller_gesundheitsassistent/App.java | 34 +++++++++++++++----
.../view/MainView.fxml | 0
.../view/components/AvatarView.fxml | 0
.../view/components/CameraView.fxml | 0
.../view/designs/CompactView.fxml | 0
.../view/designs/DashboardView.fxml | 0
.../view/designs/ImmersiveView.fxml | 0
.../view/designs/MinimalView.fxml | 0
9 files changed, 45 insertions(+), 7 deletions(-)
create mode 100644 README.md
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/components/AvatarView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/components/CameraView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/designs/CompactView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/designs/DashboardView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/designs/ImmersiveView.fxml (100%)
rename src/main/{java => resources}/efi/projekt/virtueller_gesundheitsassistent/view/designs/MinimalView.fxml (100%)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2a75db0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+Virtueller Gesundheitsassistent
+Überblick
+Dieses Projekt implementiert einen virtuellen Gesundheits- und Fahrassistenten
+auf Basis von JavaFX. Die Anwendung visualisiert den aktuellen Zustand des
+Fahrers (z.B. Müdigkeit, Ablenkung, Stress) und integriert:
+- ein ML-Modell, das Zustände klassifiziert
+- eine JavaFX-GUI mit mehreren Designvarianten
+- OpenCV für Kamera-Preview
+- Unreal Engine Pixel Streaming für einen sprechenden Avatar
+- WebSocket-Kommunikation zur Steuerung des Avatars
+
+Features
+Architektur
+Services
+Views & UI-Struktur
+Java-Version & Build
+MQTT & Datenfluss
+OpenCV
\ No newline at end of file
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
index 9feade9..92d58ca 100644
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
@@ -1,5 +1,8 @@
package efi.projekt.virtueller_gesundheitsassistent;
+import efi.projekt.virtueller_gesundheitsassistent.service.ClassificationService;
+import efi.projekt.virtueller_gesundheitsassistent.service.MqttClientService;
+import efi.projekt.virtueller_gesundheitsassistent.service.UnrealWebSocketService;
import java.io.IOException;
import javafx.application.Application;
import static javafx.application.Application.launch;
@@ -17,13 +20,31 @@ public class App extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
- // Lade FXML
- FXMLLoader loader = new FXMLLoader(getClass().getResource("/efi/projekt/virtueller_gesundheitsassistent/view/FxView.fxml"));
- Parent root = loader.load();
- // Erzeuge Model & ViewModel
+ // =========================
+ // Services initialisieren
+ // =========================
+
+ // MQTT
+ MqttClientService mqttClientService = new MqttClientService();
+ new ClassificationService(mqttClientService);
+
+ // Unreal WebSocket
+ // new UnrealWebSocketService("ws://localhost;8080/avatar");
+
+
+
+ // =========================
+ // UI laden
+ // =========================
+
+ FXMLLoader loader = new FXMLLoader(
+ getClass().getResource(
+ "/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml"
+ )
+ );
- Scene scene = new Scene(root, 1280, 720);
+ Scene scene = new Scene(loader.load(), 1400, 900);
primaryStage.setTitle("Virtueller Gesundheitsassistent");
primaryStage.setScene(scene);
@@ -38,7 +59,6 @@ public class App extends Application {
}
public static void main(String[] args) {
- launch();
+ launch(args);
}
-
}
\ No newline at end of file
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/MainView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/components/AvatarView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/components/AvatarView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/components/AvatarView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/components/AvatarView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/components/CameraView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/components/CameraView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/components/CameraView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/components/CameraView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/CompactView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/CompactView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/CompactView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/CompactView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/DashboardView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/DashboardView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/DashboardView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/DashboardView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/ImmersiveView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/ImmersiveView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/ImmersiveView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/ImmersiveView.fxml
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/MinimalView.fxml b/src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/MinimalView.fxml
similarity index 100%
rename from src/main/java/efi/projekt/virtueller_gesundheitsassistent/view/designs/MinimalView.fxml
rename to src/main/resources/efi/projekt/virtueller_gesundheitsassistent/view/designs/MinimalView.fxml
--
2.47.2
From b68cbe795cd3b41e69fd578da6cf95ccb5b724ac Mon Sep 17 00:00:00 2001
From: naumueller <>
Date: Tue, 10 Feb 2026 21:07:05 +0100
Subject: [PATCH 2/3] Persistence, Statistics and Evaluation Logic added. Tests
still pending
---
pom.xml | 5 ++
.../virtueller_gesundheitsassistent/App.java | 3 -
.../model/AppState.java | 26 +++++++++
.../model/AssistantState.java | 34 ------------
.../model/ClassificationType.java | 13 -----
.../model/ProblemLevel.java | 12 ++++
.../service/ClassificationService.java | 37 -------------
.../service/DataPersistenceService.java | 55 +++++++++++++++++++
.../service/EvaluationService.java | 51 +++++++++++++++++
.../service/StateService.java | 6 +-
.../service/StatisticsService.java | 46 ++++++++++++++++
src/main/java/module-info.java | 1 +
12 files changed, 199 insertions(+), 90 deletions(-)
create mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AppState.java
delete mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AssistantState.java
delete mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ClassificationType.java
create mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ProblemLevel.java
delete mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/ClassificationService.java
create mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/DataPersistenceService.java
create mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
create mode 100644 src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StatisticsService.java
diff --git a/pom.xml b/pom.xml
index 119a984..7524240 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,11 @@
4.12.0
jar
+
+ org.xerial
+ sqlite-jdbc
+ 3.51.1.0
+
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
index 92d58ca..bfbbfa4 100644
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
@@ -1,8 +1,6 @@
package efi.projekt.virtueller_gesundheitsassistent;
-import efi.projekt.virtueller_gesundheitsassistent.service.ClassificationService;
import efi.projekt.virtueller_gesundheitsassistent.service.MqttClientService;
-import efi.projekt.virtueller_gesundheitsassistent.service.UnrealWebSocketService;
import java.io.IOException;
import javafx.application.Application;
import static javafx.application.Application.launch;
@@ -27,7 +25,6 @@ public class App extends Application {
// MQTT
MqttClientService mqttClientService = new MqttClientService();
- new ClassificationService(mqttClientService);
// Unreal WebSocket
// new UnrealWebSocketService("ws://localhost;8080/avatar");
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AppState.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AppState.java
new file mode 100644
index 0000000..73f045e
--- /dev/null
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AppState.java
@@ -0,0 +1,26 @@
+package efi.projekt.virtueller_gesundheitsassistent.model;
+
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+
+/**
+ *
+ * @author naumueller
+ */
+public class AppState {
+
+ private final ObjectProperty problemLevel =
+ new SimpleObjectProperty<>(ProblemLevel.NONE);
+
+ public ObjectProperty problemLevelProperty() {
+ return problemLevel;
+ }
+
+ public ProblemLevel getProblemLevel() {
+ return problemLevel.get();
+ }
+
+ public void setProblemLevel(ProblemLevel level) {
+ problemLevel.set(level);
+ }
+}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AssistantState.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AssistantState.java
deleted file mode 100644
index 963e25b..0000000
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/AssistantState.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package efi.projekt.virtueller_gesundheitsassistent.model;
-
-import javafx.beans.property.BooleanProperty;
-import javafx.beans.property.ObjectProperty;
-import javafx.beans.property.SimpleBooleanProperty;
-import javafx.beans.property.SimpleObjectProperty;
-
-/**
- *
- * @author naumueller
- */
-public class AssistantState {
-
- private final ObjectProperty classification =
- new SimpleObjectProperty<>(ClassificationType.NORMAL);
-
- private final BooleanProperty speaking =
- new SimpleBooleanProperty(false);
-
- private final BooleanProperty monitoring =
- new SimpleBooleanProperty(true);
-
- public ObjectProperty classificationProperty() {
- return classification;
- }
-
- public BooleanProperty speakingProperty() {
- return speaking;
- }
-
- public BooleanProperty monitoringProperty() {
- return monitoring;
- }
-}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ClassificationType.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ClassificationType.java
deleted file mode 100644
index 1c6da2f..0000000
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ClassificationType.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package efi.projekt.virtueller_gesundheitsassistent.model;
-
-/**
- *
- * @author naumueller
- */
-public enum ClassificationType {
- NORMAL,
- MUEDIGKEIT,
- ABLENKUNG,
- STRESS,
- REAKTION
-}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ProblemLevel.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ProblemLevel.java
new file mode 100644
index 0000000..52149d3
--- /dev/null
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/model/ProblemLevel.java
@@ -0,0 +1,12 @@
+package efi.projekt.virtueller_gesundheitsassistent.model;
+
+/**
+ *
+ * @author naumueller
+ */
+public enum ProblemLevel {
+ NONE,
+ WARNING,
+ HIGH,
+ DISASTER
+}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/ClassificationService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/ClassificationService.java
deleted file mode 100644
index 57811b4..0000000
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/ClassificationService.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package efi.projekt.virtueller_gesundheitsassistent.service;
-
-import efi.projekt.virtueller_gesundheitsassistent.model.ClassificationType;
-import efi.projekt.virtueller_gesundheitsassistent.util.Logger;
-import javafx.application.Platform;
-
-/**
- *
- * @author naumueller
- */
-public class ClassificationService {
-
- private static final String TOPIC = "Text";
-
- public ClassificationService(MqttClientService mqtt) {
-
- mqtt.subscribe(TOPIC, payload -> {
-
- ClassificationType type = switch (payload) {
- case "0" -> ClassificationType.NORMAL;
- case "1" -> ClassificationType.MUEDIGKEIT;
- case "2" -> ClassificationType.ABLENKUNG;
- case "3" -> ClassificationType.REAKTION;
- case "4" -> ClassificationType.STRESS;
- default -> ClassificationType.NORMAL;
- };
-
- Logger.info("STATE", "Neue Klassifizierung: " + type);
-
- Platform.runLater(() ->
- StateService.getState()
- .classificationProperty()
- .set(type)
- );
- });
- }
-}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/DataPersistenceService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/DataPersistenceService.java
new file mode 100644
index 0000000..955d329
--- /dev/null
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/DataPersistenceService.java
@@ -0,0 +1,55 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package efi.projekt.virtueller_gesundheitsassistent.service;
+
+import efi.projekt.virtueller_gesundheitsassistent.util.Logger;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author naumueller
+ */
+public class DataPersistenceService {
+
+ private static final String DB_URL = "jdbc:sqlite:data/health.db";
+
+ public DataPersistenceService() {
+ init();
+ }
+
+ private void init() {
+ try (
+ Connection c = DriverManager.getConnection(DB_URL); Statement s = c.createStatement()) {
+
+ s.execute("""
+ CREATE TABLE IF NOT EXISTS binary_event (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ value INTEGER NOT NULL,
+ timestamp DATETIME NOT NULL
+ )
+ """);
+
+ Logger.info("DB", "Datenbank initialisiert");
+
+ } catch (SQLException e) {
+ Logger.error("DB", "Datenbank initialisierung fehlgeschlagen", e);
+ }
+ }
+
+ public void store(int value) {
+ try (Connection c = DriverManager.getConnection(DB_URL); PreparedStatement ps = c.prepareStatement("INSERT INTO binary_event (value, timestamp) VALUES (?, ?)")) {
+ ps.setInt(1, value);
+ ps.setString(2, LocalDateTime.now().toString());
+ ps.executeUpdate();
+ } catch (SQLException e) {
+ Logger.error("DB", "Database Insert fehlgeschlagen", e);
+ }
+ }
+}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
new file mode 100644
index 0000000..4cd1e1c
--- /dev/null
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package efi.projekt.virtueller_gesundheitsassistent.service;
+
+import efi.projekt.virtueller_gesundheitsassistent.model.AppState;
+import efi.projekt.virtueller_gesundheitsassistent.model.ProblemLevel;
+
+/**
+ *
+ * @author naumueller
+ */
+public class EvaluationService {
+
+ private final StatisticsService statisticsService;
+ private final AppState appState;
+ private final UnrealWebSocketService unrealService;
+
+ public EvaluationService(
+ StatisticsService statisticsService,
+ AppState appState,
+ UnrealWebSocketService unrealService
+ ) {
+
+ this.statisticsService = statisticsService;
+ this.appState = appState;
+ this.unrealService = unrealService;
+ }
+
+ public void evaluate() {
+ double ratio = statisticsService.getRatio(10);
+
+ ProblemLevel level;
+
+ if (ratio >= 0.9) {
+ level = ProblemLevel.DISASTER;
+ } else if (ratio >= 0.7) {
+ level = ProblemLevel.HIGH;
+ } else if (ratio >= 0.4) {
+ level = ProblemLevel.WARNING;
+ } else {
+ level = ProblemLevel.NONE;
+ }
+
+ if (level != appState.getProblemLevel()) {
+ appState.setProblemLevel(level);
+ unrealService.speak(level.name());
+ }
+ }
+}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StateService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StateService.java
index ea8db4e..3936a64 100644
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StateService.java
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StateService.java
@@ -1,6 +1,6 @@
package efi.projekt.virtueller_gesundheitsassistent.service;
-import efi.projekt.virtueller_gesundheitsassistent.model.AssistantState;
+import efi.projekt.virtueller_gesundheitsassistent.model.AppState;
/**
*
@@ -8,11 +8,11 @@ import efi.projekt.virtueller_gesundheitsassistent.model.AssistantState;
*/
public class StateService {
- private static final AssistantState STATE = new AssistantState();
+ private static final AppState STATE = new AppState();
private StateService() {}
- public static AssistantState getState() {
+ public static AppState getState() {
return STATE;
}
}
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StatisticsService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StatisticsService.java
new file mode 100644
index 0000000..a0bdc8b
--- /dev/null
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/StatisticsService.java
@@ -0,0 +1,46 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package efi.projekt.virtueller_gesundheitsassistent.service;
+
+import efi.projekt.virtueller_gesundheitsassistent.util.Logger;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author naumueller
+ */
+public class StatisticsService {
+
+ private static final String DB_URL = "jdbc:sqlite:data/health.db";
+
+ public double getRatio(int lastN) {
+ String query = """
+ SELECT AVG(value)
+ FROM (
+ SELECT value
+ FROM binary_event
+ ORDER BY timestamp DESC
+ LIMIT ?
+ )
+ """;
+
+ try (Connection c = DriverManager.getConnection(DB_URL); PreparedStatement ps = c.prepareStatement(query)) {
+ ps.setInt(1, lastN);
+
+ ResultSet rs = ps.executeQuery();
+ if (rs.next()) {
+ return rs.getDouble(1);
+ }
+ } catch (SQLException e) {
+ Logger.error("Evaluation", "Couldn't get ratio.", e);
+ }
+
+ return 0.0;
+ }
+}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 1b6dc33..b4aca24 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -6,6 +6,7 @@ module efi.projekt.virtueller_gesundheitsassistent {
requires javafx.web;
requires jakarta.websocket.client;
requires opencv;
+ requires java.sql;
opens efi.projekt.virtueller_gesundheitsassistent to javafx.fxml;
--
2.47.2
From e7b13fb896d30678edf0917930c21a89472e511f Mon Sep 17 00:00:00 2001
From: naumueller <>
Date: Wed, 11 Feb 2026 17:57:47 +0100
Subject: [PATCH 3/3] EvaluationService with new thresholds and App with
Service-init
---
.../virtueller_gesundheitsassistent/App.java | 31 ++++++++++++++++---
.../service/EvaluationService.java | 4 +--
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
index bfbbfa4..1977a02 100644
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/App.java
@@ -1,6 +1,11 @@
package efi.projekt.virtueller_gesundheitsassistent;
+import efi.projekt.virtueller_gesundheitsassistent.model.AppState;
+import efi.projekt.virtueller_gesundheitsassistent.service.DataPersistenceService;
+import efi.projekt.virtueller_gesundheitsassistent.service.EvaluationService;
import efi.projekt.virtueller_gesundheitsassistent.service.MqttClientService;
+import efi.projekt.virtueller_gesundheitsassistent.service.StatisticsService;
+import efi.projekt.virtueller_gesundheitsassistent.service.UnrealWebSocketService;
import java.io.IOException;
import javafx.application.Application;
import static javafx.application.Application.launch;
@@ -16,6 +21,15 @@ import javafx.stage.Stage;
*/
public class App extends Application {
+ private final AppState appState = new AppState();
+
+ // Services
+ private DataPersistenceService persistenceService;
+ private StatisticsService statisticsService;
+ private EvaluationService evaluationService;
+ private UnrealWebSocketService unrealService;
+ private MqttClientService mqttService;
+
@Override
public void start(Stage primaryStage) throws IOException {
@@ -23,11 +37,20 @@ public class App extends Application {
// Services initialisieren
// =========================
- // MQTT
- MqttClientService mqttClientService = new MqttClientService();
+ // Unreal-WebService
+ unrealService = new UnrealWebSocketService("127.0.0.1");
+
+ // MQTT-Service
+ mqttService = new MqttClientService();
- // Unreal WebSocket
- // new UnrealWebSocketService("ws://localhost;8080/avatar");
+ // Datenbank initialisieren
+ persistenceService = new DataPersistenceService();
+
+ // Statistik-Service
+ statisticsService = new StatisticsService();
+
+ // Evaluationsservice
+ evaluationService = new EvaluationService(statisticsService, appState, unrealService);
diff --git a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
index 4cd1e1c..1e67062 100644
--- a/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
+++ b/src/main/java/efi/projekt/virtueller_gesundheitsassistent/service/EvaluationService.java
@@ -35,9 +35,9 @@ public class EvaluationService {
if (ratio >= 0.9) {
level = ProblemLevel.DISASTER;
- } else if (ratio >= 0.7) {
+ } else if (ratio >= 0.8) {
level = ProblemLevel.HIGH;
- } else if (ratio >= 0.4) {
+ } else if (ratio >= 0.5) {
level = ProblemLevel.WARNING;
} else {
level = ProblemLevel.NONE;
--
2.47.2