- PVSM.RU - https://www.pvsm.ru -

Программное обеспечение для умного дома #2

Всем добрый день! Продолжая идею моего старого поста [1], я разработал программу, которую можно использовать в качестве системы для управления умным домом.

image

Чтобы сразу заинтересовать читателя, продемонстрирую некоторую часть сценариев использования ПО:

Программное обеспечение для умного дома #2 - 2 Управление освещением, климатом,
мультимедиа и т.д., посредством
устройств Z-Wave [2] и Modbus [3],
возможность расширять список
совместимых протоколов написанием
плагинов
.
Программное обеспечение для умного дома #2 - 3
Программное обеспечение для умного дома #2 - 4
Программное обеспечение для умного дома #2 - 5 GPS-трекер и триггеры геолокации. [4]
Программное обеспечение для умного дома #2 - 6 Создание алгоритмов работы
сценария с циклами и условиями [5];
использование одного сценария в
другом
; возможность объединить
несколько серверов Lazurite
посредством удаленных сценариев [6].

СЦЕНАРИИ

Lazurite позволяет создавать триггеры [7] и сложные сценарии [8] с условиями [9] и циклами [10], т.е. пользователь может «запрограммировать» программу с помощью встроенного конструктора [5] на любые свои нужды.

Любой сценарий имеет свой переключатель в пользовательском интерфейсе — "плитку". В зависимости от типа данных сценария [11] переключатель будет выглядеть по-разному.

Примеры переключателей сценариев.
Программное обеспечение для умного дома #2 - 7 Программное обеспечение для умного дома #2 - 8 Программное обеспечение для умного дома #2 - 9 Программное обеспечение для умного дома #2 - 10 Программное обеспечение для умного дома #2 - 11

>> Подробнее о типах данных и переключателях. [8]

Помимо этого, в Lazurite существует три разновидности сценариев: одиночное действие, сложный сценарий и удаленный сценарий.

Окно выбора типа создаваемого сценария.
Программное обеспечение для умного дома #2 - 12 [12]

Одиночное действие

Одиночные действия — это сценарии, не требующие сложной логики, такие как включение света или изменение уровня звука с помощью "плитки" в меню переключателей. В таком сценарии не получится создать цикл или условие, в нем можно лишь привязать отдельное действие из плагина [13] (о них ниже) к переключателю.

Конструктор одиночного действия на примере создания переключателя ModbusRTU [14].
Программное обеспечение для умного дома #2 - 13 [15]

Сложный сценарий

Сложный сценарий — это сценарии со сложной логикой, в котором есть циклы и условия.

>> Подробно о создании сложного сценария. [5]

Пока влажность в комнате меньше или равна 40%, то регулировать влажность.
Программное обеспечение для умного дома #2 - 14 [16]

Сложный сценарий на примере работы с Z-Wave устройствами [17].
Программное обеспечение для умного дома #2 - 15 [18]

Сложное условие с группами и сравнениями числовых значений.
Программное обеспечение для умного дома #2 - 16 [19]

Удаленный сценарий

Lazurite имеет встроенный сервер [20], на котором крутится WCF-сервис. Именно это позволяет клиентским приложениям получать информацию о сценариях и выполнять некоторые действия. Но, помимо этого, к серверу Lazurite может подключиться другой сервер Lazurite и использовать сценарии удаленного сервера. Для того, чтобы использовать этот функционал, необходимо создать удаленный сценарий.

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

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

Программное обеспечение для умного дома #2 - 17 [21]

ТРИГГЕРЫ

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

Триггер на срабатывание датчика движения.
Программное обеспечение для умного дома #2 - 18 [22]

ДЕЙСТВИЯ

Любая строка, добавляемая в конструкторе сценария, является "действием". Каждый плагин, устанавливаемый в Lazurite, добавляет в программу некоторые новые возможности — действия. Любая работа с Z-Wave, Modbus, геолокацией и т.д. производится через этот функционал. Соответственно, любое действие, как и сценарий, имеет свой тип данных [11].

>> Список всех действий в Lazurite. [13]

Окно выбора действия в конструкторе сценария.
Программное обеспечение для умного дома #2 - 19 [23]

БЕЗОПАСНОСТЬ

В Lazurite можно настроить доступ к просмотру и изменению значения сценария. Это может быть нужно, когда мы создаем пользователя [24] в системе для нашего гостя или когда просто хотим скрыть сценарий, который выполняет вспомогательные функции и не должен быть отображен пользователям.

Окно настройки безопасности сценария.
Программное обеспечение для умного дома #2 - 20 [25]

