Skip to content

Moduły

sq2ips edited this page Dec 15, 2024 · 15 revisions

Moduły

Moduły danych to poszczególne programy znajdujące się w katalogu modules/ pobierające konkretną informację ze źródła, zazwyczaj internetowego, przetwarzające ją i zwracające komunikat jako listę sampli do odtworzenia. Każdy plik modułu zawiera klasę będącą klasą podrzędną klasy SR0WXModule, musi zawierać ona także funkcję get_data(). Klasa jest konstruowana przez plik config.py, a poprzez konstruktor przekazywany jest jej moduł językowy (TODO) oraz jej parametry konfiguracyjne takie jak adres URL. Odbywa się to dla każdego modułu osobno, tutaj widać przykład:

# ----------------
# meteoalert_sq2ips
# ----------------
from meteoalert_sq2ips import MeteoAlertSq2ips
meteoalertsq2ips = MeteoAlertSq2ips(
    language=lang,
    service_url="https://meteo.imgw.pl/api/meteo/messages/v1/",
    city_id=["2262"],  # Gdynia
    # start_message="ostrzezenia_meteorologiczne_i_hydrologiczne_imgw",
    start_message="",
    hydronames=["W_G_6_PM", "Z_G_22_PM"],  # Gdynia i bałtyk
    short_validity=True,
)

Jest to inicjalizacja modułu meteoalert_sq2ips, przekazywany jest mu parametr language, czyli instancja modułu językowego (TODO), service_url czyli adres, z którego są pobierane dane, city_id czyli id miasta i inne.

Klasa jest konstruowana przez plik config.py a potem importowana przez rdzeń, który uruchamia funkcję get_data() i dalej przetwarza otrzymany komunikat. Opis konfiguracji poszczególnych modułów znajduje się w ich podstronach wypisanych tutaj().

Format zwracany

Funkcja get_data() zwraca komunikat w formie hasha:

{
   "message":wiadomość,
   "source":źródło
}

gdzie message to komunikat wygenerowany przez moduł a source to źródło danych np. IMGW, które jest odtwarzane na końcu komunikatu o ile zostanie ustawiony parametr read_sources_msg w pliku config.py.

W pliku config.py ustawia się też które moduły mają być użyte za pomocą listy modułów.

Nazewnictwo

Przyjeło się, że nazwy modułów składają się z dwóch części: nazwy i autora. W projekcie znajdują się na razie moduły autorstwa sq9atk i sq2ips. Nazwa pliku modułu jest pisana małymi literami z _ jako spacjami np. time_sq2ips.py, nazwa klasy modułu używa dużych liter bez spacji np. TimeSq2ips natomiast instancje klas w pliku config.py nazywa się tylko małymi literami np. timesq2ips.

Przykład

Moduł time_sq2ips.py ma zwracać aktualną godzinę w formacie: "raport_meteorologiczny z_godziny " jego funkcja get_data() sprawdza czas używając biblioteki datetime, np. 12:00, następnie konwertuje ją na słowa z użyciem modułu językowego np. dwónasta zero-zero. I tak zwracanym komunikatem modułu jest:

{
   "message":"raport_meteorologiczny z_godziny dwunasta zero-zero",
   "source":""
}

Lista wszystkich modułów

  • activity_map - moduł wysyłający marker na mapę wx.vhf.com.pl
  • time_sq2ips - prosty moduł podający godzinę
  • meteoalert_sq2ips - ostrzeżenia meteorologiczne IMGW z meteo.imgw.pl
  • antistorm_sq2ips - radar pogodowy z antistorm.eu
  • meteostation_sq2ips - dane ze stacji meteo przez UDP
  • meteo_yr_sq2ips - dane pogodowe z yr.no
  • openweather_sq9atk - dane pogodowe z OpenWeatherMap
  • meteo_sq9atk - Pogoda z pogoda.onet.pl
  • imgw_podest_sq2ips - dane z wodowskazów o przekroczeniach stanów rzek z hydro.imgw.pl
  • air_pollution_sq9atk - zanieczyszczenia powietrza z GIOŚ
  • airly_sq9atk - zanieczyszczenia powietrza z Airly
  • fires_sq2ips - informacja o stopniu zagrożenia pożarowego lasów z TRAX elektronik
  • spaceweather_sq2ips - informacje o pogodzie kosmicznej z SWPC
  • geo_magnetic_sq9atk - informacje o zaburzeniach geomagnetycznych z Meteofor
  • propagation_sq9atk - informacje o propagacji z RigReference
  • propagation_sq2ips - informacje o propagacji z Hamqsl
  • vhf_tropo_sq9atk - informacje o propagacji troposferycznej z dxinfocentre
  • radioactive_sq9atk - informacje o poziomie promieniowania jonizującego z Radioactive@Home
  • radioactive_sq2ips - informacje o poziomie promieniowania jonizującego z Państwowej Agencji Atomistyki
  • calendar_sq9atk - dane o wschodzie i zachodzie słońca z calendar.zoznam.sk
  • calendar_sq2ips - dane o wschodzie i zachodzie słońca wyliczane offline z użyciem biblioteki ephem
  • baltyk_sq2ips - moduł uruchamiany osobna z pliku konfiguracyjnego config_baltyk.py podający prognozę na obszary bałtyku z baltyk.imgw.pl
Clone this wiki locally