Програмне забезпечення для розумного будинку

Всім добрий день. В якості хобі написав програму, яку можна використовувати як частина системи «розумний дім». Щоб зацікавити читача, продемонструю деяку малу частину сценаріїв використання З:

image

image
Увімкнення та вимкнення ZWave лампочки через мобільний додаток
image
При появі пристрою в мережі (по приходу користувача додому) відбувається
включення ZWave лампочки, релейного модуля Modbus RTU, запуск комп'ютера через WakeOnLan і вмикання ТВ
image
Запуск браузера, перехід на яндекс.радіо,
перегортання треків (емуляція гарячих клавіш)
Коротко:

1. Основна частина — сервер, який крутиться на ОС Windows, написаний на C#;
2. Клієнт на ОС Android, написаний на Java;
3. Плануються клієнти на UWP і IOS, web-клієнт.

Деякі особливості:

1. Конструктор сценаріїв. Створення складних сценаріїв з циклами та умовами;
2. Робота з пристроями ZWave і Modbus;
3. Вкладеність сценаріїв. Можна один сценарій використовувати в іншому в якості процедури;
4. Запуск віддаленого сценарію. У сценарії поточного сервера можна запускати сценарій віддаленого;
5. Можливість додавати в систему свою функціональність за допомогою створення модулів;
6. Запуск сценаріїв за допомогою смартфона.

Конструктор сценаріїв
Програма дозволяє створювати як складний сценарій, так і одиночне дію.

Одиночне дію — це сценарій, який містить тільки одну дію. У ньому немає можливості створювати цикли та умови, а можна лише «замапить» певну дію на кнопку UI клієнта.

В якості прикладу наведу свій спосіб їх використання: створив категорію «Розетки», в ній зібрав всі лампи, побутовий вентилятор, світильники, телевізор і комп'ютер. Тепер, щоб включити одне з цих пристроїв, слід відкрити клієнт на андроїд, зайти в категорію «Розетки» і вибрати відповідний пункт меню.

Звичайно, поодинокі дії використовувати незручно, так як різні пристрої зручно запускати при якомусь умови або хоча б не по одному. Саме для цього потрібен «складний сценарій», про що далі.

Конструктор складного сценарію дозволяє створювати сценарії з циклами та умовами. Має два режими: перегляд і редагування.
Приклад сценарію в режимі перегляду
Приклад сценарію в режимі редагування
image
image
ЯКЩО й ІНАКШЕ в конструкторі. У даних конструкціях можна створювати ланцюжки умов з логічними операторами НЕ, АБО, В. Конструктор дозволяє створювати групу умов і використовувати оператори безпосередньо з групою. Якщо умова залишається порожнім, то воно автоматом обчислюється як брехня.

Є деяка кількість вбудованих перевірок (такі як перевірка на дату, час і т. д.), а також деяка кількість в якості модулів.

Цикл ПОКИ в конструкторі. Цикл складається з умови і тіла. Умова створюється аналогічно тому, як він створюється в конструкції IF (групи умов, що оператори НЕ, АБО, І).
Оператор ЯКЩО і можливі умови
Оператор ПОКИ
image
image
image
Тіла ЯКЩО, ІНАКШЕ і ПОКИ треба чимось заповнювати. Власне, це вміст і є найважливіше в сценарії.
Основне вікно конструктора сценаріїв
image
Також можна настроїти наступні параметри сценаріїв:

— Запуск ззовні (вкл/викл), дозволяє заборонити або дозволити запуск сценарію з іншої машини або з клієнта;
— Автоматичний запуск сценарію при старті системи;
— Вибір категорії сценарію, дозволяє відображати в UI клієнта пункт меню для запуску сценарію в певній категорії.

Робота з пристроями ZWave і Modbus
На даний момент система підтримує пристрої ZWave (на основі openzwave) і Modbus RTU (на основі nmodbus).

ZWave — це безпровідний протокол зв'язку, що використовується в домашньої автоматизації. Для реалізації протоколу використовуються мініатюрні малопотужні радіочастотні модулі. Зараз на ринку ZWave представлений досить великий перелік пристроїв, таких як ZWave лампочки, розетки, релейні модулі, перемикачі, замки, датчики температури (вологості, руху, витоку), терморегулятори, пристрої управління кондиціонером і т. д. Також поширені мультисенсоры — пристрої, що поєднують кілька датчиків (наприклад, датчик освітленості, присутності, температури, дверної датчик тощо), що досить привабливо з точки зору фінансових витрат і розташування в приміщенні.

