Открыть меню
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

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

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

Статья находится на стадии заполнения по причине разработки сценариев

Данный набор сценариев, состоит из глобальных и блочных сценариев. Глобальные занимаются запросом данных, локальные отправляют показания в Telegram и обновляют показания виртуальных датчиков.

Для всех сервисов, кроме Yr.no - требуется получение API ключей. То есть вам нужно зарегистрироваться в сервисе как разработчик и получить API ключ, который потом необходимо вставить в один ключевой глобальный сценарий, который обязателен для работы всех остальных в наборе.

Yr.No

Самый простой и доступный сервис. Не требует регистрации и получения API ключей и каких либо дополнительных действий. Но отдает только часовые показания. То есть когда бы вы ни запросили данные, прогноз будет показываться от начала часа.

Отправка показаний Yr.no в Telegram

global.yr_request();
if (global.yr.error && !global.yr.temp) {log.warn("Данных YR нет: {}", global.yr.error_code)} else {
global.sendToTelegram(["Погода Yr.no:",
        "=================================",
		"Данные получены в: *" + global.yr.time + "*",
        "=================================",
        "Состояние: *" + global.yr.condition_1_hour + "*",
        "---------------------------------------------",
        "Температура (факт):* " + Hub.getCharacteristicValue(552,15) + " °C*",
        "Температура (прогноз):* " + global.yr.temp + " °C*",
        "Относительная влажность:* " + global.yr.hum + " %*",
        "---------------------------------------------",
        "Ветер: *" + global.yr.wind_dir + "*", 
        "Скорость ветра: *" + global.yr.wind + " м/с*", 
        "---------------------------------------------",
        "УФ Индекс: * " + global.yr.uv +"*",
        "---------------------------------------------",
		"Точка росы: *" + global.yr.dewpoint + "°C*",
        "---------------------------------------------",
		"Атмосферное давление: *" + global.yr.pressure + " мм.рт.ст.*",
        "---------------------------------------------",
		"Туман: *" + global.yr.fog + "%*",
        "=================================",
		"*Прогноз на ближайшие 6 часов*",
        "=================================",
        "*" + global.yr.condition_6_hours + "*",
		"Температура (мин):* " + global.yr.temp_min_6_hours + " °C*",
        "Температура (макс):* " + global.yr.temp_max_6_hours + " °C*",
        "Уровень осадков: *" + global.yr.prec + " мм.*",
        "=================================",
		"*Прогноз на ближайшие 12 часов*",
        "=================================",
        "*" + global.yr.condition_12_hours + "*",
        "================================="
        ]);
}


Переменные

  • global.yr.time - Время прогноза
  • global.yr.pressure - Атмосферное давление
  • global.yr.temp - Температура
  • global.yr.cloud - Уровень облачности (%)
  • global.yr.dewpoint - Точка росы
  • global.yr.fog - Уровень тумана (%)
  • global.yr.hum - Относительная влажность
  • global.yr.uv - Уровень ультрафиолета
  • global.yr.wind_deg - Направление ветра (в градусах)
  • global.yr.wind_dir - Направление ветра (текстовое)
  • global.yr.wind - Скорость ветра
  • global.yr.condition_1_hour - Состояние погоды в ближайший час
  • global.yr.condition_6_hours - Состояние погоды в ближайшие 6 часов
  • global.yr.condition_6_hours - Состояние погоды в ближайшие 12 часов
  • global.yr.temp_max_6_hours - Максимальная температура в ближайшие 6 часов
  • global.yr.temp_min_6_hours - Минимальная температура в ближайшие 6 часов
  • global.yr.prec - Уровень осадков в ближайшие 6 часов

OpenWeather

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

