Привет! Сегодня я наконец-то могу поделиться с вами результатами своей работы на протяжении последних двух лет! Вчера вечером я выпустил новую версию 3.0 системы управления умным домом ThinkingHome.



ThinkingHome — это программа (.NET Windows service), с помощью которой вы можете организовать на своем компьютере управляющий центр умного дома. Это центр, который дружит между собой "железки" с разными интерфейсами от разных производителей, позволяет автоматизировать работу с ними (писать скрипты на JavaScript) и управлять всем этим хозяйством через веб-интерфейс.


Под катом более подробное описание системы, список изменений в новой версии и небольшое объявление для тех, кто ненавидит Windows :)


Платформа


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


Вам доступны:


  • Система плагинов — отвечает за подключение плагинов и их взаимодействие (плагины могут использовать API и подписываться на события друг-друга). Это значит, что вы можете подключить себе плагин, который написал для себя другой человек и этот плагин будет совместим с вашими плагинами. Плагины пишутся на языке C#.
  • API логирования — позволяет писать информацию в лог и гибко настраивать хранение логов. Например, вы можете хранить логи в текстовых файлах в течение месяца и при этом сообщения о критичных ошибках дополнительно отправлять на почту. Внутри используется NLog.
  • API хранения данных в БД — вы просто пишете классы на C# и сохраняете их в БД (используется NHibernate в качестве ORM). Для миграции структуры БД — ecm7migrator.
  • Инфраструктура HTTP API — вы можете пометить метод своего плагина специальным атрибутом и он станет доступен для вызова по HTTP.
  • Инфраструктура веб-интерфейса — ваш плагин может добавлять в систему собственные типы виджетов для стартового экрана или даже новые разделы интерфейса.
  • Клиент-серверная шина сообщений — вы можете пушить сообщения с сервера на клиент или с клиента — всем остальным клиентам. Например, при получении нового значения температуры с датчика вы можете отправить его во все браузеры (!), в которых открыт веб-интерфейс системы, чтобы они обновили графики температуры на уже открытой странице. Внутри шины сообщений используется SignalR.
  • API локализации — позволяет вам отображать интерфейс на нескольких языках и гибко это настраивать. Ядро системы и все базовые плагины поддерживают русский и английский языки.

В комплекте идут готовые плагины:


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


Редактор сценариев выглядит примерно так:


ThinkingHome - редактор сценариев


Плагин MQTT — тут всё просто: вы можете получать данные от других устройств и отправлять им команды по протоколу MQTT. Например, этот протокол поддерживает контроллер Wiren Board.


Плагин nooLite позволяет управлять электроприборами с помощью системы nooLite. Можно управлять освещением, вентиляцией, теплым полом и любыми другими электроприборами. Даже чайником :)


Плагин микроклимата собирает и сохраняет в БД информацию о температуре и влажности с датчиков nooLite. Данные отображаются в виде графиков в веб-интерфейсе.


Выглядит примерно так:


ThinkingHome - графики температуры и влажности


Плагин будильник/таймер позволяет включить в заданное время звуковой сигнал или выполнить заданный сценарий. Например, можно настроить, чтобы в 8 утра жалюзи во всем доме сами открывались, а в 22 часа — сами закрывались.


Плагин прогноза погоды — отображает в веб-интерфейсе прогноз погоды для заданных городов. Информаця о погоде загружается из OpenWeatherMap API. Результат выглядит примерно так:


ThinkingHome - прогноз погоды


Что нового?


В новой версии мы сделали большое количество новых доработок. Кроме того, были полностью переписаны многие части системы, чтобы увеличить скорость работы и сделать более удобный API.


Основные изменения:


  • новая тёмная тема оформления (раньше было так);
  • новый интерфейс стартовой страницы (удобно настраивается через редактор);
  • виджеты и API nooLite для стартовой страницы;
  • полноэкранный режим для редактора сценариев;
  • поддержка нескольких языков (см. выше);
  • поддержка протокола MQTT (см. выше);
  • клиент-серверная шина сообщений (см. выше) + уже используется в виджетах;
  • полностью переписано ядро веб-интерфейса;
  • API для запуск перидодических действий
  • на клиенте доступен chart.js (средство для отображения графиков);
  • переподключение к приемникам nooLite, если приемник был недоступен, потом снова стал доступен;
  • ускорен старт сервиса;
  • и множество более мелких доработок.

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


