html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Умный дом, как я до такого докатился. Часть 2-я


В первой части я рассказал о причинах, побудивших меня заняться построением своего “умного дома”, и об используемом “железе”.
Но “железо”, само по себе, умным быть не может, главное это “софт”. Вот об этой стороне своего проекта я и хочу рассказать в этой части. Банальное управление освещением с пульта, конечно, выглядит круто в глазах непосвященной публики, но “ума” тут никакого.
Так что же такого умного можно сделать? И, главное, как?

Как я уже говорил ранее, к системе у меня подключено:
  • Все освещение квартиры
  • Теплый пол
  • Вентиляция
  • Видеонаблюдение
  • Климатические датчики
  • Датчики движения
  • Датчики открывания дверей и окон


Для начала приведу неполный список того, что умеет моя система (и примеры, для чего это используется):
  • Банальное управление всем, что подключено, с веба/смартфона/планшета :)
  • Мониторинг происходящего в квартире и вокруг из любой точки мира, где есть Интернет (так, мои дома, спят дневной сон, не буду пока звонить будить; сработала сигнализация на мотоцикле у подъезда — подключился к камере, убедился что все нормально и т. д.)
  • Включение освещения в коридоре когда кто-то пришел домой и при этом на улице темно, а дома никого не было
  • Отключение света во всей квартире и перевод теплого пола в экономичный режим когда никого нет
  • Управление освещением по расписанию (имитация присутствия)
  • Сценарное управление освещением одним касанием: погасить все (ребенок просыпается, а просыпаться не надо, 3 часа ночи, родители еще бродят ;)), погасить все кроме света в коридоре (выношу ребенка из ванной со словами, смотри все уже спят и тебе пора) и т. д.
  • Управление теплым полом по расписанию и температуре
  • Управление вентиляцией по расписанию и температуре
  • Отключение вентиляции при открытых окнах (для сохранения ресурса фильтров)
  • Управление видеозаписью по различным событиям (не закрытая на замок входная дверь, движение и т. д.)
  • Управляемые оповещения по событиям (кто-то пришел, все ушли, входная дверь не заперта 15 минут и т. д.)
  • ...


Самой сложной задачей, на первый взгляд, казалось решение задачи: “Есть ли кто дома?”

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

Поставил датчики на все замки и вуаля, за полтора года ни одного ложного срабатывания, 100% определение присутствия дома кого-либо.

Архитектура системы
В системе есть следующие сущности:
  • Сенсор — то с чего можно считывать данные
  • Триггер — условие зависящее от сенсора или времени, управляющее контролами
  • Контрол — то чем можно управлять
  • Мессенджер — по сути тоже, что и контрол, только он посылает сообщение

Контрол (мессенджер) связан с несколькими триггерами, которые, в свою очередь, срабатывают по событиям от сенсоров.


Сенсоры делятся на пять групп:
  • Сенсор-значение: возвращает абсолютное значение, например температуру
  • Сенсор-ключ: возвращает время с последнего срабатывания и состояние, например датчик движения
  • Сенсор-команда: возвращает значение произвольной команды шелла linux, например температуру диска
  • Макросенсор: сочетание нескольких сенсоров, например, сенсор NOBODY_HOME определен как: min(abs(FRONTDOOR_KEY), -FRONTDOOR_LATCH_KEY, FRONTDOOR_LOCK_LOWER_KEY, FRONTDOOR_LOCK_UPPER_KEY)
    Что в переводе на русский язык значит: никого нет дома с того момента когда была закрыта дверь (FRONTDOOR_KEY), отрыта щеколда (FRONTDOOR_LATCH_KEY) и закрыты замки (FRONTDOOR_LOCK_LOWER_KEY, FRONTDOOR_LOCK_UPPER_KEY)
  • Сенсор-контрол: возвращает время с момента последнего изменения контрола и его состояние


Триггеры умеют делать следующее:
  • on — Включать контрол при наступлении условия
  • off — Выключать контрол при наступлении условия
  • switch on — включать при соблюдении условия и выключать при несоблюдении
  • switch off — выключать при соблюдении условия и включать при несоблюдении


Контролы делятся на три группы:
  • 1-wire контрол — вкл/выкл устройство по шине 1-wire
  • cmd контрол — выполнить команду шелла linux
  • Кастомный контрол — все что душе угодно, но надо лезть в код


Разберем эту схему на примере упрощенного варианта управления теплым полом.
К примеру, у нас есть следующие задачи:
  • Поддерживать температуру 34 градуса
  • Отключаться на ночь
  • Выключаться когда никого нет
  • Включаться когда кто-нибудь есть дома


Изобразим схему взаимодействия на диаграмме:



  • Trigger 1, означает, что когда температура падает ниже 34 пол нужно включить, иначе выключить
  • Trigger 2, означает, что с часу ночи, в течении 8 часов пол должен быть выключен
  • Trigger 3, означает, что с когда никого нет дома больше 1 секунды нужно пол выключить
  • Trigger 4, означает, что с когда кто-то есть дома больше 1 секунды нужно пол включить


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

Стороние проекты
Вся моя система написана на Python и крутится на сервере под управлением Ubuntu. В качестве БД используется MySQL. Для подключение к 1-wire используется библиотека owpython.
Но разумеется, писать все самому смысла нет, чаще легче взять готовые решения.

Для видеонаблюдения я не стал изобретать велосипедов и воспользовался OpenSource системой ZoneMinder, тем более, что она имеет весьма неплохой API позволяющий, к примеру, включать/выключать запись по нужным мне правилам. Или наоборот, повесить свою обработку событий при появлении движения в охраняемой зоне. Так же она может отдавать изображение с камеры.

Пользовательский интерфейс
У системы есть три основных интерфейса управления:
  • Классический (выключатели на стенах)
  • Нативное Android приложение
  • Вебинтерфейс

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


Поскольку, во время написания Android приложения, я был увлечен сериалом Star Trek, то и тему оформления сделал под стиль терминалов из этой культовой ленты.
Терминал имеет главное окно, на котором отображается общее состояние системы:

Слева — общее состояние.
Посередине — план квартиры, с отображением состояния основных контролов и сенсоров
Вверху — общая для всего приложения информационная панель.
Справа — основные кнопки (выключить все, монитор уличных датчиков, настройки)

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


Так же в каждой комнате можно посмотреть различную информацию по датчикам, например, график температуры


Я не дизайнер и не верстальщик фронтендер поэтому вебинтерфейс у меня простой, корявый и минималистский.

Верхние блоки — мониторинг
Слева — управление контролами и триггерами
В центре — видеонаблюдение
Справа — справочная информация не связанная непосредственно с «умным домом».

Изначально предполагалось в качестве основного интерфейса в местах обитания детей использовать классические выключатели на стенах, а там где взрослые, вместо выключателей монтировать Android планшеты, но жизнь, похоже, внесет свои коррективы. Так, оказалось, что детям гораздо интереснее по планшету тыкать, а жене больше по душе обычные кнопки.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

1

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • QTQlCE7oU1UT
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции