سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
اتي ڪيتريون ئي خدمتون آھن جيڪي موسم جي معلومات مهيا ڪن ٿيون، پر توھان کي ڪنھن تي ڀروسو ڪرڻ گھرجي؟ جڏهن مون اڪثر سائيڪل هلائڻ شروع ڪئي، ته مون چاهيو ٿي ته ان جاءِ جي موسمي حالتن جي باري ۾ سڀ کان وڌيڪ صحيح ڄاڻ حاصل ڪريان، جتي آئون سواري ڪريان.

منهنجو پهريون خيال هو ته هڪ ننڍڙو DIY موسم اسٽيشن سينسر سان ٺاهيو ۽ ان مان ڊيٽا حاصل ڪيو. پر مون ”رِينوينٽ دي ويل“ نه ڪيو ۽ موسم جي معلومات کي چونڊيو جيڪو سول ايوي ايشن ۾ تصديق ٿيل ڊيٽا جو ذريعو طور استعمال ڪيو ويندو آهي، يعني ميٽر (METeorological Aerodrome رپورٽ) ۽ TAF (TAF - ٽرمينل ايروڊروم جي اڳڪٿي). هوائي اڏي ۾، سوين ماڻهن جون زندگيون موسم تي منحصر آهن، تنهنڪري اڳڪٿيون ممڪن طور تي صحيح آهن.

اها معلومات هر جديد هوائي اڏي تي آواز ذريعي XNUMX/XNUMX فارم ۾ نشر ڪئي ويندي آهي ATIS (خودڪار ٽرمينل انفارميشن سروس) ۽ VOLMET (فرانسيسي کان. ٻ - پرواز ۽ météo - موسم). پهرين هوائي فيلڊ تي حقيقي موسم جي باري ۾ معلومات مهيا ڪري ٿي، ۽ ٻيو ايندڙ 24-30 ڪلاڪن لاء اڳڪٿي فراهم ڪري ٿو، نه رڳو نشر ٿيندڙ ايئر فيلڊ تي، پر ٻين تي پڻ.

Vnukovo ايئرپورٽ تي ATIS آپريشن جو مثال:

هڪ مثال ڪيئن VOLMET Vnukovo ايئرپورٽ تي ڪم ڪري ٿو

توهان سان لاڳاپيل رينج لاءِ هر وقت ريڊيو اسڪينر يا ٽرانسيور کڻي وڃڻ مشڪل آهي، ۽ مان ٽيليگرام ۾ هڪ بوٽ ٺاهڻ چاهيان ٿو، جيڪو هڪ بٽڻ جي ڪلڪ تي، توهان کي ساڳي اڳڪٿي حاصل ڪرڻ جي اجازت ڏئي ٿو. اهو گهٽ ۾ گهٽ غير عملي آهي انهي لاءِ هڪ الڳ سرور مختص ڪرڻ، انهي سان گڏ توهان جي گهر Raspberry ڏانهن درخواستون موڪلڻ.

تنهن ڪري، مون هڪ پس منظر طور خدمت استعمال ڪرڻ جو فيصلو ڪيو Selectel Cloud خاصيتون. درخواستن جو تعداد ناگزير ٿيندو، تنهنڪري اهڙي خدمت بلڪل مفت هوندي (منهنجي حساب سان، 22 درخواستن لاء 100 روبل هوندي).

پس منظر جي تياري

هڪ فنڪشن ٺاهيو

ڪنٽرول پينل ۾ my.selectel.ru نظارو کوليو Cloud پليٽ فارم ۽ هڪ نئون منصوبو ٺاهيو:

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
منصوبي جي ٺهڻ کان پوء، سيڪشن ڏانهن وڃو ڪارڪن:

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
بٽڻ کي دٻايو هڪ فنڪشن ٺاهيو ۽ ان کي مطلوب نالو ڏيو:

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
دٻائڻ کان پوءِ هڪ فنڪشن ٺاهيو اسان وٽ ٺهيل فنڪشن جي نمائندگي هوندي:

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
پٿون ۾ ڪوڊ ٺاهڻ شروع ڪرڻ کان پهريان، توهان کي ٽيليگرام ۾ هڪ بوٽ ٺاهڻ جي ضرورت پوندي. مان بيان نه ڪندس ته اهو ڪيئن ڪيو ويو آهي - تفصيلي هدايتون آهن اسان جي علم جي بنياد ۾. اسان لاءِ بنيادي شيءِ ٺهيل بوٽ جو نشان آهي.

