Pull to refresh

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

Reading time 6 min
Views 37K

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


image


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



Управление освещением, климатом,
мультимедиа и т.д., посредством
устройств Z-Wave и Modbus,
возможность расширять список
совместимых протоколов написанием
плагинов
.




GPS-трекер и триггеры геолокации.

Создание алгоритмов работы
сценария с циклами и условиями;
использование одного сценария в
другом
; возможность объединить
несколько серверов Lazurite
посредством удаленных сценариев.


СЦЕНАРИИ


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


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


Примеры переключателей сценариев.


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


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


Окно выбора типа создаваемого сценария.


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


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


Конструктор одиночного действия на примере создания переключателя ModbusRTU.


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


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


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


Пока влажность в комнате меньше или равна 40%, то регулировать влажность.


Сложный сценарий на примере работы с Z-Wave устройствами.


Сложное условие с группами и сравнениями числовых значений.


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


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


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


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



ТРИГГЕРЫ


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


Триггер на срабатывание датчика движения.


ДЕЙСТВИЯ


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


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


Окно выбора действия в конструкторе сценария.


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


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


Окно настройки безопасности сценария.


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


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

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


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


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


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


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


Z-WAVE


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


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


На изображении выбран узел, мультисенсор — ZW100, затем выбран его пользовательский параметр, с помощью которого можно измерить температуру в комнате.


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


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


СТАТИСТИКА


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


Отображение статистики в виде графиков.


Отображение статистики в виде круговой диаграммы.


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


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


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


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


Пример созданных мест (дом и работа) и маршрут пользователя между ними в выбранную дату.


Позицию пользователя можно просматривать через приложение Lazurite на смартфоне.


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


Перемещения пользователя за большой промежуток времени.


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


РАЗНОЕ


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


Окно отображения входящих сообщений.


Отправка сообщения другому пользователю.


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


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


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


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

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


Tags:
Hubs:
+18
Comments 35
Comments Comments 35

Articles