global.ow_request();
if (global.ow.error && !global.ow.temp) {log.warn("Данных OpenWeather нет: {}", global.ow.error_code); global.sendToTelegram(["Данных OpenWeather нет","Причина: " +  global.ow.error_code])} else {

global.sendToTelegram(["*Прогноз OpenWeather*",
        "=================================",
        "Данные получены в *: " + global.ow.time + "*",
        "=================================",
        "На улице *" + global.ow.condition + "*",
        "Облачность: *" + global.ow.clouds + "%*",
        "Видимость: *" + global.ow.visibility + " м.*",
        "---------------------------------------------",
        "Температура (прогноз):* " + global.ow.temp + " °C*",
        "Ощущается:* " + global.ow.feels_like +" °C*",
        "---------------------------------------------",        
        "Минимальная: *" + global.ow.temp_min + "°C*",
        "Максимальная: *" + global.ow.temp_max + "°C*",
        "---------------------------------------------",        
        "Относительная влажность:* " + global.ow.hum + " %*",
        "---------------------------------------------",
        "Атмосферное давление: *" + global.ow.pressure + " мм.рт.ст.*",
        "---------------------------------------------",
        "Ветер: *" + global.ow.wind_deg_text +"*", 
        "Скорость ветра: *" + global.ow.wind + " м/с*", 
        "С порывами до: *" + global.ow.gust + " м/с*",
        "---------------------------------------------",
        "Восход: *" + global.ow.sunrise +"*",
        "Закат:    *" + global.ow.sunset +"*",
        "=================================",
        ]);
}

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

Переменные для сценариев

  • global.ow.time - Время прогноза
  • global.ow.temp - Температура
  • global.ow.hum - Влажность
  • global.ow.pressure - Давление (мм. рт. ст.)
  • global.ow.wind - Скорость ветра (м/с)
  • global.ow.gust - Порывы ветра (м/с)
  • global.ow.wind_deg - Направление ветра (в градусах)
  • global.ow.wind_deg_text - Направление ветра в текстовом формате
  • global.ow.feels_like - Температура (Ощущается)
  • global.ow.temp_min - Минимальная температура
  • global.ow.temp_max - Максимальная температура
  • global.ow.clouds - Уровень облачности (%)
  • global.ow.visibility - Видимость (м)
  • global.ow.condition - Описание погоды (текстовое, для использования в Телеграм)
  • global.ow.sunrise - Время восхода
  • global.ow.sunset - Время заката

Яндекс

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

global.ya_request();
if (global.ya.error && !global.ya.temp) {log.warn("Данных Yandex нет: {}", global.ya.error_code); global.sendToTelegram(["Данных Яндекс нет","Причина: " +  global.ya.error_code])} else {
global.sendToTelegram(["*Погода Яндекс:*",
        "=================================",
        "Текущие показания получены в: *" + global.ya.time + "*",
        "=================================",
        global.ya.condition,
        "---------------------------------------------",
        "Температура (факт):* " + Hub.getCharacteristicValue(552,15) + " °C*",
        "Температура (прогноз):* " + global.ya.temp + " °C*",
        "Ощущается:* " + global.ya.feels_like +" °C*",
        "Относительная влажность:* " + global.ya.hum + " %*",
        "---------------------------------------------",
        "Ветер: *" + global.ya.wind_direction_text +"*", 
        "Скорость ветра: *" + global.ya.wind + " м/с*", 
        "С порывами до: *" + global.ya.gust + " м/с*",
        "---------------------------------------------",
        "Фаза луны: * " + global.ya.moon_text +"*",
        "---------------------------------------------",
        "Восход: *" + global.ya.sunrise +"*",
        "Закат:    *" + global.ya.sunset +"*", 
        "================================="]);
global.sendToTelegram([
        "=================================",
        "*Прогноз на следующие 6 часов*",
        "=================================",
        "Данные получены в: *" + global.ya.forecast_time + "*",
        "---------------------------------------------",
        "*" + global.ya.part_1_name + "* ожидается: *" + global.ya.condition_1 + "*",
        "---------------------------------------------",
        "Вероятность осадков: *" + global.ya.prec_1 + " %*",
        "Длительность осадков: *" + global.ya.prec_period_1 + " минут*",
        "Количество осадков: *" + global.ya.prec_mm_1 + " мм.*",
        "---------------------------------------------",
        "Температура (мин):* " + global.ya.temp_min_1 + " °C*",
        "Температура (макс):* " + global.ya.temp_max_1 + " °C*",
        "Ощущается:* " + global.ya.feels_like_1 +" °C*",
        "Относительная влажность:* " + global.ya.hum_1 + " %*",
        "---------------------------------------------",
        "Ветер: *" + global.ya.wind_direction_1_text +"*", 
        "Скорость ветра: *" + global.ya.wind_1 + " м/с*", 
        "С порывами до: *" + global.ya.gust_1 + " м/с*",
        "=================================",
        "*" + global.ya.part_2_name + "* ожидается: *" + global.ya.condition_2 + "*", 
        "---------------------------------------------",
        "Вероятность осадков: *" + global.ya.prec_2 + " %*",
        "Длительность осадков: *" + global.ya.prec_period_2 + " минут*",
        "Количество осадков: *" + global.ya.prec_mm_2 + " мм.*",
        "---------------------------------------------",
        "Температура (мин):* " + global.ya.temp_min_2 + " °C*",
        "Температура (макс):* " + global.ya.temp_max_2 + " °C*",
        "Ощущается:* " + global.ya.feels_like_2 +" °C*",
        "Относительная влажность:* " + global.ya.hum_2 + " %*",
        "---------------------------------------------",
        "Ветер: *" + global.ya.wind_direction_2_text +"*", 
        "Скорость ветра: *" + global.ya.wind_2 + " м/с*", 
        "С порывами до: *" + global.ya.gust_2 + " м/с*",
        "================================="
        ]);
}

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

