Подключение облаков к умному дому
Сегодня опять обнаружил, что у меня не работает оповещение на чайнике. Я использую три wi-fi розетки в одну у меня подключен чайник, в другую у меня подключен настольный светильник, в третью у меня подключен обогреватель. Также у меня есть wi-fi выключатель, который установлен в коридоре. Проблема в том, что эти выключатели и розетки используют облако Tuya для взаимодействия с умным домом. Сначала я думал, что у меня не отправляется сигнал в сторону облака, соответственно у меня не выключаются и не включаются устройства, но как оказалось у меня самом деле вполне неплохо работает отправка и задержка небольшая порядка 1 секунды, но не работает обратная приемка об изменении статуса устройств. Я обновляю статусы устройства в умном доме не по отправке команды, а получая статус устройства и после этого обрабатываю изменение всех параметров о включении, выключении, потреблении энергии и другие.
После некоторых экспериментов, когда я попробовал запустить скрипты по интеграции с облаком Туя в ручном режиме, я понял что они не отрабатывают как следует, то есть первое - это они не подключается оперативно, второе - при подключении сигнал об изменении устройств проходит от 1 секунды до нескольких минут. После того как я отправляю команду включения устройства или выключаю его вручную, выключатель или розетку, у меня не приходит статус об изменении состояния устройства.
Для интеграции с облаком Tuya я использую их стандартное API, у них есть свой стандартный SDK на python, там подписаны примеры запуска команд на включение и выключение устройств, а также есть утилита позволяющая получать информацию о состоянии устройств из экосистемы Туя.
Сначала я пробовал использовать компонент стандартный, у меня не получилось его запустить, там документация есть, вполне её много, но она как-то недостаточно понятно была написана и было очень сложно подобрать правильные параметры, основное это было связано с параметрами подключения к серверам, потому что сервера используются разные, это есть китайские и европейские сервера, нужно выбрать правильный сервер, нужно выбрать правильный порт, это было достаточно неоднозначно прописано и очень сложно сделать.
Я нашел другой модуль, другую утилиту, который позволяет через несколько другой интерфейс подключиться к облаку, в принципе там было достаточно просто это была российская разработка и соответственно там было уже настроено, прописаны российские сервера, точнее не российские, а европейские, но те которые используются в России, и в котором у меня и привязан аккаунт Tuya и все устройства. Видимо эта утилита, она что-то перестала работать, она использовала немножко другой интерфейс для подключения, тоже официальный, но он какой-то устаревший и видимо он давал эту задержку непонятную, очень длительную, когда я снова взял нормальный, стандартный SDK и использовал примеры которые были приведены, у меня получилось уже используя параметры и адреса серверов из предыдущей утилиты, настроить очень быстро, заработал мгновенно, сигнал стал проходить сразу, вообще вопросов не было.
Но потом возникла некоторая ситуация, что сигнал почему-то тоже не стал проходить. Помогла перезагрузка утилиты, в принципе после этого все пока работает.
В самой утилите по опросу статуса с облака я добавил необходимые команды, которые передают статус об устройствах в систему умного дома по MQTT, дальше уже в системе умного дома я делаю разбор параметров и записываю все необходимые параметры в базу. Информация через API может приходить несколькими способами, это может быть полный пакет информации о всех параметрах устройства, либо при изменении нескольких параметров или одного приходить отдельная информация конкретного устройства, и дальше мне приходится обрабатывать и понимать, записывать эти все параметры базу или каким-то образом ограничивать. Например параметр включения выключения я записываю всегда если меняется статус, а например параметры, такие как напряжение или потребление, мне приходится ограничивать, потому что иногда бывает так, что например розетка шлет очень часто параметры, может каждую минуту отправлять, может быть и чаще. Поэтому приходится проверять было ли изменение, если изменения были существенны, то записать информацию, но опять же есть ограничение по времени не чаще какого-то периода, если изменения совсем большие, то конечно я запишу, если незначительные, например, напряжение оно постоянно скачет в небольшом диапазоне и я сделал ограничение, что у меня в систему умного дома записывается только значение раз пять минут.
При изменении состояния устройств которые имеют несколько параметров, например такие как выключатели, например имеющий три кнопки, при изменении состояния одной кнопки отправляются все три сразу статуса о трех кнопках, это не очень удобно, потому что уже, допустим, у меня в системе уже записано состояние нужных кнопок и повторно приходится обрабатывать и перепроверять, чтобы значение не дублировались иначе по этим параметрам может запускаться срабатывание автоматизаций даже в том случае когда это не требуется.
У меня сделано таким образом, что запускается скрипт после этого проверяется новое значение параметра, если оно изменилось по отношению к старому, то может выполняться скрипт, если оно не изменилось, то скрипт проверяет эту ситуацию и соответственно не запускает необходимые автоматизации.
Также стоят дополнительные проверки на частоту срабатываний, иногда такое бывало что допустим устройство шлет часто, или автоматизация срабатывает достаточно часто, или какие-то ошибки в автоматизациях возникают и устройство начинает постоянно включаться и выключаться, что конечно опасно и может вывести устройство из строя. Поэтому во всех автоматизациях я предусматриваю задержку по времени, она обычно небольшая, это может быть две секунды, может быть три секунды, и оно позволяет защитить устройства и лампочки от перегорания.
У меня сделано так что при сохранении параметра устройства запускается автоматизация, но и так как устройство сохраняет очень много параметров и они не все полезны с точки зрения автоматизации мне пришлось сделать ограничение в скрипте и для некоторых параметров запускать автоматизацию, а для некоторых соответственно не обрабатывать и не запускать.
Автоматизация в умном доме должна быть полезной и создавать дополнительный комфорт, но иногда всё идет не так… Причины этого, и как всё настроить смотри на моём канале.
Discuss about post