Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Pali mautumiki ambiri omwe amapereka zambiri zanyengo, koma muyenera kudalira iti? Nditayamba kupalasa njinga pafupipafupi, ndinkafuna kuti ndidziwe zambiri zokhudza nyengo ya kumalo kumene ndikukwera.

Lingaliro langa loyamba linali lopanga malo ang'onoang'ono a nyengo ya DIY okhala ndi masensa ndikulandila deta kuchokera pamenepo. Koma "sindinayambitsenso gudumu" ndikusankha zidziwitso zanyengo zomwe zimagwiritsidwa ntchito poyendetsa ndege ngati gwero la data yotsimikizika, yomwe ndi METAR (METeorological Aerodrome Report) ndi ntchito (TAF - Terminal Aerodrome Forecast). M’ndege, miyoyo ya anthu mazanamazana imadalira nyengo, chotero zoneneratu ziri zolondola monga momwe kungathekere.

Izi zimafalitsidwa XNUMX/XNUMX ndi mawu pabwalo lililonse lamakono la ndege ATIS (Automatic Terminal Information Service) ndi Chithunzi cha VOLMET (ku French. vol - ndege ndi MΓ©tΓ©o - nyengo). Yoyamba imapereka chidziwitso cha nyengo yeniyeni pabwalo la ndege, ndipo yachiwiri imapereka chidziwitso kwa maola 24-30 otsatirawa, osati pabwalo la ndege, komanso pa ena.

Chitsanzo cha ntchito ya ATIS pa eyapoti ya Vnukovo:

Chitsanzo cha momwe VOLMET imagwirira ntchito ku Vnukovo Airport

Ndizosautsa kunyamula chojambulira pawayilesi kapena transceiver nthawi zonse pamitundu yofananira, ndipo ndimafuna kupanga bot mu Telegalamu yomwe, pakadina batani, imakupatsani mwayi wolosera zomwezi. Ndizosatheka kugawa seva yosiyana pa izi, komanso kutumiza zopempha kunyumba kwanu Raspberry.

Chifukwa chake, ndinaganiza zogwiritsa ntchito ntchitoyi ngati chothandizira Selectel Cloud Features. Chiwerengero cha zopempha chidzakhala chochepa, kotero ntchito yotereyi idzakhala yaulere (malinga ndi kuwerengera kwanga, idzakhala ma ruble 22 pazopempha 100).

Kukonzekera kumbuyo

Pangani ntchito

Mu gulu lowongolera my.selectel.ru tsegulani mawonekedwe Cloud nsanja ndi kupanga pulojekiti yatsopano:

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Ntchito ikapangidwa, pitani ku gawolo Ntchito:

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Sakani batani Pangani ntchito ndipo perekani dzina lomwe mukufuna:

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Pambuyo kukanikiza Pangani ntchito tidzakhala ndi chiwonetsero cha ntchito yomwe idapangidwa:

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Musanayambe kupanga code ku Python, muyenera kupanga bot mu Telegraph. Sindikufotokoza momwe izi zimachitikira - pali malangizo atsatanetsatane m'chidziwitso chathu. Chinthu chachikulu kwa ife ndi chizindikiro cha bot yopangidwa.

Kukonzekera kachidindo

Ndinasankha National Oceanic and Atmospheric Administration (NOAA) monga gwero la deta yodalirika. Bungwe lasayansi ili limasinthiratu data munthawi yeniyeni pa seva yake mumtundu wa TXT.

Lumikizani kuti mupeze data ya METAR (zindikirani vuto):

https://tgftp.nws.noaa.gov/data/observations/metar/stations/<ΠΊΠΎΠ΄ аэропорта ΠΏΠΎ ICAO>.TXT

Kwa ine, eyapoti yapafupi ndi Vnukovo, nambala yake ya ICAO ndi UUWW. Kupita ku ulalo wopangidwa kudzapereka izi:

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

Mzere woyamba ndi nthawi yamakono yolosera mu Greenwich Mean Time. Mzere wachiwiri ndi chidule cha nyengo yeniyeni. Oyendetsa ndege sadzakhala ndi vuto kumvetsetsa tanthauzo la mzerewu, koma tifunika kufotokozera:

  • [UWU] - Vnukovo, Moscow (Russia - RU);
  • [101130Z] - Tsiku la 10 la mwezi, 11:30 am GMT;
  • [31004MPS] - mayendedwe amphepo 310 madigiri, liwiro 4 m / s;
  • [9999] - yopingasa mawonekedwe 10 Km kapena kuposa;
  • [SCT048] - Mitambo yobalalika/yobalalika pamtunda wa 4800 mapazi (~ 1584 m);
  • [24/13] - kutentha kwa 24 Β° C, mame amafika 13 Β° C;
  • [Q1014] - kuthamanga (QNH) 1014 hectopascals (750 mm Hg);
  • [R01/000070] - coefficient of adhesion pa msewu 01 - 0,70;
  • [NOSIG] - popanda kusintha kwakukulu.