Чтобы постороннему человеку хоть как-то возможно легче было разобраться со всеми этими штуками, мы написали документацию. Мы очень старались описать всё подробно и понятно! В результате получилось почти 50 страниц текста (если распечатать на А4) и больше сотни примеров кода (мы писали это почти 3 месяца).


Результат выложен на сайте http://system.thinking-home.ru.


Для тех, кто ненавидит Windows


Исторически так сложилось, что проект был написан на C#. В принципе, это неплохой вариант, учитывая количество готовых библиотек и очень высокое качество средств разработки. Однако, у этого варианта есть существенный (для многих — критичный) недостаток — приложению нужен .NET Framework, который работает только под Windows.


Так было до недавнего времени, но сейчас ситуация изменилась. Летом зарелизился кросс-платформенный .NET Core, а в ноябре вышла его версия 1.1. Мы рады сообщить, что уже начали портировать ThinkingHome на .NET Core.


Разработка ведется в отдельном репозитории. Весь код пишется на маке и тестируется в macOS и linux. Сейчас уже портировано ядро системы и часть базовых плагинов (таймеры, работа с БД, сценарии). При портировании значительная часть кода полностью переписывается. Определенно новая версия будет значительно лучше старой в плане архитектуры, API и производительности.


Если вы вдруг хотите поучаствовать, мы будем рады любой помощи! (А если не хотите участвовать, всё равно зайдите на github и кликните по звездочке :)


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


Очень много хотел рассказать, не уверен, что всё получилось понятно. Буду рад ответить на вопросы в комментариях.


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


Мне будет очень приятно, если вам понравится!


UPD: 24.12.2016 20:00
Исправил недочет в дистрибутиве. Те, кто скачал дистрибутив, пожалуйста, скачайте заново.

Поделиться с друзьями
-->

