Мой Умный Дом На .Net, Версия 2.0

Добрый вечер! Предлагаю вашему вниманию проект, над которым я работаю последние полтора года.

Этот программное обеспечение (если точнее, .

NET Windows Service), с помощью которого можно организовать на своем компьютере центр управления «умным домом».

Хотя это всего лишь мое хобби (моя основная работа — веб-разработчик .

NET), многие люди, которым я показывал свой проект, оценили его по достоинству.

Я пишу эту статью, чтобы попытаться заинтересовать вас.



Мой умный дом на .
</p><p>
NET, версия 2.0



Фон

Если вы наберете в Google «умный дом», вы увидите кучу сайтов, предлагающих «установку под ключ».

И хотя эти решения часто выглядят футуристично, они почти всегда решают воображаемые проблемы.

При этом в большинстве случаев функциональность таких умных домов сводится к удаленному управлению устройствами (например, с планшета).

На мой взгляд, «умный дом» — это то, что самостоятельно принимает решения по управлению домашними устройствами на основе информации, поступающей извне (например, от датчиков) и заранее настроенных правил.

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

Все началось пару лет назад с статьи в хабе о приложении для Android на {x} .

Он позволяет привязывать определенную логику к различным событиям на телефоне.

Например, он может отправить жене текстовое сообщение, когда вы уходите с работы.

«Автоматизируйте свою жизнь» написано на их сайте.

«Это то, о чем я всегда мечтал!» — подумал я тогда.

«Но я хочу один для дома, а не для телефона».

Дальше был почти год экспериментов и программирования, в результате которого первая версия приложения .

Было много ошибок и почти не было пользовательского интерфейса, но главное, что он мог делать то же самое, что и on{x} — управлять домом с помощью скриптов.

Из железа поддерживались только силовые блоки нооЛайт и IP-камера D-Link DCS-932L.

Сейчас

На прошлой неделе я закончил работу над вторая версия приложения .

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

Также было написано несколько модулей, которые пользователи могли использовать «из коробки» в повседневной жизни: «планировщик будильников» и «прогноз погоды».

По сравнению с первой версией разработка заняла меньше времени (около полугода), но объём проделанной работы оказался значительно больше.

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



Плагины

Система состоит из «ядра» и модулей (плагинов).

По сути, ядро содержит лишь механизм подключения модулей и инфраструктуру для них (чтобы они могли описывать свой API и события, а также использовать API и подписываться на события друг друга).

Ядро также содержит базовые функции, такие как ведение журнала и средства доступа к системной базе данных.

Весь остальной функционал реализован в плагинах.

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

Технически плагины представляют собой скомпилированные библиотеки DLL, написанные на C# или другом языке .

NET.

Управление сценариями

Управление домом по сценариям – основное предназначение системы.

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

Скрипты написаны на JavaScript ( Все еще не нравится JavaScript? ) через веб-интерфейс и выполняются на стороне сервера.

Внутри скриптов доступен API для управления домом, который можно расширить с помощью плагинов.



Мой умный дом на .
</p><p>
NET, версия 2.0

Систему можно настроить на автоматический запуск сценариев при возникновении определенных событий.

Событие — это активация датчика, сигнал таймера, нажатие кнопки или, например, получение сообщения в Твиттере.

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



Мой умный дом на .
</p><p>
NET, версия 2.0



Веб-управление

В первой версии интерфейса почти не было.

Надо ли говорить, что это сделало систему практически недоступной для большинства людей? Именно разработка интерфейса была основной задачей второй версии системы.

Веб-интерфейс системы является модульным.

одностраничное приложение основанный на backbone.js И марионетка.

js , модули загружаются через require.js .

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



Мой умный дом на .
</p><p>
NET, версия 2.0

Плагины могут описывать собственный пользовательский интерфейс в виде файлов js/css, расположенных в ресурсах DLL. При установке плагина в систему его интерфейс автоматически интегрируется в веб-интерфейс управления домом (добавляется новый раздел).

Например, так выглядит интерфейс плагина «прогноз погоды».



Мой умный дом на .
</p><p>
NET, версия 2.0



Документация

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

Посмотреть на себя .

На ее написание ушло много сил и времени (почти 3 месяца).

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

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

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

NET и веб-разработке.

Прочитав документацию, вы также можете узнать что-то новое.



Вместо заключения

Я считаю, что умный дом должен автоматизировать рутинные задачи людей.

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

Если реализовать пожелания всех людей, то в итоге получится громоздкая, неудобная система, в которой каждому конкретному человеку не понадобится 90% функционала.

Кроме того, его невозможно реализовать без большой команды программистов в короткие сроки.

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

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

Попробуй установить приложение и напишите свои собственные плагины (это очень просто ).

Писать об ошибках и отправить запросы на извлечение .

Присоединяйтесь к нашему группа вконтакте чтобы быть в курсе новостей проекта.

Мне будет очень приятно, если оно вам понравится! Теги: #Умный дом #JavaScript #.

NET #веб-разработка #скрипты #.

net 4.5

Вместе с данным постом часто просматривают: