అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్

అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్
వాతావరణ సమాచారాన్ని అందించే సేవలు చాలా ఉన్నాయి, కానీ మీరు దేనిని విశ్వసించాలి? నేను తరచుగా సైకిల్ తొక్కడం ప్రారంభించినప్పుడు, నేను ప్రయాణించే ప్రదేశంలో వాతావరణ పరిస్థితుల గురించి చాలా ఖచ్చితమైన సమాచారాన్ని కలిగి ఉండాలని నేను కోరుకున్నాను.

సెన్సార్‌లతో ఒక చిన్న DIY వాతావరణ స్టేషన్‌ని నిర్మించి, దాని నుండి డేటాను స్వీకరించడం నా మొదటి ఆలోచన. కానీ నేను "చక్రాన్ని తిరిగి ఆవిష్కరించలేదు" మరియు ధృవీకరించబడిన డేటా యొక్క మూలంగా పౌర విమానయానంలో ఉపయోగించే వాతావరణ సమాచారాన్ని ఎంచుకున్నాను. METAR (మెటియోరోలాజికల్ ఏరోడ్రోమ్ రిపోర్ట్) మరియు ఉద్యోగం (TAF - టెర్మినల్ ఏరోడ్రోమ్ సూచన). విమానయానంలో, వందలాది మంది ప్రజల జీవితాలు వాతావరణంపై ఆధారపడి ఉంటాయి, కాబట్టి అంచనాలు సాధ్యమైనంత ఖచ్చితమైనవి.

ఫారమ్‌లోని ప్రతి ఆధునిక ఎయిర్‌ఫీల్డ్‌లో ఈ సమాచారం XNUMX/XNUMX వాయిస్ ద్వారా ప్రసారం చేయబడుతుంది ATIS (ఆటోమేటిక్ టెర్మినల్ ఇన్ఫర్మేషన్ సర్వీస్) మరియు VOLMET (ఫ్రెంచ్ నుండి. vol - విమాన మరియు మిటియో - వాతావరణం). మొదటిది ఎయిర్‌ఫీల్డ్‌లో వాస్తవ వాతావరణం గురించి సమాచారాన్ని అందిస్తుంది, మరియు రెండవది ప్రసార ఎయిర్‌ఫీల్డ్‌లో మాత్రమే కాకుండా, ఇతరులలో కూడా తదుపరి 24-30 గంటలకు సూచనను అందిస్తుంది.

Vnukovo విమానాశ్రయంలో ATIS ఆపరేషన్ యొక్క ఉదాహరణ:

VOLMET Vnukovo విమానాశ్రయంలో ఎలా పని చేస్తుందో ఉదాహరణ

సంబంధిత శ్రేణి కోసం ప్రతిసారీ రేడియో స్కానర్ లేదా ట్రాన్స్‌సీవర్‌ని మీతో తీసుకెళ్లడం అసౌకర్యంగా ఉంటుంది మరియు నేను టెలిగ్రామ్‌లో ఒక బాట్‌ను సృష్టించాలనుకుంటున్నాను, అది ఒక బటన్‌ను క్లిక్ చేయడం ద్వారా, అదే సూచనను పొందడానికి మిమ్మల్ని అనుమతిస్తుంది. దీని కోసం ప్రత్యేక సర్వర్‌ను కేటాయించడం, అలాగే మీ హోమ్ రాస్ప్‌బెర్రీకి అభ్యర్థనలను పంపడం కనీసం ఆచరణీయం కాదు.

