From 4703d920553aa23c6d64c6599a8622c29ed11ac4 Mon Sep 17 00:00:00 2001 From: Halit Aksoy Date: Thu, 23 Jan 2025 20:14:59 +0300 Subject: [PATCH] feat(backend): add dewPoint data --- .../mercury/backend/BackendApplication.java | 18 +++++++++++++++++- .../java/org/mercury/backend/SensorData.java | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) 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) { }