Получение онлайн прогноза погоды

Материал из Sprut.hub Wiki

OpenWeather

  • ow_temp - Температура
  • ow_hum - Влажность
  • ow_pressure - Давление (мм. рт. ст.)
  • ow_wind - Скорость ветра (м/с)
  • ow_gust - Порывы ветра (м/с)
  • ow_wind_dir - Направление ветра (в градусах)
  • ow_feels_like - Температура (Ощущается)
  • ow_temp_min - Минимальная температура
  • ow_temp_max - Максимальная температура
  • ow_clouds - Уровень облачности (%)
  • ow_visibility - Видимость (м)
  • ow_condition - Описание погоды (текстовое, для использования в Телеграм)
  • ow_sunrise - Время восхода
  • ow_sunset - Время заката

Yr.No

  • yr_temp - Температура
  • yr_wind - Скорость ветра
  • yr_cloud - Уровень облачности (%)

AccuWeather

  • acc_condition - Описание погоды (текстовое, для использования в Телеграм)
  • acc_cloud - Уровень облачности (%)
  • acc_temp - Температура
  • acc_temp_min - Минимальная температура
  • acc_temp_max - Максимальная температура
  • acc_real_temp - Температура RealTemp (зарегистрированная торговая марка AccuWeather)
  • acc_real_shade - Температура RealTemp в тени
  • acc_apparent_temp - Температура (Ощущается)
  • acc_wind_chill_temp - Температура (Ощущается открытой кожей)
  • acc_hum - Влажность
  • acc_indoor_hum - Влажность воздуха попадающего в помещение с улицы
  • acc_dewpoint - Точка росы
  • acc_uv - Уровень ультрафиолета
  • acc_uv_text - Уровень ультрафиолета (текстовое, для использования в Телеграм)
  • acc_wind - Скорость ветра (м/с)
  • acc_gust - Порывы ветра (м/с)
  • acc_wind_dir - направление ветра (английский символ)

Яндекс

Текущий прогноз

  • ya_condition - Описание погоды (текстовое, для использования в Телеграм)
  • ya_moon_text - Фаза луны (текстовое поле для использования в Телеграм)
  • ya_temp - Температура
  • ya_feels_like - Температура (Ощущается)
  • ya_hum - Влажность
  • ya_wind_dir - Направление ветра (текстовое поле для использования в Телеграм)
  • ya_wind - Скорость ветра (м/с)
  • ya_gust - Порывы ветра (м/с)
  • ya_sunrise - Время восхода
  • ya_sunset - Время заката

Прогноз на следующий период суток (Если текущий период день, то на вечер)

  • ya_part_1_name - Наименование периода суток
  • ya_1_condition - Описание погоды
  • ya_1_temp_min - Минимальная температура
  • ya_1_temp_max - Максимальная температура
  • ya_1_feels_like - Температура (Ощущается)
  • ya_1_hum - Влажность
  • ya_1_wind_dir - Направление ветра (текстовое поле для использования в Телеграм)
  • ya_1_wind - Скорость ветра (м/с)
  • ya_1_gust - Порывы ветра (м/с)
  • ya_1_prec - Вероятность осадков
  • ya_1_prec_period - Продолжительность осадков
  • ya_1_prec_mm - Уровень осадков (мм)

Прогноз на последующий период суток (Если текущий период день, то на ночь)

  • ya_part_2_name - Наименование периода суток
  • ya_2_condition - Описание погоды (текстовое, для использования в Телеграм)
  • ya_2_temp_min - Минимальная температура
  • ya_2_temp_max - Максимальная температура
  • ya_2_feels_like - Температура (Ощущается)
  • ya_2_hum - Влажность
  • ya_2_wind_dir - Направление ветра (текстовое поле для использования в Телеграм)
  • ya_2_wind - Скорость ветра (м/с)
  • ya_2_gust - Порывы ветра (м/с)
  • ya_2_prec - Вероятность осадков
  • ya_2_prec_period - Продолжительность осадков
  • ya_2_prec_mm - Уровень осадков (мм)

Отправка показаний OpenWeather в Telegram