అందువల్ల, నేను సేవను బ్యాకెండ్‌గా ఉపయోగించాలని నిర్ణయించుకున్నాను క్లౌడ్ ఫీచర్‌లను ఎంచుకోండి. అభ్యర్థనల సంఖ్య చాలా తక్కువగా ఉంటుంది, కాబట్టి అటువంటి సేవ వాస్తవంగా ఉచితం (నా లెక్కల ప్రకారం, ఇది 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 am GMT;
  • [31004MPS] - గాలి దిశ 310 డిగ్రీలు, వేగం 4 మీ / సె;
  • [9999] - క్షితిజ సమాంతర దృశ్యమానత 10 కిమీ లేదా అంతకంటే ఎక్కువ;
  • [SCT048] — 4800 అడుగుల (~1584మీ) వద్ద చెల్లాచెదురుగా/చెదురుగా ఉన్న మేఘాలు;
  • [24 / 13] - ఉష్ణోగ్రత 24 ° C, మంచు బిందువు 13 ° C;
  • [Q1014] - ఒత్తిడి (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

ముఖ్యంగా పంక్తులపై శ్రద్ధ చూపుదాం టెంపో и BECMG. TEMPO అంటే పేర్కొన్న వ్యవధిలో వాస్తవ వాతావరణం క్రమానుగతంగా మారుతుంది. BECMG - నిర్దిష్ట వ్యవధిలో వాతావరణం క్రమంగా మారుతుంది.

అంటే, లైన్:

TEMPO 1012/1020 -TSRA BKN020CB

అర్థం అవుతుంది:

  • [1012 / 1020] — 12 మరియు 20 గంటల మధ్య (గ్రీన్విచ్ మీన్ టైమ్);
  • [-TSRA] - ఉరుములతో కూడిన తుఫాను (TS = ఉరుము) వర్షం (RA = వర్షం) తక్కువ తీవ్రత (మైనస్ గుర్తు);
  • [BKN020CB] - సముద్ర మట్టానికి 2000 అడుగుల (610 మీటర్లు) ఎత్తులో ముఖ్యమైన (BKN = విరిగిన), క్యుములోనింబస్ (CB = క్యుములోనింబస్) మేఘాలు.

వాతావరణ దృగ్విషయాలకు చాలా పదాలు ఉన్నాయి మరియు వాటిని గుర్తుంచుకోవడం కష్టం. TAF అభ్యర్థన కోసం కోడ్ ఇదే విధంగా వ్రాయబడింది.

క్లౌడ్‌కి కోడ్‌ని అప్‌లోడ్ చేస్తోంది

సమయాన్ని వృథా చేయకుండా ఉండేందుకు, మన రిపోజిటరీ నుండి టెలిగ్రామ్ బాట్ టెంప్లేట్ తీసుకుందాం క్లౌడ్-టెలిగ్రామ్-బోట్. ముందుగా సిద్ధమైంది అవసరాలు. txt и setup.py సరైన డైరెక్టరీ నిర్మాణంతో.

కోడ్‌లో ఉన్నందున మేము మాడ్యూల్‌ను యాక్సెస్ చేస్తాము పైటాఫ్, దాని వెర్షన్ వెంటనే జోడించబడాలి అవసరాలు. 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)

  • మేము మొత్తం డైరెక్టరీని జిప్ ఆర్కైవ్‌లో ప్యాక్ చేస్తాము మరియు సృష్టించిన ఫంక్షన్‌కు కంట్రోల్ ప్యానెల్‌కి వెళ్తాము.
  • పత్రికా మార్చు మరియు కోడ్‌తో ఆర్కైవ్‌ను డౌన్‌లోడ్ చేయండి.

అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్

  • ఫైల్‌లోని సంబంధిత పాత్‌ను పూరించండి టెలి_బోట్ (పొడిగింపు ఉంది .Py పేర్కొనబడకపోవచ్చు) మరియు ఎండ్ పాయింట్ ఫంక్షన్ (ఇచ్చిన ఉదాహరణలో ఇది ప్రధాన).
  • విభాగం ఎన్విరాన్మెంట్ వేరియబుల్స్ ఒక వేరియబుల్ వ్రాయండి టోకెన్ మరియు దానికి కావలసిన టెలిగ్రామ్ బాట్ యొక్క టోకెన్‌ను కేటాయించండి.
  • పత్రికా సేవ్ చేయండి మరియు విస్తరించండి, దాని తర్వాత మేము విభాగానికి వెళ్తాము ట్రిగ్గర్స్.
  • స్విచ్ పెట్టాం HTTP అభ్యర్థనఅభ్యర్థనను పబ్లిక్ చేయడానికి.

అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్
మేము ఇప్పుడు ఫంక్షన్‌కు పబ్లిక్‌గా కాల్ చేయడానికి URLని కలిగి ఉన్నాము. ఇక మిగిలింది ఒక్కటే webhookని కాన్ఫిగర్ చేయండి. మా బోట్‌ను కనుగొనండి @SelectelServerless_bot టెలిగ్రామ్‌లో మరియు ఆదేశంతో మీ బోట్‌ను నమోదు చేయండి:

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

ఫలితంగా

ప్రతిదీ సరిగ్గా జరిగితే, మీ బోట్ వెంటనే పని చేయడం ప్రారంభిస్తుంది మరియు తాజా విమానయాన వాతావరణ నివేదికను నేరుగా మెసెంజర్‌లో ప్రదర్శిస్తుంది.

అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్
వాస్తవానికి, కోడ్ మెరుగుపరచబడవచ్చు, కానీ దాని ప్రస్తుత స్థితిలో కూడా విశ్వసనీయ మూలం నుండి అత్యంత ఖచ్చితమైన వాతావరణం మరియు సూచనను కనుగొనడం సరిపోతుంది.

మీరు మాలో కోడ్ యొక్క పూర్తి సంస్కరణను కనుగొంటారు GitHubపై రిపోజిటరీలు.

అత్యంత ఖచ్చితమైన వాతావరణ సూచన: క్లౌడ్ ఫంక్షన్లపై టెలిగ్రామ్ కోసం బోట్

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి