Давным-давно был такой фильм "Один дома". А в фильме был эпизод с автоматически включающимся светом в домах - имитация присутствия.
И вот тогда-то и захотелось сделать что-то подобное.
Времена были дикие, никаких "умных домов" тогда в наших краях не знали, не ведали, и пришлось городить колхоз лютый, самолепный.
За основу был взят старый компьютер, из тех, у которых были аппаратные LPT-порты.
Там было как минимум 8 проводов, на которых можно было выставить 0 или 1 (+5в), просто записав в порт соответствующий байт.
(забегая вперед - это почти то же самое что сейчас использовать Ардуино)
Таким способом удалось получить 8 управляемых линий. Через оптопары они управляли симисторами, симисторы управляли лампами, лампы светили или гасли. Цель была достигнута, но в процессе стало понятно что этого мало.
Дом менялся, 8 линий катастрофически не хватало. К тому же, а как температуру узнать? А контроль входных дверей, или чего-нибудь еще?
Следующим вариантом стало использование линии 1-wire. Это такая интересная штука, когда буквально на одну пару проводов (но лучше - на три провода) можно навесить кучу разных устройств, не только всем известных термометров DS1820, но и таких штук как DS2405 - управляемых выключателей.
Красота - отправил команду на нужный выключатель - он включил реле, реле включило что-нибудь полезное.
А при немного другой схеме включения их можно использовать для проверки контактов "замкнуто-разомкнуто".
Вместо кучи проводов - всего одна линия с ответвлениями. Для управления 1-wire шиной - простейший адаптер для COM-порта, на двух транзисторах, и программка на сервере. Несколько скриптов, мини-вебсервер, рисующий графики температур и управляющий выключателями.
Интернет тогда был через сотовый телефон, с дозвоном до GPRS, мессенджеров кроме Аськи еще не было, поэтому в качестве оповещалки использовался еще один телефон на шнурке, отправлял и принимал СМС.
Кстати, вот тогда впервые произошел случай, когда всё это реально пригодилось:
в том доме отопление было газовое, и в один прекрасный день газовщики чего-то у себя накрутили, давление в магистрали выросло, древний АУГВ обрадовался и нажал жарить со всей дури.
Когда температура подачи зашла за 90 градусов - система отправила СМС об этом. Пришлось срываться с работы, лететь домой и прикручивать котел.
А ведь как раз эта проверка была настроена просто так, чтоб было, ведь сетевой газ это надёжно, не то что на коленке наляпано!
Но разумеется, назвать это "умным домом" можно было только условно: ну, могу свет включить удаленно, ну, температуру посмотреть, двери проконтролировать...
Никаких тебе "сценариев", никакой "фоновой музыки"...
Но был и минус: 1-wire - сеть неторопливая. Для опроса термометров это не критично, но когда между отправкой команды и включением реле проходит почти секунда - это долго.
К тому же выявилась уязвимость в виде котиков: если участок провода как следует пожевать - работать перестает вся сеть, а это неудобно, особенно если не знаешь где именно она пожевана.
Очередной вариант "умного дома" делался уже на Ардуино, точнее на Ардуино Мини Про
Во-первых, она маленькая, и ее легко спрятать в распаечной коробке. Во-вторых, она паяется, а это надежнее штырьков. При этом совмещает в себе несколько портов ввода-вывода, и контроллер 1-wire шины. И такую можно разместить в каждой комнате, связав между собой шиной RS485 через адаптеры, управляя через ModbusRTU
Однако и у этой схемы нашлись свои минусы: всё те же провода, и отсутствие гибкости. В прошивке можно задать срабатывание на выключатели, например - но всё остальное должно управляться с внешнего управляющего компьютера, который сначала считывает состояние, потом оценивает, потом выдает команду.
Это не слишком хорошо если надо настроить реакцию, скажем, на открывание двери: чтобы получить это событие - компьютер должен сначала прочитать регистры.
Следующим этапом была ESP8266, точнее ее вариант ESP12F - модуль под пайку.
Всё так же прекрасно программируется, как и Ардуино, только теперь с WiFi на борту.
Выводов поменьше, но и стоит оно подешевле, можно буквально в каждый утюг воткнуть.
Вопрос управления и телеметрии был решен через использование MQTT: на сервере поднят брокер Mosquitto, каждый модуль может отправлять сообщения и принимать команды немедленно.
Значимая информация сводится в веб-интерфейс, из него же можно управлять работой отдельных модулей.
Кроме того, модули поддерживают обновление OTA, то есть при необходимости можно зашить в них нужную логику работы (например, управление нагревателем теплого пола), а потом если возникнет необходимость - обновить ее, без перепайки.
К слову, сейчас часто встречаются проекты на базе ESP32 - вот эта штука показалась избыточной. Для простых задач ее слишком много, для сложных - слишком мало. По факту пригодилась ровно для одной задачи, но об этом позже.
Конечно же, недостатки появились, и очень быстро.
Во-первых, роутер начал чудить, когда количество таких устройств перевалило за второй десяток (а в частном доме, оказывается, много где можно их применить с пользой).
Во-вторых, возникли проблемы с дальностью работы - слишком удаленные от роутера модули то и дело спонтанно отваливались, причем в самый неподходящий момент.
Поэтому следующий этап - организация mesh-сети, из этих же модулей.
Есть такая библиотека - PainlessMesh, с ее помощью можно создать сеть из подобных модулей, растянув ее на гораздо большую площадь, сделав один из модулей гейтом в обычную WiFi-сеть.
По сути мало что меняется - модули все так же получают и отправляют сообщения, с внешними устройствами обмен идет через тот же MQTT, и даже возможность обновления прошивок через OTA есть. Только теперь - практически пропали выпадения устройств из сети.
Но это всё самоделки, почему не использовать "промышленные решения", например, Zigbee?
В самом деле, архитектура сети Zigbee - практически то же самое что PainlessMesh, только заводское, коробочное решение.
Конечно, стоило попробовать и его.
Широко известная реализация - устройства Tuya, а также к ним примазавшиеся. По факту, главным элементом там является "роутер", а точнее в терминах Zigbee - "координатор" Tuya.
Именно он инициирует создание сети Zigbee, к которой затем подключаются другие устройства, и он транслирует данные из этой сети наружу через облако Tuya, с которым работают различные приложения.
А вот внутри самой сети - обмен по протоколу Zigbee, который сам по себе и к конкретно Tuya не привязан, если не считать отдельных специфических команд, которые не входят в официальные спецификации протокола - но их можно вызвать и "вручную".
Но облако Tuya мне было не нужно, поэтому в качестве координатора была использована связка ESP32 и cc2530 под управлением Tasmota
В отличии от ESP8266 нет простого способа программировать эти модули.
Есть "родная" прошивка, для работы с которой требуется внешний управляющий контроллер, есть готовые прошивки PTVO, но и у них есть свои нюансы.
Tasmota выступает в роли координатора сети, и транслирует данные во внешнюю сеть в виде MQTT.
К сети прекрасно подключаются различные заводские Zigbee-устройства, вроде "умных реле" или настенных термометров, можно получать данные, можно управлять реле.
В процессе выяснилось, что дальность связи Zigbee еще меньше чем у WiFi, то есть пока расстояние между устройствами в пределах 5 метров - все работает, но чуть дальше - начинаются проблемы.
Теоретически, так как сеть имеет mesh-структуру, это не страшно: любое реле является в том числе роутером-ретранслятором, поэтому сеть можно растянуть.
Но на практике иногда случается, что какой-то из промежуточных узлов "залипает", перестает транслировать через себя пакеты данных, и тогда то, что было подключено в сети за ним, теряется. Достаточно сбросить питание, и всё восстановится - но для этого надо чтобы кто-то пришел и дернул рубильник, а для этого сначала нужно понять что где-то что-то "залипло".
В общем, надежность не порадовала. Подобное иногда происходит и с PainlessMesh-модулями, но там это легко решается "пинг-контролем", в случае отсутствия активности в сети модуль перезагружает сам себя. Но как заставить перезагружаться заводское реле, или хотя бы вот такой модуль, если в прошивку не залезть?
Самоделка на PainlessMesh оказалась надежнее. Теперь устройства на ESP8266 используются везде, от управления освещением до электронных замков, контроля нагревателей и различных датчиков.
Более того, оказалось что умные розетки типа "Tuya WIFI" тоже можно переделать на PainlessMesh, завязав в единую систему.
А Zigbee остались для тех устройств, где сетевая связность не критична: свет можно и кнопкой выключить, если управление отказало.
Но где же "сценарии", "фоновая музыка", "раздвижные шторы", "управление телевизором", вот это всё?
Честно говоря, не нашел применения. Ну можно задать сценарий "ужин при свечах" - но всегда найдется 100 причин чтобы вот именно сейчас что-то должно быть не так как в остальное время, придется корректировать.
Можно управлять телевизором - но зачем, если выбор сериала всё равно вручную и как захотелось?
Музыка эта (имперский марш?), шторы... Баловство, некому показывать.
Вот автоматика - да. Привыкаешь, что можно всем управлять с экрана планшета на стене, или со смартфона. Это - удобно.
Комментарии (26)
sav13
15.01.2025 23:41Более того, оказалось что умные розетки типа "Tuya WIFI" тоже можно переделать на PainlessMesh, завязав в единую систему.
В последнее время в умных устройствах TUYA активно используются свои контроллеры типа T34 и прочая экзотика. Их тоже можно прошить на PainlessMesh
К слову, сейчас часто встречаются проекты на базе ESP32 - вот эта штука показалась избыточной. Для простых задач ее слишком много, для сложных - слишком мало.
Есть отличный контроллер ESP32C3. ESP8266 очень ущербный сточки зрения режима малого потребления. А вот у ESP32C3 с ним все гораздо лучше
У меня вопрос. Нода PainlessMesh, тот же датчик температуры может жить в режиме DeepSleep и сколько времени нужно для выхода в рабочий режим ESP MESH?
У WiFi это порядка 1 сек, что при потрeблении ESP делает проектирование устройств на батарейках малоперспективным
JBFW Автор
15.01.2025 23:41По факту такая нода просто подключается к ближайшей точке доступа - другой такой же ноде. Экономии батареи там нет.
Если нужно устройство на батарейках - используйте режим EspNow, это немного совсем другое: фирменный хак от производителя чипов, устройство может ждать в DeepSleep, потом проснуться и выплюнуть пакет данных, скорость срабатывания примерно меньше 0.2 сек, дальность до 100 м, в общем как раз для датчиков срабатывания на батарейках или чего-то подобного. Но там нужно ответный приемник из той же esp сделать, чтобы он пакеты ловил и mqtt отправлял.
Вот в таком режиме на двух батарейках АА при отправке данных раз в 20 минут датчик должен больше года прожить, по расчетам...
Javian
15.01.2025 23:41К слову о zigbee координаторе.
Купил МТS-HC-001 (GTW360)
https://4pda.to/forum/index.php?showtopic=1094707&view=findpost&p=132342724
Перешил, приделал внешние антенны. И zigbee сенсоры ловятся с высоким уровнем сигнала на 10+ метров - дальше у меня некуда поставить.
udvnl
15.01.2025 23:41Привыкаешь, что можно всем управлять с экрана планшета на стене, или со смартфона. Это - удобно.
Если честно, лично я уже как то отвыкаю от управлением с экрана, особенно со смартфона. Голосовое управление для моей семьи, стало более удобным и быстрым способом. Особенно с развитием голосовых помощников (Яндекс Алисы в частности) и интеграции .
Пока достанешь смартфон, запустишь приложение или веб интерфейс, легче и быстрее сказать команду в сторону колонки.randomsimplenumber
15.01.2025 23:41легче и быстрее сказать команду в сторону колонки.
А если в квартире не 1 комната а больше?
udvnl
15.01.2025 23:41Вариантов если может быть довольно много: а если не одна колонка, а по количеству комнат, а если есть небольшой ребенок а если...
Я просто озвучил свои наблюдения и указал, что это для меня (моей семьи), универсального принципа построения имхо нет.
Поэтому многие строят /настраивают именно под свои удобства, потребности).
StraNNicK
15.01.2025 23:41зашёл написать этот же комментарий.
у меня УД на базе Home Assistant (т.е. не умный дом Яндекс), но привязанная к нему Алиса прямо ощутимо добавляет удобства.плюс появляется возможность использовать устройства по таймеру, не настраивая его руками.
Примеры:
- Алиса, через час (или там "в шесть утра") прогрей машину;
- Алиса, выключи телевизор через полчаса.ну и голосовые уведомления очень удобны.
наливаю чайник, говорю, — Алиса, напомни про чайник — и ухожу работать. Когда чайник закипает, колонка рядом со мной говорит, — чайник вскипел!звучит смешно, но пока я не прикрутил этот сценарий, у меня часто бывала ситуация, когда я ставлю чайник, ухожу работать, вспоминаю про чайник, обнаруживаю, что он остыл, включаю его, ухожу работать… Цикл повторялся по нескольку раз.
JBFW Автор
15.01.2025 23:41Голосовое как-то совсем не в кайф )
И так уже привычка собакам и кошкам команды раздавать и разруливать, ещё и с Алисой разговаривать? Да ну нафиг.
BanaKing
15.01.2025 23:41Единственная проблема с Алисой, что ей необходимо интернет подключение, что в рядах случаев снижает надежность системы.
StraNNicK
15.01.2025 23:41три наблюдения про УД:
в гостях начинаешь забывать выключить свет (в ванной, например), приходится возвращаться, привычка утрачивается;
летом повредил ногу, передвигался на костылях и осознал, что УД — это не только баловство и излишества. Автоматическое включение/выключение света плюс голосовое управление — это прямо must have.
основная боль — скорость и надёжность датчиков (у меня zigbee).
Реле без нуля (т.е. подключенное к проводам ноль и фаза, но без нейтрального) реагирует с небольшой (менее секунды), но всё же задержкой. Один из датчиков присутствия переставал обнаруживать движение, но впоследствии заработал нормально, второй — так и не обнаруживает, вероятно буду заменять.умный домофон и удалённый съём показаний со счётчиков — недооценены (крайне удобны, но про них очень мало упоминают) : )
В целом же, несмотря на недостатки — к хорошему привыкаешь быстро.
AKudinov
15.01.2025 23:41Для управления 1-wire шиной - простейший адаптер для COM-порта, на двух транзисторах, и программка на сервере.
Очень опасная история. В моей практике такая история работала только "на столе", и только с одним датчиком. С кабелем заметной длины и/или с заметным числом датчиков пришлось таки соорудить "честный" 1-wire ("упрощение" с работой через COM-порт ломалось с framing error из-за того, что из-за ёмкости линии после передачи бита ведомым фронт не успевал нарасти до уровня "1" к тому времени, как приёмник ожидал стоп-бит). Нашёл готовую библиотеку для STM32, которая вырабатывала и измеряла импульсы таймерами, а таймерами управляла через DMA. И аппаратный каскад сопряжения с линией тоже был непростой, по-моему, пришлось даже active pull-up задействовать.
JBFW Автор
15.01.2025 23:41Этот самый адаптер для COM-порта просто рассчитан был на "железный" COM-порт, который +15/-15 вольт.
USB-TTL - там 3-вольтовые, поэтому и не хватает для нарастания фронтов. Удивлен если вообще работает.Но если говорить о микроконтроллерах - там совсем другое дело. И для длинной линии нужно сопряжение на транзисторе между 3.3 и 5в, но это несложно.
Кстати, в "родной" ардуиновской библиотеке для работы с 1-wire тайминги немного отличаются от тех что по даташиту, однако пробовал менять - работает и так и так, не критично. А вот обработку ошибок дописал свою.
Cuberbiller
15.01.2025 23:41Я согласен, что 8266 для модулей УД вполне достаточен в плане мозгов.
Но 32 значительно упростила построение модулей, где требуются несколько портов. У меня это модуль управления котлом и коллектором отопления, а также контроллеры полива.
Спасибо за статью. Перекликается с моей историей )
belch84
15.01.2025 23:41Напомнило рассказ Конан-Дойля
Пустой дом
После беседы Шерлок Холмс и доктор Ватсон направились в необитаемый дом, из окна которого можно было наблюдать дом Холмса на Бейкер-стрит 221Б. На окне были опущены шторы, и в ярко освещенной комнате, где жил Холмс, на фоне окна четко вырисовывался силуэт детектива, неотличимый от подлинного. Ранее Холмс, обнаружив, что за его квартирой следят, заказал восковую фигуру самого себя и установил её в своей комнате. Каждые 15 минут миссис Хадсон меняла положение скульптуры. Ватсон заметил двух человек, которые как будто бы укрывались от холода неподалёку от того места, откуда они с Холмсом наблюдали за окном. После полуночи в доме появился Себастьян Моран. Открыв окно, он достал ружьё и положил конец ствола на подоконник. Прицелившись, он выстрелил в мишень. Сразу после выстрела на него набросился Холмс, однако Моран смог дать ему отпор и схватил Холмса за горло. Тогда Ватсон ударил Морана рукояткой своего револьвера. После этого Холмс вызвал с помощью свистка подмогу, и в комнату ворвались два полисмена и инспектор Лестрейд.
Там нужно было не свет включать, а время от времени изменять положение восковой копии Холмса. Миссис Хадсон вполне с этим справлялась, незаметно подползая к восковой фигуре раз в четверть часа
shadrap
вот когда устройства на 8266 переваливают за 100 и когда добавление нового роутера в систему не решает проблем надёжности коннекта , тогда приходит есп32 с Ethernet и спасает ситуацию)
JBFW Автор
mesh - именно поэтому.
shadrap
меш конечно нечто новое для меня - почитаю. Но моя сеть более звезда по топологии и вопрос дистанции я решаю тплинками перешитыми в юбиквити. Честно - пропиетарный протокол написанный любителями не внушает много уверенности что ничего не будет отваливаться. какова надёжность? и сколько занимает прохождение месаджа от последнего нода до потребителя...сервера или что там..? для охранных датчиков этого достаточно?
JBFW Автор
Обычно менее 0.5 сек от срабатывания. Ради интереса делал выключатель на стене и сами лампы именно через эту сеть - очень наглядно видно, включается как будто проводом напрямую.
Там же библиотека открыта, можно посмотреть как оно сделано
Tirarex
Потому что не роутеры надо брать а нормальные точки. Ubiquiti вполне держат 100+ клиентов даже на дешевых Lite Точках, а старая ac pro без проблем держит 200+.
shadrap
Это вы пробовали на регулярной основе или так думаете ? Я очень уважаю продукцию Юбиквити , но в таких цифрах позвольте усомниться , это первое. Второе - я бы и Циско каталист 9 серии бы поставил , если б они не стоили на несколько порядков дороже кинетика.. )) К тому ж даже циско утверждает , что больше 30 клиентов на точку это "швах" , а уж 200 ... как вы себе представляете тайм-аут на точке к которой обращаются 200 клиентов ?
Tirarex
Настраивал сети в офисах, ubiquiti действительно очень хороши в сфере wifi, и своими глазами я видел 209 клиентов на AC PRO.
У меня же дома висит 6 Pro и проблем не знает, 60+ клиентов при одной точке на 60 квадратов. Ловит везде стабильно, ни единого разрыва так сказать, и это в многоквартирном доме где сама точка показывает около 40% помех на канале (чужие точки которых моя точка видит аж 187штук).