Прогноз нагрузки по погоде

Нагрузка источников на ближайшие сутки по прогнозу погоды Open-Meteo: пересчёт последнего расчёта по температурному графику и сравнение с фактом по датчикам на выходе источника.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Расчёты и диагностика → «Телеметрия: факт против модели» → вкладка «Прогноз». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
Просмотр — всем, кто вошёл; «Обновить погоду» и «Прогноз файлом» — право «Журналы: ремонты, ПТС, акты, ТУ, привязки»; «Расчёт на N °C» — право «Запуск расчётов».
Читаю как

Возможности

  • Нагрузка каждого источника на ближайшие сутки по прогнозу погоды: пик и среднее, Гкал/ч, и отпуск за сутки, Гкал.
  • По выбранному источнику — два графика: температура воздуха и нагрузка за прошедшие 48 часов и следующие 72 часа, с разбивкой на отопление, вентиляцию и ГВС.
  • Сравнение с фактом: где на выходе источника есть расходомеры и термометры, под графиком — среднее расхождение модели с фактом в процентах.
  • «Обновить погоду» — взять свежий прогноз Open-Meteo; «Прогноз файлом» — загрузить температуру воздуха по часам из своего файла.
  • «Расчёт на N °C (минимум суток)» — плановый расчёт фрагмента источника на самую низкую температуру ближайших суток.

Как это работает

Основа. Для каждого источника берётся последний расчёт фрагмента, в котором есть нагрузки потребителей этого источника. Фрагменты-копии сценариев «что если» (tgid_scenario) пропускаются: это не источники города. Из него — расчётная нагрузка при Tн этого расчёта: отопление, вентиляция, ГВС по закрытой и открытой схеме. Источники в таблице идут по убыванию расчётной нагрузки, первый выбирается сам.

Пересчёт на погоду. Отопление и вентиляция пересчитываются по относительной нагрузке температурного графика города: Q(Tн) = Q(Tн расчёта) × Qотн(Tн) / Qотн(Tн расчёта). За краями графика берётся крайняя точка — выше точки излома нагрузка не падает. ГВС закрытой схемы — среднечасовая, без изменения; открытой — пропорционально (t подачи − tх) / (t расчёта − tх), холодная вода tх — из карточки источника, по умолчанию 5 °C. Тепловые потери сети в прогноз не входят.

Факт. Если на выходе источника заведены датчики телеметрии: Q = (G1 × (t1 − tх) − G2 × (t2 − tх)) / 1000, Гкал/ч; без расхода обратки — G1 × (t1 − t2) / 1000. Расхождение «по модулю» — среднее по прошлым часам, где есть и факт, и фактическая погода.

Погода. Часовые температуры лежат в tgid_weather. С Open-Meteo берутся 3 прошедших и 3 следующих дня; обновление — само, когда кто-то открыл вкладку, а данным больше 60 минут (настраивается, не меньше 10); после сбоя связи — повтор через 5 минут. Координаты — из настроек, без них — центр источников города. Температура принимается от −70 до 60 °C. Значения, введённые вручную или файлом, Open-Meteo не перезаписывает.

Расчёт на минимум суток. Кнопка ставит в общую очередь плановый расчёт фрагмента на целое значение минимальной температуры ближайших суток. Расчёт называется «Прогноз <дата> на N °C» и становится последним расчётом фрагмента: от него дальше считают и прогноз, и сравнение датчиков, и карта по умолчанию.

Что нужно для работы

  • Плановый расчёт фрагмента с источником и нагрузками потребителей; температурный график города.
  • Для сравнения с фактом — датчики расхода и температуры на выходе источника (вкладка «Датчики»).
  • Просмотр — всем, кто вошёл.
  • «Обновить погоду» и «Прогноз файлом» — право «Журналы: ремонты, ПТС, акты, ТУ, привязки» и включённая правка данных.
  • «Расчёт на N °C» — право «Запуск расчётов».
  • Для Open-Meteo — выход сервера в интернет.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Телеметрия: факт против модели» — пункт выделен рамкой.

    Пункт «Телеметрия: факт против модели» в панели «Инструменты»

  2. Нажмите пункт — откроется окно.

    Окно «Телеметрия: факт против модели»

  3. Откройте вкладку «Прогноз» — таблица источников с нагрузкой на ближайшие сутки; первый источник выбран сразу, под таблицей — его графики.

    Прогноз нагрузки по погоде: шаг 3

  4. Щёлкните строку другого источника: графики температуры воздуха и нагрузки, под ними — расхождение модели с фактом, если на выходе источника есть датчики.

    Прогноз нагрузки по погоде: шаг 4

