- PVSM.RU - https://www.pvsm.ru -
В первой [1] части я рассказал о причинах, побудивших меня заняться построением своего “умного дома”, и об используемом “железе”.
Но “железо”, само по себе, умным быть не может, главное это “софт”. Вот об этой стороне своего проекта я и хочу рассказать в этой части. Банальное управление освещением с пульта, конечно, выглядит круто в глазах непосвященной публики, но “ума” тут никакого.
Так что же такого умного можно сделать? И главное как?
Как я уже говорил ранее, к системе у меня подключено:
Для начала приведу неполный список того, что умеет моя система (и примеры, для чего это используется):
Самой сложной задачей, на первый взгляд, казалось решение задачи: “Есть ли кто дома?”
Ведь если есть, но спят, то никакой датчик движения ничего не определит, а включать свет тогда при входе нежелательно, так же как отключать отопление. Долго я ломал над этим голову, начиная с вариантов подсчета входящих/выходящих и заканчивая определением всех перемещений по квартире (конечная точка — дверь, значит никого, кровать, значит спят).
Но как говориться, все гениальное — просто, обратил внимание на закономерность, вошедшую в привычку:
Поставил датчики на все замки и вуаля, за полтора года ни одного ложного срабатывания, 100% определение присутствия дома кого-либо.
Архитектура системы
В системе есть следующие сущности:
Контрол (мессенджер) связан с несколькими триггерами, которые, в свою очередь, срабатывают по событиям от сенсоров.
Сенсоры делятся на пять групп:
min(abs(FRONTDOOR_KEY),
-FRONTDOOR_LATCH_KEY,
FRONTDOOR_LOCK_LOWER_KEY,
FRONTDOOR_LOCK_UPPER_KEY)
Триггеры умеют делать следующее:
Контролы делятся на три группы:
Разберем эту схему на примере упрощенного варианта управления теплым полом.
К примеру, у нас есть следующие задачи:
Изобразим схему взаимодействия на диаграмме:
Вот такая вот нехитрая архитектура позволяет задавать большинство необходимых мне действий. Есть, конечно, и более сложные ситуации. В таких случаях я просто пишу кастомный контрол. Например, для включения/выключения вентиляции нужна более сложная логика чем просто включить/выключить канальный вентилятор, нужно еще по определенным правилам заслонку перекрывать.
Стороние проекты
Вся моя система написана на Python и крутится на сервере под управлением Ubuntu. В качестве БД используется MySQL. Для подключение к 1-wire используется библиотека owpython [2].
Но разумеется, писать все самому смысла нет, чаще легче взять готовые решения.
Для видеонаблюдения я не стал изобретать велосипедов и воспользовался OpenSource системой ZoneMinder [3], тем более, что она имеет весьма неплохой API позволяющий, к примеру, включать/выключать запись по нужным мне правилам. Или наоборот, повесить свою обработку событий при появлении движения в охраняемой зоне. Так же она может отдавать изображение с камеры.
Пользовательский интерфейс
У системы есть три основных интерфейса управления:
С точки зрения системы классический выключатель — это просто сенсор-ключ, который с помощью триггеров привязывается к любым контролам. При желании можно привязать, например, выключатель на кухне к свету в детской (чем я обычно занимаюсь на 1-е апреля)
Поскольку, во время написания Androind приложения, я был увлечен сериалом Star Trek, то и тему оформления сделал под стиль терминалов из этой культовой ленты.
Терминал имеет главное окно, на котором отображается общее состояние системы:
Слева — общее состояние.
Посередине — план квартиры, с отображением состояния основных контролов и сенсоров
Вверху — общая для всего приложения информационная панель.
Справа — основные кнопки (выключить все, монитор уличных датчиков, настройки)
Окна для каждой из комнат. Собственно, в каждой комнате, где висит планшет, открыто окно именно этой комнаты и включение/выключение освещения осуществляется одним касанием по довольно большой кнопке, что совершенно не доставляет неудобств
Так же в каждой комнате можно посмотреть различную информацию по датчикам, например, график температуры
Я не дизайнер и не верстальщик фронтендер поэтому вебинтерфейс у меня простой, корявый и минималистский.
Верхние блоки — мониторинг
Слева — управление контролами и триггерами
В центре — видеонаблюдение
Справа — справочная информация не связанная непосредственно с «умным домом».
Изначально предполагалось в качестве основного интерфейса в местах обитания детей использовать классические выключатели на стенах, а там где взрослые, вместо выключателей монтировать Android планшеты, но жизнь, похоже, внесет свои коррективы. Так, оказалось, что детям гораздо интереснее по планшету тыкать, а жене больше по душе обычные кнопки.
Автор: sashacmc
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/26296
Ссылки в тексте:
[1] первой: http://habrahabr.ru/post/158911/
[2] owpython: http://owfs.sourceforge.net/owpython.html
[3] ZoneMinder: http://www.zoneminder.com/
[4] Источник: http://habrahabr.ru/post/167797/
Нажмите здесь для печати.