Переменные

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

  • global.ya.time - Время текущего прогноза
  • global.ya.forecast_time - Время прогноза будущих периодов
  • global.ya.forecast_date - Дата прогноза будущих периодов
  • global.ya.condition - Описание погоды (текстовое, для использования в Телеграм)
  • global.ya.moon_text - Фаза луны (текстовое поле для использования в Телеграм)
  • global.ya.temp - Температура
  • global.ya.feels_like - Температура (Ощущается)
  • global.ya.hum - Влажность
  • global.ya.wind_direction_ - Направление ветра (символ)
  • global.ya.wind_direction_text - Направление ветра (текстовое поле для использования в Телеграм)
  • global.ya.wind - Скорость ветра (м/с)
  • global.ya.gust - Порывы ветра (м/с)
  • global.ya.sunrise - Время восхода
  • global.ya.sunset - Время заката

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

  • global.ya.part_1_name - Наименование периода суток
  • global.ya.condition_1 - Описание погоды
  • global.ya.temp_min_1 - Минимальная температура
  • global.ya.temp_max_1 - Максимальная температура
  • global.ya.feels_like_1 - Температура (Ощущается)
  • global.ya.hum_1 - Влажность
  • global.ya.wind_direction_1_text - Направление ветра (текстовое поле для использования в Телеграм)
  • global.ya.wind_direction_1 - Направление ветра (символ)
  • global.ya.wind_1 - Скорость ветра (м/с)
  • global.ya.gust_1 - Порывы ветра (м/с)
  • global.ya.prec_1 - Вероятность осадков
  • global.ya.prec_period_1 - Продолжительность осадков
  • global.ya.prec_mm_1 - Уровень осадков (мм)

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

  • global.ya.part_2_name - Наименование периода суток
  • global.ya.condition_2 - Описание погоды (текстовое, для использования в Телеграм)
  • global.ya.temp_min_2 - Минимальная температура
  • global.ya.temp_max_2 - Максимальная температура
  • global.ya.feels_like_2 - Температура (Ощущается)
  • global.ya.hum_2 - Влажность
  • global.ya.wind_direction_2_text - Направление ветра (текстовое поле для использования в Телеграм)
  • global.ya.wind_dir_2 - Направление ветра (символ)
  • global.ya.wind_2 - Скорость ветра (м/с)
  • global.ya.gust_2 - Порывы ветра (м/с)
  • global.ya.prec_2 - Вероятность осадков
  • global.ya.prec_period_2 - Продолжительность осадков
  • global.ya.prec_mm_2 - Уровень осадков (мм)