Tiyeni tiyambe kulemba khodi ya pulogalamu. Choyamba muyenera kuitanitsa ntchito Pemphani ΠΈ pytaf:

from urllib import request
import pytaf

Tchulani zosinthika ndikukonzekera ntchito yomasulira:

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

Tiyeni tipitirire ku TAF (nkhani nayonso ndiyofunika).

https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/<ΠΊΠΎΠ΄ аэропорта ΠΏΠΎ ICAO>.TXT

Monga m'chitsanzo cham'mbuyomu, tiyeni tiwone zolosera pa eyapoti ya 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

Tiyeni makamaka kulabadira mizere NTHAWI ΠΈ Mtengo wa BECMG. TEMPO imatanthawuza kuti nyengo yeniyeni pa nthawi yotchulidwa idzasintha nthawi ndi nthawi. BECMG - nyengo idzasintha pang'onopang'ono pakapita nthawi.

Ndiko kuti, mzere:

TEMPO 1012/1020 -TSRA BKN020CB

Atanthauza:

  • [1012/1020] - pakati pa 12 ndi 20 maola (Greenwich Mean Time);
  • [-TSRA] - mvula yamkuntho (TS = mvula yamkuntho) ndi mvula (RA = mvula) yotsika kwambiri (chizindikiro chochepa);
  • [BKN020CB] - ofunika (BKN = wosweka), cumulonimbus (CB = cumulonimbus) mitambo pa 2000 mapazi (610 metres) pamwamba pa nyanja.

Pali mawu ambiri okhudzana ndi nyengo, ndipo kukumbukira kumakhala kovuta. Khodi ya pempho la TAF imalembedwa chimodzimodzi.

Kukweza khodi ku mtambo

Kuti tisataye nthawi, tiyeni titenge template ya telegraph bot kuchokera kumalo athu cloud-telegram-bot. Pali zokonzekeratu zofunikira.txt ΠΈ setup.py ndi chikwatu cholondola.

Popeza mu code tikhala tikulowa mu module pytaf, ndiye mtundu wake uyenera kuwonjezeredwa nthawi yomweyo zofunikira.txt

pytaf~=1.2.1

  • Tiyeni tipitirire kukonza bot/tele_bot.py. Timachotsa zinthu zonse zosafunikira ndikuwonjezera nambala yathu.

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)

  • Timanyamula chikwatu chonse mu zip archive ndikupita ku gulu lowongolera ku ntchito yomwe idapangidwa.
  • Dinani apa Sintha ndikutsitsa zakale ndi code.

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo

  • Lembani njira wachibale mu wapamwamba tele_bot (kuwonjezera .py mwina sizingatchulidwe) ndi ntchito yomaliza (muchitsanzo choperekedwa ichi ndi waukulu).
  • gawo Zosintha Zachilengedwe lembani kusintha ZABWINO ndikupatseni chizindikiro cha telegalamu yomwe mukufuna.
  • Dinani apa Sungani ndi Kukulitsa, pambuyo pake timapita ku gawolo zoyambitsa.
  • Timayika chosinthira Pempho la HTTPkuti pempholo liwonekere poyera.

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Tsopano tili ndi ulalo woyimbira ntchitoyi poyera. Zomwe zatsala ndi konza webhook. Pezani bot yathu @SelectelServerless_bot mu Telegraph ndikulembetsa bot yanu ndi lamulo:

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

chifukwa

Ngati zonse zachitika molondola, bot yanu iyamba kugwira ntchito nthawi yomweyo ndikuwonetsa lipoti laposachedwa lanyengo ya ndege mwachindunji mwa mesenjala.

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo
Zoonadi, kachidindoyo ikhoza kusinthidwa, koma ngakhale momwe zilili panopa ndi zokwanira kuti mudziwe nyengo yolondola kwambiri komanso zowonetseratu kuchokera ku gwero lodalirika.

Mudzapeza mtundu wonse wa code yathu nkhokwe pa GitHub.

Zolosera zanyengo zolondola kwambiri: bot ya Telegraph pa ntchito zamtambo

Source: www.habr.com

Kuwonjezera ndemanga