Порог «если напряжение ниже 200 В — пиши письмо» ловит только то, что ты и так заметишь. Настоящие проблемы — деградацию проводки, зависший датчик, постепенный рост потребления — видно не в отдельном значении, а в истории. Разбираю, как я это собрал: статистика по окну, четыре типа детекторов, и нейросеть как аналитик, которому данные отдаются уже подготовленными.
У любой величины в доме есть нормальный разброс, и он непостоянен. Напряжение в сети ходит туда-сюда в зависимости от нагрузки у соседей и времени суток. Температура в комнате зависит от сезона. Влажность почвы — от того, когда поливали. Пыль в воздухе — от того, открыто ли окно.
Что происходит с фиксированным порогом:
Поэтому норма должна считаться по фактическим данным, а «аномально» — это не «вышло за константу», а «отклонилось от того, как обычно бывает в этот период».
Мне хватило четырёх проверок. Они работают на любом числовом показателе без настройки под конкретный датчик.
| Детектор | Как определяется | Что ловит |
|---|---|---|
Жёсткий пределlimit_low / limit_high |
значение ушло ниже/выше заданного минимума или максимума | то, что опасно по определению: напряжение вне 207–253 В, ток выше паспортного, температура выше точки кипения аквариума. Ставится вручную там, где есть физический предел |
Просадкаdip |
ниже нормы больше чем на N устойчивых сигм. Норма — медиана за окно, «сигма» — по MAD | постепенное сползание показателя, провалы при включении нагрузки, падение напряжения вечером |
Выбросspike |
выше нормы больше чем на те же N сигм | кратковременные скачки: искрение, броски тока при старте компрессора, пики пыли при готовке |
Пропажа данныхno_data |
значение не обновлялось дольше, чем k интервалов съёма | зависший датчик, севшая батарейка, отвалившееся устройство. Самая недооценённая проверка: молчащий датчик хуже, чем тревожный |
Классический подход — считать среднее и сигму, и всё, что дальше трёх сигм, объявлять выбросом. В реальных данных это ломается: один большой выброс раздувает среднее и особенно сигму, из-за чего следующий, не менее серьёзный выброс уже «не аномалия». Классический пример: 99 значений около 219 В и одно 300 В — среднее уходит, а сигма вырастает так, что 250 В выглядит нормально.
Устойчивая оценка: медиана как центр (её не сдвигает один выброс) и MAD — медианное абсолютное отклонение (его не раздувает один выброс). Из MAD получается устойчивая «сигма» умножением на 1.4826. Такая оценка спокойно переживает единичные и даже двойные выбросы и продолжает их замечать.
Норма считается за последние window_hours часов: по умолчанию сутки, но для медленных процессов (влажность почвы, температура) разумнее неделя, а для быстрых (ток, мощность) — час-два. Это даёт то, что нужно: вчерашний режим не мешает заметить сегодняшнее отклонение. Меняется расписание, приходит осень, меняется нагрузка — норма подстраивается сама, переучивать пороги не нужно.
Каждый детектор имеет паузу: однотипная аномалия не повторяется чаще, чем cooldown_events секунд. Без этого одна залипшая величина превратится в сотни записей и писем. С паузой — в одну понятную запись.
| Уровень | Что делает | Задержка | Инструмент |
|---|---|---|---|
| Правила | реакция на события: включить свет, закрыть кран, отправить письмо | секунды | таблица правил + движок, который сравнивает текущие значения |
| Статистика | накопление истории, четыре детектора, журнал аномалий | десятки секунд | отдельный сервис, который раз в 15 секунд снимает точки и пересчитывает норму |
| Аналитик | объяснить, что происходило за период, найти тенденции, предложить действия | минуты, и только по твоему запросу | нейросеть, которой отдаётся подготовленная выжимка данных |
Ключевая мысль: нейросеть не должна работать с сырыми данными. Розетка, которая пишет точку раз в минуту, за год даёт более полумиллиона значений — это дорого отправить и бессмысленно читать модели. Отдавать надо агрегаты: минимум, максимум, среднее, медиану, устойчивую сигму, разбивку по суткам, список уже найденных аномалий. Модель хорошо видит закономерности в таких выжимках и не тратит контекст на шум.
Каждое наблюдение — карточка. Ты выбираешь топик, задаёшь интервал съёма, окно нормы и пределы, пишешь промпт. Сервис собирает данные сам. Кнопка «Проанализировать» отправляет запрос и кладёт ответ в карточку. Карточек можно добавлять сколько угодно — они независимы.
zigbee2mqtt/fish_light/voltage · съём раз в 60 с · норма за 24 ч ·
пределы 198 … 253 V · последняя точка 17:11:28
| Когда | Что | Значение | Норма | Пояснение |
|---|---|---|---|---|
| 26.09 17:06 | 🟠 просадка warning | 211.00 | 218.40 | просадка: 211.00 при норме 218.40 (сигма 0.812) |
| 26.09 16:41 | 🟠 выброс вверх warning | 226.00 | 218.20 | выброс вверх: 226.00 при норме 218.20 (норма без разброса, порог 2 %) |
| 26.09 15:30 | ⚪ нет данных | — | — | данные не поступают 12 мин |
Так выглядит реальная панель (тёмная тема, меню, адаптивная вёрстка — как остальные страницы системы). Ниже — то, что карточка отдаёт аналитику.
Всё, что нужно для самого простого стенда поиска аномалий, — одна розетка с мониторингом мощности. Это самый доступный датчик с реальной пользой: большинство таких розеток умеют Zigbee и отдают не только включена/выключена, но и напряжение, ток, активную мощность и накопленную энергию.
| Компонент | Зачем | Порядок цены |
|---|---|---|
| Умная розетка с измерением мощности (Zigbee) | источник напряжения, тока, мощности и счётчика энергии | 1–2 тыс. руб. |
| Координатор Zigbee + этот же одноплатник | мост между розеткой и системой | если дом уже есть — 0 |
| Любая база (MariaDB/PostgreSQL) на том же железе | история измерений | 0 |
| Скрипт-сборщик и база для аномалий | накопление, детекторы, промпты | 0 |
Никаких «умных счётчиков за 30 тысяч» и облачных подписок. Одна розетка в прихожей или на кухне — и через год у тебя есть история фактического состояния сети в квартире.
| Интервал съёма | Точек за год | Объём в базе (примерно) | Что видно |
|---|---|---|---|
| каждые 5 минут | 105 120 | ~4 МБ | суточный профиль, сезонность, недельные тенденции |
| каждую минуту | 525 600 | ~18 МБ | то же + короткие просадки при включении нагрузки |
| каждые 10 секунд | 3 153 600 | ~110 МБ | броски тока при старте компрессоров и насосов |
Для контроля качества сети за год хватает минутного интервала: восемнадцати мегабайт база даже не заметит. Десятисекундный нужен, только если охотишься за короткими пусковыми бросками.
Отдельная карточка наблюдения на нужный топик: включаем сбор, ставим интервал съёма (для года — 60 секунд), окно нормы (например сутки). Пределы по напряжению имеет смысл задать по ГОСТ: 230 В плюс-минус 10 %, то есть 207–253 В. Это не «настройка аномалий», а физическая граница, за которой приборы страдают.
Карточка: Электросеть за год Топик: zigbee2mqtt/socket/voltage Единица: V Интервал: 60 сек Окно нормы: 24 ч Пределы: 207 … 253 V Письмо: при важности «предупреждение» и выше
Промпт — самое важное. Плохой промпт: «проанализируй данные». Хороший — задаёт роль, период, что именно искать, в каком виде ответить и какие выводы нужны. Вот рабочий вариант для годового отчёта по сети:
Ты инженер-электрик и аналитик данных. Ниже — статистика по напряжению в домашней сети за год, собранная умной розеткой, и список аномалий, которые система нашла автоматически. ЗАДАЧА — оценить, насколько перегружена сеть, и какие тенденции видны. Разбери по пунктам: 1. Уровень напряжения. Насколько оно далеко от номинальных 230 В по ГОСТ 32144-2013 (допустимо 207-253 В)? Есть ли систематический сдвиг вниз или вверх? 2. Просадки. Когда напряжение падает: в какие часы, дни недели, месяцы? Совпадают ли просадки с ростом потребления? Насколько глубоко и как часто? 3. Сезонность и тенденция. Менялось ли напряжение от месяца к месяцу? Есть ли медленное ухудшение (признак деградации контактов, износа проводки)? 4. Перегрузка. Если по мощности/току видно пиковое потребление — превышает ли оно разумное для одной линии? Какая доля времени линия загружена близко к пределу? 5. Опасные события. Выдели то, что требует внимания в первую очередь, с датой и значением из данных. ТРЕБОВАНИЯ К ОТВЕТУ: - Опирайся только на приведённые числа, не выдумывай отсутствующее. - Отдельно перечисли, каких данных не хватает для точных выводов. - Если данных достаточно для вывода — сформулируй его прямо, без «возможно» и «вероятно». - Сравнивай с нормативами и давай конкретные пороги: сколько вольт, сколько минут, сколько раз. - В конце — 3-5 конкретных действий по приоритету, что проверить физически (контакты, автомат, отдельная линия, стабилизатор). - По-русски, кратко, без общих слов и без рассуждений о методике.
Что здесь делает промпт правильным:
К промпту система добавляет выжимку по данным — не сырые точки, а статистику. Так выглядит то, что уходит в запрос (реальные цифры из моего дома, где окно пока сутки, но структура такая же и для года):
Карточка: Электросеть: напряжение, В Топик: zigbee2mqtt/fish_light/voltage Единица: V Период: 25.09.2026 16:12 — 26.09.2026 16:12 (24 ч) Точек собрано: 62 (интервал съёма 60 с) === Статистика === минимум: 215.00 максимум: 222.00 среднее: 217.87 медиана: 217.90 сигма (MAD): 0.812 размах: 7.00 пределы карточки: 198.000 … 253.000 === По суткам (мин / среднее / макс) === 2026-09-26: 215.00 / 217.87 / 222.00 (точек 62) === Автоматически найденные аномалии: 1 === 26.09 17:06 dip (warning) значение 211.0 норма 218.4 просадка: 211.00 при норме 218.40
За год в этот текст добавится разбивка по месяцам — и модель сможет говорить о тенденциях, а не только о текущем состоянии. Именно поэтому агрегаты надо считать в SQL, а не «отдавать как есть»: модель получает готовую картину, а не миллион строк.
Форма ответа примерно такая (содержание зависит от твоих данных — здесь показан пример оформления, чтобы было понятно, чего ждать):
1. Уровень напряжения Среднее за период 217.9 В — это на 12.1 В ниже номинала 230 В, в пределах допуска ГОСТ (207-253 В), но систематически в нижней половине диапазона. Доля времени ниже 215 В — 1.7 % (171 точка из 10 000). 2. Просадки Просадки приходятся на 17:00-20:00 — совпадают с вечерним пиком потребления и с включением обогревателя (мощность растёт с 19 до 60+ Вт). Минимум 211 В, ниже предела ГОСТ не опускалось ни разу. За сутки 2 события глубже 2 % от нормы. 3. Сезонность и тенденция За наблюдаемый период систематического ухудшения не видно: минимум по месяцу стабилен (211-215 В). Для вывода о деградации нужен минимум 3 месяца данных. 4. Перегрузка Пиковое потребление по этой линии 20 Вт против типичного 19 Вт — линия загружена на единицы процентов от бытового предела. Перегрузки нет. 5. Опасные события - 26.09 17:06 — просадка до 211 В при вечернем включении нагрузки. Одиночное событие, к действиям не обязывает, но при повторении 3+ раз за неделю — проверить контакт в розетке. Чего не хватает для точных выводов: - нет тока и мощности за тот же период в этой выжимке (есть в отдельных карточках); - для оценки деградации нужно не менее года наблюдений; - неизвестна нагрузка соседних линий и состояние самого автомата. Действия по приоритету: 1. Ничего срочного: все значения в допуске ГОСТ. 2. Продолжать накопление — для вывода о тенденции нужен год. 3. При повторяющихся вечерних просадках глубже 210 В — проверить контакт в розетке и затяжку в автомате. 4. Если в доме есть мощные потребители — вынести их на отдельную линию.
Схема одна: роль → данные и период → что искать по пунктам → формат ответа → чего не хватает. Меняется только содержание.
Ты специалист по микроклимату помещений. Ниже статистика по температуре и влажности спальни за год и найденные аномалии. Оцени: 1) выход за комфортный диапазон (18-24 °C, 40-60 %) — сколько времени и в какие периоды; 2) связь с сезоном и с отоплением; 3) признаки конденсата и риска плесени (влажность выше 65 % при холодных стенах); 4) ночные значения — не слишком ли холодно/жарко для сна; 5) тренд за год. Только по приведённым числам. Отдельно — каких данных не хватает. В конце — что проверить и что перенастроить (проветривание, увлажнитель, отопление).
Ты агроном. Ниже история влажности почвы в горшке и работы крана за период. Разбери: 1) как быстро сохнет земля (скорость падения влажности после полива); 2) достаточно ли текущего порога полива или растение пересыхает между циклами; 3) нет ли признаков перелива (долго держится высокая влажность); 4) есть ли циклы, когда кран открывался, но влажность не росла — признак, что вода не доходит (засор, перекрытый вентиль, кран не тот); 5) как меняется картина с сезоном. Отдельно: чего в данных не хватает. В конце — конкретная настройка порогов полива.
Ты энергоаудитор. Ниже месячные показатели потребления и пиковой мощности за год. Ответь: 1) как менялось потребление по месяцам и есть ли тренд роста; 2) какие приборы дают основной вклад (по времени работы и мощности); 3) сколько стоит самый дорогой режим и что можно перенести в дешёвые часы; 4) есть ли аномальные всплески, не объяснимые расписанием; 5) прогноз на следующий месяц по текущей тенденции. Считай только по приведённым данным, доли и проценты — явно. В конце — план экономии.
| Правило | Почему |
|---|---|
| Агрегаты вместо сырых точек | год минутных данных — это сотни тысяч строк. Модель в них утонет, а запрос станет дорогим. Считай min/max/среднее/медиану/сигму и разбивку по суткам в SQL |
| Период указывать явно | без периода модель не понимает, о чём вывод: о вчерашнем дне или о годе. Период должен быть и в промпте, и в данных |
| Требовать «чего не хватает» | это главный приём против выдумывания. Модель, которую прямо просят назвать пробелы, честно называет их вместо того, чтобы достроить картину |
| Задавать формат ответа | иначе получишь общие слова. Пункты, числа, пороги, список действий — то, что можно проверить и применить |
| Сначала статистика, потом модель | свои детекторы находят события дешево и точно; нейросеть нужна для объяснения и тенденций, а не для поиска «глазами по таблице» |
| Проверять выводы на данных | любое утверждение модели проверяется одним SQL-запросом. «Просадок стало больше» — считаешь по месяцам и убеждаешься сам |
| Свой сервер, если данные личные | локальная модель (например через ollama с OpenAI-совместимым API) убирает вопрос «куда уходят данные о моём доме» |
Рабочая связка выглядит так:
Самое ценное здесь то, что детекторы не надо переучивать: норма считается по фактическим данным и подстраивается сама. А нейросеть занимается тем, что у неё получается лучше всего — разбором и объяснением подготовленной выжимки. Никаких «умных порогов из головы», никаких облачных подписок: розетка, одноплатник, база и промпт.