Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Ho na le litšebeletso tse ngata tse fanang ka boitsebiso ba boemo ba leholimo, empa ke efe eo u lokelang ho e tšepa? Ha ke ne ke qala ho palama baesekele hangata, ke ne ke batla ho ba le tlhahisoleseding e nepahetseng ka ho fetisisa mabapi le maemo a leholimo sebakeng seo ke palamang ho sona.

Monahano oa ka oa pele e ne e le ho haha ​​​​seteishene sa boemo ba leholimo sa DIY se senyenyane se nang le li-sensor le ho fumana lintlha ho sona. Empa ha kea ka ka "qapa lebili hape" mme ka khetha tlhahisoleseling ea boemo ba leholimo e sebelisoang moeeng oa lifofane e le mohloli oa lintlha tse netefalitsoeng, e leng. METARA (Meteorological Aerodrome Report) le mosebetsi (TAF - Forecast ea Terminal Aerodrome). Lifofaneng, bophelo ba batho ba makholo bo itšetlehile ka boemo ba leholimo, kahoo ponelopele e nepahetse ka hohle kamoo ho ka khonehang.

Tlhahisoleseding ena e phatlalatsoa XNUMX/XNUMX ka lentsoe sebakeng se seng le se seng sa sefofane sa sejoale-joale ka mokhoa ATIS (Automatic Terminal Information Service) le VOLMET (ho tsoa ho French. vol - sefofane le Météo - boemo ba leholimo). Ea pele e fana ka tlhahisoleseding e mabapi le boemo ba leholimo ba sebele sebakeng sa lifofane, 'me ea bobeli e fana ka ponelopele bakeng sa lihora tse latelang tsa 24-30, eseng feela lebaleng la lifofane, empa le ho tse ling.

Mohlala oa ts'ebetso ea ATIS boema-fofane ba Vnukovo:

Mohlala oa kamoo VOLMET e sebetsang kateng Boema-fofane ba Vnukovo

Ha ho bonolo ho nka sesebelisoa sa seea-le-moea kapa transceiver nako le nako bakeng sa sebaka se tsamaisanang, 'me ke ne ke batla ho theha bot ho Telegraph eo, ka ho tobetsa konopo, e u lumellang ho fumana ponelopele e ts'oanang. Bonyane ha ho bonolo ho fana ka seva e arohaneng bakeng sa sena, hammoho le ho romella likopo ho Raspberry ea lapeng.

Ka hona, ke ile ka etsa qeto ea ho sebelisa tšebeletso e le mokokotlo Selectel Cloud Features. Palo ea likopo e tla be e se na thuso, kahoo tšebeletso e joalo e tla ba e sa lefelloeng (ho ea ka lipalo tsa ka, e tla ba li-ruble tse 22 bakeng sa likopo tsa 100).

Boitokisetso ba morao

Etsa mosebetsi

Ka phanele ea taolo my.selectel.ru bula pono Sethala sa maru 'me u thehe morero o mocha:

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Ka mor'a hore morero o bōptjoe, e-ea karolong Mesebetsi:

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Tlosa konopo Etsa mosebetsi ebe u e fa lebitso leo u le batlang:

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Ka mor'a ho tobetsa Etsa mosebetsi re tla ba le setšoantšo sa mosebetsi o entsoeng:

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Pele o qala ho theha khoutu ho Python, o tla hloka ho theha bot ho Telegraph. Ha ke na ho hlalosa hore na sena se etsoa joang - ho na le litaelo tse qaqileng motheong oa tsebo ea rona. Ntho e ka sehloohong ho rona ke letšoao la bot e bōpiloeng.

Ho lokisa khoutu

Ke khethile National Oceanic and Atmospheric Administration (NOAA) e le mohloli oa boitsebiso bo ka tšeptjoang. Setsi sena sa mahlale se ntlafatsa data ka nako ea nnete ho seva sa eona ka sebopeho sa TXT.

Khokahano ea ho fumana lintlha tsa METAR (hlokomela nyeoe):

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

Tabeng ea ka, boema-fofane bo haufi ke Vnukovo, khoutu ea eona ea ICAO ke UUWW. Ho ea ho URL e hlahisitsoeng ho tla fana ka tse latelang:

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

