Linux проноз погоды из коммандной строки
Filed Under Linux
Бывает, что погода может стать препятствием для реализации задуманного - прогулке, поездке, встрече и т.п. Многие используют интернет и метероологические службы, чтобы опираться на какую-то информацию. Один из популярных сервисов данного плана - гисметео. Но смущают его картинки, которые не соответсвуют подписям и отстуствие информации откуда берутся данные о прогнозе (хотя может я просто не нашел этого).
В убунту в плане погоды есть гномовский апплет weather - удобно, когда долго не вылазишь из-за компа и нельзя посмотреть в окно. Но хочется больше информации и более развернутый вид. Можно было бы использовать скринлеты или что-то еще… но обойдемся коммандной строкой.
Немножко поплагиатим
Общая информация взята из Пакет дня для Debian
weather из пакета weather-util — простая консольная утилита для просмотра текущего состояния погоды и прогноза. Данные в формате METAR берутся от National Oceanic and Atmospheric Administration, а прогнозы предоставляются National Weather Service.
Многие места уже предопределены в /etc/weatherrc. Если там уже есть интересующая вас местность, то для работы потребуется только узнать ее синоним. Например, в /etc/weatherrc есть следующая запись для Альбукерки, штат Нью-Мексико:
[ABQ] City = Albuquerque ID = KABQ St = NM
Таким образом, синоним для Альбукерки — «ABQ». Поэтому текущее состояние дел в Альбукерке можно узнать командой weather ABQ:
$ weather ABQ Current conditions at Albuquerque International Airport (KABQ) Last updated Sep 26, 2007 - 04:56 PM EDT / 2007.09.26 2056 UTC Wind: from the ESE (120 degrees) at 3 MPH (3 KT) Sky conditions: mostly clear Temperature: 77.0 F (25.0 C) Relative Humidity: 15%
weather -f ABQ покажет краткосрочный прогноз:
$ weather -f ABQ Current conditions at Albuquerque International Airport (KABQ) Last updated Sep 26, 2007 - 04:56 PM EDT / 2007.09.26 2056 UTC Wind: from the ESE (120 degrees) at 3 MPH (3 KT) Sky conditions: mostly clear Temperature: 77.0 F (25.0 C) Relative Humidity: 15% City Forecast for Albuquerque, NM Issued Wednesday afternoon - Sep 26, 2007 Wednesday night... Low 52, 0% chance of precipitation. Thursday... Sunny, high 81, 0% chance of precipitation. Thursday night... Low 54, 5% chance of precipitation. Friday... Partly cloudy, high 80. Friday night... Low 56.
Новые местоположения можно добавлять прямо в этот файл, либо в пользовательские файлы ~/.weatherrc. Запись [default] задает место по умолчанию. Например, в моем ~/.weatherrc написано
[default] City = denver Forecast = True ID = KFNL St = CO
City и St (город, штат) — поля для получения прогнозов; текущая погода находится по полю ID. Я использую такие настройки, чтобы указать weather, что меня интересует погода в Денвере, штат Колорадо, а для получения текущей сводки должна использоваться ближайшая станция. Если вы не укажете [default], то по умолчанию получите данные для Роли (Raleigh), штат Северная Каролина.
Для определения своих настроек важно знать, какую информацию использует в своей работе weather. Например, мне нужно узнать сводку для Лаббока, штат Техас, и я выполняю такую команду:
$ weather -o --city=Lubbock --st=TX Current conditions at Fort Collins-Loveland Municipal Airport (KFNL) Last updated Sep 26, 2007 - 05:55 PM EDT / 2007.09.26 2155 UTC Wind: from the ENE (070 degrees) at 5 MPH (4 KT) Sky conditions: clear Temperature: 71 F (22 C) Relative Humidity: 23%
(-o отключает отображение прогноза.) Как видите, weather рассказал о погоде у меня в Денвере, а не в Лаббоке — для текущих сводок используется идентификатор станции, а не информация о городе и штате. Нужная информация будет получена, если указать --id:
$ weather -o --id=KLBB Current conditions at Lubbock International Airport (KLBB) Last updated Sep 26, 2007 - 05:53 PM EDT / 2007.09.26 2153 UTC Wind: from the S (170 degrees) at 9 MPH (8 KT) gusting to 18 MPH (16 KT) Sky conditions: mostly cloudy Weather: Cumulonimbus clouds, towering cumulus clouds observed Temperature: 86.0 F (30.0 C) Relative Humidity: 38%
Благодаря тому, что weather работает с командной строкой, возможно автоматизировать многие вещи. Например, отмену еженедельного похода по пивным в случае дождя:
$ cat /etc/cron.weekly/pub-reminder #!/bin/sh set -e if weather -f | egrep -q '(100)|([5-9][0-9])% chance of precipitation'; then mailx -s 'Cancellation' $PUBCRAWLEES < ~/pub-crawl-cancelled else mailx -s 'Get on your bike' $PUBCRAWLEES < ~/pub-crawl-is-a-go fi
Конечно, я бы просто посоветовал надеть плащ.
weather можно взять из пакета weather-util в Debian Etch, testing, unstable и Ubuntu Edgy, Feisty, Gutsy.
О поиске метеостанций
Идентификаторы метеостанций следует искать по адресу http://www.weather.gov/tg/siteloc.shtml. Там доступна информация для многих стран, в том числе и для Украины.
Для Николаева в этом списке есть несколько станций. Я выбрал следующую
ICAO Location Indicator: UKON
Station Name: Mykolaiv
Country: Ukraine
WMO Region: 6
Station Position: 47-03-29N 031-55-15E (dms)
Station Elevation (Ha): 56 Meters
С помощью идентификатора мы можем получить слудующую информацию.
$ weather -o -v –id=UKON
Mykolaiv, Ukraine (UKON) 47-03-29N 031-55-15E
Jun 29, 2009 - 01:00 PM EDT / 2009.06.29 1700 UTC
Wind: from the ESE (120 degrees) at 7 MPH (6 KT):0
Visibility: greater than 7 mile(s):0
Temperature: 80 F (27 C)
Dew Point: 57 F (14 C)
Relative Humidity: 44%
Pressure (altimeter): 29.88 in. Hg (1012 hPa)
ob: UKON 291700Z 12003MPS CAVOK 27/14 Q1012 05090075 NOSIG
cycle: 17
$ weather -f -v –id=UKON
Mykolaiv, Ukraine (UKON) 47-03-29N 031-55-15E
Jun 29, 2009 - 01:00 PM EDT / 2009.06.29 1700 UTC
Wind: from the ESE (120 degrees) at 7 MPH (6 KT):0
Visibility: greater than 7 mile(s):0
Temperature: 80 F (27 C)
Dew Point: 57 F (14 C)
Relative Humidity: 44%
Pressure (altimeter): 29.88 in. Hg (1012 hPa)
ob: UKON 291700Z 12003MPS CAVOK 27/14 Q1012 05090075 NOSIG
cycle: 17FPUS42 KRAH 291943
City Forecast for Raleigh Durham, NC
Issued Monday afternoon - Jun 29, 2009.Monday night… Low 66, 0% chance of precipitation.
.Tuesday… Sunny, high 91, 0% chance of precipitation.
.Tuesday night… Low 63, 0% chance of precipitation.
.Wednesday… Partly cloudy, high 92.
.Wednesday night… Low 63.
