From dcb60e68988a85edf3ebcbbab1ca5131ecafe176 Mon Sep 17 00:00:00 2001 From: Ryan McGuire Date: Wed, 2 Apr 2025 19:49:32 -0400 Subject: [PATCH] add lightning sensor --- pkg/provider/awn/provider.go | 20 +++++++++++++++----- pkg/provider/awn/types.go | 6 ++++-- pkg/weather/types.go | 8 ++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/pkg/provider/awn/provider.go b/pkg/provider/awn/provider.go index e866f41..3edf0dc 100644 --- a/pkg/provider/awn/provider.go +++ b/pkg/provider/awn/provider.go @@ -20,11 +20,12 @@ const ( // Battery Sensors const ( - BattOutdoorSensor = "OutdoorSensor" - BattIndoorSensor = "IndoorSensor" - BattRainSensor = "RainSensor" - BattCO2Sensor = "CO2Sensor" - THSensor = "TempHumiditySensor" + BattOutdoorSensor = "OutdoorSensor" + BattIndoorSensor = "IndoorSensor" + BattRainSensor = "RainSensor" + BattCO2Sensor = "CO2Sensor" + BattLightningSensor = "LightningSensor" + THSensor = "TempHumiditySensor" ) func (awn *AWNProvider) Name() string { @@ -74,6 +75,10 @@ func MapAwnUpdate(awnUpdate *AmbientWeatherUpdate) *weather.WeatherUpdate { YearlyRainIn: awnUpdate.YearlyRainIn, TotalRainIn: awnUpdate.TotalRainIn, Batteries: []weather.BatteryStatus{ + { + Component: BattLightningSensor, + Status: awnUpdate.BattLightning, + }, { Component: BattOutdoorSensor, Status: awnUpdate.BattOut, @@ -138,6 +143,11 @@ func MapAwnUpdate(awnUpdate *AmbientWeatherUpdate) *weather.WeatherUpdate { {Name: THSensor + "7", TempF: awnUpdate.Temp7F, Humidity: awnUpdate.Humidity7}, {Name: THSensor + "8", TempF: awnUpdate.Temp8F, Humidity: awnUpdate.Humidity8}, }, + LightningData: &weather.LightningData{ + LightningDay: awnUpdate.LightningDay, + LightningDistance: awnUpdate.LightningDistance, + LightningTime: awnUpdate.LightningTime, + }, } } diff --git a/pkg/provider/awn/types.go b/pkg/provider/awn/types.go index 691e2b6..8199aa2 100644 --- a/pkg/provider/awn/types.go +++ b/pkg/provider/awn/types.go @@ -33,8 +33,10 @@ type AmbientWeatherUpdate struct { } type AmbientLightningData struct { - BattLightning *int `json:"batt_lightning,omitempty" schema:"batt_lightning"` - LightningDay *int `json:"lightning_day,omitempty" schema:"lightning_day"` + BattLightning *int `json:"batt_lightning,omitempty" schema:"batt_lightning"` + LightningDay *int `json:"lightning_day,omitempty" schema:"lightning_day" description:"count of lightning detections"` + LightningDistance *int `json:"lightning_distance,omitempty" schema:"lightning_distance" description:"distance in kilometers"` + LightningTime *int `json:"lightningTime,omitempty" schema:"lightningTime" description:"last lightning detection time"` } type AmbientTempHumiditySensors struct { diff --git a/pkg/weather/types.go b/pkg/weather/types.go index 5050e40..bb7c0a7 100644 --- a/pkg/weather/types.go +++ b/pkg/weather/types.go @@ -40,6 +40,14 @@ type WeatherUpdate struct { WindChillF *float64 // Extra Temp+Humidity Sensors TempHumiditySensors []*TempHumiditySensor + // Lightning Data + *LightningData +} + +type LightningData struct { + LightningDay *int // Count of detections + LightningDistance *int // Last detection distance [kilometers] + LightningTime *int // Last detection time } type TempHumiditySensor struct {