Введение

Что такое система умный дом

Общее представление.

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

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

Если с аппаратным уровнем все более или менее понятно, например - приобретаем контроллер с учетом необходимого функционала, настраиваем и управляем. То для программного уровня в первую очередь необходимо определиться с языком программирования которых на данный момент великое множество. Я например остановил свой взгляд на PHP, и вот почему во первых мне хотелось получить возможность управления своей системой практически с любого устройства. А так как интернет браузер имеют в своём составе все компьютеры (будь то ноутбук, нетбук или стационарный компьютер), смартфоны на Android или iOS и планшеты, то нет необходимости писать для каждой ОС своё собственное приложение. Во вторых опыт программирования на PHP пригодится и для создания своих собственных сайтов в интернете, и в третьих PHP довольно таки хорошо развивается и есть много форумов, на которых при желании можно получить помощь в том или ином вопросе.

Свою систему я строю по модульному принципу, т.е. каждое конкретное действие выполняет небольшой скрипт, который в свою очередь входит в состав определённого модуля. Для чего я использую такой подход, для того чтобы иметь возможность выполнить в любой момент времени любое действие, не нагружая при этом систему обработкой остального кода. Далее все действия складываются поочередно в сценарий, который при необходимости можно отредактировать. Как это выглядит, например я хочу послушать музыку online на телевизоре с приставкой Dune HD TV, что я должен сделать для этого:

1.Включить телевизор

2.Переключиться в режим HDMI входа

3.Включить DUNE HD

4.Запустить скрипт поиска композиций и создания плейлиста

5.Воспроизвести плейлист на DUNE HD

6.Выставить приемлемый уровень громкости

Вот собственно из этих действий и составляется сценарий. Так же на каждый модуль я повесил событие, то есть я получаю ответ от модуля со статусом выполнения команды (например:not_found,off_line,success или failed) и по результату, могу например сообщить о том что DUNE HD не доступна запустив на выполнение другой сценарий или повторить тот же самый повторно (возможно просто ping не прошел с первого раза).

Сценарии можно запускать как вручную (или с помощью голоса), так и в автоматическом режиме (по времени, дате и дням недели). Т.е. можно выполнять сценарий один раз в день, в определенное время или каждый (или выбранный) день недели в определенное время, а можно выполнить в установленное время и дату. Это очень удобно если нужно повторять выполнение одного сценария многократно.

Изначально я строил систему таким образом: в одном скрипте просчитывал все возможные варианты логики поведения, что в дальнейшем привело к тому, что если нужно было что - то поменять в логике работы скрипта, то необходимо было переделывать ту часть скрипта которая за это отвечала. Например в первой версии системы у меня был скрипт, который при подаче команды на включение света в комнате - подавал команду 1-WIRE переключателю перевести выход на положение включено, и воспроизводил аудио файл со сгенерированным синтезатором речи ответом, в виде Свет в комнате включён . Вроде все нормально работает и даже ответ хорошо складывается, но если предположим что вместо света я бы захотел включать лампу в комнате, то в ответ я получил бы - Лампу в комнате включён, что не совсем красиво. Эту проблему можно решить двумя способами:

1. Определять окончания произносимых слов и в зависимости от этого менять окончания в ответах, с помощью дополнительно написанного кода в скрипте.

2. Воспроизвести заранее сформированный ответ, по окончанию процесса включения света или лампы.

Соответственно если выбрать первый вариант, то мы лезем в скрипт и меняем логику - вроде опять все не сложно. Но наступила ночь, все спят а нам, ну очень нужно включить лампу, и мы слышим в ответ на всю комнату - Лампа в комнате включена. Думаю домочадцам это не понравится. На утро мы опять лезем в скрипт и дописываем код на отключение оповещения например с 22:00 до 8:00. При наступлении новой внештатной ситуации мы опять лезем в скрипт.

В общем такой подход меня не устроил и я отказался от первой версии системы и пошел по второму варианту развития событий. Т.е. построил систему таким образом: по окончанию процесса включения (первый скрипт), автоматически запускается второй скрипт из модуля отправки сообщений, который воспроизводит заранее созданное сообщение, которое при необходимости можно изменить или вообще не воспроизводить, удалив это действие из сценария. Если же нужно на ночь отключить звук то, просто создаю два новых сценария - один для отключения звука по времени и второй для включения. Все просто и самое главное не нужно копаться в скриптах и допиливать код.

Т.е. простыми словами - поделил один скрипт на несколько частей, которые можно выполнять по отдельности и в любом порядке. Что значительно упростило настройку системы, внесение изменений в скрипты и добавило возможность установки тайм аутов между выполнением последовательности скриптов.

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

1. Бенукс

2. Ab-log.ru

3. OpenHAB

Здесь можно посмотреть как это работает.

Всё начиналось здесь.

Программы и технологии используемые в моей системе - Умный Дом

Комментарии Все комментарии

Написать комментарий