Комментарии (42)


  1. lingvo
    23.12.2016 17:38
    +1

    Всегда радует появление новых платформ для УД.
    Мои комментарии/пожелания:
    — Как всегда больше всего работы вам доставят эти плагины, так как единого стандарта связи с датчиками и устройствами нет. Постарайтесь охватить основные протоколы, а не заморачиваться на экзотике.
    — По поводу сценариев — советую не развивать свой язык — их сейчас, наверное, столько же, сколько систем автоматизации, а взять что-то готовое. Например я всем советую движек Node-RED. Подходит для любых сценариев и прост в освоении.
    — Настраивайтесь на реал-тайм. С этим во многих системах большая проблема и часто время обработки событий может составлять секунды, что очень критично для таких вещей, как управление светом, например.
    — Насчет Windows — в данном софте нужно сразу быть готовым к тому, что он будет крутиться на железе 24/7. А это всякие NASы, или коробочки с пассивным охлаждением. Windows там не очень любят.
    — Сразу задумывайтесь о надежности софта, так как это сердце домашней автоматизации. Подумайте о том, чтобы ваш софт работал в каком-нибудь докере, который в свою очередь крутится на нескольких машинах, так чтобы выход из строя одной из машин не приводил к отказу софта.


    1. dima117
      23.12.2016 17:45

      Спасибо за отзыв!

      На счет своего языка — мы и не придумывали его, всё пишется на стандартном JavaScript.

      Про Windows — согласен. Уже делаем кросс-платформенную версию.

      Остальные замечания — выглядят логичными и по делу, учтем их.


      1. lingvo
        23.12.2016 22:22

        Еще один коммент:
        В настоящий момент все такие опенсоурсные системы активно развиваются, в том числе благодаря поддержке пользователей. Т.е. больше пользователей -> больше мейнтенеров -> быстрее появляются новые фичи -> больше пользователей и т.д. В итоге проект, у кого больше коммюнити будет и быстрее развиваться. Вот я и хотел спросить, чем ваш проект отличается от десятков других? Чем вы собираетесь привлекать пользователей?


        1. dima117
          24.12.2016 11:43

          К сожалению, не знаком со всеми этими решениями.


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


          Могу точно сказать, что от решений на node мое отличается более низкоуровневой платформой (.NET). Это важно, когда нужна производительность или нужно работать с бинарными данными, например.


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


          1. lingvo
            25.12.2016 11:50
            +1

            Все, что вы написали выше, это отличия с точки зрения разработчика (кроме документации на русском языке), а не пользователя. Для пользователя это будет «а, очередная система из десятка других».


            1. dima117
              25.12.2016 12:20

              Вы правы, это всё для разработчика.


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


              1. lingvo
                25.12.2016 13:47

                Я не знаю, что вы имеете ввиду под «коробочным решением».
                Есть такие коробки, типа Vera Edge, Samsung Smartthings, Zipato и др. Их может настроить любой, даже не продвинутый пользователь. Проблема в том, что в угоду простоте, там очень мало возможностей настройки, что ограничивает их применение в пределах небольшой квартиры, иначе это просто игрушки.
                С другой стороны есть также «полу-коробочные решения», которые можно назвать так — взял железо по выбору, установил одну из систем домашней автоматизации выше, настроил и получил результат.
                В обоих случаях я не вижу тут разработчиков. Максимум во втором случае нужны интеграционные способности и немного большие знания компьютеров.


  1. frozzzen
    23.12.2016 18:03
    +1

    Что происходит с «умным домом», когда компьютер выключен физически?


    1. dima117
      23.12.2016 18:10
      +1

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


  1. danyaShep
    23.12.2016 18:05
    +1

    Кому интересна эта тема, советую посмотреть на Home Assistant. Это гораздо более зрелый продукт, но не такой консервативный, как openHAB.


  1. Alex_ME
    23.12.2016 19:44
    +1

    Очень интересная статья и проект!


    У самого есть идея разработки похожей системы управления умным домом, с плагинами и скриптами, и так же на .NET (Core), хотя осознаю, что таких решений много — начиная от стандарта де-факта Open Hab и заканчивая упоминаемыми на хабре ioBrocker и вашей системой, почему-то все равно есть, возможно, неправильное, желание делать свой велосипед.


    А как устроена изнутри Ваша система?
    Я планировал механизм, близкий к ROS (кто знает) — все плагины отдельные процессы, взаимодействуют через сокеты\каналы. В качестве протоколов даже внутрисерверного взаимодействия — MQTT+HTTP (мне кажется, их хватит на все нужды). Плюс — можно подключать стороннее ПО, по MQTT много чего работает. Минус — большие накладные расходы по передачи данных. Так же сервер для хранения данных плагинов и отдельно — настроек (привет, rosparam), настройка через веб-интерфейс и репозиторий плагинов для легкой установки.


    Если что-то выйдет — обязательно напишу статью.


    1. dima117
      23.12.2016 19:58

      У нас все плагины внутри одного процесса, но могут создавать любое количество потоков. Данные передаются в памяти, это очень быстро. Постоянное хранение данных в SQL СУБД. В версии для Windows используется SQL Server CE4 из-за простоты установки, в версии на .NET Core — PostgreSQL, соответственно, в этом случае БД можно вынести на другой сервер. Есть модуль для установки плагинов из репозитория, но глобальный репозиторий не настроен. В версии на .NET Core плагины будут ставиться напрямую из NuGet средствами .NET.

      Напишите подробнее о своем проекте, очень интересно! Если выложено на github, дайте ссылку на репозиторий, пожалуйста.


      1. Alex_ME
        23.12.2016 20:08

        К сожалению, от проекта у меня есть только идея и некое подобие написанного для себя ТЗ.


        Собственно, идея изначально была не столько программная, сколько аппаратная — сделать очередные устройства на ESP-8266, но размышления привели к тому, что нужно годное ПО сервера, так что проект из двух частей- железячной (сейчас я поглядываю на rtl8710 — аналоги esp) и программной.


        Надеюсь, что я все-таки найду время заняться им. Если займусь и получу результат — будет статья.


  1. AlexandrDP
    23.12.2016 21:10

    Написал ПО на asp. net mvc + angular + ef + signalR (уже 2 версии) для управления газовым котлом, плагины, диаграммы. Но нет времени его дальше развивать.

    Скажите смогу ли я написать к нему плагин обслуживания устройства с условиями
    — управляющая железка работает по http
    — ее можно опрашивать
    а) получить температуры с нескольких точек (для диаграммы)
    б) режим включен/выключен
    в) авторежим включен/выключен
    г) минимальная и максимальная температуры (котел работает в их пределах)
    — можно менять
    а) режим
    б) авторежим
    в) минимальная и максимальная температуры
    со стороны сайта/сервиса нужно организовать по расписанию день недели / час — минимальные и макс темепературы
    например
    — с 6:00 до 23:00 нужно переключать устройство в мин/макс = 21,2/21,5
    — с 23:00 до 5:00 нужно переключать устройство в мин/макс = 19/20
    ?


    1. dima117
      24.12.2016 11:08

      Да, такой плагин несложно будет написать.

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

      Напишите мне в skype: dima117a, помогу вам написать плагин и подключить его.


  1. werwolfby
    23.12.2016 23:09

    С огромным удовольствием подключусь, когда .NET Core под ARM таки начнёт запускаться, а когда AOT доделают вообще цены ему не будет!


    1. ZOXEXIVO
      24.12.2016 01:36

      На ARM запускалась еще beta8 версия


      1. werwolfby
        24.12.2016 01:45

        Может подскажете откуда его скачать?

        Потому что не задолго до релиза АРМ из ожидаемого релиза был вычеркнут. Остался лишь Windows ARM, что не то что я жду.
        И пока что я смог нагуглить только то что он ожидается и недавно закрытый ишью: https://github.com/dotnet/core/issues/243

        Со ссылкой только на Windows ARM и то для версии 1.2


      1. werwolfby
        24.12.2016 01:48

        Покапался еще, они все еще его пилят, но похоже если порыть то таки можно уже будет установить: https://github.com/dotnet/core-setup/issues/725


        1. dima117
          24.12.2016 11:16

          Я находил еще issue 3977 про количество успешных и упавших тестов на ARM. Там есть комментарий от 15 ноября, что все тесты уже проходят. Думаю, ждать осталось не очень долго.


  1. u010602
    24.12.2016 00:51

    Очень интересный проект для меня, т.к. Для меня шарп родной язык. От порыва вот прямо взять скачать и начать эксперименты останавливает то, что у меня нет исполняющих устройств которые я смогу связать с этой системой. Очень хотелось бы статью с примера про то как можно взять ардуино, пару готовых шилдов, и по клацать реле или помигать лампочкой через гуи вашей системы. Как только будет готов простой и доступный мост из софта в железо — можно начинать эксперименты. Сейчас же у всех уже есть какие-то девайсы и уже к ним пилится софт. В итоге проблема та же, девайсы кастомные, их не купишь и сам не повторишь так просто.
    Лично моя задача номер один это управление отоплением и вентиляцией. Там везде цифровые проводные интерфейсы.


    1. dima117
      24.12.2016 11:36

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


      Примеры, как из GUI управлять светом здесь, здесь и здесь.


      Готов ответить на любые ваши вопросы.


      1. u010602
        25.12.2016 05:30

        Да Ноолайт хорошие штуки делает. Но с ними есть два НО, прежде всего их очень сложно купить в Украине, возят только под заказ по полной предоплате, и не понимают что есть что, т.е. могут привезти например только выключатели без исполнительный устройств и округлять глаза, мол что вас не устраивает.
        На это можно было бы и забить, но проблема тут в другом. Кондиционеры от Toshiba умеют управляться пультом не только по ИК каналу, но и по проводному, тогда пульт крепится на стену жестко, не содержит батареек а подключается 3 провода.
        Приточные установки тоже имеют свои панели управления, на них выставляется целевая температура, отображаются показания датчиков, выводятся ошибки и также задаются обороты вентиляторов.
        К сожалению их протоколы закрыты, их нужно будет реверсить предварительно, т.е. и так полно работы, а протягивать это все аж до ардуино с 0 — вообще не подъемно для воскресного проекта. Что-то типа универсального дву направленного протокола обмена с ардуино, желательно с событиями\прерываниями.
        Условно говоря два метода и один ивент. А конструктор принимает айдишник арудино и др параметры связи.
        Можно и не ардуино, но без чего-то такого достаточно простого и гибкого — умные дома не взлетят по моему мнению. Максимум будут как конструкторы а-ля сигнализация, купи набор «юный электрик», собери полу-решение.

        В любом случае спасибо за ответ.


        1. dima117
          25.12.2016 11:45

          Если у вас уже есть готовая железка на основе ардуино, первые две ссылки на примеры останутся такими же, а вместо третьего примера нужно написать плагин для вашей железки. Постучитесь ко мне в skype (dima117a) и я помогу написать его. Это быстро и просто!


    1. lingvo
      24.12.2016 14:35

      Насчет исполняемых модулей смотрите на поддержку MQTT. Для Ардуино есть куча проектов поддержкой данного протокола. Через него вы сможете их привязать.
      А так, конечно, с поддержкой более менее plug'n'play устройств пока здесь скудновато. Кроме Noolite и нет ничего. Надо хотя бы добавить Z-wave, Modbus TCP.


  1. Bluefox
    24.12.2016 02:43
    +1

    А сколько человек пишут систему? А то в начале "я выпустил", а потом "мы писали". Хотя на гите видно, что один человек пишет.


    Я всё равно не разделяю желания писать велосипед.


    1. dima117
      24.12.2016 11:19

      Вы правы, 95% коммитов в гите — мои. Пишу "мы", когда не хочу акцентировать внимание на конкретном человеке.


      Про велосипед — не понял.


      1. danyaShep
        25.12.2016 01:07

        Вам намекают, что написали очередной велосипед, вместо того, чтобы сделать плагин для своего железа к какой-нибудь популярной системе.
        Подумайте, сколько лет вам нужно будет разрабатывать, чтобы хотя бы поддерживать столько железа?
        https://home-assistant.io/components/


        1. dima117
          25.12.2016 11:59

          Я понимаю, на что мне намекают. Просто странно слышать это от человека, который пишет такой же велосипед.


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


          Сравнивая с другими проектами, я вижу, что мое решение во многих случаях более производительно, легче расширяется, более удобно для разработчика, лучше описано в документации или всё это вместе. Кажется многим людям оно подойдет лучше других (особенно, когда начнет работать под linux).


        1. dima117
          25.12.2016 12:15

          Кажется, я не очень четко ответил на вопрос...


          Я пишу велосипед потому, что в известных решениях меня крайне не устраивает качество платформы. Мой велосипед по качеству платформы значительно превосходит их.


  1. Jaromir
    24.12.2016 11:16

    Вот дядьки из Alljoyn/IoTivity правильно делают. Ядро на Си, обертки на C++/Java/etc. Чтобы один и тот же код работал и на Windows, Android, OpenWRT итд

    OpenHAB никогда не понимал. Как должно быть: воткнул устройство в сеть — оно само нашлось и начало работать. Для этого в устройстве должен быть тот же протокол, что и в «шлюзе». Java(или CLR)-машину в умную розетку засунуть конечно можно, но крайне нерационально.

    Или другой сценарий: не хватает одного шлюза: поставил второй. Они друг друга нашли и стали единым целым

    К чему я веду: действительно универсальный протокол «интернета вещей», ИМХО, это прежде всего децентрализованная система, способная автоматически обнаруживать новые элементы и вообще адекватно реагировать на изменение сети. Это маленькое ядро, которое можно воткнуть на самое разнообразное железо. Это протокол, предоставляющий несколько паттернов общения между девайсами (массовое оповещение, бинарный поток данных, публикация/подписка, RPC, итд). Протокол знающий всё о данных, которые он передает (рефлексия API, стандартные и пользовательские профили для устройств, и т д)

    «Шлюзы», которые я вижу последние лет 5 — это просто коробочки, в которые можно воткнуть пару протоколов (и конечно же Philips HUE) + приложение на смартфон… И всё. Ни о какой интеграции с другиги решениями речи не идет. Замкнутая на себе система без души. Следующей ступенью «эволюции», видимо будет шлюз, объединяющий все эти шлюзы


    1. bondarenkod
      24.12.2016 18:53
      +1

      >>Java(или CLR)-машину в умную розетку засунуть конечно можно, но крайне нерационально.
      а зачем ее туда засовывать, если все, что нужно от розетки — работать с одним из протоколов общения с головой. А на чем написана голова — мало кого волнует.


    1. lingvo
      24.12.2016 21:03
      +1

      Есть такой стандарт — называется МЭК 61850. Используется для автоматизации подстанций. Так вот в нем как раз и пытаются совместить все то, что вы описываете. И чтобы само нашлось и работало и различные паттерны общения — там как раз уделяется особенное внимание массовому оповещению(передача сообщений защитной автоматики), бинарным потокам данных (стриминг мгновенных значений напряжений и токов), публикация/подписка на различные сообщения и т.д. Профили устройств тоже широко используются, также как и конфигурационные файлы и даже виртуальные модели оконечных устройств… И все это на основе Ethernet.
      Сказать, что получилось сложно, это ничего не сказать. Сложный стандарт, сложное ПО, которое работает только на высокопроизводительном железе, даже «умные розетки» и те сложные.
      Если начать придумывать что-то такое для Умного дома, то это надо столько времени и сил потратить, что на это дело не хватит ресурсов ни одной коммюнити. Вот и плавает пока каждый в своем пруду.


  1. agamemnen
    25.12.2016 21:44

    Как у вас реализовано взаимодействие с ethernet-шлюзом Noolite? Можно подробнее?
    Не задумывались на развертывании на более компактном железе? Типа Raspberry Pi?


    1. dima117
      26.12.2016 15:24

      Как у вас реализовано взаимодействие с ethernet-шлюзом Noolite?

      Взаимодействие со шлюзом — по HTTP через его API. Код, работающий со шлюзом — здесь.


      Не задумывались на развертывании на более компактном железе? Типа Raspberry Pi?

      Задумывались. Сейчас пишем новую версию на .NET Core. Она должна работать везде, где работает .NET Core. Насколько я знаю, в ближайшем будущем он будет работать и на Raspberry Pi тоже.


  1. ElectricFromUfa
    26.12.2016 09:25

    Облом, конечно, что пока не запустить на raspberry. Будем ждать


    1. agamemnen
      29.12.2016 23:10

      +1) Так же ждемсс… сейчас raspberry 3 как раз обкатываю.


  1. shurik303
    26.12.2016 15:22

    Вопрос для людей «в теме»: кто-то уже изучал Google things? Добыл я себе умную колонку home, уже могу управлять музыкой, хромкастами и отоплением (нест) голосом, хочу ещё лампочками щёлкать, есть идея сделать всё освещение на импульсных реле (ремонт надвигается) и добавить малинку с IOT операционкой от Гугла. Проблема в том, что опыт программирования это только примитивные си программки для стм32.


  1. Sellec
    29.12.2016 16:05

    Есть плагин для 1-wire или надо опять браться за студию?)


    1. dima117
      29.12.2016 16:43

      Нужно браться за студию. Готов помочь в этом!


      1. Sellec
        30.12.2016 09:00

        Мне особо тестировать не на чем, есть только свисток DS9490R и к нему датчики DS18B20. Попробую на праздниках поковыряться, сделать плагин. Если сейчас сделать под нынешнюю платформу, то потом сильная переделка под .Net Core потребуется?


        1. dima117
          30.12.2016 11:45

          сильная переделка под .Net Core потребуется?

          Код на C# при переходе на .NET Core почти всегда нормально работает без изменений, но, если вы используете сторонние библиотеки, они могут не работать.


          Кстати, мы пробовали написать 1wire плагин. В результате решили его не включать в список стандартных, т.к. он требовал дополнительной установки сторонних библиотек. Но вы можете использовать его как пример кода: https://github.com/dima117/thinking-home/tree/1e198d3cff1abc0643020db8972f9cd6fdd91a66/ThinkingHome.Plugins.OneWire