if (!global.openweather_api) {
global.sendToTelegram("Погода OpenWeather не настроена"); log.info("Погода OpenWeather не настроена")} else {
let deg = global.weather().ow_wind_deg();
switch (true) {
	case deg >= 348.75 || deg <= 11.25:
		deg = "Северный";
		break;
	case deg > 11.25 && deg < 33.75:
		deg = "Северо-северо-восточный";
		break;
	case deg >= 33.75 && deg <= 56.25:
		deg = "Северо-восточный";
		break;
	case deg > 56.25 && deg < 78.75:
		deg = "Восточно-северо-восточный";
		break;
	case deg >= 78.75 && deg <= 101.25:
		deg = "Восточный";
		break;
	case deg > 101.25 && deg < 123.75:
		deg = "Восточный-юго-восточный";
		break;
	case deg >= 123.75 && deg <= 146.25:
		deg = "Юго-восточный";
		break;
	case deg > 146.25 && deg < 168.75:
		deg = "Юго-юго-восточный";
		break;
	case deg >= 168.75 && deg <= 191.25:
		deg = "Южный";
		break;
	case deg > 191.25 && deg < 213.75:
		deg = "Юго-юго-Западный";
		break;
	case deg >= 213.75 && deg <= 236.25:
		deg = "Юго-западный";
		break;
	case deg > 236.25 && deg < 258.75:
		deg = "Западно-юго-западный";
		break;
	case deg >= 258.75 && deg <= 281.25:
		deg = "Западный";
		break;
	case deg > 281.25 && deg < 303.75:
		deg = "Западно-северо-западный";
		break;
	case deg >= 303.75 && deg <= 326.25:
		deg = "Северо-западный";
		break;
	case deg > 326.25 && deg < 348.75:
		deg = "Северо-северо-западный";
		break;
	default:
		deg = "Нет данных";
}

global.sendToTelegram([
      "☀️ Погода: " + global.weather().ow_condition(), ,
      "☁️ Облачность: " + global.weather().ow_clouds() + "%",
      "🔭 Видимость: " + global.weather().ow_visibility() + " м", ,
      "🌡 Температура на улице: " + global.weather().ow_temp() + "°",
      "      	Минимальная: " + global.weather().ow_temp_min() + "°",
      "      	Максимальная: " + global.weather().ow_temp_max() + "°",
      "      	Ощущается как: " + global.weather().ow_feels_like() + "°", ,
      "💧 Влажность: " + global.weather().ow_hum() + "%",
      "🩺 Давление: " + global.weather().ow_pressure() + " мм.рт.ст.", ,
      "💨 Скорость ветра: " + global.weather().ow_wind() + " м/с",
      "🧭 Напревление ветра: " + deg,
      "🌬 Порывы ветра: " + global.weather().ow_gust() + " м/с", ,
      "🌅 Восход: " + global.weather().ow_sunrise(),
      "🌇 Закат: " + global.weather().ow_sunset()
    ]);
}

Скачать шаблон сценария OpenWeather в Telegram

Отправка показаний Яндекс.Погоды в Telegram

