ಹವಾಮಾನ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುವ ಹಲವಾರು ಸೇವೆಗಳಿವೆ, ಆದರೆ ನೀವು ಯಾವುದನ್ನು ನಂಬಬೇಕು? ನಾನು ಆಗಾಗ್ಗೆ ಸೈಕ್ಲಿಂಗ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ನಾನು ಸವಾರಿ ಮಾಡುವ ಸ್ಥಳದಲ್ಲಿ ಹವಾಮಾನ ಪರಿಸ್ಥಿತಿಗಳ ಬಗ್ಗೆ ಅತ್ಯಂತ ನಿಖರವಾದ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಲು ನಾನು ಬಯಸುತ್ತೇನೆ.
ಸಂವೇದಕಗಳೊಂದಿಗೆ ಸಣ್ಣ DIY ಹವಾಮಾನ ಕೇಂದ್ರವನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಅದರಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯುವುದು ನನ್ನ ಮೊದಲ ಆಲೋಚನೆಯಾಗಿದೆ. ಆದರೆ ನಾನು "ಚಕ್ರವನ್ನು ಮರುಶೋಧಿಸಲಿಲ್ಲ" ಮತ್ತು ನಾಗರಿಕ ವಿಮಾನಯಾನದಲ್ಲಿ ಪರಿಶೀಲಿಸಿದ ಡೇಟಾದ ಮೂಲವಾಗಿ ಬಳಸಲಾಗುವ ಹವಾಮಾನ ಮಾಹಿತಿಯನ್ನು ಆರಿಸಿದೆ, ಅವುಗಳೆಂದರೆ ಮೆಟಾರ್ (ಮೆಟಿಯೊರೊಲಾಜಿಕಲ್ ಏರೋಡ್ರೋಮ್ ವರದಿ) ಮತ್ತು ಕೆಲಸ (TAF - ಟರ್ಮಿನಲ್ ಏರೋಡ್ರೋಮ್ ಮುನ್ಸೂಚನೆ). ವಾಯುಯಾನದಲ್ಲಿ, ನೂರಾರು ಜನರ ಜೀವನವು ಹವಾಮಾನದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ, ಆದ್ದರಿಂದ ಮುನ್ಸೂಚನೆಗಳು ಸಾಧ್ಯವಾದಷ್ಟು ನಿಖರವಾಗಿರುತ್ತವೆ.
ಈ ಮಾಹಿತಿಯನ್ನು ರೂಪದಲ್ಲಿ ಪ್ರತಿ ಆಧುನಿಕ ಏರ್ಫೀಲ್ಡ್ನಲ್ಲಿ XNUMX/XNUMX ಧ್ವನಿಯ ಮೂಲಕ ಪ್ರಸಾರ ಮಾಡಲಾಗುತ್ತದೆ ಎಟಿಐಎಸ್ (ಸ್ವಯಂಚಾಲಿತ ಟರ್ಮಿನಲ್ ಮಾಹಿತಿ ಸೇವೆ) ಮತ್ತು VOLMET (ಫ್ರೆಂಚ್ ನಿಂದ. ಸಂಪುಟ - ವಿಮಾನ ಮತ್ತು ಮಿಟಿಯೊ - ಹವಾಮಾನ). ಮೊದಲನೆಯದು ಏರ್ಫೀಲ್ಡ್ನಲ್ಲಿನ ನಿಜವಾದ ಹವಾಮಾನದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಮತ್ತು ಎರಡನೆಯದು ಮುಂದಿನ 24-30 ಗಂಟೆಗಳ ಕಾಲ ಮುನ್ಸೂಚನೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಪ್ರಸಾರ ಏರ್ಫೀಲ್ಡ್ನಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ ಇತರರಲ್ಲಿಯೂ ಸಹ.
Vnukovo ವಿಮಾನ ನಿಲ್ದಾಣದಲ್ಲಿ ATIS ಕಾರ್ಯಾಚರಣೆಯ ಉದಾಹರಣೆ:
VOLMET Vnukovo ವಿಮಾನ ನಿಲ್ದಾಣದಲ್ಲಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಉದಾಹರಣೆ
ಅನುಗುಣವಾದ ಶ್ರೇಣಿಗಾಗಿ ಪ್ರತಿ ಬಾರಿ ನಿಮ್ಮೊಂದಿಗೆ ರೇಡಿಯೋ ಸ್ಕ್ಯಾನರ್ ಅಥವಾ ಟ್ರಾನ್ಸ್ಸಿವರ್ ಅನ್ನು ಕೊಂಡೊಯ್ಯುವುದು ಅನಾನುಕೂಲವಾಗಿದೆ ಮತ್ತು ಟೆಲಿಗ್ರಾಮ್ನಲ್ಲಿ ಬೋಟ್ ಅನ್ನು ರಚಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ, ಅದು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಅದೇ ಮುನ್ಸೂಚನೆಯನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದಕ್ಕಾಗಿ ಪ್ರತ್ಯೇಕ ಸರ್ವರ್ ಅನ್ನು ನಿಯೋಜಿಸಲು ಕನಿಷ್ಠ ಅಪ್ರಾಯೋಗಿಕವಾಗಿದೆ, ಹಾಗೆಯೇ ನಿಮ್ಮ ಹೋಮ್ ರಾಸ್ಪ್ಬೆರಿಗೆ ವಿನಂತಿಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
ಆದ್ದರಿಂದ, ನಾನು ಸೇವೆಯನ್ನು ಬ್ಯಾಕೆಂಡ್ ಆಗಿ ಬಳಸಲು ನಿರ್ಧರಿಸಿದೆ
ಬ್ಯಾಕೆಂಡ್ ತಯಾರಿ
ಕಾರ್ಯವನ್ನು ರಚಿಸಿ
ನಿಯಂತ್ರಣ ಫಲಕದಲ್ಲಿ
ಯೋಜನೆಯನ್ನು ರಚಿಸಿದ ನಂತರ, ವಿಭಾಗಕ್ಕೆ ಹೋಗಿ ಕಾರ್ಯಗಳು:
ಗುಂಡಿಯನ್ನು ಒತ್ತಿ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ ಮತ್ತು ಬಯಸಿದ ಹೆಸರನ್ನು ನೀಡಿ:
ಒತ್ತುವ ನಂತರ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ ನಾವು ರಚಿಸಿದ ಕಾರ್ಯದ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಹೊಂದಿರುತ್ತೇವೆ:
ನೀವು ಪೈಥಾನ್ನಲ್ಲಿ ಕೋಡ್ ರಚಿಸಲು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ನೀವು ಟೆಲಿಗ್ರಾಮ್ನಲ್ಲಿ ಬೋಟ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಹೇಗೆ ಮಾಡಲಾಗುತ್ತದೆ ಎಂದು ನಾನು ವಿವರಿಸುವುದಿಲ್ಲ - ವಿವರವಾದ ಸೂಚನೆಗಳಿವೆ
ಕೋಡ್ ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ
ನಾನು ವಿಶ್ವಾಸಾರ್ಹ ಡೇಟಾದ ಮೂಲವಾಗಿ ರಾಷ್ಟ್ರೀಯ ಸಾಗರ ಮತ್ತು ವಾತಾವರಣದ ಆಡಳಿತವನ್ನು (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 ಗಂಟೆಗಳ ನಡುವೆ (ಗ್ರೀನ್ವಿಚ್ ಸರಾಸರಿ ಸಮಯ);
- [-ಟಿಎಸ್ಆರ್ಎ] - ಕಡಿಮೆ ತೀವ್ರತೆಯ (ಮೈನಸ್ ಚಿಹ್ನೆ) ಮಳೆಯೊಂದಿಗೆ (RA = ಮಳೆ) ಗುಡುಗು (TS = ಗುಡುಗು);
- [BKN020CB] - ಸಮುದ್ರ ಮಟ್ಟದಿಂದ 2000 ಅಡಿ (610 ಮೀಟರ್) ಎತ್ತರದಲ್ಲಿರುವ ಗಮನಾರ್ಹ (BKN = ಮುರಿದ), ಕ್ಯುಮುಲೋನಿಂಬಸ್ (CB = ಕ್ಯುಮುಲೋನಿಂಬಸ್) ಮೋಡಗಳು.
ಹವಾಮಾನ ವಿದ್ಯಮಾನಗಳಿಗೆ ಸಾಕಷ್ಟು ಪದಗಳಿವೆ, ಮತ್ತು ಅವುಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವುದು ಕಷ್ಟ. TAF ವಿನಂತಿಯ ಕೋಡ್ ಅನ್ನು ಇದೇ ರೀತಿಯಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.
ಕ್ಲೌಡ್ಗೆ ಕೋಡ್ ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ
ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡದಿರಲು, ನಮ್ಮ ರೆಪೊಸಿಟರಿಯಿಂದ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ
ಕೋಡ್ನಲ್ಲಿರುವ ಕಾರಣ ನಾವು ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸುತ್ತೇವೆ ಪೈಟಾಫ್, ನಂತರ ಅದರ ಆವೃತ್ತಿಯನ್ನು ತಕ್ಷಣವೇ ಸೇರಿಸಬೇಕು ಅವಶ್ಯಕತೆಗಳು. 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)
- ನಾವು ಸಂಪೂರ್ಣ ಡೈರೆಕ್ಟರಿಯನ್ನು ZIP ಆರ್ಕೈವ್ಗೆ ಪ್ಯಾಕ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ರಚಿಸಿದ ಕಾರ್ಯಕ್ಕೆ ನಿಯಂತ್ರಣ ಫಲಕಕ್ಕೆ ಹೋಗುತ್ತೇವೆ.
- ಪುಶ್ ಸಂಪಾದಿಸಿ ಮತ್ತು ಕೋಡ್ನೊಂದಿಗೆ ಆರ್ಕೈವ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ.
- ಫೈಲ್ನಲ್ಲಿ ಸಂಬಂಧಿತ ಮಾರ್ಗವನ್ನು ಭರ್ತಿ ಮಾಡಿ ಟೆಲಿ_ಬೋಟ್ (ವಿಸ್ತರಣೆ .ಪಿ ನಿರ್ದಿಷ್ಟಪಡಿಸದಿರಬಹುದು) ಮತ್ತು ಎಂಡ್ಪಾಯಿಂಟ್ ಫಂಕ್ಷನ್ (ಉದಾಹರಣೆಗೆ ನೀಡಲಾಗಿದೆ ಮುಖ್ಯ).
- ವಿಭಾಗದಲ್ಲಿ ಪರಿಸರ ವೇರಿಯಬಲ್ಸ್ ವೇರಿಯೇಬಲ್ ಬರೆಯಿರಿ ಟೋಕನ್ ಮತ್ತು ಬಯಸಿದ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ನ ಟೋಕನ್ ಅನ್ನು ನಿಯೋಜಿಸಿ.
- ಪುಶ್ ಉಳಿಸಿ ಮತ್ತು ವಿಸ್ತರಿಸಿ, ಅದರ ನಂತರ ನಾವು ವಿಭಾಗಕ್ಕೆ ಹೋಗುತ್ತೇವೆ ಪ್ರಚೋದಿಸುತ್ತದೆ.
- ನಾವು ಸ್ವಿಚ್ ಹಾಕಿದ್ದೇವೆ HTTP ವಿನಂತಿವಿನಂತಿಯನ್ನು ಸಾರ್ವಜನಿಕಗೊಳಿಸಲು.
ಕಾರ್ಯವನ್ನು ಸಾರ್ವಜನಿಕವಾಗಿ ಕರೆ ಮಾಡಲು ನಾವು ಈಗ URL ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಉಳಿದಿರುವುದು ಇಷ್ಟೇ
/setwebhook <you bot token> <public URL of your function>
ಪರಿಣಾಮವಾಗಿ
ಎಲ್ಲವನ್ನೂ ಸರಿಯಾಗಿ ಮಾಡಿದರೆ, ನಿಮ್ಮ ಬೋಟ್ ತಕ್ಷಣವೇ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ಇತ್ತೀಚಿನ ವಾಯುಯಾನ ಹವಾಮಾನ ವರದಿಯನ್ನು ನೇರವಾಗಿ ಮೆಸೆಂಜರ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸುತ್ತದೆ.
ಸಹಜವಾಗಿ, ಕೋಡ್ ಅನ್ನು ಸುಧಾರಿಸಬಹುದು, ಆದರೆ ಅದರ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯಲ್ಲಿಯೂ ಸಹ ವಿಶ್ವಾಸಾರ್ಹ ಮೂಲದಿಂದ ಅತ್ಯಂತ ನಿಖರವಾದ ಹವಾಮಾನ ಮತ್ತು ಮುನ್ಸೂಚನೆಯನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಾಕು.
ನಮ್ಮ ಕೋಡ್ನ ಪೂರ್ಣ ಆವೃತ್ತಿಯನ್ನು ನೀವು ಕಾಣಬಹುದು
ಮೂಲ: www.habr.com