From 0adab132219baca460f16ccdfa0bdba964ac522b Mon Sep 17 00:00:00 2001 From: Ryan McGuire Date: Sun, 23 Mar 2025 11:43:31 -0400 Subject: [PATCH] skip nil sensors data in grpc --- TODO.md | 5 ++-- pkg/weather/grpc/mapupdate.go | 32 ++++++++++++--------- pkg/weather/recorder/recorders/redis/get.go | 2 +- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/TODO.md b/TODO.md index e7d23a0..b163b4c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,14 @@ # Issues -- [ ] Redis recorder panic +- [x] Redis recorder panic # TODO +- [ ] Stop Marshaling sensors / batteries with no data - [ ] Add json schema to CI and README -- [ ] Finish implementing weather GRPC - [ ] Update README - [ ] Add Grafana dashboard ## Done +- [x] Finish implementing weather GRPC - [x] Add json schema for config - [x] Add new spans - [x] Helm Chart diff --git a/pkg/weather/grpc/mapupdate.go b/pkg/weather/grpc/mapupdate.go index 32d2135..24fdbed 100644 --- a/pkg/weather/grpc/mapupdate.go +++ b/pkg/weather/grpc/mapupdate.go @@ -1,6 +1,8 @@ package grpc import ( + "slices" + pb "gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/api/v1alpha1/weather" "gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/util" "gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather" @@ -47,24 +49,28 @@ func UpdateToPbUpdate(u *weather.WeatherUpdate) *pb.WeatherUpdate { } func batteriesToPbBatteries(batteries []weather.BatteryStatus) []*pb.BatteryStatus { - pbBatteries := make([]*pb.BatteryStatus, len(batteries)) - for i, b := range batteries { - pbBatteries[i] = &pb.BatteryStatus{ - Component: b.Component, - Status: util.Int32ptr(b.Status), + pbBatteries := make([]*pb.BatteryStatus, 0, len(batteries)) + for _, b := range batteries { + if b.Status != nil { + pbBatteries = append(pbBatteries, &pb.BatteryStatus{ + Component: b.Component, + Status: util.Int32ptr(b.Status), + }) } } - return pbBatteries + return slices.Clip(pbBatteries) } func thSensorsToPbSensors(sensors []*weather.TempHumiditySensor) []*pb.TempHumiditySensor { - pbSensors := make([]*pb.TempHumiditySensor, len(sensors)) - for i, s := range sensors { - pbSensors[i] = &pb.TempHumiditySensor{ - Name: s.Name, - TempF: s.TempF, - Humidity: util.Int32ptr(s.Humidity), + pbSensors := make([]*pb.TempHumiditySensor, 0, len(sensors)) + for _, s := range sensors { + if s.TempF != nil || s.Humidity != nil { + pbSensors = append(pbSensors, &pb.TempHumiditySensor{ + Name: s.Name, + TempF: s.TempF, + Humidity: util.Int32ptr(s.Humidity), + }) } } - return pbSensors + return slices.Clip(pbSensors) } diff --git a/pkg/weather/recorder/recorders/redis/get.go b/pkg/weather/recorder/recorders/redis/get.go index 7f3af16..b9cf410 100644 --- a/pkg/weather/recorder/recorders/redis/get.go +++ b/pkg/weather/recorder/recorders/redis/get.go @@ -77,7 +77,7 @@ func (r *RedisRecorder) get(ctx context.Context, req *pb.GetWeatherRequest) ( Int("updatesFiltered", len(updates)-len(filtered)). Msg("updates retrieved from redis") - return updates, err + return filtered, err } func jsonDatasToUpdates(datas []string) ([]*weather.WeatherUpdate, error) {