diff --git a/backend/src/main/java/org/mercury/backend/BackendApplication.java b/backend/src/main/java/org/mercury/backend/BackendApplication.java index 14692f1..2dbcb04 100644 --- a/backend/src/main/java/org/mercury/backend/BackendApplication.java +++ b/backend/src/main/java/org/mercury/backend/BackendApplication.java @@ -25,12 +25,28 @@ public class BackendApplication { @PostMapping("/sensor") SensorData newEmployee(@RequestBody SensorData sensorData) { if (sensorData.timestamp() == null) { - sensorData = new SensorData(sensorData.temperature(), sensorData.humidity(), System.currentTimeMillis()); + double dewPoint = Math.round(calculateDewPoint(sensorData.temperature(), sensorData.humidity()) * 10.0) / 10.0; + sensorData = new SensorData(sensorData.temperature(), sensorData.humidity(), dewPoint, System.currentTimeMillis()); } this.sensorData = sensorData; return sensorData; } + public static double calculateDewPoint(double temperature, double humidity) { + // Constants for the Magnus formula + final double a = 17.27; + final double b = 237.7; + + // Convert relative humidity to a decimal + double rh = humidity / 100.0; + + // Calculate alpha + double alpha = (a * temperature) / (b + temperature) + Math.log(rh); + + // Calculate dew point + return (b * alpha) / (a - alpha); + } + @GetMapping("/sensor") SensorData getSensorData() { return sensorData; diff --git a/backend/src/main/java/org/mercury/backend/SensorData.java b/backend/src/main/java/org/mercury/backend/SensorData.java index 41856bf..f7a9e3f 100644 --- a/backend/src/main/java/org/mercury/backend/SensorData.java +++ b/backend/src/main/java/org/mercury/backend/SensorData.java @@ -1,4 +1,4 @@ package org.mercury.backend; -public record SensorData(double temperature, double humidity, Long timestamp) { +public record SensorData(double temperature, double humidity, double dewPoint, Long timestamp) { }