Waxaa jira adeegyo badan oo bixiya macluumaadka cimilada, laakiin midkee ayaa tahay inaad ku kalsoonaato? Markii aan inta badan bilaabay baaskiil wadida, waxaan rabay in aan helo macluumaadka ugu saxsan ee ku saabsan xaaladaha cimilada meesha aan raacayo.
Fikradayda ugu horeysay waxay ahayd inaan ururiyo xarun yar oo cimilo oo DIY ah oo leh dareemayaal oo aan ka helo xogta. Laakin ma aanan "dib u soo saarin giraangiraha" oo waxaan doortay macluumaadka cimilada ee loo isticmaalo duulista madaniga ah il xog la xaqiijiyay, oo ah METAR (Warbixinta Aerodrome METeorological) iyo shaqo (TAF - Saadaasha hawada hawada ee Terminal). Duulimaadyada, nolosha boqolaal qof ayaa ku xiran cimilada, sidaas darteed saadaasha waa sida ugu macquulsan.
Macluumaadkan waxa lagu baahiyaa XNUMX/XNUMX cod garoon kasta oo casri ah oo qaabaysan ATIS (Adeegga Macluumaadka Terminalka Toos ah) iyo VOLMET (laga soo bilaabo Faransiis. vol - duul iyo météo - cimilada). Midka kowaad wuxuu bixiyaa macluumaadka ku saabsan cimilada dhabta ah ee garoonka diyaaradaha, kan labaadna wuxuu bixiyaa saadaasha 24-30 saacadood ee soo socda, maaha kaliya garoonka diyaaradaha, laakiin sidoo kale kuwa kale.
Tusaale ahaan hawlgalka ATIS ee garoonka Vnukovo:
Tusaale ahaan sida VOLMET uga shaqeyso garoonka diyaaradaha ee Vnukovo
Dhib ma leh in aad qaadato iskaanka raadiyaha ama transceiver adiga mar kasta oo u dhiganta qiyaasta u dhiganta, waxaanan rabay in aan ku dhex abuuro bot Telegram taas oo, marka la gujiyo badhan, ay kuu ogolaato inaad hesho saadaal la mid ah. Waa ugu yaraan wax aan macquul ahayn in loo qoondeeyo server gaar ah kan, iyo sidoo kale u dirida codsiyada Raspberry gurigaaga.
Sidaa darteed, waxaan go'aansaday inaan u isticmaalo adeega dhabarka
Diyaarinta dhabarka
Abuur shaqo
In guddiga xakamaynta
Ka dib marka mashruuca la abuuro, tag qaybta Functions:
Riix badhanka Abuur shaqo una bixi magaca la rabo:
Kadib markaad riixdo Abuur shaqo waxaan yeelan doonaa matalaad shaqada la abuuray:
Kahor intaadan bilaabin abuurista koodka Python, waxaad u baahan doontaa inaad ku abuurto bot Telegram. Ma qeexi doono sida tan loo sameeyo - waxaa jira tilmaamo faahfaahsan
Diyaarinta koodka
Waxaan u doortay Maamulka Badweynta iyo Hawada Qaranka (NOAA) sidii isha xog la isku halayn karo. Wakaaladan sayniska ayaa cusboonaysiisay xogta wakhtiga dhabta ah ee serverkeeda qaab TXT ah.
Isku xirka si aad u hesho xogta METAR (u fiirso kiiska):
https://tgftp.nws.noaa.gov/data/observations/metar/stations/<код аэропорта по ICAO>.TXT
Kiiskeyga, garoonka ugu dhow waa Vnukovo, koodka ICAO waa UUWW. Tagitaanka URL-ka la sameeyay waxay ku siin doontaa kuwan soo socda:
2020/08/10 11:30
UUWW 101130Z 31004MPS 9999 SCT048 24/13 Q1014 R01/000070 NOSIG
Safka koowaad waa waqtiga hadda ee saadaasha ee Greenwich Mean Time. Sadarka labaad waa koobitaanka cimilada dhabta ah. Duuliyayaasha duulista madaniga ah dhib kuma yeelan doonaan inay fahmaan macnaha xariiqan, laakiin waxaan u baahanahay sharaxaad:
- [UUWW] - Vnukovo, Moscow (Ruushka - RU);
- [101130Z] - maalinta 10-aad ee bisha, 11:30 subaxnimo GMT;
- [31004MPS] - jihada dabaysha 310 darajo, xawaaraha 4 m/s;
- [9999] - muuqaal toosan 10 km ama ka badan;
- [SCT048] - daruuro kala firdhiyey/kala firdhiyey oo 4800 cagood (~ 1584m);
- [24/13] - heerkulka 24 ° C, barta sayaxa 13 ° C;
- [Q1014] - cadaadiska (QNH) 1014 hectopascals (750 mm Hg);
- [R01/000070] - isku-dhafka adhesion ee haadka 01 - 0,70;
- [NOSIG] - iyada oo aan isbeddel weyn lahayn.
Aan bilowno qorista koodka barnaamijka. Marka hore waxaad u baahan tahay inaad soo dejiso shaqooyinka codsi и pytaf:
from urllib import request
import pytaf
Sheeg doorsoomayaasha oo diyaari shaqada goynta:
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()
Aan u gudubno TAF (kiis sidoo kale waa muhiim).
https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/<код аэропорта по ICAO>.TXT
Sida tusaalihii hore, aan eegno saadaasha garoonka 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
Aynu si gaar ah fiiro gaar ah u yeelano khadadka WAQTIGII и BECMG. TEMPO waxay ka dhigan tahay in cimilada dhabta ah inta lagu jiro muddada la cayimay ay isbeddeli doonto xilliyo. BECMG - cimiladu si tartiib tartiib ah ayey isu bedeli doontaa muddo cayiman gudaheed.
Taasi waa, khadka:
TEMPO 1012/1020 -TSRA BKN020CB
Macnaheedu waa:
- [1012/1020] - inta u dhaxaysa 12 iyo 20 saacadood (Waqtiga celceliska Greenwich);
- [-TSRA] - onkod (TS = onkod) oo leh roob (RA = roob) xooga hoose (calaamadaha laga jaray);
- [BKN020CB] - muhiim ah (BKN = jabay), cumulonimbus (CB = cumulonimbus) daruuraha 2000 cagood (610 mitir) oo ka sarreeya heerka badda.
Waxaa jira erayo aad u badan oo loogu talagalay ifafaalaha cimilada, xusuustoodana way adagtahay. Koodhka codsiga TAF waxa loo qoray si la mid ah.
Soo dejinta koodka daruuraha
Si aan waqti u lumin, aan ka soo qaadanno kaydkayaga bot template bot telegram
Maadaama koodka aan geli doono moduleka pytaf, ka dibna noociisa waa in isla markiiba lagu daro shuruudaha.txt
pytaf~=1.2.1
- Aan u gudubno tafatirka bot/tele_bot.py. Waxaan ka saarnaa dhammaan waxyaabaha aan loo baahnayn oo ku darnaa koodkayaga.
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)
- Waxaan ku xireynaa tusaha oo dhan galka kaydka ZIP waxaana aad tagnaa guddiga kantaroolka shaqada la abuuray.
- Riix Isbedel oo la soo deg kaydka koodka.
- Buuxi jidka qaraabada ah ee faylka tele_bot (kordhinta .py waxaa laga yaabaa inaan la cayimin) iyo shaqada dhamaadka (tusaale ahaan tan la siiyay ugu weyn ee).
- qaybta Doorsoomayaasha deegaanka qor doorsoome Token oo u qoondee calaamadda bot telegram ee la doonayo.
- Riix Keydi oo fidi, ka dib waxaan aadeynaa qaybta kiciya.
- Waxaan dhignay furaha Codsiga HTTPin codsiga loo gudbiyo dadweynaha.
Hadda waxaan haynaa URL si guud loogu waco hawsha. Waxa soo haray waa
/setwebhook <you bot token> <public URL of your function>
natiijada
Haddii wax walba si sax ah loo sameeyo, bot-kaagu isla markiiba wuxuu bilaabi doonaa inuu shaqeeyo oo uu si toos ah u soo bandhigo warbixintii cimilada ee ugu dambeysay ee fariinta.
Dabcan, koodhka waa la hagaajin karaa, laakiin xitaa xaaladdiisa hadda waa ku filan tahay in la ogaado cimilada ugu saxsan iyo saadaasha ilo lagu kalsoon yahay.
Waxaad ka heli doontaa nooca buuxa ee koodkayaga
Source: www.habr.com