Добрый вечер! Предлагаю вашему вниманию проект, над которым я работаю последние полтора года.
Этот программное обеспечение (если точнее, .
NET Windows Service), с помощью которого можно организовать на своем компьютере центр управления «умным домом».
Хотя это всего лишь мое хобби (моя основная работа — веб-разработчик .
NET), многие люди, которым я показывал свой проект, оценили его по достоинству.
Я пишу эту статью, чтобы попытаться заинтересовать вас.
Фон
Если вы наберете в Google «умный дом», вы увидите кучу сайтов, предлагающих «установку под ключ».И хотя эти решения часто выглядят футуристично, они почти всегда решают воображаемые проблемы.
При этом в большинстве случаев функциональность таких умных домов сводится к удаленному управлению устройствами (например, с планшета).
На мой взгляд, «умный дом» — это то, что самостоятельно принимает решения по управлению домашними устройствами на основе информации, поступающей извне (например, от датчиков) и заранее настроенных правил.
Кроме того, я считаю, что умный дом должен взаимодействовать не только с устройствами, но и с интернет-сервисами (в принципе, кажется, в последнее время так думают почти все).
Все началось пару лет назад с статьи в хабе о приложении для Android на {x} .
Он позволяет привязывать определенную логику к различным событиям на телефоне.
Например, он может отправить жене текстовое сообщение, когда вы уходите с работы.
«Автоматизируйте свою жизнь» написано на их сайте.
«Это то, о чем я всегда мечтал!» — подумал я тогда.
«Но я хочу один для дома, а не для телефона».
Дальше был почти год экспериментов и программирования, в результате которого первая версия приложения .
Было много ошибок и почти не было пользовательского интерфейса, но главное, что он мог делать то же самое, что и on{x} — управлять домом с помощью скриптов.
Из железа поддерживались только силовые блоки нооЛайт и IP-камера D-Link DCS-932L.
Сейчас
На прошлой неделе я закончил работу над вторая версия приложения .В новой версии были сильно переработаны внутренности системы и появилась инфраструктура пользовательского интерфейса.
Также было написано несколько модулей, которые пользователи могли использовать «из коробки» в повседневной жизни: «планировщик будильников» и «прогноз погоды».
По сравнению с первой версией разработка заняла меньше времени (около полугода), но объём проделанной работы оказался значительно больше.
Отчасти это связано с тем, что под впечатлением статья из блога Джона Резига я устроил трехмесячный марафон с ежедневным кодированием.
Плагины
Система состоит из «ядра» и модулей (плагинов).По сути, ядро содержит лишь механизм подключения модулей и инфраструктуру для них (чтобы они могли описывать свой API и события, а также использовать API и подписываться на события друг друга).
Ядро также содержит базовые функции, такие как ведение журнала и средства доступа к системной базе данных.
Весь остальной функционал реализован в плагинах.
Даже такие вещи, как скрипты и веб-интерфейс, являются всего лишь плагинами (если их отключить, система продолжит нормально работать, хотя некоторые ее возможности исчезнут).
Технически плагины представляют собой скомпилированные библиотеки DLL, написанные на C# или другом языке .
NET.
Управление сценариями
Управление домом по сценариям – основное предназначение системы.Скрипты — это небольшие программы, которые управляют домашними устройствами и взаимодействуют с интернет-сервисами.
Скрипты написаны на JavaScript ( Все еще не нравится JavaScript? ) через веб-интерфейс и выполняются на стороне сервера.
Внутри скриптов доступен API для управления домом, который можно расширить с помощью плагинов.
Систему можно настроить на автоматический запуск сценариев при возникновении определенных событий.
Событие — это активация датчика, сигнал таймера, нажатие кнопки или, например, получение сообщения в Твиттере.
Новые события, например новые команды API, можно добавлять с помощью плагинов.
Веб-управление
В первой версии интерфейса почти не было.Надо ли говорить, что это сделало систему практически недоступной для большинства людей? Именно разработка интерфейса была основной задачей второй версии системы.
Веб-интерфейс системы является модульным.
одностраничное приложение основанный на backbone.js И марионетка.
js , модули загружаются через require.js .
Используется для макета Бутстрап , благодаря чему все выглядит аккуратно и корректно отображается на небольших экранах мобильных устройств.
Плагины могут описывать собственный пользовательский интерфейс в виде файлов js/css, расположенных в ресурсах DLL. При установке плагина в систему его интерфейс автоматически интегрируется в веб-интерфейс управления домом (добавляется новый раздел).
Например, так выглядит интерфейс плагина «прогноз погоды».
Документация
На мой взгляд, одной из особенностей моего проекта, отличающей его от других подобных систем, является наличие подробной документации на русском языке.На ее написание ушло много сил и времени (почти 3 месяца).
Было очень сложно не позволить себе запрограммировать новый функционал, пока не была написана документация на уже готовый.
Но написание документации имело и положительный побочный эффект. Мне пришлось посмотреть на проект со стороны его пользователя, благодаря чему было выявлено и исправлено большое количество недостатков.
Еще одним побочным эффектом является то, что во время работы над проектом я узнал что-то новое о .
NET и веб-разработке.
Прочитав документацию, вы также можете узнать что-то новое.
Вместо заключения
Я считаю, что умный дом должен автоматизировать рутинные задачи людей.Но у каждого человека есть свои привычки и задачи, которые он хотел бы автоматизировать (как и разное оборудование).
Если реализовать пожелания всех людей, то в итоге получится громоздкая, неудобная система, в которой каждому конкретному человеку не понадобится 90% функционала.
Кроме того, его невозможно реализовать без большой команды программистов в короткие сроки.
Вместо готовой гигантской системы я хотел сделать инструмент, с помощью которого можно построить собственную небольшую систему домашней автоматизации.
Что-то вроде конструктора, к которому можно подключить, например, свои собственные устройства Arduino и не придется самостоятельно реализовывать инфраструктуру и общий функционал.
Попробуй установить приложение и напишите свои собственные плагины (это очень просто ).
Писать об ошибках и отправить запросы на извлечение .
Присоединяйтесь к нашему группа вконтакте чтобы быть в курсе новостей проекта.
Мне будет очень приятно, если оно вам понравится! Теги: #Умный дом #JavaScript #.
NET #веб-разработка #скрипты #.
net 4.5
-
Вам Жалко Top4Top?
19 Oct, 24 -
Тем Более Глупо Уходить
19 Oct, 24