ڪوڊ تيار ڪرڻ

مون نيشنل اوشيئنڪ اينڊ ايٽموسفيرڪ ايڊمنسٽريشن (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] - Vnukovo، ماسڪو (روس - RU)؛
  • [101130Z] - مهيني جو 10 هون ڏينهن، 11:30 ايم GMT؛
  • [31004MPS] - واء جو رخ 310 درجا، رفتار 4 m/s؛
  • [9999] - افقي نمائش 10 ڪلوميٽر يا وڌيڪ؛
  • [SCT048] - 4800 فوٽ (~ 1584 ميٽر) تي ٽڙيل پکڙيل ڪڪر؛
  • [24/13] - گرمي پد 24 ° سي، اوس پوائنٽ 13 ° سي؛
  • [س1014] - پريشر (QNH) 1014 هيڪٽوپاسڪلز (750 ملي ايم ايڇ)؛
  • [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 1012/1020 -TSRA BKN020CB

مطلب ٿيندو:

  • [1012/1020] - 12 ۽ 20 ڪلاڪ جي وچ ۾ (گرين ويچ مطلب وقت)؛
  • [-TSRA] - گجگوڙ (TS = ٿڌڪار) مينهن سان (RA = مينهن) گھٽ شدت جي (مائنس نشاني)؛
  • [BKN020CB] - اهم (BKN = ٽوٽل)، cumulonimbus (CB = cumulonimbus) بادل 2000 فوٽ (610 ميٽر) سمنڊ جي سطح کان مٿي.

موسم جي رجحان لاءِ ڪافي اصطلاح آھن، ۽ انھن کي ياد رکڻ مشڪل آھي. TAF جي درخواست لاء ڪوڊ ساڳئي طرح لکيو ويو آهي.

ڪلائوڊ تي اپ لوڊ ڪرڻ جو ڪوڊ

وقت ضايع نه ڪرڻ لاء، اچو ته اسان جي مخزن مان ٽيليگرام بوٽ ٽيمپليٽ وٺو cloud-telegram-bot. اتي هڪ اڳواٽ تيار آهي گهرجن. txt и سيٽ اپ صحيح ڊاريڪٽري جي جوڙجڪ سان.

جيئن ته ڪوڊ ۾ اسان ماڊل تائين رسائي ڪنداسين 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 وضاحت نه ٿي سگھي) ۽ هڪ آخري پوائنٽ فنڪشن (مثال طور ڏنو ويو آهي مکيه).
  • سيڪشن ماحولياتي تبديليون هڪ variable لکڻ ٽوڪ ۽ ان کي گهربل ٽيليگرام بوٽ جو نشان لڳايو.
  • پڪو محفوظ ڪريو ۽ وڌايوجنهن کان پوء اسان سيڪشن ڏانهن وڃو محرڪ.
  • اسان سوئچ لڳايو HTTP درخواستدرخواست کي عام ڪرڻ لاء.

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
اسان وٽ هاڻي هڪ URL آهي عوامي طور تي فنڪشن کي سڏڻ لاءِ. باقي اهو سڀ ڪجهه آهي webhook ترتيب ڏيو. اسان جو بوٽ ڳوليو @SelectelServerless_bot ٽيليگرام ۾ ۽ پنهنجي بوٽ کي حڪم سان رجسٽر ڪريو:

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

نتيجي ۾

جيڪڏهن سڀ ڪجهه صحيح طريقي سان ڪيو ويو آهي، توهان جو بوٽ فوري طور تي ڪم ڪرڻ شروع ڪندو ۽ تازي هواياتي موسم جي رپورٽ سڌو سنئون ميسينجر ۾ ڏيکاريندو.

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ
يقينن، ڪوڊ بهتر ٿي سگهي ٿو، پر ان جي موجوده حالت ۾ پڻ اهو ڪافي آهي ته هڪ قابل اعتماد ذريعن کان سڀ کان وڌيڪ صحيح موسم ۽ اڳڪٿي ڳولڻ لاء.

توھان اسان جي ڪوڊ جو پورو ورزن ڳوليندا GitHub تي ذخيرو.

سڀ کان وڌيڪ صحيح موسم جي اڳڪٿي: بادل افعال تي ٽيليگرام لاءِ بوٽ

جو ذريعو: www.habr.com

تبصرو شامل ڪريو