Mohala oa pele ke nako ea hajoale ea ponelopele ho Greenwich Mean Time. Mola oa bobeli ke kakaretso ea boemo ba leholimo ba sebele. Bafofisi ba lifofane tsa sechaba ba ke ke ba ba le bothata ba ho utloisisa hore na mohala ona o bolela eng, empa re hloka tlhaloso:

  • [UUWW] - Vnukovo, Moscow (Russia - RU);
  • [101130Z] - Letsatsi la 10 la khoeli, 11:30 am GMT;
  • [31004MPS] - tataiso ea moea 310 likhato, lebelo la 4 m / s;
  • [9999] - ponahalo e otlolohileng 10 km kapa ho feta;
  • [SCT048] - maru a hasaneng / a hasaneng maotong a 4800 (~ 1584m);
  • [24/13] - mocheso oa 24 ° C, phoka e le 13 ° C;
  • [Q1014] - khatello (QNH) 1014 hectopascals (750 mm Hg);
  • [R01/000070] - coefficient of adhesion on lane 01 - 0,70;
  • [NOSIG] - ntle le liphetoho tse kholo.

Ha re qaleng ho ngola khoutu ea lenaneo. Pele o hloka ho kenya mesebetsi Kopo и pytaf:

from urllib import request
import pytaf

Hlalosa mefuta-futa 'me u lokise mosebetsi oa ho khetholla:

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

Ha re feteleng ho TAF (nyeoe le eona e bohlokoa).

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

Joalo ka mohlala o fetileng, a re shebeng ponelopele ea boema-fofane ba 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

A re ele hloko ka ho khetheha mela NAKO и BECMG. TEMPO e bolela hore boemo ba leholimo ba sebele nakong e boletsoeng bo tla fetoha nako le nako. BECMG - boemo ba leholimo bo tla fetoha butle butle ka nako e behiloeng.

Ke hore, mola:

TEMPO 1012/1020 -TSRA BKN020CB

E tla bolela:

  • [1012/1020] - lihora tse pakeng tsa 12 le 20 (Greenwich Mean Time);
  • [-TSRA] - sefefo sa lialuma (TS = sealuma) se nang le pula (RA = pula) ea matla a tlaase (letšoao la ho fokotsa);
  • [BKN020CB] - a bohlokoa (BKN = e robehileng), cumulonimbus (CB = cumulonimbus) maru a bophahamo ba limithara tse 2000 (610 metres) ka holim'a bophahamo ba leoatle.

Ho na le mantsoe a mangata bakeng sa maemo a leholimo, 'me ho thata ho a hopola. Khoutu ea kopo ea TAF e ngotsoe ka mokhoa o ts'oanang.

E kenya khoutu ho leru

E le hore re se ke ra senya nako, ha re nkeng template ea bot ea thelekramo sebakeng sa rona sa polokelo cloud-telegram-bot. Ho na le e lokiselitsoeng esale pele litlhoko.txt и setup.py ka sebopeho se nepahetseng sa bukana.

Kaha ka har'a khoutu re tla be re fihlella mojule pytaf, joale phetolelo ea eona e lokela ho kenngoa hang-hang litlhoko.txt

pytaf~=1.2.1

  • Ha re tsoeleng pele ho lokisa bot/tele_bot.py. Re tlosa lintho tsohle tse sa hlokahaleng ebe re eketsa khoutu ea rona.

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)

  • Re kenya bukana eohle polokelong ea polokelo ea ZIP ebe re ea phanele ea taolo ho ts'ebetso e entsoeng.
  • Sututsa Hlophisa ebe u khoasolla polokelo ka khoutu.

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru

  • Tlatsa tsela e lekanyelitsoeng faeleng tele_bot (katoloso .py e ka 'na ea se ke ea hlalosoa) le mosebetsi oa ho qetela (mohlala o fanoeng sena ke ka sehloohong).
  • karolong Liphetoho tsa Tikoloho ngola phetoho NKETSENG ebe u e abela letšoao la bot ea thelekramo eo u e batlang.
  • Sututsa Boloka le ho Atolosa, ka mor'a moo re ea karolong dihlahisi.
  • Re beha switch Kopo ea HTTPho etsa kopo phatlalatsa.

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Hona joale re na le URL ea ho letsetsa tšebetso phatlalatsa. Ho setse feela lokisa webhook. Fumana bot ea rona @SelectelServerless_bot ho Telegraph 'me u ngolise bot ea hau ka taelo:

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

sephetho

Haeba ntho e 'ngoe le e' ngoe e etsoa ka nepo, bot ea hau e tla qala ho sebetsa hang-hang 'me e bonts'e tlaleho ea morao-rao ea boemo ba leholimo ka ho toba ho lenģosa.

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru
Ha e le hantle, khoutu e ka ntlafatsoa, ​​empa esita le boemong ba eona ba hona joale ho lekane ho fumana boemo ba leholimo bo nepahetseng ka ho fetisisa le ponelopele ho tsoa mohloling o tšepahalang.

U tla fumana mofuta o felletseng oa khoutu ho rona libaka tsa polokelo ho GitHub.

Polelo ea leholimo e nepahetseng ka ho fetesisa: bot bakeng sa Telegraph mabapi le mesebetsi ea leru

Source: www.habr.com

Eketsa ka tlhaloso