د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
ډیری خدمتونه شتون لري چې د هوا معلومات چمتو کوي، مګر تاسو باید په کوم یو باور وکړئ؟ کله چې ما په مکرر ډول سایکل چلول پیل کړل، ما غوښتل د هغه ځای د هوا شرایطو په اړه دقیق معلومات ترلاسه کړم چیرې چې زه سواری کوم.

زما لومړی فکر دا و چې د سینسرونو سره یو کوچنی DIY هوا سټیشن جوړ کړم او له هغې څخه معلومات ترلاسه کړم. مګر ما "چیل بیا ایجاد نه کړ" او د هوا معلومات غوره کړل چې په ملکي هوایی چلند کې د تایید شوي معلوماتو سرچینې په توګه کارول کیږي، د بیلګې په توګه میتر (د هوا پېژندنې راپور) او دنده (TAF - د ترمینل ایروډروم وړاندوینه). په هوايي چلند کې، د سلګونو خلکو ژوند په هوا پورې اړه لري، نو وړاندوینې د امکان تر حده دقیقې دي.

دا معلومات په هر عصري هوایی ډګر کې د غږ له لارې XNUMX/XNUMX په فورمه کې خپریږي ATIS (د اتوماتیک ترمینل معلوماتو خدمت) او VOLMET (له فرانسوي څخه. vol - الوتنه او météo - هوا). لومړی په هوایی ډګر کې د ریښتیني هوا په اړه معلومات چمتو کوي ، او دوهم د راتلونکو 24-30 ساعتونو لپاره وړاندوینه چمتو کوي ، نه یوازې د نشر شوي هوایی ډګر کې ، بلکه په نورو کې هم.

د Vnukovo هوایی ډګر کې د ATIS عملیاتو بیلګه:

د VOLMET د Vnukovo هوایی ډګر کې د کار کولو یوه بیلګه

د اړوند حد لپاره هر وخت له تاسو سره د راډیو سکینر یا ټرانسیور وړل ګران دي ، او ما غوښتل په ټیلیګرام کې یو بوټ رامینځته کړم چې د تڼۍ په کلیک کولو سره تاسو ته اجازه درکوي ورته وړاندوینه ترلاسه کړئ. دا لږترلږه غیر عملي دی چې د دې لپاره جلا سرور تخصیص کړئ ، په بیله بیا ستاسو کور راسبیري ته غوښتنې لیږل.

له همدې امله ، ما پریکړه وکړه چې خدمت د شالید په توګه وکاروم د انتخاب کولو کلاوډ ځانګړتیاوې. د غوښتنو شمیر به د پام وړ وي، نو دا ډول خدمت به په حقیقت کې وړیا وي (زما د محاسبې له مخې، دا به د 22 غوښتنو لپاره 100 روبله وي).

د شاته تیاری

یو فنکشن جوړ کړئ

د کنټرول پینل کې my.selectel.ru لید خلاص کړئ د بادل پلیټ فارم او یوه نوې پروژه جوړه کړئ:

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
وروسته له دې چې پروژه جوړه شي، برخې ته لاړ شئ دندې:

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
ت theۍ کښته کړئ یو فنکشن جوړ کړئ او ورته مطلوب نوم ورکړئ:

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
د فشار وروسته یو فنکشن جوړ کړئ موږ به د جوړ شوي فنکشن استازیتوب ولرو:

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
مخکې لدې چې تاسو په Python کې د کوډ رامینځته کول پیل کړئ ، تاسو به اړتیا ولرئ په ټیلیګرام کې بوټ رامینځته کړئ. زه به تشریح نه کړم چې دا څنګه ترسره کیږي - تفصيلي لارښوونې شتون لري زموږ د پوهې اساس کې. زموږ لپاره اصلي شی د جوړ شوي بوټ نښه ده.

د کوډ چمتو کول

ما د ملي سمندري او اتموسفیر اداره (NOAA) د معتبر معلوماتو سرچینې په توګه غوره کړه. دا ساینسي اداره په ریښتیني وخت کې په خپل سرور کې د TXT بڼه کې ډاټا تازه کوي.

د METAR معلوماتو ترلاسه کولو لپاره لینک (د قضیې یادونه):

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

زما په قضیه کې، نږدې هوایی ډګر Vnukovo دی، د ICAO کوډ دی UUWW. تولید شوي URL ته تلل به لاندې ورکړي:

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

