На графике температура пошла вниз. Когда это стало заметно и можно ли было предупредить раньше? Возьмём историю измерений и попробуем проверить такой вопрос. Сначала восстановим события по журналу, затем сравним простое правило с моделью временного ряда.
Это план учебного опыта: подготовим данные и способ проверки, по которым затем можно обучать модель. Основы — в статье о нейросетях для фермера и сравнении архитектур. Источниками данных могут стать метеостанция, почвенные датчики и журнал системы полива; обмен сообщениями разобран в материале об MQTT.
Ставим рядом простой вариант для сравнения
Начните с понятного правила: выбранный температурный порог, отсутствие свежих данных или необычный расход воды. Запишите его срабатывания и проверьте датчики и связь. Получится отправная точка для сравнения с более сложным прогнозом.
Выберите порог для конкретной точки и задачи. Для почвы сначала изучите ожидаемый отклик после полива в своей зоне. Отдельно определите, что человек делает после сигнала; подключение защитного оборудования и насоса потребует собственной проверенной логики.
Теперь сформулируйте, что хотите улучшить: получить запас времени, сократить пропуски или ложные тревоги. Сохраните результат простого правила и сравнивайте модель на тех же критериях.
Что именно будем предсказывать
Модель получает последовательность чисел и подбирает связь с выбранной целью. Посмотрите, какие состояния представлены в истории и менялись ли условия измерений. Пропуски и новые условия важно отметить до обучения.
Выберите один ответ: температура в определённой точке, пересечение порога за заданное время или отклонение расхода. Для каждого потребуются свои метки и критерии. Чем точнее сформулирован вопрос, тем проще проверить результат.
Готовим журнал измерений и событий
- Время измерения с часовым поясом, идентификатор датчика и зона. Время получения сообщения сохраняйте отдельно, если доставка может задерживаться.
- Температура и влажность воздуха с описанием высоты, защиты и места установки. При нескольких точках не объединяйте их в одну безымянную колонку.
- Показания почвенных датчиков, их глубина, единицы и способ калибровки. Относительный индекс нельзя выдавать за объёмную влажность VWC.
- Команды полива и независимо измеренный результат: расход, объём, давление или доступное подтверждение состояния. Команда «включить» ещё не доказывает поступление воды.
- Признаки качества: пропуск, отказ, обслуживание, замена или перемещение датчика. Отсутствующие значения не подменяйте нулём.
- При использовании погоды — источник и время выпуска прогноза. В проверку прошлого нельзя подставлять прогноз, который появился позже момента расчёта.
Ниже — вымышленные строки для пояснения формата, не измерения реального хозяйства. Z обозначает UTC, rh_pct — относительную влажность в процентах, soil_vwc — долю объёма, а quality=ok — условную отметку проверки. Глубину и расположение каждого прибора храните в отдельном справочнике по sensor_id.
timestamp_utc,zone,sensor_id,temp_c,rh_pct,soil_vwc,quality
2026-05-01T21:00:00Z,gh1,node_a,8.2,71,0.28,ok
2026-05-01T21:15:00Z,gh1,node_a,7.6,74,0.28,ok
Частоту записей выберите по скорости интересующих изменений, возможностям приборов и нужной задержке. Две строки выше лишь показывают формат. Продолжайте сбор так, чтобы в проверке появились сами события, которые хотите замечать.
Для события сохраняйте время, место, способ подтверждения и действие сотрудника. Причину добавляйте после проверки на месте. Так в журнале можно связать наблюдение «расход отсутствовал» с выясненной позже причиной «лента была пережата».
Разбираем два опыта для хозяйства
Успеем ли предупредить до выбранной температуры
Учебный вопрос можно задать так: пересечёт ли температура этой точки выбранную границу за H после расчёта? Согласуйте порог и горизонт для проекта. Проверяемое событие здесь — показание термометра; повреждение растения оценивается отдельно.
В руководстве FAO различаются радиационное охлаждение при ясной и спокойной погоде и поступление холодного воздуха при адвективном заморозке. Одного падения давления для описания риска недостаточно. Критическая температура повреждения зависит от культуры и стадии развития, а температура тканей может отличаться от температуры воздуха.
Согласуйте со специалистом размещение датчиков и действия после сигнала. Тогда прогноз можно будет проверить в понятной рабочей последовательности. Способ защиты от заморозка выбирайте отдельно по условиям хозяйства.
Чем сегодняшний полив отличается от предыдущих
Возьмите поливы одной зоны с похожими исходными условиями и фактическим объёмом. Наложите графики и найдите типичный отклик. Затем проверьте выбранный диапазон на более поздних событиях, оставленных вне его расчёта.
Отсутствие ожидаемого изменения влажности — повод проверить подачу воды, положение и исправность датчика, а не готовый диагноз засора. Изменение показаний глубже по профилю тоже не доказывает вымывание удобрений. Интерпретация требует сведений о почве, корневом слое и других измерениях; ограничения разобраны в статье о почвенных датчиках.
Отделяем прошлое от будущего
- Сохраните исходную выгрузку и сведения о приборах. Проверьте время, единицы, дубликаты сообщений, задержки и интервалы обслуживания.
- Разделите историю по времени на обучение, настройку и окончательную проверку. Для проверки переноса между зонами отдельно продумайте разделение связанных наблюдений.
- Определите допустимую длину пропусков и правила качества. Используйте только информацию, которая была доступна к моменту прогнозирования; заполнение из будущих измерений создаёт утечку.
- Рассчитайте параметры нормализации только по обучающей части и сохраните их. При постоянном признаке отдельно обработайте нулевое стандартное отклонение.
- Сформируйте окна истории и будущие метки внутри соответствующих временных частей. Исключите пересечение будущих меток с другой выборкой и при необходимости оставьте временной промежуток между частями.
- Настройки модели и порог уведомления выбирайте по набору настройки. Итоговый набор используйте после фиксации выбранного варианта.
- Сравните модель с простым правилом, сохранением последнего значения или другим подходящим базовым прогнозом. Повторите проверку на последующих временных отрезках.
Руководство TensorFlow по временным рядам показывает разделение по времени, нормализацию по обучающим данным и работу с окнами. TimeSeriesSplit предоставляет последовательные временные разбиения; параметр gap задаёт число исключённых наблюдений перед проверочной частью. Он не выбирает за вас подходящий промежуток и не устраняет автоматически все зависимости между окнами или зонами.
Следующий блок поможет описать задачу перед программированием. Выберите длину окна и горизонт до итоговой проверки, затем пройдите схему на своём журнале:
В момент t:
вход X = допустимые измерения за окно истории до t включительно
цель y = пересечение выбранного порога после t в пределах горизонта H
при неполных данных для цели: метка неизвестна, а не «события не было»
Для каждого временного разбиения:
обучить подготовку данных только на train
обучить базовый вариант и выбранную модель на train
подобрать настройки и порог уведомления по val
зафиксировать вариант и оценить его на более позднем test
Перед переходом к LSTM проверьте независимость данных и наличие целевых событий. Если в отложенном периоде их нет, оценку обнаружения придётся продолжить на других наблюдениях. Архитектуру выбирайте после сравнения с простым вариантом.
Показываем прогноз вместе с его основанием
- Сохраните независимые аварийные защиты и сообщения об отказах датчиков. Модель не должна отменять их.
- Сначала записывайте прогнозы без управления оборудованием: момент расчёта, горизонт, версию модели, доступность данных и оценку.
- Сопоставляйте прогноз с подтверждённым событием, пропуском или ложной тревогой. Продолжительность наблюдения определяется наличием нужных условий, а не календарным обещанием.
- Подбирайте порог уведомлений на выделенных данных с учётом цены пропуска и ложной тревоги. После изменения порога снова проверяйте результат на независимом периоде.
- Задайте ответственного и понятное действие при уведомлении, а также порядок работы при отсутствии связи или свежих данных.
Числовая оценка классификатора не становится вероятностью события только потому, что лежит между нулём и единицей; для этого нужна отдельная проверка калибровки. Сообщение должно объяснять, что именно прогнозируется и насколько свежи входные данные. Подходы к калибровке рассматриваются в работе Guo и соавторов.
Связь с текстовыми сводками обсуждается в материале о локальной сети и LLM, а распределение команд — в статье об агентах и оркестраторе. Подключение уведомлений и исполнителей требует самостоятельной проверки; данная схема их не реализует.
Проверяем ложные тревоги и пропущенные события
- Обучение прошло в спокойный период, а обнаружение редкого события объявлено проверенным без самих событий.
- Датчик переместили или заменили, но изменение не отмечено в истории.
- Команда полива использована как подтверждение реального расхода.
- Нормализация, заполнение пропусков или выбор порога использовали будущую проверочную часть.
- Тысячи соседних окон одного события посчитаны тысячами независимых подтверждений.
- Отсутствие связи или измерений отображается как отсутствие риска.
Для каждого события запишите, было ли предупреждение и какой запас времени оно дало. Отдельно посчитайте ложные уведомления. Для численного прогноза изучите ошибку возле важных границ. Затем повторите проверку на другом периоде, чтобы увидеть влияние условий.
Считаем небольшой опыт целиком
Включите выгрузку, хранение, проверку событий, обслуживание датчиков, разработку и повторные испытания. Измерьте скорость выбранной модели на своём компьютере. Эти данные помогут оценить объём следующего этапа.
Сначала опишите объём небольшого опыта и критерий продолжения. Например, проект должен дать проверяемое преимущество перед действующим правилом при приемлемом числе ложных тревог. Конкретные требования задаёт хозяйство до окончательной оценки, исходя из своей задачи.
Разбираем событие вместе с сотрудником
Создайте карточку: время прогноза, фактическое событие, способ проверки и действие ответственного. Добавляйте и ложные тревоги, и случаи, когда человек заметил проблему раньше. С такими записями обсуждение модели становится предметным.
Откройте исходный график рядом с временем предупреждения и результатом осмотра. Отдельно подпишите гипотезу и подтверждённую причину. Для оценки сэкономленных выездов или потерь сохраняйте данные, по которым это можно сравнить.
Добавляем фотографию к истории датчика
Фотография даст ещё одно наблюдение в тот же момент. Сохраните её рядом с исходным графиком и проверьте каждый канал отдельно. Совпавшие сигналы помогут выбрать вопрос для осмотра, а общую причину предстоит выяснить.
Для совместного анализа нужны согласованные время и зона, сведения о качестве кадра и измерений, версии программ. Ошибка одного канала не должна скрываться за результатом другого. Подключение ESP32-CAM с моделью изображений имеет смысл после самостоятельной проверки каждого этапа.
Выбираем первый проверяемый этап
- Проверьте расположение приборов, время и единицы; получите воспроизводимую выгрузку.
- Наладьте журнал подтверждённых событий, отказов и действий. Проверьте простые правила.
- Определите цель, горизонт, временные выборки и критерии качества; зафиксируйте базовый результат.
- Подготовьте и проверьте модель на отложенных периодах, включая нужные события.
- Проведите наблюдение в будущих условиях без управления оборудованием и разберите результаты с ответственными.
Если нужное событие пока не произошло, сохраните подготовленный процесс и продолжайте наблюдения. Отметьте, каких данных ещё не хватает для вывода. Это поможет решить, где полезнее приложить усилия дальше.
С чем переходить к следующему опыту
Соберите постановку задачи, подготовку данных, сравнение с простым правилом и журнал ошибок. Когда эти части понятны, выберите следующую доработку. Измерения, независимые защиты и порядок действий сохраняйте в основе рабочего процесса.
Первый результат — вопрос к своей истории, на который можно ответить проверкой по событиям. Связанный материал — камера и уведомления, общая последовательность — в путеводителе по DIY.





