mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-13 17:22:54 -05:00
Update for new hardware
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChrisKaczor.HomeMonitor.Weather.Models
|
||||
@@ -33,22 +32,28 @@ namespace ChrisKaczor.HomeMonitor.Weather.Models
|
||||
|
||||
var messageValues = messageParts.Select(m => m.Split('=')).ToDictionary(a => a[0], a => a[1]);
|
||||
|
||||
WindDirection = (WindDirection)Enum.Parse(typeof(WindDirection), messageValues[@"winddir"]);
|
||||
WindSpeed = decimal.Parse(messageValues[@"windspeedmph"]);
|
||||
Humidity = decimal.Parse(messageValues[@"humidity"]);
|
||||
HumidityTemperature = decimal.Parse(messageValues[@"tempH"]);
|
||||
Rain = decimal.Parse(messageValues[@"rain"]);
|
||||
Pressure = decimal.Parse(messageValues[@"pressure"]);
|
||||
PressureTemperature = decimal.Parse(messageValues[@"tempP"]);
|
||||
BatteryLevel = decimal.Parse(messageValues[@"batt_lvl"]);
|
||||
LightLevel = decimal.Parse(messageValues[@"light_lvl"]);
|
||||
Latitude = decimal.Parse(messageValues[@"lat"]);
|
||||
Longitude = decimal.Parse(messageValues[@"lng"]);
|
||||
Altitude = decimal.Parse(messageValues[@"altitude"]);
|
||||
SatelliteCount = int.Parse(messageValues[@"sats"]);
|
||||
WindDirection = GetWindDirection(double.Parse(messageValues[@"wd"]));
|
||||
WindSpeed = decimal.Parse(messageValues[@"ws"]);
|
||||
Humidity = decimal.Parse(messageValues[@"sh"]);
|
||||
HumidityTemperature = decimal.Parse(messageValues[@"st"]);
|
||||
Rain = decimal.Parse(messageValues[@"r"]);
|
||||
Pressure = decimal.Parse(messageValues[@"bp"]);
|
||||
PressureTemperature = decimal.Parse(messageValues[@"bt"]);
|
||||
LightLevel = decimal.Parse(messageValues[@"tl"]);
|
||||
Latitude = decimal.Parse(messageValues[@"glt"]);
|
||||
Longitude = decimal.Parse(messageValues[@"gln"]);
|
||||
Altitude = decimal.Parse(messageValues[@"ga"]);
|
||||
SatelliteCount = int.Parse(messageValues[@"gs"]);
|
||||
|
||||
DateTimeOffset.TryParseExact($"{messageValues[@"date"]} {messageValues[@"time"]}", "MM/dd/yyyy HH:mm:ss", null, DateTimeStyles.None, out var gpsTimestamp);
|
||||
GpsTimestamp = gpsTimestamp;
|
||||
var year = int.Parse(messageValues[@"gdy"]) + 2000;
|
||||
var month = int.Parse(messageValues[@"gdm"]);
|
||||
var day = int.Parse(messageValues[@"gdd"]);
|
||||
|
||||
var hour = int.Parse(messageValues[@"gth"]);
|
||||
var minute = int.Parse(messageValues[@"gtm"]);
|
||||
var second = int.Parse(messageValues[@"gts"]);
|
||||
|
||||
GpsTimestamp = new DateTimeOffset(year, month, day, hour, minute, second, 0, TimeSpan.Zero);
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
@@ -59,5 +64,61 @@ namespace ChrisKaczor.HomeMonitor.Weather.Models
|
||||
|
||||
return new WeatherMessage { Message = message };
|
||||
}
|
||||
|
||||
private static WindDirection GetWindDirection(double degrees)
|
||||
{
|
||||
switch (degrees)
|
||||
{
|
||||
case 0:
|
||||
return WindDirection.North;
|
||||
|
||||
case 22.5:
|
||||
return WindDirection.NorthNorthEast;
|
||||
|
||||
case 45:
|
||||
return WindDirection.NorthEast;
|
||||
|
||||
case 67.5:
|
||||
return WindDirection.EastNorthEast;
|
||||
|
||||
case 90:
|
||||
return WindDirection.East;
|
||||
|
||||
case 112.5:
|
||||
return WindDirection.EastSouthEast;
|
||||
|
||||
case 135:
|
||||
return WindDirection.SouthEast;
|
||||
|
||||
case 157.5:
|
||||
return WindDirection.SouthSouthEast;
|
||||
|
||||
case 180:
|
||||
return WindDirection.South;
|
||||
|
||||
case 202.5:
|
||||
return WindDirection.SouthSouthWest;
|
||||
|
||||
case 225:
|
||||
return WindDirection.SouthWest;
|
||||
|
||||
case 247.5:
|
||||
return WindDirection.WestSouthWest;
|
||||
|
||||
case 270:
|
||||
return WindDirection.West;
|
||||
|
||||
case 292.5:
|
||||
return WindDirection.WestNorthWest;
|
||||
|
||||
case 315:
|
||||
return WindDirection.NorthWest;
|
||||
|
||||
case 337.5:
|
||||
return WindDirection.NorthNorthWest;
|
||||
}
|
||||
|
||||
return WindDirection.None;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,8 +25,6 @@ namespace ChrisKaczor.HomeMonitor.Weather.Models
|
||||
|
||||
public decimal PressureTemperature { get; set; }
|
||||
|
||||
public decimal BatteryLevel { get; set; }
|
||||
|
||||
public decimal LightLevel { get; set; }
|
||||
|
||||
public decimal Latitude { get; set; }
|
||||
|
||||
@@ -5,22 +5,22 @@ namespace ChrisKaczor.HomeMonitor.Weather.Models
|
||||
[PublicAPI]
|
||||
public enum WindDirection
|
||||
{
|
||||
None = -1,
|
||||
North = 0,
|
||||
East = 90,
|
||||
South = 180,
|
||||
West = 270,
|
||||
NorthEast = 45,
|
||||
SouthEast = 135,
|
||||
SouthWest = 225,
|
||||
NorthWest = 315,
|
||||
NorthNorthEast = 23,
|
||||
EastNorthEast = 68,
|
||||
EastSouthEast = 113,
|
||||
SouthSouthEast = 158,
|
||||
SouthSouthWest = 203,
|
||||
WestSouthWest = 248,
|
||||
WestNorthWest = 293,
|
||||
NorthNorthWest = 338
|
||||
None,
|
||||
North,
|
||||
East,
|
||||
South,
|
||||
West,
|
||||
NorthEast,
|
||||
SouthEast,
|
||||
SouthWest,
|
||||
NorthWest,
|
||||
NorthNorthEast,
|
||||
EastNorthEast,
|
||||
EastSouthEast,
|
||||
SouthSouthEast,
|
||||
SouthSouthWest,
|
||||
WestSouthWest,
|
||||
WestNorthWest,
|
||||
NorthNorthWest
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user