add lightning sensor
All checks were successful
Build and Publish / check-chart (push) Successful in 12s
Build and Publish / helm-release (push) Has been skipped
Build and Publish / release (push) Successful in 4m16s

This commit is contained in:
Ryan McGuire 2025-04-02 20:01:21 -04:00
parent dcb60e6898
commit 35374ab6e0
3 changed files with 41 additions and 27 deletions

View File

@ -37,6 +37,10 @@ type WeatherMetrics struct {
DewPointF metric.Float64Gauge DewPointF metric.Float64Gauge
WindChillF metric.Float64Gauge WindChillF metric.Float64Gauge
// Lightning Sensor
LightningCountDay metric.Int64Gauge
LightningLastDistance metric.Int64Gauge
// Temp and Humidity Sensors // Temp and Humidity Sensors
SensorTempF metric.Float64Gauge SensorTempF metric.Float64Gauge
SensorHumidity metric.Int64Gauge SensorHumidity metric.Int64Gauge
@ -74,6 +78,8 @@ func (wm *WeatherMetrics) Update(u *WeatherUpdate) {
wm.recorder.Record(&RecordOpts{Float64Gauge: wm.BaromAbsoluteIn, FloatVal: u.BaromAbsoluteIn, Field: FieldBaromAbsoluteIn, Attributes: attributes, Station: u.StationConfig}) wm.recorder.Record(&RecordOpts{Float64Gauge: wm.BaromAbsoluteIn, FloatVal: u.BaromAbsoluteIn, Field: FieldBaromAbsoluteIn, Attributes: attributes, Station: u.StationConfig})
wm.recorder.Record(&RecordOpts{Float64Gauge: wm.DewPointF, FloatVal: u.DewPointF, Field: FieldDewPointF, Attributes: attributes, Station: u.StationConfig}) wm.recorder.Record(&RecordOpts{Float64Gauge: wm.DewPointF, FloatVal: u.DewPointF, Field: FieldDewPointF, Attributes: attributes, Station: u.StationConfig})
wm.recorder.Record(&RecordOpts{Float64Gauge: wm.WindChillF, FloatVal: u.WindChillF, Field: FieldWindChillF, Attributes: attributes, Station: u.StationConfig}) wm.recorder.Record(&RecordOpts{Float64Gauge: wm.WindChillF, FloatVal: u.WindChillF, Field: FieldWindChillF, Attributes: attributes, Station: u.StationConfig})
wm.recorder.Record(&RecordOpts{Int64Gauge: wm.LightningCountDay, IntVal: u.LightningDay, Field: FieldLightningDay, Attributes: attributes, Station: u.StationConfig})
wm.recorder.Record(&RecordOpts{Int64Gauge: wm.LightningLastDistance, IntVal: u.LightningDistance, Field: FieldLightningDistance, Attributes: attributes, Station: u.StationConfig})
wm.RecordBatteries(u, attributes) wm.RecordBatteries(u, attributes)
wm.RecordTempHumiditySensors(u, attributes) wm.RecordTempHumiditySensors(u, attributes)

View File

@ -66,6 +66,12 @@ func MustInitMetrics(appCtx context.Context) *WeatherMetrics {
wm.WindChillF, _ = wm.meter.Float64Gauge(MetricPrefix+"_wind_chill_f", wm.WindChillF, _ = wm.meter.Float64Gauge(MetricPrefix+"_wind_chill_f",
metric.WithDescription("Wind Chill in Faherenheit")) metric.WithDescription("Wind Chill in Faherenheit"))
// Lightning Sensor
wm.LightningCountDay, _ = wm.meter.Int64Gauge(MetricPrefix+"_lightning_day",
metric.WithDescription("Count of lightning strikes for current day"))
wm.LightningLastDistance, _ = wm.meter.Int64Gauge(MetricPrefix+"_lightning_last_distance",
metric.WithDescription("Last measured lightning distance"))
// Temp and Humidity Sensors // Temp and Humidity Sensors
wm.SensorTempF, _ = wm.meter.Float64Gauge(MetricPrefix+"_sensor_temp_f", wm.SensorTempF, _ = wm.meter.Float64Gauge(MetricPrefix+"_sensor_temp_f",
metric.WithDescription("Temperature Sensor in Faherenheit")) metric.WithDescription("Temperature Sensor in Faherenheit"))

View File

@ -65,33 +65,35 @@ type BatteryStatus struct {
// keep and drop lists // keep and drop lists
// TODO: Use refelct/ast to generate code // TODO: Use refelct/ast to generate code
const ( const (
FieldDateUTC = "DateUTC" FieldDateUTC = "DateUTC"
FieldStationType = "StationType" FieldStationType = "StationType"
FieldTempOutdoorF = "TempOutdoorF" FieldTempOutdoorF = "TempOutdoorF"
FieldTempIndoorF = "TempIndoorF" FieldTempIndoorF = "TempIndoorF"
FieldHumidityOudoor = "HumidityOudoor" FieldHumidityOudoor = "HumidityOudoor"
FieldHumidityIndoor = "HumidityIndoor" FieldHumidityIndoor = "HumidityIndoor"
FieldWindSpeedMPH = "WindSpeedMPH" FieldWindSpeedMPH = "WindSpeedMPH"
FieldWindGustMPH = "WindGustMPH" FieldWindGustMPH = "WindGustMPH"
FieldMaxDailyGust = "MaxDailyGust" FieldMaxDailyGust = "MaxDailyGust"
FieldWindDir = "WindDir" FieldWindDir = "WindDir"
FieldWindDirAvg10m = "WindDirAvg10m" FieldWindDirAvg10m = "WindDirAvg10m"
FieldUV = "UV" FieldUV = "UV"
FieldSolarRadiation = "SolarRadiation" FieldSolarRadiation = "SolarRadiation"
FieldHourlyRainIn = "HourlyRainIn" FieldHourlyRainIn = "HourlyRainIn"
FieldEventRainIn = "EventRainIn" FieldEventRainIn = "EventRainIn"
FieldDailyRainIn = "DailyRainIn" FieldDailyRainIn = "DailyRainIn"
FieldWeeklyRainIn = "WeeklyRainIn" FieldWeeklyRainIn = "WeeklyRainIn"
FieldMonthlyRainIn = "MonthlyRainIn" FieldMonthlyRainIn = "MonthlyRainIn"
FieldYearlyRainIn = "YearlyRainIn" FieldYearlyRainIn = "YearlyRainIn"
FieldTotalRainIn = "TotalRainIn" FieldTotalRainIn = "TotalRainIn"
FieldBatteries = "Batteries" FieldBatteries = "Batteries"
FieldBaromRelativeIn = "BaromRelativeIn" FieldBaromRelativeIn = "BaromRelativeIn"
FieldBaromAbsoluteIn = "BaromAbsoluteIn" FieldBaromAbsoluteIn = "BaromAbsoluteIn"
FieldDewPointF = "DewPointF" FieldDewPointF = "DewPointF"
FieldWindChillF = "WindChillF" FieldWindChillF = "WindChillF"
FieldSensorTempF = "SensorTempF" FieldSensorTempF = "SensorTempF"
FieldSensorHumidity = "SensorHumidity" FieldSensorHumidity = "SensorHumidity"
FieldLightningDay = "LightningDay"
FieldLightningDistance = "LightningDistance"
) )
func (u *WeatherUpdate) GetStationName() string { func (u *WeatherUpdate) GetStationName() string {