موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
ایسی بہت ساری خدمات ہیں جو موسم کی معلومات فراہم کرتی ہیں، لیکن آپ کو کس پر بھروسہ کرنا چاہیے؟ جب میں نے کثرت سے سائیکل چلانا شروع کیا تو میں اس جگہ کے موسمی حالات کے بارے میں درست ترین معلومات حاصل کرنا چاہتا تھا جہاں میں سواری کرتا ہوں۔

میرا پہلا خیال سینسر کے ساتھ ایک چھوٹا DIY ویدر اسٹیشن بنانا تھا اور اس سے ڈیٹا حاصل کرنا تھا۔ لیکن میں نے "وہیل کو دوبارہ ایجاد" نہیں کیا اور موسم کی معلومات کا انتخاب کیا جو سول ایوی ایشن میں تصدیق شدہ ڈیٹا کے ذریعہ کے طور پر استعمال ہوتی ہے، یعنی METAR (میٹورولوجیکل ایروڈروم رپورٹ) اور TAF (TAF - ٹرمینل ایروڈروم کی پیشن گوئی) ہوا بازی میں، سینکڑوں لوگوں کی زندگیوں کا انحصار موسم پر ہوتا ہے، اس لیے پیشین گوئیاں زیادہ سے زیادہ درست ہوتی ہیں۔

یہ معلومات فارم میں ہر جدید ہوائی اڈے پر آواز کے ذریعے XNUMX/XNUMX نشر کی جاتی ہے۔ اے ٹی آئی ایس۔ (خودکار ٹرمینل انفارمیشن سروس) اور VOLMET (فرانسیسی سے. وول - پرواز اور météo - موسم). پہلا ایئر فیلڈ کے اصل موسم کے بارے میں معلومات فراہم کرتا ہے، اور دوسرا اگلے 24-30 گھنٹوں کے لیے، نہ صرف براڈکاسٹ ایئر فیلڈ پر، بلکہ دوسروں پر بھی پیشن گوئی فراہم کرتا ہے۔

Vnukovo ہوائی اڈے پر ATIS آپریشن کی مثال:

VOLMET Vnukovo ہوائی اڈے پر کیسے کام کرتا ہے اس کی ایک مثال

متعلقہ رینج کے لیے ہر بار اپنے ساتھ ریڈیو اسکینر یا ٹرانسیور لے جانا تکلیف دہ ہے، اور میں ٹیلی گرام میں ایک بوٹ بنانا چاہتا تھا جو بٹن کے کلک پر آپ کو وہی پیشن گوئی حاصل کرنے کی اجازت دیتا ہے۔ اس کے لیے علیحدہ سرور مختص کرنا اور ساتھ ہی آپ کے گھر Raspberry کو درخواستیں بھیجنا کم از کم ناقابل عمل ہے۔

لہذا، میں نے سروس کو بیک اینڈ کے طور پر استعمال کرنے کا فیصلہ کیا۔ سلیکٹیل کلاؤڈ کی خصوصیات. درخواستوں کی تعداد نہ ہونے کے برابر ہوگی، اس لیے ایسی سروس تقریباً مفت ہو گی (میرے حساب کے مطابق 22 درخواستوں کے لیے 100 روبل ہوں گے)۔

پسدید کی تیاری

فنکشن بنانا

کنٹرول پینل میں my.selectel.ru منظر کھولیں کلاؤڈ پلیٹ فارم اور ایک نیا پروجیکٹ بنائیں:

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
پروجیکٹ بننے کے بعد، سیکشن پر جائیں۔ افعال:

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
بٹن دباؤ ایک فنکشن بنائیں اور اسے مطلوبہ نام دیں:

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
کلک کرنے کے بعد۔ ایک فنکشن بنائیں ہمارے پاس تخلیق کردہ فنکشن کی نمائندگی ہوگی:

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
ازگر میں کوڈ بنانا شروع کرنے سے پہلے، آپ کو ٹیلیگرام میں بوٹ بنانا ہوگا۔ میں اس کی وضاحت نہیں کروں گا کہ یہ کیسے ہوتا ہے - تفصیلی ہدایات موجود ہیں۔ ہمارے علم کی بنیاد میں. ہمارے لئے اہم چیز تخلیق شدہ بوٹ کا ٹوکن ہے۔

