Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Akwai ayyuka da yawa waɗanda ke ba da bayanan yanayi, amma wanne ya kamata ku amince da shi? Lokacin da na fara hawan keke akai-akai, ina so in sami cikakkun bayanai game da yanayin yanayi a wurin da nake hawa.

Tunanina na farko shine in gina ƙaramin tashar yanayi na DIY tare da na'urori masu auna firikwensin da karɓar bayanai daga gare ta. Amma ban “sake sabunta dabaran ba” kuma na zaɓi bayanan yanayi da ake amfani da su a cikin jiragen sama a matsayin tushen ingantattun bayanai, wato. METAR ( Rahoton METeorological Aerodrome Report) da Taf (TAF - Hasashen Aerodrome na Terminal). A cikin jiragen sama, rayukan daruruwan mutane sun dogara ne akan yanayi, don haka hasashen yana da daidai gwargwadon yiwuwar.

Ana watsa wannan bayanin XNUMX/XNUMX ta murya a kowane filin jirgin sama na zamani a cikin tsari ATIS (Sabis ɗin Bayanan Tasha ta atomatik) da VOLMET (daga Faransa. kundi - jirgin da Météo - yanayi). Na farko yana ba da bayanai game da ainihin yanayi a filin jirgin sama, na biyu kuma yana ba da kisa na sa'o'i 24-30 na gaba, ba kawai a filin watsa shirye-shirye ba, har ma a wasu.

Misali na aiki ATIS a filin jirgin sama na Vnukovo:

Misali na yadda VOLMET ke aiki a filin jirgin sama na Vnukovo

Ba shi da sauƙi don ɗaukar na'urar daukar hotan rediyo ko transceiver tare da ku kowane lokaci don kewayon da ya dace, kuma ina so in ƙirƙiri bot a cikin Telegram wanda, a danna maɓallin, yana ba ku damar samun hasashen iri ɗaya. Aƙalla bai dace ba don ware sabar daban don wannan, da kuma aika buƙatun zuwa Rasberi na gida.

Saboda haka, na yanke shawarar yin amfani da sabis ɗin azaman abin baya Fasalolin Cloud Selectel. Yawan buƙatun za su kasance marasa ƙarfi, don haka irin wannan sabis ɗin zai zama kusan kyauta (bisa ga ƙididdigewa, zai zama 22 rubles don buƙatun 100).

Shiri na baya

Ƙirƙiri aiki

A cikin kula da panel my.selectel.ru bude kallo dandalin girgije kuma ƙirƙirar sabon aiki:

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Bayan an ƙirƙiri aikin, je zuwa sashin Ayyuka:

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Danna maɓallin Ƙirƙiri aiki kuma a ba shi sunan da ake so:

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Bayan danna Ƙirƙiri aiki za mu sami wakilcin aikin da aka ƙirƙira:

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Kafin ka fara ƙirƙirar code a Python, kuna buƙatar ƙirƙirar bot a cikin Telegram. Ba zan bayyana yadda ake yin hakan ba - akwai cikakkun bayanai a tushen ilimin mu. Babban abu a gare mu shine alamar bot ɗin da aka halicce.

Ana shirya lambar

Na zabi National Oceanic and Atmospheric Administration (NOAA) a matsayin tushen ingantaccen bayanai. Wannan hukumar kimiyya tana sabunta bayanai a ainihin lokacin akan sabar ta a tsarin TXT.

Hanyar haɗi don samun bayanan METAR (lura da lamarin):

https://tgftp.nws.noaa.gov/data/observations/metar/stations/<код аэропорта по ICAO>.TXT

A cikin akwati na, filin jirgin sama mafi kusa shine Vnukovo, lambar ICAO ita ce UUWW. Je zuwa URL ɗin da aka ƙirƙira zai ba da mai zuwa:

2020/08/10 11:30
UUWW 101130Z 31004MPS 9999 SCT048 24/13 Q1014 R01/000070 NOSIG

Layin farko shine lokacin hasashen na yanzu a cikin Ma'anar Greenwich. Layi na biyu shine taƙaitaccen yanayi na ainihi. Matukin jirgin saman farar hula ba za su sami matsala fahimtar abin da wannan layin yake nufi ba, amma muna buƙatar bayani:

  • [UUWW] - Vnukovo, Moscow (Rasha - RU);
  • [101130Z] - Ranar 10 ga wata, 11:30 na safe agogon GMT;
  • [31004MPS] - Hanyar iska 310 digiri, gudun 4 m / s;
  • [9999] - hangen nesa a kwance 10 km ko fiye;
  • [SCT048] - gajimare mai tarwatsewa / watsewa a ƙafa 4800 (~ 1584m);
  • [24/13] - zazzabi 24 ° C, raɓa 13 ° C;
  • [Q1014] - matsa lamba (QNH) 1014 hectopascals (750 mm Hg);
  • [R01/000070] - coefficient na mannewa akan layi 01 - 0,70;
  • [NASIGO] - ba tare da manyan canje-canje ba.

Bari mu fara rubuta lambar shirin. Da farko kuna buƙatar shigo da ayyuka request и pytaf:

from urllib import request
import pytaf

Ƙayyade masu canji kuma shirya aikin yankewa:

URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"

def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()

Mu matsa zuwa TAF (harka ma yana da mahimmanci).