لومړۍ کرښه په ګرینویچ مین وخت کې د وړاندوینې اوسنی وخت دی. دویمه کرښه د اصلي هوا لنډیز دی. د ملکي هوايي چلند پیلوټان ​​به پدې پوهیدو کې کومه ستونزه ونلري چې د دې کرښې معنی څه ده، مګر موږ تشریح ته اړتیا لرو:

  • [UUWW] - ونوکووو، مسکو (روسیه - RU)؛
  • [101130Z] - د میاشتې 10مه ورځ، د سهار 11:30 بجې GMT؛
  • [31004MPS] - د باد لار 310 درجې، سرعت 4 m/s؛
  • [9999] - افقی لید 10 کیلومتره یا ډیر؛
  • [SCT048] - په 4800 فوټ (~ 1584 متر) کې ویشل شوي / ویشل شوي ورېځې؛
  • [//24] - د تودوخې درجه 24 درجې، د اوښ نقطه 13 درجې سانتي ګراد؛
  • [Q1014] - فشار (QNH) 1014 hectopascals (750 mm Hg)؛
  • [R01/000070] - په لین کې د چپکولو مجموعه 01 - 0,70؛
  • [NOSIG] - د پام وړ بدلونونو پرته.

راځئ چې د پروګرام کوډ لیکل پیل کړو. لومړی تاسو اړتیا لرئ افعال وارد کړئ غوښتنه وکړه и pytaf:

from urllib import request
import pytaf

متغیرونه مشخص کړئ او د کوډ کولو فعالیت چمتو کړئ:

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()

راځئ چې TAF ته لاړ شو (قضيه هم مهمه ده).

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

لکه څنګه چې په تیرو مثال کې، راځئ چې د 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

راځئ چې په ځانګړې توګه کرښو ته پام وکړو TEMPO и BECMG. TEMPO پدې معنی ده چې د ټاکل شوې مودې په جریان کې ریښتیني هوا به په دوره توګه بدلون ومومي. BECMG - هوا به په تدریجي ډول د یوې ټاکلې مودې دننه بدلون ومومي.

یعنی کرښه :

TEMPO 1012/1020 -TSRA BKN020CB

مانا به:

  • [//1012] - د 12 څخه تر 20 ساعتونو پورې (د ګرینویچ منځنۍ وخت)؛
  • [-TSRA] - تندر (TS = تندر) د باران سره (RA = باران) د ټیټ شدت (د منفي نښه)؛
  • [BKN020CB] - د پام وړ (BKN = مات شوی)، cumulonimbus (CB = cumulonimbus) ورېځې د بحر له سطحې څخه په 2000 فوټ (610 متره) کې.

د هوا د پیښو لپاره ډیری شرایط شتون لري، او د دوی یاد ساتل ستونزمن دي. د TAF غوښتنې لپاره کوډ په ورته ډول لیکل شوی.

بادل ته کوډ اپلوډ کول

د دې لپاره چې وخت ضایع نشي، راځئ چې زموږ د ذخیره کولو څخه د ټیلیګرام بوټ ټیمپلیټ واخلو cloud-telegram-bot. مخکې له مخکې چمتو شوی دی غوښتنې. txt и setup.py د سم لارښود جوړښت سره.

ځکه چې په کوډ کې به موږ ماډل ته لاسرسی ولرو pytaf، بیا د هغې نسخه باید سمدلاسه اضافه شي غوښتنې. txt

pytaf~=1.2.1

  • راځئ چې ترمیم ته لاړ شو bot/tele_bot.py. موږ ټول غیر ضروري شیان لرې کوو او زموږ کوډ اضافه کوو.

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)

  • موږ ټوله ډایرکټر په زپ آرشیف کې بسته کوو او رامینځته شوي فنکشن ته د کنټرول پینل ته ځو.
  • ټیله کول سمون او د کوډ سره آرشیف ډاونلوډ کړئ.

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ

  • په فایل کې اړونده لاره ډکه کړئ tele_bot (غزول .py ممکن مشخص نه وي) او د پای ټکی فنکشن (په مثال کې ورکړل شوی دا دی اصلي).
  • کړی د چاپیریال تغیرات یو متغیر ولیکئ ټوکن او دا د مطلوب ټیلیګرام بوټ نښه وټاکئ.
  • ټیله کول خوندي او پراخ کړئله هغې وروسته موږ برخې ته ځو محرک.
  • موږ سویچ واچوو د HTTP غوښتنهترڅو غوښتنه عامه شي.

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
موږ اوس په عامه توګه د فنکشن زنګ وهلو لپاره یو URL لرو. ټول هغه څه دي چې پاتې دي ویب هک تنظیم کړئ. زموږ بوټ ومومئ @SelectelServerless_bot په ټیلیګرام کې او خپل بوټ د کمانډ سره راجستر کړئ:

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

نتيجه

که هرڅه په سمه توګه ترسره شوي وي، ستاسو بوټ به سمدلاسه کار پیل کړي او د هوا هوا وروستي راپور مستقیم په میسینجر کې ښکاره کړي.

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ
البته، کوډ ښه کیدی شي، مګر حتی په اوسني حالت کې دا د اعتبار وړ سرچینې څخه د خورا دقیق موسم او وړاندوینې موندلو لپاره کافي دی.

تاسو به زموږ د کوډ بشپړ نسخه ومومئ په GitHub کې ذخیره.

د هوا خورا دقیق وړاندوینه: په بادل افعال کې د ټیلیګرام لپاره بوټ

سرچینه: www.habr.com

Add a comment