کوڈ کی تیاری

میں نے نیشنل اوشینک اینڈ ایٹموسفیرک ایڈمنسٹریشن (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 میٹر فی سیکنڈ؛
  • ہے [9999] افقی مرئیت 10 کلومیٹر یا اس سے زیادہ؛
  • [SCT048] - 4800 فٹ (~1584 میٹر) پر بکھرے ہوئے/بکھرے ہوئے بادل؛
  • [24 / 13] - درجہ حرارت 24 ° C، اوس نقطہ 13 ° C؛
  • [س1014] — پریشر (QNH) 1014 ہیکٹوپاسکلز (750 mm Hg)؛
  • [R01/000070] — لین پر آسنجن کا گتانک 01 — 0,70؛
  • [NOSIG] - اہم تبدیلیوں کے بغیر۔

آئیے پروگرام کوڈ لکھنا شروع کرتے ہیں۔ پہلے آپ کو افعال درآمد کرنے کی ضرورت ہے۔ درخواست и پیٹاف:

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. ایک پہلے سے تیار ہے conditions.txt и setup.py درست ڈائریکٹری ڈھانچے کے ساتھ۔

چونکہ کوڈ میں ہم ماڈیول تک رسائی حاصل کریں گے۔ پیٹاف، پھر اس کے ورژن کو فوری طور پر شامل کیا جانا چاہئے۔ conditions.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)

  • ہم پوری ڈائرکٹری کو زپ آرکائیو میں پیک کرتے ہیں اور بنائے گئے فنکشن پر کنٹرول پینل پر جاتے ہیں۔
  • دھکا میں ترمیم کریں اور کوڈ کے ساتھ آرکائیو ڈاؤن لوڈ کریں۔

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ

  • فائل میں رشتہ دار راستہ بھریں۔ ٹیلی_بوٹ (توسیع .ایک اس کی وضاحت نہیں کی جا سکتی ہے) اور ایک اینڈ پوائنٹ فنکشن (مثال کے طور پر یہ دی گئی ہے۔ اہم).
  • کے حصے میں ماحولیاتی تغیرات ایک متغیر لکھیں ٹوکن اور اسے مطلوبہ ٹیلیگرام بوٹ کا ٹوکن تفویض کریں۔
  • دھکا محفوظ کریں اور پھیلائیں۔، جس کے بعد ہم سیکشن میں جاتے ہیں۔ ٹرگرز۔.
  • ہم نے سوئچ ڈال دیا HTTP درخواستدرخواست کو عوامی بنانے کے لیے۔

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
اب ہمارے پاس عوامی طور پر فنکشن کو کال کرنے کے لیے ایک URL ہے۔ بس جو رہ گیا ہے۔ ویب ہک کو ترتیب دیں۔. ہمارا بوٹ تلاش کریں۔ @SelectelServerless_bot ٹیلیگرام میں اور اپنے بوٹ کو کمانڈ کے ساتھ رجسٹر کریں:

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

نتیجہ

اگر سب کچھ صحیح طریقے سے کیا جاتا ہے، تو آپ کا بوٹ فوری طور پر کام کرنا شروع کر دے گا اور ہوا بازی کی تازہ ترین موسم کی رپورٹ براہ راست میسنجر میں دکھائے گا۔

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ
بلاشبہ، کوڈ کو بہتر کیا جا سکتا ہے، لیکن اس کی موجودہ حالت میں بھی یہ ایک قابل اعتماد ذریعہ سے سب سے زیادہ درست موسم اور پیشن گوئی کو تلاش کرنے کے لئے کافی ہے.

آپ کو ہمارے میں کوڈ کا مکمل ورژن مل جائے گا۔ GitHub پر ذخیرے.

موسم کی سب سے درست پیشن گوئی: کلاؤڈ فنکشنز پر ٹیلیگرام کے لیے بوٹ

ماخذ: www.habr.com

نیا تبصرہ شامل کریں