Как стать автором
Обновить

Мой умный дом на .NET

.NET
В последнее время на хабре много статей про умный дом. В основном все они касаются взаимодействия с домашними устройствами. Для автоматического принятия решений используют MajorDoMo, Ninja Blocks или собственные велосипеды.

Уже около года я пишу yet another home automation систему управления домом по сценариям. Т.е. она позволяет навешивать произвольную логику на различные домашние события. Предлагаю ее на ваш строгий суд.
Описание и дистрибутив

На мой взгляд, система имеет довольно удачную архитектуру и, с помощью механизма плагинов, легко интегрируется с любым железом. Например, я пробовал написать плагины для управления светом через nooLite и для работы с IP-камерой — это, действительно, просто (посмотрите документацию). Сценарии пишутся на Java Script (через Web UI), сама система написана на .NET (я выложил исходный код на github).

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

Спасибо за внимание!

UPD. Архитектура системы
image

UPD. Пример сценария
Сценарии пишутся на языке Java Script (вы до сих пор не любите JavaScript?). Из сценариев доступны возможности подключенных плагинов. Вы можете написать свой плагин и вызывать его команды из сценариев.
Например, вот так можно сфотографировать IP-камерой посетителя, который приходил, пока вас не было дома (повесить этот сценарий на нажатие кнопки дверного звонка).

var camera = host.getPlugin("DCS933");    // DCS933 - плагин для работы с камерой D-Link DCS-933
var bytes = camera.executeMethod("getCurrentImage");
host.getPlugin("email").executeMethod("send", "myemail@gmail.com", "Пропущенный посетитель!", "", bytes);


UPD. Устройства
В первую очередь, хотелось написать систему для автоматического принятия решений (по сценариям), поэтому она не завязана на какое-то конкретное железо. В системе есть механизм плагинов (работает при помощи MEF). С его помощью можно подключить практически любые устройства, с которыми может взаимодействовать компьютер (в т.ч. самодельные).
Я написал плагины для работы с nooLite и IP-камерами D-Link DCS-933 (эти плагины входят в число базовых). Но они были написаны, в первую очередь для того, чтобы на себе почувствовать, сложно ли писать плагины для системы. Я постарался написать подробную документацию о том, как писать собственные плагины. Если у вас возникнут вопросы или трудности при интеграции с железом, напишите мне (например, через хабр).

UPD. Планы по развитию проекта?
То, что сейчас лежит на сайте — это первая версия системы, которую можно использовать. Там сейчас только базовые плагины и крайне скудный UI. До лета планирую сильно переработать UI (объединить веб-приложение с сервисом, и сделать что-то вроде маленькой CMS для настройки панели управления домом). Также планирую расширить список стандартных плагинов. Точно будут плагины с будильниками, с прогнозом погоды и с обработкой голосовых команд (через Microsoft Speech API — оно работает локально, качество распознавания довольно хорошее). И еще будет установка плагинов через Интернет из галереи плагинов (это уже сделано, работает через nuget, осталось поднять сайт с галереей плагинов).
Если нужны какие-то еще возможности, пожалуйста, напишите в комментариях.
Теги:smart homehome automation.netjavascriptавтоматизациясценарииумный дом
Хабы: .NET
Всего голосов 45: ↑25 и ↓20+5
Просмотры24K
Комментарии Комментарии 21

Похожие публикации

Лучшие публикации за сутки