Start to parse individual values

This commit is contained in:
XANTRONIX 2025-02-28 21:28:12 -05:00
parent 908f1f7024
commit bfc178481a

View file

@ -15,20 +15,64 @@ class RawinsReaderException(Exception):
class RawinsSample():
def __init__(self):
self.surface: bool = False
self.height: float = None
self.pressure: float = None
self.temp: float = None
self.dewpoint: float = None
self.surface: bool = False
self.height: float = None
self.pressure: float = None
self.temp: float = None
self.dewpoint: float = None
self.wind_dir: float = None
self.wind_speed: float = None
class RawinsObs():
def __init__(self, kind: str):
self.kind: str = kind
self.values: list[str] = list()
self.kind: str = kind
self.timestamp: datetime.datetime = None
self.height: float = None
self.surface: float = None
self.values: list[str] = list()
def read(self, value: str):
self.values.append(value)
HEIGHTS = {
'TTAA': lambda n: n * 100
}
def parse_timestamp(self, value: str):
day = int(value[0:2]) - 50
hour = int(value[2:4])
now = datetime.datetime.now(datetime.UTC)
self.timestamp = datetime.datetime(
year = now.year,
month = now.month,
day = day
)
self.height = self.HEIGHTS[self.kind](int(value[4]))
def parse_surface(self, value: str):
if value[0:2] == '99':
self.surface = float(value[2:5])
def parse_temp_dewpoint(self, value: str):
tenths = int(value[2])
sign = -1 if tenths % 1 == 0 else 1
temp = sign * 0.1 * float(value[0:3])
dda = int(value[3:5])
dd = dda * 0.1 if dda <= 50 else dda - 50
dewpoint = temp - dd
return {
'temp': temp,
'dewpoint': dewpoint
}
def parse_ttaa(self):
pass
class RawinsChunk():
def __init__(self,
wfo: str,