diff --git a/aprslib/parsing.py b/aprslib/parsing.py index b977129..d63d93a 100644 --- a/aprslib/parsing.py +++ b/aprslib/parsing.py @@ -162,10 +162,9 @@ def parse(packet): # \ - unused # ] - unused # ^ - unused - # _ - positionless weather report # { - user defined # } - 3rd party traffic - if packet_type in '#$%)*,B:_10090556c220s004g005t077r010p020P030h50b09900s5.5wRSW', + 'to': 'B', + 'via': '', + 'wx_raw_timestamp': '10090556', + "weather": { + "pressure": 990.0, + "humidity": 50, + "rain_1h": float(010.0 * mm_multiplier), + "rain_24h": float(020.0 * mm_multiplier), + "rain_since_midnight": float(030.0 * mm_multiplier), + "snow": float(5.5 * 25.4), + "temperature": float((77.0 - 32) / 1.8), + "wind_direction": 220, + "wind_gust": 5.0 * wind_multiplier, + "wind_speed": 4.0 * wind_multiplier + } + } + + packet = "A>B:_10090556c220s004g005t077r010p020P030h50b09900s5.5wRSW" + + self.assertEqual(expected, parse(packet)) + + packet2 = "A>B:_10090556c220s112g t r h b wRSW" + expected['raw'] = packet2 + expected['weather'] = { + "wind_direction": 220, + "wind_speed": 112 * wind_multiplier + } + + self.assertEqual(expected, parse(packet2)) + + packet3 = "A>B:_10090556c220s112g...t...r...p...P...b.....wRSW" + expected['raw'] = packet3 + expected['weather'] = { + "wind_direction": 220, + "wind_speed": 112 * wind_multiplier + } + + self.assertEqual(expected, parse(packet3)) + + def test_position_packet(self): + expected = "eCumulusWMR100", { + "pressure": 1029.4, + "humidity": 19, + "rain_since_midnight": 0.0, + "temperature": (48.0 - 32) / 1.8, + "wind_direction": 319, + "wind_gust": 4.0 * wind_multiplier, + "wind_speed": 1 * wind_multiplier + } + + result = _parse_weather_data("319/001g004t048r...p P000h19b10294eCumulusWMR100") + self.assertEqual(expected, result) + +if __name__ == '__main__': + unittest.main()