AccuWeather

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

global.acc_request();
if (global.acc.error && !global.acc.temp) {log.warn("Данных AccuWeather нет: {}", global.acc.error_code); global.sendToTelegram(["Данных AccuWeather нет","Причина: " +  global.acc.error_code])} else {
global.sendToTelegram(["*Погода AccuWeather*:",
        "=================================",
        "Данные получены в: *" + global.acc.time + "*",
        "=================================",
        "На улице: *" + global.acc.condition + "*",
        "Облачность: *" + global.acc.cloud + " %*",
        "---------------------------------------------",
        "Температура (факт):* " + Hub.getCharacteristicValue(552,15) + " °C*",
        "Температура (прогноз):* " + global.acc.temp + " °C*",
        "Ощущается (RealFeel):* " + global.acc.real_temp +" °C*",
        "---------------------------------------------",
        "Ощущается (RealFeel в тени):* " + global.acc.real_shade +" °C*",
        "Ощущается (с учетом влажности и ветра):* " + global.acc.apparent_temp +" °C*",
        "Ощущается (открытой кожей с ветром):* " + global.acc.wind_chill_temp +" °C*",
        "---------------------------------------------",
        "Температура (мин):* " + global.acc.temp_min + " °C*",
        "Температура (макс):* " + global.acc.temp_max + " °C*",
        "---------------------------------------------",
        "Относительная влажность:* " + global.acc.hum + " %*",
        "Влажность уличного воздуха в помещении:* " + global.acc.indoor_hum + " %*",
        "---------------------------------------------",
        "Точка росы:* " + global.acc.dewpoint + " °C*",
        "---------------------------------------------",
        "УФ Индекс:* " + global.acc.uv + " (" + global.acc.uv_text + ")*",
        "---------------------------------------------",
        "Ветер: *" + global.acc.wind_deg_text +"*", 
        "Скорость ветра: *" + global.acc.wind + " м/с*", 
        "С порывами до: *" + global.acc.gust + " м/с*",
        "---------------------------------------------",
        "Атмосферное давление:* " + global.acc.pressure + " мм.рт.ст.*",
        "---------------------------------------------",
        "Видимость:* " + global.acc.visibility + " км.*",
        "---------------------------------------------",
        "Уровень осадков в ближайший час:* " + global.acc.precip + " мм.*",
        "================================="
        ])
}

Переменные

  • global.acc.time - Время прогноза
  • global.acc.condition - Описание погоды (текстовое, для использования в Телеграм)
  • global.acc.cloud - Уровень облачности (%)
  • global.acc.temp - Температура
  • global.acc.temp_min - Минимальная температура
  • global.acc.temp_max - Максимальная температура
  • global.acc.real_temp - Температура RealTemp (зарегистрированная торговая марка AccuWeather)
  • global.acc.real_shade - Температура RealTemp в тени
  • global.acc.apparent_temp - Температура (Ощущается)
  • global.acc.wind_chill_temp - Температура (Ощущается открытой кожей)
  • global.acc.hum - Влажность
  • global.acc.indoor_hum - Влажность воздуха попадающего в помещение с улицы
  • global.acc.dewpoint - Точка росы
  • global.acc.uv - Уровень ультрафиолета
  • global.acc.uv_text - Уровень ультрафиолета (текстовое, для использования в Телеграм)
  • global.acc.wind - Скорость ветра (м/с)
  • global.acc.gust - Порывы ветра (м/с)
  • global.acc.wind_dir - направление ветра (английский символ)
  • global.acc.wind_dir_text - направление ветра (текстовое)
  • global.acc.wind_deg - направление ветра (в градусах)
  • global.acc.wind_deg_text - направление ветра (текстовое, вычисленное из градусов)
  • global.acc.visibility - видимость (км)
  • global.acc.pressure - атмосферное давление (мм.рт.ст.)
  • global.acc.precip - уровень осадков (мм)