diff --git a/config.py b/config.py index 481ac63..357f523 100755 --- a/config.py +++ b/config.py @@ -55,7 +55,7 @@ log_handlers = [{ } }] -ctcss_tone = 88.5 +ctcss_tone = 0 serial_port = '/dev/ttyS0' serial_baud_rate = 9600 serial_signal = 'DTR' # lub 'RTS' @@ -100,6 +100,34 @@ openweathersq9atk = OpenWeatherSq9atk( service_url = 'http://api.openweathermap.org/data/2.5/' ) +# --------------- +# meteoalarm_sq9atk +# --------------- +from meteoalarm_sq9atk import MeteoalarmSq9atk +meteoalarmsq9atk = MeteoalarmSq9atk( + language = pl_google, + service_url="https://www.meteoalarm.pl/index.php?w=", + region_id='12' +) + # '14':'mazowieckie', + # '08':'lubuskie', + # '32':'zachodniopomorskie', + # '22':'pomorskie', + # '02':'dolnoslaskie', + # '16':'opolskie', + # '24':'slaskie', + # '12':'malopolskie', + # '18':'podkarpackie', + # '26':'swietokrzyskie', + # '10':'lodzkie', + # '14':'wielkopolskie', + # '04':'kujawsko-pomorskie', + # '28':'warminsko-mazurskie', + # '06':'lubelskie', + # '20':'podlaskie', + + + # ------------- # imgw_podest_sq9atk # ------------ @@ -375,6 +403,6 @@ modules = [ vhftroposq9atk, # vhf tropo propagacja propagationsq9atk, # propagacja KF geomagneticsq9atk, # zaburzenia geomagnetyczne - radioactivesq9atk, # promieniowanie jonizujące + #radioactivesq9atk, # promieniowanie jonizujące calendarsq9atk, # wschód słońca ] diff --git a/meteoalarm_sq9atk.py b/meteoalarm_sq9atk.py new file mode 100755 index 0000000..8e74f57 --- /dev/null +++ b/meteoalarm_sq9atk.py @@ -0,0 +1,98 @@ +#!/usr/bin/python -tt +# -*- coding: utf-8 -*- + +import re +import logging +import socket +import requests + +from pprint import pprint + +from sr0wx_module import SR0WXModule + +class MeteoalarmSq9atk(SR0WXModule): + """Klasa pobierająca informacje z meteoalarm.pl""" + + def __init__(self, language, service_url, region_id): + self.__service_url = service_url + self.__language = language + self.__region_id = region_id + self.__logger = logging.getLogger(__name__) + + self.__levels = { '1' : 'niski', '2' : 'sredni', '3' : 'wysoki' } + self.__regions = { + '14':'mazowieckiego', '08':'lubuskiego', '32':'zachodniopomorskiego', + '22':'pomorskiego', '02':'dolnoslaskiego', '16':'opolskiego', + '24':'slaskiego', '12':'malopolskiego', '18':'podkarpackiego', + '26':'swietokrzyskiego', '10':'lodzkiego', '14':'wielkopolskiego', + '04':'kujawsko-pomorskiego', '28':'warminsko-mazurskiego', '06':'lubelskiego', + '20':'podlaskiego', + } + self.__warnings = { + 'o01': 'burze', 'o02': 'deszcz_i_grad', 'o03': 'mgla', + 'o06': 'ulewny_deszcz', 'o08': 'zamiec_sniezna', 'o04': 'marznaca_mgla', + 'o11': 'snieg_lub_oblodzenie', 'o07': 'marznacy_deszcz', 'o08': 'sniezyca', + 'o09': 'przymrozki', 'o10': 'roztopy', 'o05': 'niskie_temperatury', + 'o13': 'silny_wiatr', 'o12': 'wysokie_temperatury', 'o14': 'zawieje_sniezne' + } + + def getHtmlFromUrl(self, url): + try: + self.__logger.info("::: Odpytuję adres: " + url) + resp = requests.get(url) + if resp.status_code == 200: + return resp.content + else: + print("HTML response error") + return None + + except requests.exceptions.RequestException as e: + print("HTML download error: %s" % e) + return None + + + def findDataInHtml(self, html): + self.__logger.info("::: przetwarzam dane...") + patternTable = re.compile(r']*class="[^>]*meteo_table[^>]*"[^>]*>.*?', re.DOTALL) + matchTable = patternTable.search(html) + + if matchTable: + tableHtml = matchTable.group(0) + + levelMatch = re.search(r'(\d+)', tableHtml, re.DOTALL) + level = levelMatch.group(1) if levelMatch else None + + imgMatch = re.search(r'
(.*?)
', tableHtml, re.DOTALL) + images = re.findall(r' 0: + message += " ".join([ + ' _ zagrozenia_meteorologiczne_dla_wojewodztwa ', + self.__regions[self.__region_id], + ' _ ', + ' '.join(self.__warnings[key] for key in warnings), + ' _ poziom_zagrozenia ', + ' '.join([self.__levels[level]]), + ' _ ' + ]) + + return { + "message": message, + "source": "meteoalarm_pl", + }