Аббревиатура «у.дача» означает «умная дача». Много лет назад, когда я приобрел дачу, у меня появилась потребность в комфорте. Мне хотелось приезжать в теплое прогретое помещение зимой, не тратить время на обогрев и прочие вещи. Тогда я задумался, как сделать так, чтобы на даче было тепло.
В то время не было «умных розеток» или какого-то простого решения, которое можно было бы купить в магазине – чтобы прийти домой, вставить в розетку, и сразу все заработало.
И я пустился в эксперименты. Все, о чем я сегодня расскажу, – это результат моей многолетней работы над этим проектом.
На конференции Инфостарта я выступаю впервые, хотя у меня больше 20 лет опыта разработки решений на 1С. Образование профильное, специальность «Программное обеспечение». Много лет работал руководителем ИТ в крупной компании.
И у меня достаточно большой опыт работы с микроконтроллерами, микрокомпьютерами – это мое хобби.
Умный дом. Охват решаемых задач
С помощью технологии умных домов мы можем решать множество задач:
-
Самая очевидная проблема, из-за которой вообще возник проект – это климат-контроль помещений. Нам хочется, чтобы в подвале, например, была одна температура, в спальне – другая, на кухне – третья. И это та задача, которую можно решить.
-
Вопросы освещения. Начиная с того, чтобы просто автоматически включать в комнатах свет при появлении людей и потом его автоматически выключать, когда все пошли спать. Или уличное освещение: когда стало темно, свет автоматически включился, стало светло – автоматически выключился.
-
Умные розетки тоже вполне можно охватить этим решением.
-
Автоматические ворота. Когда мы подъезжаем к частному дому, ворота можно открыть просто с телефона.
-
Еще в частных домах актуальны задачи, которые связаны с выращиванием растений, – автополив, автопроветривание, поддержание уровня воды в бочке. Наше решение позволяет все это реализовать.
Кроме того, в частном доме, на даче или в квартире с помощью технологии «умного дома» можно контролировать:
-
утечку воды;
-
утечку газа;
-
задымление – если случился пожар, можно включить систему пожаротушения;
-
двери, окна – если, например, открылась форточка или дверь, отправлять какой-то сигнал или включать сигнализацию.
И это еще не все задачи, которые можно решить. Эту систему можно внедрить для любой задачи, которую можно контролировать с помощью датчиков и устройства управления.
Основа «Умного дома» – микроконтроллеры
Основа решения – то, что позволяет нам управлять «умным домом» – микрокомпьютеры или микроконтроллеры.
На слайде представлены, наверное, самые распространенные микроконтроллеры.
-
Первые два – это Arduino серии WeMos и NodeMcu. Они небольшие, помещаются на ладони, причем в них уже даже встроен WiFi. Размеры этого устройства позволяют его встроить в любое место, даже в подрозетник – надо будет только поглубже его поставить.
-
Микрокомпьютер Raspberry – более серьезная система, с собственной встроенной операционной системой. У него есть выходы HDMI, USB, его можно подключить к монитору и клавиатуре, и будет полноценный компьютер.
Но мы будем основываться на более простых решениях – WeMos и NodeMcu.
Для работы микроконтроллеров нужна сеть WiFi, поэтому, если у вас на даче нет WiFi, вы можете приобрести отдельный модуль GSM, в который вставляется SIM-карта – тогда у вас интернет будет работать через мобильные данные оператора.
Микроконтроллеры – это основа для сбора данных с датчиков и для передачи сигналов на управляемые устройства.
Исполнительные механизмы «Умного дома»
Что входит в понятие «Исполнительные механизмы»:
-
Самые простые исполнительные механизмы – электромеханические реле. Они здесь на слайде в верхнем ряду, голубого цвета. Микроконтроллер подает на реле сигнал с небольшим током, происходит замыкание контактов катушки, и таким образом включаем или выключаем электрический ток.
-
Более технологичные устройства – это твердотельные реле. В них мы можем использовать бОльшие токи, они более надежные. Они здесь на слайде представлены в нижнем ряду – тут маленькое твердотельное реле и вариант покрупнее, который мы можем использовать для более серьезных систем. На твердотельном реле ток может доходить до 100 А – т.е. мы можем подключать очень большие нагрузки, например, микроволновки, системы отопления. Единственное – такие реле требуют дополнительного охлаждения. Это надо будет учесть. В моей статье на Инфостарте описаны нюансы работы с реле – разница между разными реле, и какие виды реле рекомендуется брать для реализации различных задач.
-
Мы можем использовать сервоприводы – с их помощью мы обеспечиваем механику движения. Например, мы можем открыть ворота, форточку или дверь в теплице.
-
И есть электромеханические клапаны – ими мы можем управлять, чтобы отключить или включить подачу воды, например, для автополива или для центрального отопления. Или мы можем реализовать систему, которая контролирует утечку воды – если датчик сработал, мы получаем сигнал и перекрываем электромагнитный клапан. Такие автономные системы, конечно же, продаются, но мы говорим о едином комплексе. Это не будет набор каких-то разрозненных систем, вы сможете их контролировать в одном приложении.
На основании чего управлять? Датчики
Микрокомпьютер дает команды исполнительным механизмам на основании внешних событий, источниками которых являются датчики разных видов:
-
Температуры – на слайде представлен один из самых надежных датчиков температуры DS18S20.
-
Освещения.
-
Влажности.
-
Движения – можно сделать сигнализацию, реагирующую на какие-то движения. Или реализовать систему включения света.
-
Задымления – с их помощью можно уловить утечку газа или появление дыма и оповестить об этом.
-
Датчик расстояния – я использую, чтобы измерить уровень в бочке. От воды отражается сигнал, я ловлю его обратно и смотрю, сколько воды в бочке осталось. В зависимости от этого я автоматически пополняю воду – вода в бочке у меня есть всегда.
Причем тут 1С? Схема взаимодействия
Я вам рассказал про микроконтроллеры, про исполнительные механизмы, про датчики. А где здесь 1С – мы ведь ее никак не сможем поставить на микроконтроллер?
1С в этой схеме участвует в двух ролях:
-
как промежуточная часть – она является сервером;
-
и с помощью 1С мы можем реализовать мобильное приложение.
Схема работает следующим образом:
-
Микроконтроллер с периодичностью несколько раз в секунду отсылает серверу 1С HTTP-запрос и спрашивает, есть ли для него какие-то управляющие сигналы.
-
В параметре GET-запроса микроконтроллер может передать серверу 1С значение датчика. Например, здесь на слайде видно, что передается параметр ti0=27 – т.е. с нулевого датчика температуры мы получили значение «27». Передавать можно не только температуру, но и различные цифровые и аналоговые сигналы.
-
Далее 1С анализирует, какие входные сигналы мы получаем, по алгоритму преобразует их в выходные сигналы и говорит, на какую ножку какой сигнал пошел. Например, формируется JSON, как на слайде, где указано: на ножки 0, 1 и 2 нет сигнала; на ножки 3-4 есть управляющий сигнал.
-
И эта связка постоянно в цикле крутится.
Помимо статьи я опубликовал на Инфостарте саму конфигурацию 1С для этого решения.
-
Эта конфигурация 1С является центральной частью, куда мы можем заводить различную информацию об устройствах, входных и выходных сигналах.
-
Она же является сервером для входящих HTTP-запросов как от микроконтроллера, так и от мобильного приложения.
-
И она же является источником для публикации мобильного приложения.
Возможности конфигурации
Эта конфигурация 1С содержит набор справочников.
-
Основной справочник – это «Дома». По аналогии с решениями известных брендов домов может быть несколько – «Дача», «Загородный дом» – может, вы еще чем-то хотите управлять.
-
Внутри каждого «Дома» есть «Устройства». В данном случае к дому «Дача» подключено два устройства: «Основной дом + улица + теплица» и «Баня + бочка».
Скриншоты на слайде основаны на реальных данных – эта конфигурация реально у меня используется для управления этими устройствами.
Внутри карточки устройства:
-
Наверху в шапке можно задать описание, как мы будем видеть это устройство в мобильном приложении.
-
Плюс токен, который будет передаваться в HTTP-запросе от устройства вместе с данными – это минимальная защита, элемент безопасности.
В каждой строчке табличной части задаются элементы управления устройством и указывается описание, которое будет выводиться для каждого элемента в мобильном приложении:
-
В первой строке мы создали кнопку под названием «Дача вся» и обозначили, что эта кнопка – «Btn0».
-
Во второй строке мы вывели название «Улица» и вывели на форму входной сигнал «Tin0» – температура на улице. Кнопок в этой строке никаких нет, т.к. к сожалению, у нас нет власти управлять температурой на улице. Но и просто посмотреть значение температуры бывает полезно.
-
Третья строчка – управление одной из комнат, холлом.
-
Здесь на входной сигнал подаем температуру с датчика «Tin1».
-
Выводим минимальную и максимальную целевую температуру. На самом деле целевую температуру потом будет задавать пользователь, но здесь выводятся значения настроек по умолчанию.
-
Указывается кнопка «Btn1(Холл)», с помощью которой можно ввести целевую температуру.
-
И указывается то, чем мы управляем – выходным сигналом «Dout0». Т.е. выходным сигналом микроконтроллера мы управляем с реле, которое подключено к одной из ножек микроконтроллера – под номером 0.
-
Далее мы указываем алгоритм, по которому будем управлять – это текстовая строка, где мы пишем значение «Btn0*Btn1». Это означает, что управление температурой в холле будет работать, если мы в мобильном приложении включили тумблер «Дача вся» и «Холл».
-
-
Аналогично здесь сделано для «Холл турбо». У меня в холле есть дополнительный нагрев, и когда я вижу, что скорость нагревания не такая, как меня устраивает, я включаю дополнительный тумблер «Холл турбо». Он подключен к тому же датчику «Tin1», а выходной сигнал здесь уже управляется другим реле «Dout1», которое подключено к ножке 1. Алгоритм здесь «Btn0*Btn2», т.е. тумблер «Дача вся» умножается на значение включенности тумблера «Btn2», «Холл турбо».
-
Похожим принципом мы управляем температурой в спальне. Входной датчик «Tin2», кнопка «Btn3», и управляем выходным сигналом «Dout2», который подключен к ножке 2.
-
Теплица. Здесь мы ловим входной аналоговый сигнал от датчика влажности «Ain0». Он должен быть в диапазоне от 400 до 500 – в этом диапазоне мы поддерживаем влажность почвы. И уже выходным сигналом «Dout3» на ножку 3, которая подключена через реле на клапан подачи воды, регулируем полив.
-
Последнее – управление светом на улице. У меня реализовано простое управление светом на улице: включили-выключили. Подъезжаем, например, к даче, к дому, включили тумблер «Btn4» – свет загорелся. И мы спокойно открываем ворота, двери, не заходя в дом.
Входные и выходные сигналы – это справочники. В левом нижнем углу можно увидеть, как выглядит карточка входного сигнала.
-
Для входного сигнала мы формируем номер – он может быть любой: 0, 1, 2 и т.д.
-
Дальше мы указываем PIN – ножку, к которой подключен микроконтроллер.
-
И выбираем тип сигнала – «Цифровой», «Аналоговый» или «Температурный».
«Температурный» я назвал условно – это, скорее, вариант подключения устройств через шину One Wire, когда к одной ножке микроконтроллера можно подключить неограниченное количество датчиков температур или других устройств, которые построены по этой технологии.
Я рассказал о микроконтроллерах, как их собрать, что и куда подключается. Но если опыта работы с микроконтроллерами нет, это достаточно большой порог вхождения, который мне бы хотелось снизить или даже убрать.
Настроив все эти значения в конфигурации – выбрав, к какой ножке какой входной и какой выходной сигнал подключается – вы нажимаете кнопку «Сформировать скетч», и весь код будет сформирован. И вы сможете просто запрограммировать микроконтроллер и залить, особо даже не разбираясь, не вдаваясь в подробности, какой код формируется для записи в микроконтроллер.
У микроконтроллера не очень сложная логика – он служит всего лишь как некий удаленный рабочий стол для управления исполнительными механизмами.
Вся бизнес-логика здесь реализована на 1С, поэтому сам скетч не очень большой. Там в цикле формируется HTTP-запрос, получается ответ и управляющие сигналы передаются на нужную ножку.
Я вам рассказывал про карточку устройства, а на картинке – то, так она будет отображена в мобильном приложении. Эта форма приложения сгенерирована автоматически на основании данных, введенных в десктопной версии.
Здесь у нас те самые кнопочки: «Дача вся», «Холл», «Холл турбо», «Спальня», «Свет улица». Выводится влажность в теплице и температура на улице. Это одно устройство.
Ниже – второе устройство. Т.е. два устройства в одном доме здесь отображены на одном экране.
Здесь мы видим температуру на улице и в каждой из комнат. Если температура в комнатах нас не устраивает, включаем «Дача вся», тумблеры для нужных комнат и задаем для каждой из них целевое значение температуры.
Хватит теории! Демонстрация решения
Достаточно теории, сейчас я покажу, как это выглядит на практике. Перед вами небольшой серый ящик, в котором располагается микроконтроллер и светодиоды.
На смартфоне у меня небольшое мобильное приложение, которое обменивается данные с этим устройством по WiFi. Я с телефона раздаю WiFi, а в устройство вшиты параметры, по которым оно соединяется с моим WiFi в телефоне. И есть дополнительный сервер, который обрабатывает эти данные.
В мобильном приложении для этого устройства реализовано два управляющих элемента – управление температурой и имитация управления светом.
Я нажимаю кнопку управления «Включить свет» и загорается светодиод управления. Включаю / выключаю – светодиод то горит, то гаснет. Алгоритм очень простой – нажата кнопка или не нажата.
Вторая кнопка чуть поинтереснее – она отвечает за температуру. Сейчас в зале температура 24.13 градуса по Цельсию. Это маленькое устройство определило температуру.
Сымитируем нагрев помещения. Текущая температура – 24 градуса, целевая – 28 градусов. Я включаю нагрев в приложении, и на устройстве загорается красная лампочка, которая имитирует нагрев.
Датчик температуры для этого устройства представлен в виде антенны сверху. Я ее сейчас зажму, и когда за счет тепла моего тела она нагреется до 28 градусов, лампочка должна погаснуть.
Датчик нагрелся – лампочка погасла. Через какое-то время, когда температура упадет, лампочка снова загорится.
Преимущества и недостатки решения
Рассмотрим, какие у этого решения есть преимущества, и в чем его ограничения.
К числу преимуществ можно отнести следующее:
-
Можно реализовать собственную бизнес-логику. Я показал самый простой алгоритм, где проверяется выполнение условий «Btn0*Btn1». Но алгоритм может быть любой, какой захотите. Код решения открыт, если вы немного погрузитесь, можно реализовать свою, сколь угодно сложную бизнес-логику – наверное, не в каждом решении от известных брендов этим можно воспользоваться.
-
Можно подключить совершенно различные устройства управления и совершенно различные датчики. Поддерживаются любые датчики, способные подавать цифровой, аналоговый сигнал, или которые можно подключить по шине One Wire. А также любые устройства управления, которым достаточно на вход подать небольшое напряжение 3.3-5 Вольт или использовать реле.
-
Нет зависимости от сторонних сервисов. Вы сами настраиваете решение, и только ваши настройки могут повлиять на стабильность и устойчивость.
-
Все данные хранятся только в вашей системе.
-
Можно сделать свой собственный интерфейс приложения – переделать его как вам удобно.
-
Теоретически можно организовать автономную систему. Я вам показал не очень автономную систему – она постоянно опрашивает сервер, какой управляющий сигнал получить. Но вы можете чуть-чуть глубже погрузиться в код Arduino и сделать свою автономную систему, которая сама знает, какие датчики оставить включенными, а какие выключить, если от сервера нет ответа.
-
Стоимость. Начальный комплект из двух устройств, который я показывал, стоит около 250-300 рублей.
Но есть и ограничения:
-
Все-таки нужны инженерные навыки. Вы не можете это решение просто подключить к сети, как умную розетку Сбера или Яндекса – придется чуть-чуть повозиться с проводами, с электрикой, с коммутацией. Но это очень интересно – почти так же, как детям интересно Lego. Можно считать, что Arduino – это Lego для взрослых.
-
Нужен сервер 1С. Надеюсь, он у многих развернут дома или на работе, и это не будет для вас сильным ограничением. Поэтому и тема доклада «У.дача для 1С-ников». Для не 1С-ников это, конечно, будет очень серьезным ограничением.
-
Дополнительная проводка. На умной розетке неплохо бы иметь дополнительную проводку, чтобы иметь возможность использовать несколько устройств управления в доме. Конечно, можно в каждую розетку поставить такой же контроллер, но тогда у вас устройств в справочнике будет много. Вопрос только – где взять низковольтное напряжение +5 Вольт. Многие розетки уже делают с usb-выходом, можно оттуда, например, забрать низкое напряжение.
-
И опять же стоимость. Это спорный вопрос, поэтому я поставил этот момент и в плюсы, и в минусы. Если захотеть, это решение можно сделать более выгодным. Если вы только на стадии строительства дома, можно заложить какие-то дополнительные низковольтные коммуникации к каждой комнате – это уже поможет удешевить решение.
Как самому развернуть решение?
Я опубликовал статью, где расписано:
-
как собрать этот микроконтроллер;
-
какие реле и датчики использовать;
-
как их правильно подключить;
-
какие там есть интересные сложности и нюансы;
-
как развернуть мобильное приложение, включая публикацию HTTP-сервисов;
-
как заполнить справочники «Дома» и «Устройства».
Решение, которое я вам демонстрировал, в статье подробно разобрано.
Вопросы
Вы сказали, что нужен сервер. Имеется в виду веб-сервер или именно сервер 1С? Подойдет простая файловая база с поднятым Apache?
Да. Это решение на обычном компьютере с Windows 10, с обычной файловой базой, обычный Apache с опубликованными http-сервисами. Развернутый 1С сервер не обязателен.
Под сервером здесь имеется в виду компьютер, на котором просто развернута база 1с, готовая принимать HTTP-запросы. Это несложно сделать.
Можно использовать обычный рабочий компьютер или какой-нибудь старый ноутбук на 4 ГБ оперативки.
*************
Статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event.