moduł informacje o propagacji

pull/1/head
Paweł Ostolski 2020-03-22 18:16:20 +01:00
rodzic 3ab59ed813
commit f702fcb526
21 zmienionych plików z 185 dodań i 32 usunięć

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -1,21 +1,53 @@
<?php
// TYLKO Z TEJ TABLICY GENEROWANE SĄ SAMPLE
// URUCHOMIENIE W KONSOLI:
// php index.php
$slownik = array(
array('lekkie zachmurzenie','lekkie_zachmurzenie'),
array('słowa do przeczytania','nazwa_pliku_wynikowego'),
);
/// OPEN WEATHER MAP
// TABLICE Z SAMPLAMI DO MODUŁÓW
/// PROPAGACJA
$slownikPropagacja = array(
array('rigreferens','rigreference'),
array('rigreferens kom','rigreference_com'),
array('noaa','noaa'),
array('dzień ','dzien'),
array('noc','noc'),
array('informacje o propagacji','informacje_o_propagacji'),
array('pasma','pasma'),
array('warunki podwyższone','warunki_podwyzszone'),
array('warunki normalne','warunki_normalne'),
array('warunki obniżone','warunki_obnizone'),
array('pasmo zamknięte','pasmo_zamkniete'),
array('160 metrów','160_metrow'),
array('80 metrów','80_metrow'),
array('40 metrów','40_metrow'),
array('20 metrów','20_metrow'),
array('10 metrów','10_metrow'),
array('6 metrów','6_metrow'),
);
/// OPEN WEATHER MAP
$slownikOpenWeathermap = array(
array('ołpenłeder map','open_weather_map'),
array('burza z lekkimi opadami deszczu'),
array('burza z opadami deszczu'),
array('burza z silnymi opadami deszczu'),
array('burza z silnymi opadami deszczu'),
array('niewielka burza'),
array('burza'),
array('silna burza'),
array('przelotna burza'),
array('przelotna burza'),
array('burza z lekką mżawką','burza_z_lekka_mzawka'),
array('burza z mżawką','burza_z_mzawka'),
array('burza z silną mżawką','burza_z_silna_mzawka'),
@ -31,10 +63,10 @@
array('ulewa z mżawką','ulewa_z_mzawka'),
array('lekkie opady deszczu'),
array('umiarkowane opady deszczu'),
array('umiarkowane opady deszczu'),
array('intensywne opady deszczu'),
array('bardzo intensywne opady deszczu'),
array('oberwanie chmury'),
array('bardzo intensywne opady deszczu'),
array('oberwanie chmury'),
array('marznący deszcz','marznacy_deszcz'),
array('lekka ulewa'),
array('ulewa'),
@ -54,7 +86,7 @@
array('zamglenia'),
array('zadymienie'),
array('mgła','mgla'),
array('mgła','mgla'),
array('kusz i piach','kurz_i_piach'),
array('mgła','mgla'),
array('piasek','piasek'),
@ -73,7 +105,7 @@
$slownikSDFSD = array(
array('wiatr'),
array('stacja pomiarowa'),
@ -84,7 +116,7 @@
array('pył zawieszony Pe eM 2.5','pyl__zawieszony_pm25'),
array('dwutlenek siarki','dwutlenek_siarki'),
array('ozon','ozon'),
array('Wrocław - Bartnicza','wrocl_aw___bartnicza'),
array('Wrocław - Korzeniowskiego','wrocl_aw___korzeniowskiego'),
array('Wrocław - Wiśniowa','wrocl_aw___wis_niowa'),
@ -269,11 +301,11 @@
array('mikrosjiwerta'),
array('na godzinę'),
array('setna'),
array('setne'),
array('setnych'),
array('dziesiąta'),
array('dziesiąte'),
array('dziesiątych'),
@ -308,18 +340,18 @@
array('mikrosjiwerta'),
array('na godzinę'),
array('setna'),
array('setne'),
array('setnych'),
array('dziesiąta'),
array('dziesiąte'),
array('dziesiątych'),
#geomagnetic sq9atk
array('sytuacja geomagnetyczna w regionie'),
array('sytuacja geomagnetyczna w regionie'),
array('po jutrze'),
@ -345,7 +377,7 @@
array('niezauważalne'),
array('znikome'),
array('lekkie'),
array('podwyższone'),
array('podwyższone'),
array('umiarkowane'),
array('duże'),
array('bardzo duże'),

Wyświetl plik

@ -30,7 +30,7 @@ log_handlers = [{
'backupCount': 30,
'delay': True,
'utc': True,
}
}
}]
serial_port = '/dev/ttyS0'
@ -53,7 +53,7 @@ from activity_map import ActivityMap
activitymap = ActivityMap(
service_url="http://wx.ostol.pl/map_requests?base=",
callsign="TEST",
latitude=54.655245,
latitude=54.655245,
longitude=19.268097,
hour_quarter=10,
above_sea_level=225,
@ -70,7 +70,7 @@ activitymap = ActivityMap(
from openweather_sq9atk import OpenWeatherSq9atk
openweathersq9atk = OpenWeatherSq9atk(
language = pl_google,
api_key = 'ee78911a0fb560b58144230f46e0d4b2',
api_key = 'ee78911a0fb560b58144230f46e0d4b2',
lat = 50,
lon = 20,
service_url = 'http://api.openweathermap.org/data/2.5/'
@ -289,14 +289,14 @@ from air_pollution_sq9atk import AirPollutionSq9atk
airpollutionsq9atk = AirPollutionSq9atk(
language=pl_google,
service_url="http://api.gios.gov.pl/pjp-api/rest/",
station_id = 402,
station_id = 402,
# LISTA STACJI Z NUMERAMI Z CAŁEJ POLSKI
# http://api.gios.gov.pl/pjp-api/rest/station/findAll
# poniższe TYLKO DLA KRAKOWA!!!!!
# do station_id wpada co 20 minut inna cyfra z przedziału 0,1,2
# dzięki czemu za każdym razem wybieramy inną stację pomiarową
# dzięki czemu za każdym razem wybieramy inną stację pomiarową
# station_id = 400 + (int(datetime.now().strftime('%M')))/20,
# 400 Kraków, Aleja Krasińskiego
# 401 Kraków, ul. Bujaka
@ -342,6 +342,17 @@ radioactivesq9atk = RadioactiveSq9atk(
## więcej czujników na stronie http://radioactiveathome.org/map/
)
# ---------------
# propagation_sq9atk
# ---------------
from propagation_sq9atk import PropagationSq9atk
propagationsq9atk = PropagationSq9atk(
language=pl_google,
service_url="https://rigreference.com/solar/img/tall",
)
# ---------------
# calendar_sq9atk
# ---------------
@ -372,13 +383,14 @@ calendarsq9atk = CalendarSq9atk(
# WŁĄCZONE MODUŁY
modules = [
activitymap,
#openweathersq9atk,
meteosq9atk, # ten moduł jest zastąpiony przez openweathersq9atk
#meteoalarmsq9atk,
#imgwpodestsq9atk,
#airpollutionsq9atk,
#geomagneticsq9atk,
#radioactivesq9atk,
#calendarsq9atk,
openweathersq9atk,
#meteosq9atk, # pogoda z onet-u, ten moduł jest zastąpiony przez openweathersq9atk
meteoalarmsq9atk,
imgwpodestsq9atk,
airpollutionsq9atk,
propagationsq9atk,
geomagneticsq9atk,
radioactivesq9atk,
calendarsq9atk,
]

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

BIN
pl_google/dzien.ogg 100644

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

BIN
pl_google/noaa.ogg 100644

Plik binarny nie jest wyświetlany.

BIN
pl_google/noc.ogg 100644

Plik binarny nie jest wyświetlany.

BIN
pl_google/pasma.ogg 100644

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -0,0 +1,109 @@
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import urllib2
import logging
import socket
from PIL import Image
from pprint import pprint
from sr0wx_module import SR0WXModule
class PropagationSq9atk(SR0WXModule):
"""Klasa pobierająca dane kalendarzowe"""
def __init__(self,language,service_url):
self.__service_url = service_url
self.__language = language
self.__logger = logging.getLogger(__name__)
self.__pixels = {
# niepotrzebne pasma można zaremowac znakiem '#'
160 : {'day' :{'x':50, 'y':60}, 'night':{'x':100, 'y':60}},
80 : {'day' :{'x':50, 'y':95}, 'night':{'x':100, 'y':95}},
40 : {'day' :{'x':50, 'y':140}, 'night':{'x':100, 'y':140}},
20 : {'day' :{'x':50, 'y':185}, 'night':{'x':100, 'y':185}},
10 : {'day' :{'x':50, 'y':230}, 'night':{'x':100, 'y':230}},
6 : {'day' :{'x':50, 'y':270}, 'night':{'x':100, 'y':270}},
}
self.__levels = {
'#17e624':'warunki_podwyzszone', # zielony
'#e6bc17':'warunki_normalne', # żółty
'#e61717':'warunki_obnizone', # czerwony
'#5817e6':'pasmo_zamkniete', #fioletowy
}
def rgb2hex(self, rgb):
return '#%02x%02x%02x' % rgb
def downloadImage(self, url):
try:
self.__logger.info("::: Odpytuję adres: " + url)
webFile = urllib2.urlopen(url, None, 30)
return Image.open(webFile)
except urllib2.URLError, e:
print e
except socket.timeout:
print "Timed out!"
return ""
def collectBandConditionsFromImage(self, image, dayTime):
imageData = image.load()
data = list()
for band in sorted(self.__pixels):
x = self.__pixels[band][dayTime]['x']
y = self.__pixels[band][dayTime]['y']
rgba = imageData[x,y]
color = self.rgb2hex(( rgba[0],rgba[1],rgba[2] ));
# można zaremowac wybraną grupę aby nie podawać info o konkretnych warunkach
if self.__levels[color] == 'warunki_podwyzszone':
string = str(band) + '_metrow' + ' ' + self.__levels[color]
data[:0] = [string]
if self.__levels[color] == 'warunki_normalne':
string = str(band) + '_metrow' + ' ' + self.__levels[color]
data[:0] = [string]
if self.__levels[color] == 'warunki_obnizone':
string = str(band) + '_metrow' + ' ' + self.__levels[color]
data[:0] = [string]
if self.__levels[color] == 'pasmo_zamkniete':
string = str(band) + '_metrow' + ' ' + self.__levels[color]
data[:0] = [string]
return data
def get_data(self):
image = self.downloadImage(self.__service_url)
self.__logger.info("::: Przetwarzam dane...\n")
message = " ".join([
" _ informacje_o_propagacji ",
" _ dzien _ ",
" _ pasma _ ",
" _ " .join( self.collectBandConditionsFromImage(image, 'day') ),
" _ noc _ ",
" _ pasma _ ",
" _ " .join( self.collectBandConditionsFromImage(image, 'night') ),
" _ "
])
return {
"message": message,
"source": "noaa",
}