1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 10:39:53 +00:00
Munin-Contrib/plugins/weather/weather_temp_
HaseHarald b76f630440 fix(weather_temp_): Better match temperature and dew point
For whatever reason, sometimes linebreaks are only denoted as \n in the
querry-result. This lead to the temperature RegEx matching the dew point. This
caused the temperature to be reported the same as the dew point. These changes
should make the RegEx more specific and work consistently, no matter if
linebreaks are actual linebreaks or just \n.
2023-07-23 15:10:29 +02:00

46 lines
1.4 KiB
Python
Executable file

#!/usr/bin/env python3
"""
munin US NOAA weather plugin (https://tgftp.nws.noaa.gov)
Draws temperature/dew point in C.
Copy/link file as 'weather_temp_CODE', like: weather_temp_LOWW for Austria, Vienna.
Get the code by going to https://tgftp.nws.noaa.gov, selecting your
location, and copying the code from the address bar of your browser; should
be something like CODE.html.
Linux users might need to adjust the shebang.
"""
import sys
from urllib.request import urlopen
import re
url = 'https://tgftp.nws.noaa.gov/data/observations/metar/decoded/%s.TXT'
re_C = re.compile(r'Temperature:\s*[0-9]*\s*[F]*\s*\((-?\d+\.?\d?) C\)')
re_DewC = re.compile(r'Dew.*:\s*[0-9]*\s*[F]*\s*\((-?\d+\.?\d?) C\)')
code = sys.argv[0][(sys.argv[0].rfind('_') + 1):]
if not code:
sys.exit(1)
elif len(sys.argv) == 2 and sys.argv[1] == "autoconf":
print("yes")
elif len(sys.argv) == 2 and sys.argv[1] == "config":
print('graph_title Temperature and Dew Point at code %s' % code)
print('graph_vlabel Temperature and Dew Point in C')
print('graph_category sensors')
print('temperature.label Temperature')
print('dewpoint.label Dew Point')
print('graph_args --base 1000 -l 0')
else:
u = urlopen(url % code)
txt = str(u.read())
u.close()
C = re_C.findall(txt)[0]
DewC = re_DewC.findall(txt)[0]
print('temperature.value %s' % C)
print('dewpoint.value %s' % DewC)