Photomk. Подвал

всякое о всяком

Июн
29

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: 17

FPUS42 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.

Add A Comment