feat(backend): add dewPoint data

This commit is contained in:
Halit Aksoy 2025-01-23 20:14:59 +03:00
parent ab9e90cb20
commit 4703d92055
2 changed files with 18 additions and 2 deletions

View File

@ -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;

View File

@ -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) {
}