Для настройки безопасности доступны следующие пункты:

  • "Запретить для любого использования";
  • "Запретить для всех групп [26], кроме..." — запрет на использование сценария пользователям, не состоящим в выбранных группах;
  • "Запретить для всех пользователей, кроме..." — запрет на использование сценария для всех пользователей, кроме выбранных;
  • "Запретить для групп" — запрет на выполнение для выбранных групп пользователей;
  • "Запретить для запуска из сети" — сценарии с этим ограничением не могут быть отображены в клиентских приложениях и не могут быть использованы как "удаленный сценарий";
  • "Запретить для меню быстрого запуска" — сценарий не будет отображаться в меню быстрого запуска;
  • "Запретить для пользователей" — запрет на выполнение для выбранных пользователей;
  • "Запретить использовать из другого сценария/триггера" — сценарий не может быть выполнен [27] в другом сценарии или триггере.

По умолчанию любой сценарий запрещен для запуска из сети и для меню быстрого запуска.

ПОЛЬЗОВАТЕЛИ И ГРУППЫ

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

Для удобства настройки безопасности сценария [28] пользователей можно объединять в группы, например, можно создать группу "Гости" и запретить этой группе выполнение некоторых сценариев.

>> Подробнее о пользователях [24] и группах [26].

Z-WAVE

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

В Lazurite модуль ZWave позволяет производить все стандартные операции с устройствами, такие как удаление, добавление устройств, сброс контроллера. Также можно использовать несколько ZWave контроллеров, конечный пользователь не увидит разницы. К примеру, можно осуществить снятие показаний температуры с датчика, который соединён с контроллером «А», и запустить кондиционер с помощью контроллера «Б». Тут нет ни каких ограничений, любое действие и проверка осуществляются стандартными способами и добавляются в конструкторе сценариев [5].

На изображении выбран узел, мультисенсор — ZW100, затем выбран его пользовательский параметр, с помощью которого можно измерить температуру в комнате.
Программное обеспечение для умного дома #2 - 21 [29]

После того, как будет создан сценарий, использующий этот узел, появится плитка с информацией о температуре.
Программное обеспечение для умного дома #2 - 22 [30]

>> Подробнее о Z-Wave в Lazurite. [31]

СТАТИСТИКА

Lazurite имеет функционал, который позволяет вести историю значений разных сценариев (например температура в гостиной, влажность в комнате, уровень ультрафиолета, обнаружение движений). Пользователь может выбрать сценарии, по которым необходимо вести статистику, затем посмотреть на графиках их динамику за определённый промежуток времени.

Отображение статистики в виде графиков.
Программное обеспечение для умного дома #2 - 23 [32]

Отображение статистики в виде круговой диаграммы.
Программное обеспечение для умного дома #2 - 24 [33]

>> Подробнее о статистике. [34]

ГЕОЛОКАЦИЯ ПОЛЬЗОВАТЕЛЯ

В Lazurite присутствует функционал GPS-трекера. Любое клиентское приложение отправляет информацию о геоданных на сервер Lazurite, где эти данные можно обработать, сохранить и отобразить. Действия, представленные в плагине UserGeolocationPlugin [4], созданы для работы с геолокацией пользователей и позволяют вычислять такие значения, как расстояние пользователя до места, нахождение пользователя в определенном месте и т.д.

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

Пример созданных мест (дом и работа) и маршрут пользователя между ними в выбранную дату.
Программное обеспечение для умного дома #2 - 25 [35]

Позицию пользователя можно просматривать через приложение Lazurite на смартфоне.
Программное обеспечение для умного дома #2 - 26 [36]

Помимо этого, можно вести историю перемещений, если добавить соответствующий сценарий в статистику [34].

Перемещения пользователя за большой промежуток времени.
Программное обеспечение для умного дома #2 - 27 [37]

>> Подробнее о плагине. [4]
>> Подробнее об истории перемещений. [38]

РАЗНОЕ

В программе присутствует возможность создавать сценарии для обмена сообщениями между пользователями [39] и получать нотификации от системы о разных событиях.

Окно отображения входящих сообщений.
Программное обеспечение для умного дома #2 - 28 [40]

Отправка сообщения другому пользователю.
Программное обеспечение для умного дома #2 - 29 [41]

Помимо этого, присутствуют разные другие функции, например Wake-on-Lan [42], эмуляция мультимедиа клавиш на Windows [43], управление звуком на Windows [44], работа с процессами Windows [45], управление устройствами Modbus [46] и т.д.

О том, как создавать плагины, можно узнать здесь [47].

Дальнейшее развитие системы на данный момент видится следующим образом:

  • модернизация архитектуры программы будет проведена таким образом, чтобы можно было использовать готовые движки или сервисы распознавания речи как плагины;
  • дальнейшая декомпозиция и модернизация функционала плагинов и сценариев в будущем позволит создавать сценарии с планшета или смартфона;
  • планируется создать модуль видеонаблюдения, в котором был бы функционал записи видео, трансляции видеопотока на мобильные устройства, распознавание движения и т.д.