Примеры

Копия Алматы, 6 ноября. Погода Open-Meteo для точки (43,31; 76,94). В таблице две строки — АТЭЦ-1 и АТЭЦ-2 фрагмента «Маг. сети для расчета НС»: копии сценариев «что если» (здесь «Перспектива 2035») в прогноз не попадают. Первой выбирается самая нагруженная — АТЭЦ-1.

АТЭЦ-1 фрагмента «Маг. сети для расчета НС»: основа — расчёт №3 при −25 °C, 672 потребителя, 1 460,2 Гкал/ч (отопление 1 059,26, вентиляция 111,93, ГВС открытой схемы 289). Воздух на ближайшие сутки от 3,3 до 15,9 °C, пик и среднее — 574,9 / 511,4 Гкал/ч, отпуск 12 273 Гкал. Кнопка предлагает «Расчёт на 3 °C (минимум суток)».

У этой строки на выходе есть датчики пилота ALM-TEC1-T1, T2, G1, G2. За 29 часов с фактом модель в среднем выше факта на 34,2 %: например, 4 ноября в 15:00 UTC при 9,9 °C модель — 474,9 Гкал/ч, факт — 363,1.

Если не получается

  • «Нет источников с расчётом нагрузок: выполните плановый расчёт фрагмента с источником.» — нет ни одного расчёта с нагрузками по источникам.
  • «Погода не обновилась» — нет связи сервера с Open-Meteo; прогноз остаётся прежним.
  • «Нет источников с расчётом нагрузок: выполните плановый расчёт фрагмента с источником.» — нет ни одного расчёта с нагрузками по источникам.
  • «Нет источника с расчётом нагрузок и температурным графиком» — у выбранного источника пропал расчёт или нет температурного графика.
  • «Таблица погоды ещё создаётся (доводка базы города) — повторите через минуту».
  • В строке погоды «— Open-Meteo недоступен: …» — нет связи сервера с интернетом; прогноз остаётся прежним. «— нет координат города: задайте WEATHER_LAT и WEATHER_LON» — нет ни координат, ни источников с местом.
  • «Прогноз погоды — вручную или файлом (Open-Meteo выключен)» — на сервере выключен поставщик погоды; загрузите прогноз файлом.
  • «Файл больше 5 МБ», «В файле нет строк «время; температура» от −70 до 60 °C», «В файле несколько колонок значений (…)» — в файле прогноза должна быть одна колонка температуры.
  • «На выходе источника нет датчиков расхода и температуры — факт не сравнивается.» — заведите датчики на вкладке «Датчики».
  • Сценарии и перспективы в списке рядом с действующими источниками — у копий фрагментов есть свои расчёты нагрузок; смотрите подпись фрагмента под названием источника.

Для администратора

  • Погода: WEATHER_PROVIDER (open-meteo или none), WEATHER_LAT, WEATHER_LON, WEATHER_REFRESH_MIN, WEATHER_PAST_DAYS, WEATHER_FORECAST_DAYS.
  • Таблицу tgid_weather API создаёт сам при доводке базы города.
  • Расчёт на минимум суток идёт в общую очередь расчётов города, как плановый расчёт из окна расчётов.

Для разработчика

  • API: GET /api/v1/forecast/load (сводка, ближайшие 24 часа), GET /api/v1/forecast/load/{source_id}?past_hours=48&hours=72 (до 336 и 384 часов), POST /api/v1/forecast/weather (часы вручную), POST /api/v1/forecast/weather/import (файл), POST /api/v1/forecast/weather/refresh.
  • API, код: routers/load_forecast.py, database/load_forecast.py, database/weather.py.
  • Веб: components/LoadForecastPanel.vue (вкладка «Прогноз» в components/TelemetryDialog.vue), utils/loadForecast.ts; расчёт на Tн — fastApiService.runSetyMode.
  • Тесты: tests/utils/loadForecast.spec.ts; API — test_load_forecast.py; e2e — e2e/functions/other-networks.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо