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
Kukonzekera kumbuyo
Pangani ntchito
Mu gulu lowongolera
Ntchito ikapangidwa, pitani ku gawolo Ntchito:
Sakani batani Pangani ntchito ndipo perekani dzina lomwe mukufuna:
Pambuyo kukanikiza Pangani ntchito tidzakhala ndi chiwonetsero cha ntchito yomwe idapangidwa:
Musanayambe kupanga code ku Python, muyenera kupanga bot mu Telegraph. Sindikufotokoza momwe izi zimachitikira - pali malangizo atsatanetsatane
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
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.
- 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.
Tsopano tili ndi ulalo woyimbira ntchitoyi poyera. Zomwe zatsala ndi
/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.
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
Source: www.habr.com