if (!global.yandex_api) {
global.sendToTelegram("Погода Яндекса не настроена"); log.info("Погода Яндекса не настроена")} else {
var cond
switch(global.weather().ya_condition())
{
    case 'clear' : cond = "*Ясно 🌞*"; break;
    case 'partly-cloudy' : cond = "*Малооблачно 🌥*"; break;
    case 'cloudy' : cond = "*Облачно с прояснениями 🌤*"; break;
    case 'overcast' : cond = "*Пасмурно ☁️*"; break;
    case 'drizzle' : cond = "*Морось 🌦*"; break;
    case 'light-rain' : cond = "*Небольшой дождь 🌧*"; break;
    case 'rain' : cond = "*Дождь 🌧*"; break;
    case 'moderate-rain' : cond = "*Умеренно сильный дождь 🌧*"; break;
    case 'heavy-rain' : cond = "*Сильный дождь 🌧*"; break;
    case 'continuous-heavy-rain' : cond = "*Длительный сильный дождь 🌧*"; break;
    case 'showers' : cond = "*Ливень 🌧*"; break;
    case 'wet-snow' : cond = "*Дождь со снегом 🌧🌨*"; break;
    case 'light-snow' : cond = "*Небольшой снег 🌧*"; break;
    case 'snow' : cond = "*Снег 🌧*"; break;
    case 'snow-showers' : cond = "*Снегопад 🌧*"; break;
    case 'hail' : cond = "*град*"; break;
    case 'thunderstorm' : cond = "*гроза*"; break;
    case 'thunderstorm-with-rain' : cond = "*Дождь с грозой*"; break;
    case 'thunderstorm-with-hail' : cond = "*Гроза с градом*"; break;

}
let cond0
switch(global.weather().ya_1_condition())
{
    case 'clear' : cond0 = "*Ясно 🌞*"; break;
    case 'partly-cloudy' : cond0 = "*Малооблачно 🌥*"; break;
    case 'cloudy' : cond0 = "*Облачно с прояснениями 🌤*"; break;
    case 'overcast' : cond0 = "*Пасмурно ☁️*"; break;
    case 'drizzle' : cond0 = "*Морось 🌦*"; break;
    case 'light-rain' : cond0 = "*Небольшой дождь 🌧*"; break;
    case 'rain' : cond0 = "*Дождь 🌧*"; break;
    case 'moderate-rain' : cond0 = "*Умеренно сильный дождь 🌧*"; break;
    case 'heavy-rain' : cond0 = "*Сильный дождь 🌧*"; break;
    case 'continuous-heavy-rain' : cond0 = "*Длительный сильный дождь 🌧*"; break;
    case 'showers' : cond0 = "*Ливень 🌧*"; break;
    case 'wet-snow' : cond0 = "*Дождь со снегом 🌧🌨*"; break;
    case 'light-snow' : cond0 = "*Небольшой снег 🌧*"; break;
    case 'snow' : cond0 = "*Снег 🌧*"; break;
    case 'snow-showers' : cond0 = "*Снегопад 🌧*"; break;
    case 'hail' : cond0 = "*град*"; break;
    case 'thunderstorm' : cond0 = "*гроза*"; break;
    case 'thunderstorm-with-rain' : cond0 = "*Дождь с грозой*"; break;
    case 'thunderstorm-with-hail' : cond0 = "*Гроза с градом*"; break;

}
let cond1
switch(global.weather().ya_2_condition())
{
    case 'clear' : cond1 = "*Ясно 🌞*"; break;
    case 'partly-cloudy' : cond1 = "*Малооблачно 🌥*"; break;
    case 'cloudy' : cond1 = "*Облачно с прояснениями 🌤*"; break;
    case 'overcast' : cond1 = "*Пасмурно ☁️*"; break;
    case 'drizzle' : cond1 = "*Морось 🌦*"; break;
    case 'light-rain' : cond1 = "*Небольшой дождь 🌧*"; break;
    case 'rain' : cond1 = "*Дождь 🌧*"; break;
    case 'moderate-rain' : cond1 = "*Умеренно сильный дождь 🌧*"; break;
    case 'heavy-rain' : cond1 = "*Сильный дождь 🌧*"; break;
    case 'continuous-heavy-rain' : cond1 = "*Длительный сильный дождь 🌧*"; break;
    case 'showers' : cond1 = "*Ливень 🌧*"; break;
    case 'wet-snow' : cond1 = "*Дождь со снегом 🌧🌨*"; break;
    case 'light-snow' : cond1 = "*Небольшой снег 🌧*"; break;
    case 'snow' : cond1 = "*Снег 🌧*"; break;
    case 'snow-showers' : cond1 = "*Снегопад 🌧*"; break;
    case 'hail' : cond1 = "*град*"; break;
    case 'thunderstorm' : cond1 = "*гроза*"; break;
    case 'thunderstorm-with-rain' : cond1 = "*Дождь с грозой*"; break;
    case 'thunderstorm-with-hail' : cond1 = "*Гроза с градом*"; break;

}
let wind_dir
switch(global.weather().ya_wind_direction())
{
    case 'nw' : wind_dir = "северо-западный";  break;
    case 'n' : wind_dir = "северный";  break;
    case 'ne' : wind_dir = "северо-восточный";  break;
    case 'e' : wind_dir = "восточный";  break;
    case 'se' : wind_dir = "юго-восточный";  break;
    case 's' : wind_dir = "южный";  break;
    case 'sw' : wind_dir = "юго-западный";  break;
    case 'w' : wind_dir = "западный";  break;
    case 'c' : wind_dir = "штиль";  break;
}

let wind_dir0
switch(global.weather().ya_1_wind_direction())
{
    case 'nw' : wind_dir0 = "северо-западный";  break;
    case 'n' : wind_dir0 = "северный";  break;
    case 'ne' : wind_dir0 = "северо-восточный";  break;
    case 'e' : wind_dir0 = "восточный";  break;
    case 'se' : wind_dir0 = "юго-восточный";  break;
    case 's' : wind_dir0 = "южный";  break;
    case 'sw' : wind_dir0 = "юго-западный";  break;
    case 'w' : wind_dir0 = "западный";  break;
    case 'c' : wind_dir0 = "штиль";  break;
}

let wind_dir1
switch(global.weather().ya_2_wind_direction())
{
    case 'nw' : wind_dir1 = "северо-западный";  break;
    case 'n' : wind_dir1 = "северный";  break;
    case 'ne' : wind_dir1 = "северо-восточный";  break;
    case 'e' : wind_dir1 = "восточный";  break;
    case 'se' : wind_dir1 = "юго-восточный";  break;
    case 's' : wind_dir1 = "южный";  break;
    case 'sw' : wind_dir1 = "юго-западный";  break;
    case 'w' : wind_dir1 = "западный";  break;
    case 'c' : wind_dir1 = "штиль";  break;
}


let moon
switch(global.weather().ya_moon_text())
{
	case 'moon-code-0' : moon = "полнолуние";  break;
	case 'moon-code-1' : moon = "убывающая луна";  break;
	case 'moon-code-2' : moon = "убывающая луна";  break;
	case 'moon-code-3' : moon = "убывающая луна";  break;
	case 'moon-code-4' : moon = "последняя четверть";  break;
	case 'moon-code-5' : moon = "убывающая луна";  break;
	case 'moon-code-6' : moon = "убывающая луна";  break;
	case 'moon-code-7' : moon = "убывающая луна";  break;
	case 'moon-code-8' : moon = "новолуние";  break;
	case 'moon-code-9' : moon = "растущая луна";  break;
	case 'moon-code-10' : moon = "растущая луна";  break;
	case 'moon-code-11' : moon = "растущая луна";  break;
	case 'moon-code-12' : moon = "первая четверть";  break;
	case 'moon-code-13' : moon = "растущая луна";  break;
	case 'moon-code-14' : moon = "растущая луна";  break;
	case 'moon-code-15' : moon = "растущая луна";  break;
}
let part0
switch(global.weather().ya_part_1_name())
{
	case 'night' : part0 = "*Ночью*";  break;
	case 'morning' : part0 = "*Утром*";  break;
	case 'day' : part0 = "*Днем*";  break;
	case 'evening' : part0 = "*Вечером*";  break;
}
let part1
switch(global.weather().ya_part_2_name())
{
	case 'night' : part1 = "*Ночью*";  break;
	case 'morning' : part1 = "*Утром*";  break;
	case 'day' : part1 = "*Днем*";  break;
	case 'evening' : part1 = "*Вечером*";  break;
}

global.sendToTelegram(["Погода Яндекс:",
        "=================================",
        "=================================",
        cond,
        "---------------------------------------------",
        "Температура (факт):* " + Hub.getCharacteristicValue(1199,15) + " °C*",
        "Температура (прогноз):* " + global.weather().ya_temp() + " °C*",
        "Ощущается:* " + global.weather().ya_feels_like() +" °C*",
        "Относительная влажность:* " + global.weather().ya_hum() + " %*",
        "---------------------------------------------",
        "Ветер: *" + wind_dir +"*", 
        "Скорость ветра: *" + global.weather().ya_wind() + " м/с*", 
        "С порывами до: *" + global.weather().ya_gust() + " м/с*",
        "---------------------------------------------",
        "Фаза луны: * " + moon +"*",
        "---------------------------------------------",
        "Восход: *" + global.weather().ya_sunrise() +"*",
        "Закат:    *" + global.weather().ya_sunset() +"*",
        "=================================",
        "=================================",
        part0 + " ожидается:",
        cond0,
        "---------------------------------------------",
        "Вероятность осадков: *" + global.weather().ya_1_prec() + " %*",
        "Длительность осадков: *" + global.weather().ya_1_prec_period() + " минут*",
        "Количество осадков: *" + global.weather().ya_1_prec_mm() + " мм.*",
        "---------------------------------------------",
        "Температура (мин):* " + global.weather().ya_1_temp_min() + " °C*",
        "Температура (макс):* " + global.weather().ya_1_temp_max() + " °C*",
        "Ощущается:* " + global.weather().ya_1_feels_like() +" °C*",
        "Относительная влажность:* " + global.weather().ya_1_hum() + " %*",
        "---------------------------------------------",
        "Ветер: *" + wind_dir0 +"*", 
        "Скорость ветра: *" + global.weather().ya_1_wind() + " м/с*", 
        "С порывами до: *" + global.weather().ya_1_gust() + " м/с*",
        "=================================",
        "=================================",
        part1 + " ожидается:",
        cond1,
        "---------------------------------------------",
        "Вероятность осадков: *" + global.weather().ya_2_prec() + " %*",
        "Длительность осадков: *" + global.weather().ya_2_prec_period() + " минут*",
        "Количество осадков: *" + global.weather().ya_2_prec_mm() + " мм.*",
        "---------------------------------------------",
        "Температура (мин):* " + global.weather().ya_2_temp_min() + " °C*",
        "Температура (макс):* " + global.weather().ya_2_temp_max() + " °C*",
        "Ощущается:* " + global.weather().ya_2_feels_like() +" °C*",
        "Относительная влажность:* " + global.weather().ya_2_hum() + " %*",
        "---------------------------------------------",
        "Ветер: *" + wind_dir1 +"*", 
        "Скорость ветра: *" + global.weather().ya_2_wind() + " м/с*", 
        "С порывами до: *" + global.weather().ya_2_gust() + " м/с*",
        "---------------------------------------------",
        ]);
}

Скачать шаблон сценария Яндекс.Погоды в Telegram