Поиск по базе знаний

Интеграция внешних API погоды в Node-RED для Алисы

Интеграция погодных данных из внешних источников — это один из наиболее эффективных способов сделать ваш умный дом по-настоящему автономным. Обычные датчики дождя, установленные на участке, работают по факту: они фиксируют влажность только тогда, когда вода уже попадает на их сенсорные пластины. Это означает, что система полива может включиться прямо перед началом грозы или работать вхолостую при высокой влажности почвы.

Использование внешних метеорологических сервисов, таких как OpenWeatherMap, Yandex.Weather или Visual Crossing, позволяет предсказывать погодные условия заранее. Если по прогнозу вероятность осадков в ближайшие 12 часов составляет более 70%, система автоматически заблокирует включение клапанов полива, сберегая воду и защищая корневую систему растений от переувлажнения. В этой статье мы подробно разберем, как реализовать такую логику на сервере Node-RED и подружить ее с голосовым ассистентом Алисой.


Шаг 1: Получение доступа к метеорологическому API

Для начала интеграции нам потребуется уникальный ключ доступа (API key). В качестве примера мы будем использовать сервис OpenWeatherMap, так как он предоставляет бесплатный тарифный план One Call API 3.0, включающий до 1000 бесплатных запросов в сутки. Этого лимита более чем достаточно для нужд частного дома.

  1. Перейдите на официальный сайт выбранного погодного сервиса и создайте учетную запись.
  2. В личном кабинете перейдите в раздел управления ключами безопасности и сгенерируйте новый токен.
  3. Скопируйте полученную строку (обычно это длинный буквенно-цифровой хеш) — мы будем использовать ее в конфигурации Node-RED.

NOTE

При активации нового ключа на сервисах прогнозирования погоды может пройти от 10 минут до нескольких часов, прежде чем токен станет активным на серверах провайдера. Если при первом запросе вы получаете ошибку доступа с кодом 401 Unauthorized, просто подождите некоторое время.


Шаг 2: Настройка опроса API в Node-RED

Для сбора данных нам понадобятся три основные ноды: планировщик опроса, генератор HTTP-запросов и парсер полученного ответа.

Для планирования времени отправки запросов и периодичности обновления данных лучше всего использовать специализированные Cron-ноды. Подробнее о тонкостях их конфигурирования вы можете прочитать в нашей статье про планирование задач в Node-RED. Настройте планировщик на запуск каждые 3 часа. Это оптимальный интервал: погодный прогноз не меняется каждую минуту, а частые запросы могут исчерпать бесплатные лимиты вашего тарифа.

Свяжите планировщик с нодой http request. Установите метод запроса в положение GET. В поле URL вставьте адрес запроса: https://api.openweathermap.org/data/3.0/onecall?lat=55.75&lon=37.62&exclude=minutely,hourly&appid=ВАШ_API_КЛЮЧ&units=metric

Обязательно замените значения параметров lat (широта) и lon (долгота) на реальные координаты вашего земельного участка, а вместо ВАШ_API_КЛЮЧ подставьте токен, полученный на первом шаге. Настройте возвращаемый формат данных (Return) как a parsed JSON object, чтобы Node-RED автоматически преобразовал текстовый ответ сервера в удобный древовидный объект JavaScript.


Шаг 3: Фильтрация и анализ погодного прогноза

После успешного выполнения запроса в объекте msg.payload будет содержаться полная метеорологическая сводка. Нам необходимо отфильтровать эти данные и принять решение о необходимости полива. Добавьте на холст ноду function и вставьте в нее следующий код на JavaScript:

const dailyForecast = msg.payload.daily[0];
const temp = dailyForecast.temp.day;
const pop = dailyForecast.pop; // Probability of precipitation (0 to 1)

msg.temp = temp;
msg.rainProbability = pop * 100;

// Если температура ниже 15°C или вероятность дождя выше 70%
if (temp < 15 || pop > 0.7) {
    msg.payload = { irrigationAllowed: false, reason: "Ожидаются осадки или слишком холодно" };
} else {
    msg.payload = { irrigationAllowed: true, reason: "Погода благоприятна для полива" };
}

return msg;

Этот скрипт проверяет температуру воздуха днем и вероятность выпадения осадков. Если на улице холодно (ниже 15°C) или ожидается сильный дождь, полив блокируется.

TIP

Вы можете усложнить логику, анализируя не только будущий прогноз, но и фактическое количество осадков за прошедшие сутки (параметр rain в истории данных), чтобы не заливать растения, если вчера прошел сильный ливень.

Полученные погодные данные можно также применить для повышения энергоэффективности отопления дома. Ознакомьтесь с тем, как настроить автоматический расчет температурной кривой отопления в Node-RED, чтобы плавно регулировать температуру радиаторов в зависимости от уличного климата.


Шаг 4: Передача данных в Умный Дом с Алисой

Чтобы использовать логическое решение о поливе в экосистеме Яндекса, нам нужно передать статус блокировки. Для этого отлично подойдет виртуальный переключатель (виртуальное устройство типа “Выключатель”), созданный через Home Assistant или плагин node-red-contrib-yandex-alice.

Если автоматический полив разрешен, виртуальный тумблер переводится в состояние ON, если заблокирован прогнозом — в состояние OFF. В приложении Дом с Алисой настройте стандартный сценарий:

  • Условие запуска: Время 20:00 и состояние виртуального тумблера полива равно ON.
  • Действие: Включить умный клапан полива на 15 минут.

Параллельно настройте голосовое оповещение на Яндекс Станции. При переходе статуса в положение OFF Алиса может произнести фразу: «Внимание, автоматический полив грядок отменен из-за неблагоприятного прогноза погоды».

WARNING

Никогда не используйте прямое управление клапанами воды без дублирующих защитных таймеров на самом устройстве. Если сервер Node-RED зависнет или пропадет связь с интернетом в момент, когда клапан открыт, вода продолжит литься, что приведет к затоплению участка и поломке насосного оборудования. Убедитесь, что ваш умный клапан имеет встроенную аппаратную функцию автоотключения (например, встроенный таймер задержки на реле).

IMPORTANT

При работе с внешними API всегда обрабатывайте возможные сетевые ошибки. Если погодный сервер временно недоступен и возвращает ошибку 502 или пустой ответ, ваш скрипт не должен зависать или блокировать полив по умолчанию. Предусмотрите в коде блок try-catch и в случае сбоя сети принимайте решение на основе локальных физических датчиков влажности почвы.

Инструкция по настройке

1

Получение API-ключа погоды

Зарегистрируйтесь на метеорологическом сервисе и получите персональный токен доступа к данным.

2

Настройка HTTP-запроса в Node-RED

Добавьте ноду http request и укажите URL-адрес запроса с вашими географическими координатами.

3

Фильтрация и анализ прогноза

Создайте функцию-обработчик для извлечения вероятности осадков и температуры на текущие сутки.

4

Связывание сценария с Алисой

Передайте статус готовности полива в умный дом Яндекса через виртуальный выключатель.

Совет эксперта: Управляйте домом с компьютера

Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.