воскресенье, 29 декабря 2013 г.

Архитектура умного дома

Пообщавшись с коллегой, нарисовали несколько схем, как может выглядеть архитектурное решение для автоматизации дома. И остановились на таком варианте, схемку быстренько набросал в lucidchart.

Далее - кратко о сути схемы.



  • Веб сервер нужен для отображения информации и приёма команд на любом устройстве.
    • Сам веб сервер планируем развернуть на малинке, она дешёвая и может работать без вентиляторов. Чем меньше механических составляющих, тем лучше, на мой взгляд. Если малинной мощности будет не хватать, можно будет взять что-то помощнее, типа CubieTruck.
    • При наличии связи веб сервера с Интернет, домом можно будет управлять издалека.
    • Сделаем адаптивный дизайн, чтобы можно было смотреть на показания датчиков и управлять домом как с компа, так и с мобильных устройств.
    • Для вывода информации, возможно, воспользуемся d3js, чтобы посильнее разгрузить веб сервер и побольше графики и таблиц рисовать на клиенте.
  • Коммутатор нужен для того, чтобы избежать конфликтов сигналов от различных датчиков и устройств. Например, веб сервер запрашивает показания температуры в одной комнате. А в это время очухался, например, контроллер датчика освещённости и выслал свой результат. Коммутатор поможет избежать такой неразберихи и примет только нужный сигнал.
    • В каких-то случаях нам не захочется тянуть много длинных проводов от коммутатора к каждому контроллеру. Для этого будем снова использовать коммутаторы следующего уровня (Sub Commutator). Надо предусмотреть, чтобы таких уровней могло быть много. Т.е. будет дерево из коммутаторов.
    • Если проводков от устройств будет так много, что все они не будут помещаться в разъёмы одного коммутатора, то дерево коммутаторов снова придёт на помощь.
  • Каждый датчик или устройство будет работать вместе со своим контроллером (Controller 1... N).
    • Это нужно в первую очередь для того, чтобы наладить связь коммутатор-устройство. Каждый такой контроллер должен иметь свой уникальный идентификатор, чтобы к нему можно было адресоваться.
    • Вторая роль контроллера - организация автономной работы устройства.

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

И один нюанс :) Это теория. Надеюсь, удастся посмотреть, что будет на практике, возможно, тогда и схемку скорректируем.
Если есть что сказать/посоветовать, комментируйте, будем рады.