https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/<код аэропорта по ICAO>.TXT

Kamar yadda yake a cikin misali na baya, bari mu kalli hasashen a filin jirgin sama na Vnukovo:

2020/08/10 12:21
TAF UUWW 101050Z 1012/1112 28003G10MPS 9999 SCT030 TX25/1012Z TN15/1103Z 
      TEMPO 1012/1020 -TSRA BKN020CB 
      BECMG 1020/1021 FEW007 BKN016 
      TEMPO 1021/1106 -SHRA BKN020CB PROB40 
      TEMPO 1021/1106 -TSRA BKN020CB 
      BECMG 1101/1103 34006G13MPS

Bari mu kula da layukan musamman SAURARA и BECMG. TEMPO yana nufin cewa ainihin yanayin lokacin ƙayyadadden lokacin zai canza lokaci-lokaci. BECMG - yanayin zai canza sannu a hankali cikin ƙayyadadden lokaci.

Wato layin:

TEMPO 1012/1020 -TSRA BKN020CB

Zai nufi:

  • [1012/1020] - tsakanin sa'o'i 12 da 20 (Lokacin Ma'anar Greenwich);
  • [-TSRA] - tsawa (TS = thunderstorm) tare da ruwan sama (RA = ruwan sama) na ƙananan ƙarfi (alamar cirewa);
  • [BKN020CB] - mahimmanci (BKN = karye), cumulonimbus (CB = cumulonimbus) gajimare a ƙafa 2000 (mita 610) sama da matakin teku.

Akwai sharuɗɗa da yawa don abubuwan mamaki na yanayi, kuma tunawa da su yana da wahala. An rubuta lambar don buƙatar TAF ta irin wannan hanya.

Ana loda lambar zuwa gajimare

Domin kada mu ɓata lokaci, bari mu ɗauki samfurin bot na telegram daga ma'ajiyar mu Cloud-telegram-bot. Akwai wanda aka riga aka shirya bukatun.txt и saita.py tare da daidai tsarin shugabanci.

Tun da a cikin code za mu shiga cikin module pytaf, to sai a sanya sigarsa nan take bukatun.txt

pytaf~=1.2.1

  • Mu ci gaba zuwa gyara bot/tele_bot.py. Muna cire duk abubuwan da ba dole ba kuma muna ƙara lambar mu.

import os
from urllib import request
import telebot
import pytaf
 
TOKEN = os.environ.get('TOKEN')
URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"
 
bot = telebot.TeleBot(token=TOKEN, threaded=False)
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.row('/start', '/get_metar', '/get_taf')
 
def start(message):
    msg = "Привет. Это бот для получения авиационного прогноза погоды " 
          "с серверов NOAA. Бот настроен на аэропорт Внуково (UUWW)."
    bot.send_message(message.chat.id, msg, reply_markup=keyboard)
 
def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()
 
def get_metar(message):
    # Fetch info from server.
    code = request.urlopen(URL_METAR).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def get_taf(message):
    # Fetch info from server.
    code = request.urlopen(URL_TAF).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def route_command(command, message):
    """
    Commands router.
    """
    if command == '/start':
        return start(message)
    elif command == '/get_metar':
        return get_metar(message)
    elif command == '/get_taf':
        return get_taf(message)
 
def main(**kwargs):
    """
    Serverless environment entry point.
    """
    print(f'Received: "{kwargs}"')
    message = telebot.types.Update.de_json(kwargs)
    message = message.message or message.edited_message
    if message and message.text and message.text[0] == '/':
        print(f'Echo on "{message.text}"')
        route_command(message.text.lower(), message)

  • Muna tattara dukan kundin adireshi a cikin ma'ajiyar ZIP kuma je zuwa sashin sarrafawa zuwa aikin da aka ƙirƙira.
  • Turawa Shirya kuma zazzage ma'ajin tare da lambar.

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije

  • Cika hanyar dangi a cikin fayil ɗin tele_bot (tsawo .py maiyuwa ba za a iya bayyana shi ba) da kuma aikin ƙarshen (a cikin misalin da aka bayar wannan shine main).
  • sashe Canje-canjen Muhalli rubuta m Token kuma sanya masa alamar bot ɗin telegram da ake so.
  • Turawa Ajiye kuma Fadada, bayan haka za mu je sashin masu jawo hankali.
  • Mun sanya canji bukatar HTTPdon bayyana bukatar jama'a.

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Yanzu muna da URL don kiran aikin a fili. Abin da ya rage shi ne saita webhook. Nemo bot ɗin mu @SelectelServerless_bot a cikin Telegram kuma kuyi rijistar bot tare da umarni:

/setwebhook <you bot token> <public URL of your function>

sakamakon

Idan an yi komai daidai, bot ɗinku zai fara aiki nan da nan kuma ya nuna sabon rahoton yanayin jirgin sama kai tsaye a cikin manzo.

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije
Tabbas, ana iya inganta lambar, amma ko da a halin da ake ciki yanzu ya isa ya gano mafi kyawun yanayi da tsinkaya daga tushen da aka amince.

Za ku sami cikakken sigar lambar a cikin mu wuraren ajiya akan GitHub.

Mafi ingancin hasashen yanayi: bot don Telegram akan ayyukan girgije

source: www.habr.com

Add a comment