>> WIKI проекта [48]
>> Веб-сайт проекта [49]
>> На GOOGLE PLAY [50]
>> Последняя версия [51]

Автор: noant

Источник [52]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-2/294118

Ссылки в тексте:

[1] старого поста: https://habr.com/post/309070/

[2] Z-Wave: https://github.com/wiki/noant/Lazurite/ZWave

[3] Modbus: https://github.com/wiki/noant/Lazurite/Modbus

[4] GPS-трекер и триггеры геолокации.: https://github.com/noant/Lazurite/wiki/%D0%93%D0%B5%D0%BE%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F

[5] сценария с циклами и условиями: https://github.com/noant/Lazurite/wiki/%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80-%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D1%85-%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2

[6] удаленных сценариев: https://github.com/noant/Lazurite/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8#type2_remote

[7] триггеры: https://github.com/noant/Lazurite/wiki/%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D1%8B

[8] сценарии: https://github.com/noant/Lazurite/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8

[9] условиями: https://github.com/noant/Lazurite/wiki/%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80-%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D1%85-%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2#action1_if

[10] циклами: https://github.com/noant/Lazurite/wiki/%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80-%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D1%85-%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2#action1_while

[11] типа данных сценария: https://github.com/noant/Lazurite/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8#data_types

[12] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/scenario_type_selection2.jpg

[13] плагина: https://github.com/noant/Lazurite/wiki/%D0%92%D1%81%D0%B5-%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F

[14] ModbusRTU: https://ru.wikipedia.org/wiki/Modbus

[15] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/type2_single.jpg

[16] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/action1_while.jpg

[17] Z-Wave устройствами: https://ru.wikipedia.org/wiki/Z-Wave

[18] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/action1_action_from_plugin_selected_button2.jpg

[19] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/action1_if4.jpg

[20] встроенный сервер: https://github.com/noant/Lazurite/wiki/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0

[21] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/type2_remote.jpg

[22] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/trigger3.jpg

[23] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/all_actions_small.jpg

[24] создаем пользователя: https://github.com/noant/Lazurite/wiki/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8

[25] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/scenario_security.jpg

[26] групп: https://github.com/noant/Lazurite/wiki/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D1%8B

[27] выполнен: https://github.com/noant/Lazurite/wiki/%D0%92%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F#set_existing

[28] безопасности сценария: https://github.com/noant/Lazurite/wiki/%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D1%8F

[29] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/action2_zwave2_small.jpg

[30] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/switch_temperature.jpg

[31] >> Подробнее о Z-Wave в Lazurite.: https://github.com/noant/Lazurite/wiki/ZWave

[32] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/stat1_small.jpg

[33] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/stat2_small.jpg

[34] >> Подробнее о статистике.: https://github.com/noant/Lazurite/wiki/%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0

[35] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/geolocation_small.jpg

[36] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/t_geo_android.jpg

[37] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/stat_geo_small.jpg

[38] >> Подробнее об истории перемещений.: https://github.com/noant/Lazurite/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B9

[39] обмена сообщениями между пользователями: https://github.com/noant/Lazurite/wiki/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9

[40] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/action2_message_android.jpg

[41] Image: https://raw.githubusercontent.com/wiki/noant/Lazurite/pics/t_info_android.jpg

[42] Wake-on-Lan: https://github.com/noant/Lazurite/wiki/WakeOnLan

[43] эмуляция мультимедиа клавиш на Windows: https://github.com/noant/Lazurite/wiki/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BC%D0%B5%D0%B4%D0%B8%D0%B0-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8

[44] управление звуком на Windows: https://github.com/noant/Lazurite/wiki/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81%D0%BE-%D0%B7%D0%B2%D1%83%D0%BA%D0%BE%D0%BC

[45] работа с процессами Windows: https://github.com/noant/Lazurite/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%BC

[46] управление устройствами Modbus: https://github.com/noant/Lazurite/wiki/Modbus

[47] здесь: https://github.com/noant/Lazurite/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2

[48] >> WIKI проекта: https://github.com/noant/Lazurite/wiki/Home

[49] >> Веб-сайт проекта: https://noant.github.io/Lazurite/

[50] >> На GOOGLE PLAY: https://play.google.com/store/apps/details?id=lazurite.lazurite

[51] >> Последняя версия: https://github.com/noant/Lazurite/releases

[52] Источник: https://habr.com/post/416977/?utm_source=habrahabr&utm_medium=rss&utm_campaign=416977