Найти в Дзене
Alex Smart Home

Тестирование сценариев и датчиков для умного дома

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

Например если я делаю автоматизацию работы света в какой-то комнате и там допустим в ванной или в туалете, еще где-то, то конечно нужно не только написать сценарий, причем понятно что сценарии можно делать и в фирменных приложениях, ну или я как делаю, допустим это либо система умного дома, у меня используется Home Assistant и OpenHAB, либо еще есть своя система, которая на скриптах на разных языках программирования разработана, и bash используется и Python, и много других разных языков в зависимости от того, что конкретном случае удобно и нужно будет там поставить все датчики, посмотреть какие параметры с них идут, в какой последовательности, потом выбрать эти параметры как триггеры для этого сценария, ну и дальше приходится там бегать в эту комнату, там написал сценарий разработал на компьютере, вроде выглядит нормальным, пришел, попробовал открыть дверь, свет не включился или включился и выключился или еще какое-нибудь событие, или большая задержка включения, то есть приходится много раз ходить и проверять, что и как работает, если например нужно отрабатывать включение и выключение света, то нужно открыть дверь, зайти например, потом подождать какое-то время, а потом выйти и еще раз закрыть дверь, и убедиться что свет выключился.

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

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

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

Бывает иногда когда сценарий тестирую, нужно оперативно подкрутить параметры или проверить значение показателя, которые отправляются например через Zigbee, или какое-то приложение, тогда можно на телефон вывести, например оставил приложение специально выводящие разные события из системы умного дома, или например если это Home Assisatant, то можно поставить приложение от Home Assistant, оно практически полнофункциональное, его можно установить на планшет или на телефон и тогда можно подойти к тому месту где это сценарий отрабатывает и прямо там уже на ходу сидеть и ждать пока там датчик движения сработает или датчик присутствие там определит что люди отсутствуют, ну с датчиком присутствуя еще сложнее, поскольку они определяют просто присутствие даже неподвижного человека, иногда приходится уйти для того чтобы он понял и такие некоторые события проверить в принципе очень сложно, например у меня периодически датчик присутствия определяет, что человек отсутствует в комнате хотя там человек есть и это очень сложно проверить, начинаю там экспериментировать, сижу в углу или там спрятался за холодильник он не видел и пытаюсь изучить, как это работает, как датчик определяет и уже экспериментальным путем подобрать нужные параметры работы этого датчика и уже под это настроить сценарий.

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

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

Иногда некоторые устройства например Zigbee, они отправляют по несколько однотипных сигналов, бывает так что например датчик температуры сначала может отправить сигнал о старой температуре, а потом отправить измененную температуру, или например датчик открытия тоже он периодически шлет раз в час сигнал о текущем состоянии своем, если например дверь была открыта, то может отправить сигнал что дверь открыта, если не проверять старые значения, то может так оказаться что сработает триггер на открытие и просто свет например снова включится, или например в Home Assistant есть такая ситуация когда сервер перезагружаешь, то у него начальные параметры могут быть обычно они вообще там типа null, но если это используется Zigbee, через там брокер MQTT, то на нем автоматически делается восстановление старых параметров, и тогда получится так что он может увидеть изменение параметров, параметры будут как датчик как будто бы прислал что-то новое хотя это на самом деле не так, и это тоже нужно обрабатывать в сценариях и очень сложно это отследить, именно то что произошло правильно или неправильно.

Ну еще при этом тоже конечно когда очень важна скорость именно работы сценария, то приходится очень много раз проверять, открывать дверь например, смотреть что свет включился там с задержкой или быстро, потом пойти переписать сценарий, понять природу этой задержки, каким образом можно её еще исправить, изменить, или через другой инструмент разработать сценарий, приходится очень много вариантов экспериментировать, способов, для того чтобы сделать хороший сценарий в умном доме.

Посмотреть видео на Дзен

DAY 1627 _ тестирование сценариев и датчиков для умного дома...
DAY 1627 _ тестирование сценариев и датчиков для умного дома...

Посмотреть видео