From 35150803efe6e18460ad517e7741134302ac5a5e Mon Sep 17 00:00:00 2001 From: sparky8512 <76499194+sparky8512@users.noreply.github.com> Date: Sat, 26 Mar 2022 15:22:02 -0700 Subject: [PATCH] New validity check for prolonged obstruction data Reintroduce validity check for prolonged obstruction duration and interval, but based on checking for 0.0 and NaN values instead of relying on the valid flag in the gRPC message. Empirical evidence suggests that the dish reports (0, NaN) for those 2 values when it has no obstruction data with which to work, such as when there actually are no obstructions or when the dish has recently rebooted. This should fix #42. --- starlink_grpc.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/starlink_grpc.py b/starlink_grpc.py index d26f566..0c056d3 100644 --- a/starlink_grpc.py +++ b/starlink_grpc.py @@ -618,8 +618,13 @@ def status_data(context=None): if field.number < 65: alert_bits |= (1 if value else 0) << (field.number - 1) - obstruction_duration = status.obstruction_stats.avg_prolonged_obstruction_duration_s - obstruction_interval = status.obstruction_stats.avg_prolonged_obstruction_interval_s + if (status.obstruction_stats.avg_prolonged_obstruction_duration_s > 0.0 and not + math.isnan(status.obstruction_stats.avg_prolonged_obstruction_interval_s)): + obstruction_duration = status.obstruction_stats.avg_prolonged_obstruction_duration_s + obstruction_interval = status.obstruction_stats.avg_prolonged_obstruction_interval_s + else: + obstruction_duration = None + obstruction_interval = None return { "id": status.device_info.id,