на главную
Карта сайта
English version
Вы читаете:

Система управления Умный дом

Разное
7 лет назад

Усовершенствованный вариант программного обеспечения системы управления


Описаны изменения и дополнения, которые автор статьи внёс в программное обеспечение "любительской" системы управления "умным домом", описанной им в [Л].

В первую очередь, исправлены ошибки, влияющие на стабильность работы модуля ihsc.exe. Чтобы повысить устойчивость работы всей системы, был создан контролирующий процесс (модуль ihsc_guard.exe), который начинает работать автоматически при запуске ihsc.exe. При сбое основного модуля происходит его автоматический перезапуск.

В новой версии программного обеспечения веб-сервер научился принимать информацию от браузера. Атрибут "action" веб-формы должен содержать скрипт, который будет передан серверу и выполнен при нажатии на экранную кнопку на html-странице. Доступ к системе через Интернет производится с помощью андроид-смартфона с браузером Mozilla Firefox.

Была обновлена и программа микроконтроллера для универсальных устройств UD. Изменения коснулись компонента системы "Одиночная выходная линия управления". Теперь этот компонент может иметь датчик, контролирующий фактическую подачу напряжения на нагрузку, который может быть собран, например, по схеме, изображённой на рисунке. С помощью него можно контролировать исправность силовой части устройства или плавкой вставки. При создании конфигурации устройства значение поля "Датчик напряжения: Антидребезг 0,1 с * на..." для этого датчика нужно установить равным 30 (3 с), чтобы избежать ложных срабатываний.

Схема датчика

Рис. Схема датчика

 

В скриптовый язык добавлен оператор exit, останавливающий выполнение текущего скрипта.

Приведу пример того, как можно расширить возможности описанного в [Л] устройства № 12, изменив набор скриптов. Его можно загрузить в работающее устройство, открыв на графическом терминале пункт меню "Сервис→Редактор скриптов...".

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

Таблица 1


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

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

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

Таблица 2

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

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

Создаваемому устройству присвоим номер 3. К нему подключим два герко-на - это датчики открытых дверей (наружной и внутренней), спрятанные внутри дверной коробки. Ещё подключим кнопку звонка. Управлять устройство будет наружным светильником и звонком.

Переменная step принимает значение 1, когда устройство предполагает, что человек выходит из дома, или значение 2, когда он входит в дом.

Переменная still предназначена для блокировки автоматического включения освещения. Например, если требуется посмотреть в окно в сумерки или не открывать дверь нежелательным гостям.

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

Через 2 мин после запуска устройства переменной dark присваивается значение текущего уровня освещённости, полученное от устройства № 10 (метеостанции). В дальнейшем обновление значения этой переменной происходит через каждые 15 мин. Локальное хранение медленно изменяющегося параметра позволяет ускорить выполнение скрипта, так как не приходится всякий раз тратить время на опрос соседнего устройства. А двухминутная задержка нужна для того, чтобы метеостанция успела измерить освещённость, если питание на все устройства системы подано одновременно.

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

Скрипт 2 устройство выполняет при нажатии на кнопку звонка.

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

Таблица 3

Переменная t принимает значение 0, если дверь в помещение закрыта и там никого нет; значение 1 - если открылась дверь и человек заходит в помещение; значение 2 - если он вошёл в помещение и закрыл за собой дверь; значение 3 - если открылась дверь и человек выходит из комнаты.

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

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

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

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

Для проверки скриптов на синтаксические ошибки при загрузке в контроллер можно пользоваться встроенным в графический терминал редактором скриптов ("Сервис→Редактор скриптов...”). Нужно помнить, что переменные создаются при первом использовании в операторе присваивания. Поэтому перед проверкой работы условного оператора, в котором имеются переменные, их нужно создать. А при использовании значений параметров компонентов системы соседних устройств программа предложит ввести значение вручную, имитируя отправку запроса и получение значения нужного параметра.

У программы появились также возможности, которые на практике пока не применялись, но доступны для тестирования:

- возможность запуска стороннего приложения для синтеза звука. Для этого в поле, где ранее указывали имя wav-файла для проигрывания, нужно ввести командную строку, запускающую стороннее приложение;

- ТСР-сервер предоставляет доступ к сообщениям, которыми устройства обмениваются по системной шине. Выбрать порт можно в пункте меню "Сервис→Настройка". При подключении к ТСР-серверу будет запрошен пароль Администратора (по умолчанию 1234).

Доработанное программное обеспечение можно найти здесь.

Литература

Антонов М. "Любительская" система управления "умным домом". - Радио, 2016, № 6, с. 31-35; № 7, с. 33-37.

Автор: М. Антонов, с. Абатское Тюменской обл.