feat(backend): add dewPoint data
This commit is contained in:
parent
ab9e90cb20
commit
4703d92055
@ -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;
|
||||
|
||||
@ -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) {
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user