У моїй програмі модуль ZWave дозволяє виконувати всі стандартні операції з пристроями, такі як видалення, додавання пристроїв, скидання контролера. Також можна використовувати кілька ZWave контролерів, кінцевий користувач не побачить різниці. Наприклад, можна здійснити зняття показань температури з датчика, який з'єднаний з контролером «А», і запустити кондиціонер з допомогою контролера «Б». Тут немає ніяких обмежень, будь-яка дія і перевірка здійснюються стандартними способами і додаються в конструкторі сценаріїв.
image
Ринок ZWave пристроїв досить широкий. Є безліч виконавчих пристроїв, таких як релейні модулі, лампочки, пристрої для роботи з кондиціонером, терморегулятори, регулятори теплої підлоги, розетки, вимикачі. Так само існує безліч датчиків: датчик відкриття дверей, температури, датчик протечки, датчик присутності і т. д. В якості контролера ZWave можна використовувати USB stick.
image
Основне вікно ZWave модуля
image
Вікно вибору контролера і операцій з ним
image
Вибір вузла (датчики, перемикачі і т. д.)
image
Вибір параметра вузла (включений/виключений, різні числові параметри, такі як температура, вологість і т. д.)
Modbus — це провідний протокол, який застосовується для зв'язку між електронними пристроями, які його підтримують. У контексті нашої програми може бути корисний для роботи з релейними модулями, для чого я його і використовую у себе вдома.
image
Релейний модуль Modbus. З'єднується з контролером через COM-порт
image
Основне вікно Modbus RTU модуля
Вкладеність сценаріїв
Вкладеність сценаріїв використовується для декомпозиції сценаріїв розумного будинку. Часто бувають такі ситуації, коли одна дія бере участь у багатьох сценаріях (наприклад, відключення всіх побутових пристроїв може відбуватися по натисненню на кнопку меню в програмі, за сценарієм виходу всіх wi-fi пристроїв з мережі, просто по таймеру), і тому кожен раз створювати (або правити) однаковий алгоритм у кожному із сценаріїв не представляється зручним. Для цього існує таке вбудоване дію, яке дозволяє запускати вже створений сценарій в поточному. Також це може бути зручно, коли часто додаються нові побутові пристрої (або інші часті зміни в алгоритмі роботи «розумного будинку»), для зміни роботи всіх сценаріїв достатньо змінити лише один сценарій, який використовується в них.
Дія «Існуючий сценарій» у списку
Вибір існуючого сценарію
image
image
Запуск віддалених сценаріїв
За допомогою запуску віддалених сценаріїв можна запускати сценарій одного сервера в сценарії іншого. Як приклад хочу навести мій варіант використання цього функціоналу: створив сценарій (на домашньому сервері) під назвою «світло+мультимедіа», який включає світло в приміщенні, запускає мій десктоп (використовуючи WakeOnLan), включає тб, до якого підключений десктоп і чекає поки на ньому (десктопі) запуститься примірник нашої програми, потім запускає на ній сценарії «включити музику» і «звук на 20 одиниць» з допомогою запуску віддалених сценаріїв.
«Запуск віддаленого сценарію» в списку
Вибір сервера і його сценарію
image
image
Написання власних модулів
Крім того, користувач може створювати складні сценарії штатними засобами, програма дозволяє «розширювати» її користувацькими модулями на C#. Всі елементи дій та перевірок в сценаріях (такі як «Перевірка за датою», «Показати повідомлення», «Дія Modbus», «Дія ZWave» і т. п.) це класи, успадковані від ICustomAction і ICustomChecker. Дотримуючись певних правил, будь-який користувач може створити свій модуль, який може бути як дуже простим (наприклад, озвучування поточної температури повітря за вікном), так і складним, за яким може критися цілий фреймворк. Досить успадковуватися від інтерфейсів ICustomAction або ICustomChecker, розставити кілька атрибутів, скомпілювати DLL і додати в програму через вкладку «МОДУЛІ» (повна інструкція створення модулів).
Вкладка «МОДУЛІ»
image
Запуск сценаріїв за допомогою смартфона
*поки тільки Android OS

Сценарії на головному екрані відображаються і в категоріях. Категорія є віртуальною «текою». При запуску сценарію оновлюється статус відповідної кнопки.
Екран налаштувань з'єднання
Екран з запуском сценаріїв
image
image
Крім цього, є можливість запускати сценарії з меню швидкого запуску на PC.
Меню швидкого запуску
image
Надалі планується клієнт для UWP, IOS, web, а так само голосовий модуль для управління пристроями (плани на найближче майбутнє) і створення сценаріїв за допомогою голосу (стратегічні плани).

Відео наостанок:



» Сторінка програми
» Посилання для скачування
» Інструкція для користування
» Інструкція для створення власних модулів

P. S.: Якщо знайшли помилку в програмі, то будь ласка, перешліть її на пошту.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.