mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 10:39:53 +00:00
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.
46 lines
1.4 KiB
Python
Executable file
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)
|