Мой умный дом на .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, осталось поднять сайт с галереей плагинов).
    Если нужны какие-то еще возможности, пожалуйста, напишите в комментариях.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 21

      +15
      Краткость конечно сестра таланта, но не настолько же.
        –2
        Я пробовал написать более подробную статью, но писатель из меня совсем плохой. Если считаете, что нужно что-то добавить, напишите — добавлю.
          +2
          Фото компонентов умного дома, принципиальные схемы, парочку ссылок на сайты от куда брали компоненты. Это все должно послужить примером вашей системы.
            +1
            Система на привязана к конкретному железу, но к ней можно подключить почти любые устройства (при помощи механизма плагинов). Добавил небольшое пояснение в пост. Из коробки система может работать с nooLite и IP-камерами D-Link DCS-933.
          +1
          Добавил схему работы системы и пример сценария.
            0
            Не помешает так же описание как развернуть систему и настроить, какое железо примерно требуется
              0
              Вы правы, нужно дописать описание. Добавлю вечером.

              Там два инсталлятора msi (т.е. это только под Windows), один устанавливает сервис, в котором все крутится, второй устанавливает Web UI. После этого UI будет доступен по адресу localhost:8080 (localhost = имя или IP-адрес компьютера, на котором установлена система).
          +1
          Рискуя прослыть троллем, а логи пишете в Oracle 10g?
            0
            Для логирования используется NLog, там можно настроить в т.ч. запись в Oracle (по умолчанию пишется в текстовый файл).
            0
            Не хочу показаться занудой, но где, собственно, сам умный дом?

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

            Спасибо.
              0
              В разделе про создание плагинов есть пример, как сгенерировать сценарное событие «получена команда от адаптера nooLiteRX1164». По сути это то же самое, что датчик. На это событие можно подписать сценарии (через UI).

              хоть какое-то взаимодействие со средствами автоматизации

              Что конкретно Вы имеете в виду под словами «средства автоматизации»?
                0
                Контроллеры, ардуинки, датчики и любая прочая рассыпуха…
                  0
                  Вот пример, как включается свет через nooLite и обрабатываются команды от приемника nooLite
                  github.com/dima117/thinking-home/blob/master/ThinkingHome.Plugins.NooLite/NooLitePlugin.cs

                  Чтобы сделать пример для ардуино или других датчиков, нужно иметь перед собой ардуино с конкретной программой или конкретынй датчик. Если Вам нужен плагин для конкретного устройства, напишите мне в личку и помогу Вам его написать.
                    0
                    Понятно. Вопросов нет.
                      +1
                      Скриншоты WEB UI посмотреть где можно? Ну и пару сценариев применения — например управление с мобильного, с планшета
                        0
                        Скриншот раздела подписки на события
                        image
                        Вечером смогу сделать скриншоты списка сценариев и редактора кода сценария (все осталось дома на ноутбуке).

                        Пока web ui больше ничего не умеет. Это результат первой итерации разработки, основные усилия были направлены на написание инфраструктуры для плагинов. В следующей версии будет переработан UI — должно получиться что-то вроде маленькой CMS для настройки панели управления домом (можно будет создать несколько разделов и добавить в них «виджеты», работающие с различными плагинами).
                          +1
                          На мой взгляд, «умный дом» — это не просто удаленное управление освещением с планшета, а именно самостоятельное принятие решений по управлению домом.

                          Примеры сценариев применения:
                          — фотографировать посетителей, нажимающих кнопку дверного звонка в отсутствие хозяина;
                          — в отсутствие людей уменьшать температуру отопления и выключать теплый пол;
                          — выполнять группы действий по одному событию (например, утром включать будильник, открывать жалюзи, включать кофеварку :)
                          — при длительном (многодневном) отсутствии хозяина дома включать свет в комнатах по вечерам (имитация присутствия)
                          — включать полив газона по расписанию и с учетом погоды (не включать, если недавно шел дождь)
                          и т. д.
                  0
                  1 wire еще не прикрутили?
                    0
                    Пока нет, но есть в планах.

                    Кстати, если вдруг Вы живете в Москве и есть возможность предоставить на пару дней устройства 1-wire для разработки, то к моменту возвращения Вам этих устройств будет готов и плагин для работы с ними.
                      0
                      Я просто сам планировал умнодомную систему на .net'е писать, но по политическим причинам (я в Киеве живу) стало резко не до этого.
                      Спасибо за преложения, я думаю, нам будет о чем пообщаться.
                      Странно, что Вы еще дом датчиками не обвешали.
                      я вот бьюсь над темой моторчика для открытия/закрытия штор с контролем по 1wire
                        0
                        Пока я обвешал дом ноолайтом. Датчики пока не ставил, в ближайшее время должны появитсья в продаже датчики движения и температуры/влажности nooLite — жду их.

                  Only users with full accounts can post comments. Log in, please.