From 9dcebc58b8e05a74c081f47f3e3569e09f4115dd Mon Sep 17 00:00:00 2001 From: XANTRONIX Industrial Date: Sat, 1 Mar 2025 17:55:50 -0500 Subject: [PATCH] Fix height/pressure calculation --- lib/xmet/rawins.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/xmet/rawins.py b/lib/xmet/rawins.py index cd4c551..552f59c 100644 --- a/lib/xmet/rawins.py +++ b/lib/xmet/rawins.py @@ -38,13 +38,6 @@ class RawinsObs(): def read(self, value: str): self.values.append(value) - TTAA_HEIGHTS = { - '00': 1000, '92': 925, '85': 850, - '70': 700, '50': 500, '40': 400, - '30': 300, '25': 250, '20': 200, - '15': 150, '10': 100, - } - def parse_timestamp(self, value: str): if value[0:2] == '//': return None @@ -124,16 +117,36 @@ class RawinsObs(): 'speed': wind_speed } + TTAA_HEIGHTS = { + '00': 1000, '92': 925, '85': 850, + '70': 700, '50': 500, '40': 400, + '30': 300, '25': 250, '20': 200, + '15': 150, '10': 100, + } + + def calc_1000mb_height(self, num: float): + if num >= 500: + return 0 - (num - 500) + + return num + def parse_height_pressure(self, value: str): token = value[0:2] + num = value[2:5] - if value[2:5] == '///': + if num == '///': return None + if token == '00': + return { + 'height': self.calc_1000mb_height(float(num)), + 'pressure': 1000 + } + if token in self.TTAA_HEIGHTS: return { - 'height': self.TTAA_HEIGHTS[token], - 'pressure': float(value[2:5]) + 'height': float(num), + 'pressure': self.TTAA_HEIGHTS[token] } PRESSURE_SIG = {