Разработка автоматизаций в умном доме

Смотреть видео на Youtube

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

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

У меня сделано так, что при входе в квартиру стоит датчик открытия дверей, стоит датчик движения, если движения давно не было и дверь открывается, и время там соответствующее, с 7 до 12 ночи, то происходит включение света. У меня использует датчик на частоте 433 МГц, сигнал отправляется через мой шлюз, и дальше передает по MQTT в систему умного дома, и при сохранении параметра я запускаю скрипт автоматизации, который проверяет все возможные автоматизации, в том числе и срабатывание на открытие двери.

Для того, чтобы нормально обработать все возможные комбинации у меня делается загрузка в этом скрипте данных с сервера, это достаточно много параметров около полторы тысячи параметров, но это в принципе достаточно несложно и недолго обрабатывается, занимает не более 1 секунды, я много экспериментировал и пробовал сделать и быстрее, но на самом деле это достаточно уже приемлемо.

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

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

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

Также у меня отправляется информация в систему умного дома Яндекса. Недавно сделали они дополнительное обновление, что можно отправлять состоянии сенсоров в систему умного дома, и на базе этой информации можно делать разные триггеры и сценарии. Взаимодействие системы умного дома Яндекс с другими системами происходит несколькими способами, это может быть периодический опрос состояния датчиков и системы умного дома, или когда система умного дома сама отравляет запрос Яндексу и передает информацию об изменении устройств. Это позволяет гораздо быстрее получать информацию об изменении устройств и делать разные сценарии на срабатывание триггеров.

Значение параметров моих датчиков также передается в систему Яндекса Например от датчиков работающих на батарейках я передаю кроме необходимых параметров еще состояние заряда батареи. В самой системе не предусмотрен этот атрибут это просто напряжение. Обычно оно предусмотрено для сохранения напряжения в электрической сети т.е. 220-230 вольт, и сам параметр он целый и не позволяет сохранять дробное значение а уровень напряжения батарейки конечно достаточно низкий, и важно отслеживать и сотые значения вольта. И есть особенность системы умного дома Яндекса в том что если, например, запрашиваешь температуру он очень любит объединять значение всех температур датчиков комнате. Иногда это выдает ошибочное значение, например если один датчик температуры измеряет температуру в комнате, другой измеряет температуру батареи, третий измеряет температуру на улице или еще какую-то, то усредненная температура получается абсолютно неверной.

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

Автоматизация в умном доме должна быть полезной и создавать дополнительный комфорт, но иногда всё идет не так… Причины этого, и как всё настроить смотри на моём канале.

You may also watch

Article By Alex

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

Discuss about post