- PVSM.RU - https://www.pvsm.ru -
Привет! Сегодня я наконец-то могу поделиться с вами результатами своей работы на протяжении последних двух лет! Вчера вечером я выпустил новую версию 3.0 системы управления умным домом ThinkingHome [1].
ThinkingHome [1] — это программа (.NET Windows service), с помощью которой вы можете организовать на своем компьютере управляющий центр умного дома. Это центр, который дружит между собой "железки" с разными интерфейсами от разных производителей, позволяет автоматизировать работу с ними (писать скрипты на JavaScript) и управлять всем этим хозяйством через веб-интерфейс.
Под катом более подробное описание системы, список изменений в новой версии и небольшое объявление для тех, кто ненавидит Windows :)
ThinkingHome — не просто программа, управляющая устройствами! Это платформа, на основе которой вы можете реализовать (в виде плагинов) любой функционал, доступный для компьютера, при этом не заботясь о решении базовых задач, вроде логирования или сохранения данных между запусками системы.
Плагин сценариев [13] добавляет в систему сценарии — небольшие программы на языке JavaScript, которые пишутся через веб-интерфейс. С их помощью можно реализовать любую логику по автоматическому управлению домашними устройствами (для этого в сценариях доступен API плагинов). Например, вы можете написать сценарий, который автоматически выключает теплый пол и свет во всем доме, если днем больше часа не срабатывал ни один датчик движения.
Редактор сценариев выглядит примерно так:
Плагин MQTT [14] — тут всё просто: вы можете получать данные от других устройств и отправлять им команды по протоколу MQTT. Например, этот протокол поддерживает контроллер Wiren Board [15].
Плагин nooLite [16] позволяет управлять электроприборами с помощью системы nooLite [17]. Можно управлять освещением, вентиляцией, теплым полом и любыми другими электроприборами. Даже чайником :)
Плагин микроклимата собирает и сохраняет в БД информацию о температуре и влажности с датчиков nooLite [18]. Данные отображаются в виде графиков в веб-интерфейсе.
Выглядит примерно так:
Плагин будильник/таймер позволяет включить в заданное время звуковой сигнал или выполнить заданный сценарий. Например, можно настроить, чтобы в 8 утра жалюзи во всем доме сами открывались, а в 22 часа — сами закрывались.
Плагин прогноза погоды — отображает в веб-интерфейсе прогноз погоды для заданных городов. Информаця о погоде загружается из OpenWeatherMap API [19]. Результат выглядит примерно так:
В новой версии мы сделали большое количество новых доработок. Кроме того, были полностью переписаны многие части системы, чтобы увеличить скорость работы и сделать более удобный API.
Чтобы постороннему человеку хоть как-то возможно легче было разобраться со всеми этими штуками, мы написали документацию. Мы очень старались описать всё подробно и понятно! В результате получилось почти 50 страниц текста (если распечатать на А4) и больше сотни примеров кода (мы писали это почти 3 месяца).
Результат выложен на сайте http://system.thinking-home.ru [1].
Исторически так сложилось, что проект был написан на C#. В принципе, это неплохой вариант, учитывая количество готовых библиотек и очень высокое качество средств разработки. Однако, у этого варианта есть существенный (для многих — критичный) недостаток — приложению нужен .NET Framework, который работает только под Windows.
Так было до недавнего времени, но сейчас ситуация изменилась. Летом зарелизился кросс-платформенный .NET Core, а в ноябре вышла его версия 1.1. Мы рады сообщить, что уже начали портировать ThinkingHome на .NET Core.
Разработка ведется в отдельном репозитории [22]. Весь код пишется на маке и тестируется в macOS и linux. Сейчас уже портировано ядро системы и часть базовых плагинов (таймеры, работа с БД, сценарии). При портировании значительная часть кода полностью переписывается. Определенно новая версия будет значительно лучше старой в плане архитектуры, API и производительности.
Если вы вдруг хотите поучаствовать, мы будем рады любой помощи! (А если не хотите участвовать, всё равно зайдите на github [22] и кликните по звездочке :)
Очень много хотел рассказать, не уверен, что всё получилось понятно. Буду рад ответить на вопросы в комментариях.
Попробуйте установить приложение [23] и написать собственные плагины [24]. Создайте issues [25], если найдете ошибки и присылайте пулл реквесты [26]. Добавляйтесь в нашу группу вконтакте [27], чтобы быть в курсе новостей проекта.
Мне будет очень приятно, если вам понравится!
Автор: dima117
Источник [28]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/224468
Ссылки в тексте:
[1] ThinkingHome: http://system.thinking-home.ru
[2] Система плагинов: http://system.thinking-home.ru/plugins.md#Создание-плагинов
[3] API логирования: http://system.thinking-home.ru/plugins.md#Логирование
[4] NLog: http://nlog-project.org
[5] API хранения данных в БД: http://system.thinking-home.ru/plugins.md#Доступ-к-БД
[6] NHibernate: http://nhibernate.info
[7] ecm7migrator: https://github.com/dima117/ecm7migrator
[8] Инфраструктура HTTP API: http://system.thinking-home.ru/plugins.md#Обработка-HTTP-запросов
[9] Инфраструктура веб-интерфейса: http://system.thinking-home.ru/web-ui.md
[10] Клиент-серверная шина сообщений: http://system.thinking-home.ru/plugins.md#Клиент-серверная-шина-сообщений
[11] SignalR: https://www.asp.net/signalr
[12] API локализации: http://system.thinking-home.ru/plugins.md#Локализация-интерфейса
[13] Плагин сценариев: http://system.thinking-home.ru/scripts.md
[14] Плагин MQTT: http://system.thinking-home.ru/plugins.md#Взаимодействие-с-устройствами-по-протоколу-MQTT
[15] Wiren Board: http://contactless.ru/wiren-board-5/
[16] Плагин nooLite: http://system.thinking-home.ru/plugins.md#Управление-электроприборами
[17] системы nooLite: http://www.noo.com.by/sistema-noolite.html
[18] датчиков nooLite: http://www.noo.com.by/sensors.html
[19] OpenWeatherMap API: https://openweathermap.org/api
[20] раньше было так: https://geektimes.ru/post/240170/
[21] новый интерфейс стартовой страницы: http://system.thinking-home.ru/plugins.md#Стартовая-страница
[22] отдельном репозитории: https://github.com/thinking-home/system
[23] установить приложение: http://system.thinking-home.ru/getting-started.md
[24] написать собственные плагины: http://system.thinking-home.ru/plugins.md
[25] issues: https://github.com/dima117/thinking-home/issues
[26] пулл реквесты: https://github.com/dima117/thinking-home
[27] группу вконтакте: https://vk.com/thinking_home
[28] Источник: https://geektimes.ru/post/283958/
Нажмите здесь для печати.