Мій web-інтерфейс управління розумною квартирою

    Привіт!
 
Останні 1.5 року я працюю над дуже цікавим проектом — це система управління будинком по сценаріями. Вона дозволяє навішувати довільну логіку (сценарії) на різні події в будинку (спрацьовування датчиків, натискання кнопок, події від зовнішніх сервісів, наприклад, получнеіе email або повідомлення в twitter). Система має модульну архітектуру, весь функціонал знаходиться в плагінах. Якщо потрібно додати новий тип події або нові команди «домашнього API», потрібно просто додати плагін для цього.
 
У лютому у нас був перший реліз . Перша версія включала фреймворк для домашньої автоматизації: систему плагінів і інфраструктуру для них (щоб плагіни могли описувати свій API і події, а також використовувати API і підписуватися на події один одного). Зараз наближається реліз другої версії, основна фіча якого — новий веб-інтерфейс.
 
 
 
UI тепер — модульне односторінкове додаток . Плагіни можуть описувати свій UI у вигляді html / js / css файлів, розташованих в ресурсах DLL. Клієнтська частина UI заснована на backbone.js і marionette.js , модулі завантажуються через require.js . В цілому вийшло досить зручно для авторів плагінів — навіть не маючи глибоких знань java script, можна, дивлячись в приклади, описати повноцінний UI, який буде автоматично підключений в інтерфейс управління будинком.
 
 
Інтерфейс управління будинком складається з «розділів», кожен плагін може містити кілька розділів (а може містити тільки один або може взагалі не мати інтерфейсу). Розділи поділені на 2 групи: системні (різні налаштування, наприклад, розділ домашніх сценаріїв) і призначені для користувача (розділи, з якими користувачі працюють в повсякденному житті, наприклад, «прогноз погоди» і «будильники»).
 
Також є спеціальна сторінка — «робочий стіл» (він же «стартова сторінка»). Там знаходяться «елементи стартової сторінки» — невеликі панелі, які відображають корисну інформацію, а при кліці на них відкривається якась сторінка або виконується будь-яку дію.
 
 стартова сторінка
 image
 
 розділ з будильниками (в потрібний час програє музику або запускає виконання сценарію)
 image
 
 розділ з прогнозом погоди (завантажується з інтернету)
 image
 
 редактор сценаріїв (на скріншоті сценарій, який фотографує відвідувачів, що натиснули кнопку дверного дзвінка)
 image
 
 сторіночка підписки на події: перший список, що випадає — події в системі (вони описані в плагінах), другий список — сценарії
 image
 
Інтерфейс адаптується під маленькі екрани мобільних пристроїв.
 
 стартова сторінка на маленькому екрані
 image
 
 сторіночка з погодою на маленькому екрані
 image
 
Зараз, як я вже писав, система швидко наближається до релізу 2-й версії, вихідний код лежить на github . Поки ще є можливість щось поміняти. Дуже хотілося б отримати конструктивну критику та пропозиції щодо покращення (а якщо хтось надішле pull request, я буду просто щасливий).
 
Якщо хтось захоче спробувати наживо, як все працює, напишіть мені приватне повідомлення — зберу для вас свіжий дистрибутив.
 
PS.
До речі, я пробував працювати над цим проектом кожен день і це дало дивовижні результати. Зараз йде восьмий тиждень роботи в такому режимі (Longest streak 49 days ). За цей час проект просунувся вперед більше, ніж за попередні пів року. Я дуже задоволений результатом і планую продовжувати працювати в такому режимі, скільки це буде можливо.
    
Джерело: Хабрахабр

0 коментарів

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