mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-13 17:22:54 -05:00
Data model simplification
This commit is contained in:
@@ -129,7 +129,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Data
|
||||
switch (weatherValueType)
|
||||
{
|
||||
case WeatherValueType.LightLevel:
|
||||
query = query.Replace("@Value", "LightLevel / 3.3");
|
||||
query = query.Replace("@Value", "LightLevel / 3.3 * 100");
|
||||
break;
|
||||
default:
|
||||
query = query.Replace("@Value", weatherValueType.ToString());
|
||||
|
||||
@@ -2,10 +2,9 @@ SELECT Timestamp,
|
||||
WindDirection,
|
||||
WindSpeed,
|
||||
Humidity,
|
||||
HumidityTemperature,
|
||||
Rain,
|
||||
Pressure,
|
||||
PressureTemperature,
|
||||
PressureTemperature AS Temperature,
|
||||
BatteryLevel,
|
||||
LightLevel,
|
||||
Latitude,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
SELECT Bucket,
|
||||
AVG(HumidityTemperature) AS AverageHumidityTemperature,
|
||||
AVG(Humidity) AS AverageHumidity,
|
||||
AVG(PressureTemperature) AS AveragePressureTemperature,
|
||||
AVG(Temperature) AS AverageTemperature,
|
||||
AVG(Pressure) AS AveragePressure,
|
||||
AVG(LightLevel) AS AverageLightLevel,
|
||||
SUM(Rain) AS RainTotal
|
||||
@@ -9,11 +8,10 @@ FROM (
|
||||
SELECT CAST(FORMAT(Timestamp, 'yyyy-MM-ddTHH:') +
|
||||
RIGHT('00' + CAST(DATEPART(MINUTE, Timestamp) / @BucketMinutes * @BucketMinutes AS VARCHAR), 2)
|
||||
+ ':00+00:00' AS DATETIMEOFFSET) AS Bucket,
|
||||
HumidityTemperature,
|
||||
Humidity,
|
||||
PressureTemperature,
|
||||
PressureTemperature AS Temperature,
|
||||
Pressure,
|
||||
LightLevel / 3.3 AS LightLevel,
|
||||
LightLevel / 3.3 * 100 AS LightLevel,
|
||||
Rain
|
||||
FROM Reading
|
||||
WHERE Timestamp BETWEEN @Start AND @End
|
||||
|
||||
@@ -2,10 +2,9 @@ SELECT TOP 1 Timestamp,
|
||||
WindDirection,
|
||||
WindSpeed,
|
||||
Humidity,
|
||||
HumidityTemperature,
|
||||
Rain,
|
||||
Pressure,
|
||||
PressureTemperature,
|
||||
PressureTemperature AS Temperature,
|
||||
BatteryLevel,
|
||||
LightLevel,
|
||||
Latitude,
|
||||
|
||||
@@ -8,11 +8,9 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
{
|
||||
public DateTimeOffset Bucket { get; set; }
|
||||
|
||||
public decimal AverageHumidityTemperature { get; set; }
|
||||
|
||||
public decimal AverageHumidity { get; set; }
|
||||
|
||||
public decimal AveragePressureTemperature { get; set; }
|
||||
public decimal AverageTemperature { get; set; }
|
||||
|
||||
public decimal AveragePressure { get; set; }
|
||||
|
||||
|
||||
@@ -1,17 +1,52 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using ChrisKaczor.HomeMonitor.Weather.Models;
|
||||
using ChrisKaczor.HomeMonitor.Weather.Service.Data;
|
||||
using DecimalMath;
|
||||
using JetBrains.Annotations;
|
||||
using MathNet.Numerics;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
{
|
||||
[PublicAPI]
|
||||
public class WeatherUpdate : WeatherMessage
|
||||
public class WeatherUpdate
|
||||
{
|
||||
private readonly Database _database;
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public MessageType Type { get; set; }
|
||||
|
||||
public string Message { get; set; }
|
||||
|
||||
public DateTimeOffset Timestamp { get; set; }
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public WindDirection WindDirection { get; set; }
|
||||
|
||||
public decimal WindSpeed { get; set; }
|
||||
|
||||
public decimal Humidity { get; set; }
|
||||
|
||||
public decimal Rain { get; set; }
|
||||
|
||||
public decimal Pressure { get; set; }
|
||||
|
||||
public decimal Temperature { get; set; }
|
||||
|
||||
public decimal LightLevel { get; set; }
|
||||
|
||||
public decimal Latitude { get; set; }
|
||||
|
||||
public decimal Longitude { get; set; }
|
||||
|
||||
public decimal Altitude { get; set; }
|
||||
|
||||
public int SatelliteCount { get; set; }
|
||||
|
||||
public DateTimeOffset GpsTimestamp { get; set; }
|
||||
|
||||
public decimal? WindChill { get; set; }
|
||||
|
||||
public decimal? HeatIndex { get; set; }
|
||||
@@ -32,12 +67,10 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
WindDirection = weatherMessage.WindDirection;
|
||||
WindSpeed = weatherMessage.WindSpeed;
|
||||
Humidity = weatherMessage.Humidity;
|
||||
HumidityTemperature = weatherMessage.HumidityTemperature;
|
||||
Rain = weatherMessage.Rain;
|
||||
Pressure = weatherMessage.Pressure;
|
||||
PressureTemperature = weatherMessage.PressureTemperature;
|
||||
BatteryLevel = weatherMessage.BatteryLevel;
|
||||
LightLevel = weatherMessage.LightLevel;
|
||||
Temperature = weatherMessage.PressureTemperature;
|
||||
LightLevel = weatherMessage.LightLevel / 3.3m * 100;
|
||||
Latitude = weatherMessage.Latitude;
|
||||
Longitude = weatherMessage.Longitude;
|
||||
Altitude = weatherMessage.Altitude;
|
||||
@@ -70,7 +103,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
|
||||
private void CalculateHeatIndex()
|
||||
{
|
||||
var temperature = PressureTemperature;
|
||||
var temperature = Temperature;
|
||||
var humidity = Humidity;
|
||||
|
||||
if (temperature.IsBetween(80, 100) && humidity.IsBetween(40, 100))
|
||||
@@ -83,7 +116,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
|
||||
private void CalculateWindChill()
|
||||
{
|
||||
var temperatureInF = PressureTemperature;
|
||||
var temperatureInF = Temperature;
|
||||
var windSpeedInMph = WindSpeed;
|
||||
|
||||
if (temperatureInF.IsBetween(-45, 45) && windSpeedInMph.IsBetween(3, 60))
|
||||
@@ -95,7 +128,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Models
|
||||
private void CalculateDewPoint()
|
||||
{
|
||||
var relativeHumidity = Humidity;
|
||||
var temperatureInF = PressureTemperature;
|
||||
var temperatureInF = Temperature;
|
||||
|
||||
var temperatureInC = (temperatureInF - 32.0m) * 5.0m / 9.0m;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user