Розумний будинок зі старого смартфона або домашній автоматизації антипатерни. EasyHome - управління розумним будинком з iOS, Android, Windows Управління розумним будинком з андроїда

Нові статті

● 9.1. IoT Manager - управління Розумним будинком через мобільний додаток

IoT Manager - це мобільний додаток для телефонів та планшетів, що поєднує в собі табло для відображення даних з датчиків та пульт для управління виконавчими пристроями. Існують версії для Android та iOS, які можна завантажити у GooglePlay та AppStore www.iotmanager.ru. Але перш, ніж завантажувати програму, визначимося з брокером. Як брокерів вибираємо сервіс CloudMQTT.com (https://www.cloudmqtt.com/), в якому можна створити безкоштовний обліковий запис (за посиланням Control Panel). Для реєстрації необхідно ввести адресу електронної пошти(як логін) та пароль (див. рис. 9.2).

Мал. 9.2. Реєстрація у сервісі CloudMQTT.com.

Відразу потрапляємо в панель управління та створюємо брокер (натискання на кнопку +Create). Вводимо назву, вибираємо датацентр (Європа чи США), тарифний план- Безкоштовний Cute Cat і зберігаємо (рис. 9.3). Можна створити кілька брокерів.

Мал. 9.3. Реєстрація брокера у сервісі CloudMQTT.com.

Тепер натискаємо кнопку Details (див. рис. 9.4).

Мал. 9.4. Перехід до параметрів вибраного брокера.

Потрапляємо до налаштувань (рис. 9.5). Нам потрібні такі:

Ім'я хоста m13.cloudmqtt.com;
. порт 18274 (для скетчу Arduino IDE);
. WebSockets порт 38274 (для мобільного додатка).

Тут знаходиться менеджер користувачів, де можна створити користувачів для доступу до даних брокера і призначити їм права (Read, Write). У полі Topic вводимо # (до всіх топиків) (див. рис. 9.6).

Мал. 9.5. Налаштування вибраного брокера.

Мал. 9.6. Створення користувачів для доступу до брокера.

Тепер можна завантажити та встановити мобільний додаток IoTManager. Запускаємо. Необхідно налаштувати. Натискаємо на Settings (рис. 9.7) і в формі, що з'явилася, вносимо дані свого брокера (рис. 9.8):

MQTT hostname - m13.cloudmqtt.com;
. MQTT Websocket port – 38274;
. MQTT username - nodemcu1;
. MQTT password.

Мал. 9.7. Основне меню програми IoTManager.

Мал. 9.8. Вікно налаштування брокера.

Тепер виходимо на сторінку Dashboard і маємо побачити встановлене з'єднання (рис. 9.9). Напис No data не повинен вас бентежити - дані в топіки ще не передавалися.

Мал. 9.9. Успішне підключення до брокера.

Чи всі вікна зачинені? Чи вимкнене світло? Чи не пробрався хтось у квартиру? Якщо ваш будинок підключений до Мережі, достатньо одного погляду на екран смартфона, щоб дізнатися, чи все гаразд. Це стає можливим завдяки системам розумного будинку. І найчудовіше, що можна керувати своїм житлом звідусіль. Потрібно лише натиснути кнопки на екрані смартфона, щоб приглушити світло у вітальні, відрегулювати опалення або увімкнути телевізор.

У системі опалення з'єднання з мобільний пристроємзабезпечує розумний термостат. Щодо вікон це завдання виконує сенсор, який реєструє відкриття та закриття стулок. А телевізор, торшер або кавоварка включаються до мережі за допомогою розумних розеток.

Просте переоснащення техніки

Свердління, прокладання кабелю або пробивання стін для цього не потрібно. Багато пристроїв для розумного будинку можна закріпити звичайним двостороннім скотчем. Їх живлення забезпечується від акумуляторів або батарейок, а команди керування та дані сенсорів можна передавати за допомогою радіосигналу.

Окремі продукти для розумного будинку з'єднуються зі смартфоном через Bluetooth або використовують домашню мережа Wi-Fi. Однак якщо мова йдепро керування кількома пристроями та на кількох поверхах, комунікація часто здійснюється через додатковий центральний пункт управління розумного будинку.

Пункт управління у свою чергу підключений до роутера та забезпечує з'єднання зі смартфоном та з Інтернетом. До того ж він дозволяє керувати всіма пристроями, щоб, наприклад, при виході мешканців з будинку автоматично вимикалися всі електроприлади та вмикалася система безпеки.

Для побудови подібної системивам не знадобляться ні незвичайні технічні знання, ні безліч часу. Найчастіше достатньо години або двох, щоб встановити та налаштувати всі пристрої. CHIP надасть вам шість додатків, які будуть особливо корисні при запуску функцій розумного будинку. При цьому ми зосередилися на безпеці та енергозбереженні.

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

Netatmo Welcome: Мережева камераз розпізнаванням осіб

Мобільний додаток Netatmo Welcome розповість вам, хто зараз знаходиться у будинку. Якщо відеокамера не може ідентифікувати людину по обличчю, вона запускає відеозапис і повідомляє вас про це. Коли ви вдома, програма може інформувати вас про об'єкти, що потрапили в об'єктив, або звуки тривоги, що вловлюються мікрофонами (наприклад, від датчика диму). Відеозаписи зберігаються локально на SD-картку, що входить до комплекту, або сервер FTP. Запис, а також віддалений доступдо відеозображення надаються безкоштовно, а ось за відеокамеру потрібно буде одноразово заплатити приблизно 17 000 рублів.

Платформи: Android, iOS

Yale ENTR: Відкриття вхідних дверей через смартфон

При використанні ENTR Smart Lock або August Smart Lock можна залишити вдома ключ від вхідних дверей. Адже електронний замок дверцят відкриється, коли ви проведете пальцем зверху вниз у додатку. Команду на відкривання замок отримує через зашифроване з'єднання Bluetooth Low Energy. Коли вас немає вдома, можна надати обмежений певним часом доступ до будинку знайомим чи викликаним майстрам. Якщо хтось із проживаючих разом з вами все ж таки захоче відкрити двері звичайним ключем, зробити це можливо. Розумний замок ENTR (близько 25 000 рублів) встановлюється на внутрішній стороні дверей і не видно зовні.

Платформи: Android, iOS

Gigaset Elements: Захищаємо житло від непроханих гостей

З Gigaset Elements Starter Kit ви зробите свій будинок безпечнішим, витративши всього близько 12 000 рублів. Стартова комплектація включає центральний пункт керування, датчик руху, а також датчик злому дверей. На відміну від інших систем безпеки, дверний детектор розпізнає спробу насильницького проникнення (за рівнем шуму). У цьому випадку ви отримаєте повідомлення через програму на смартфоні. З його допомогою ви також можете вмикати режим присутності або відсутності вдома та встановлювати, у який час має бути активована система безпеки. Опціонально доступні датчик відкриття вікна, камера та сирена.

Платформи: Android, iOS

Panasonic Home Network: Повний захист на всі випадки життя

Система безпеки Panasonic Smart Home підніме вас через тривогу телефонним дзвінком і в тому випадку, якщо ви знаходитесь офлайн. За допомогою інтернет-з'єднання мобільний додаток Panasonic Home Network System ще й повідомить вас про подію. Ініціатором тривоги може бути один із датчиків для дверей (вікна), датчик розбиття скла або протікання води з набору Starter Kit Plus (близько 20 000 рублів). При установці додаткових апаратних модулів додаток також дозволяє спостерігати за тим, що відбувається всередині або зовні вашого житла, включати або вимикати побутові електроприлади, керувати освітленням, стаціонарним телефономі багато іншого.

Платформи: Android, iOS

eQ-3 Homematic IP: Регулювання опалення через смартфон

Зручну можливість керувати температурою в приміщенні через смартфон пропонує eQ-3 за допомогою Homematic IP. При налаштуванні через додаток радіаторні термостати та віконні датчики з'єднуються з центральним пунктом управління (який обійдеться вам приблизно в 5000 рублів) і співвідносяться з приміщенням. Потім термостати, що знаходяться в одному приміщенні автоматично синхронізуються один з одним. І якщо в кімнаті відчиняється вікно, вони знижують інтенсивність опалення. Економити енергію можна також за допомогою графіків нагріву, які без проблем задаються через мобільний додаток на кожен день та для кожної кімнати – дуже зручно.

Нещодавно був представлений Z-Wave модуль для Raspberry Pi - RaZBerry, який перетворює міні-комп'ютер на повноцінний контролер розумного будинку. Управління Z-Wave мережею здійснюється за допомогою web-інтерфейсу, що використовує HTTP/JavaScript API. Використовуючи JavaScript, можна створити набір функцій для автоматизації (ввімкнення/вимкнення світла, перевірка температури, опитування датчика руху та ін.), які потім можна виконати, надіславши HTTP запит.

Продукт компанії OpenRemote з однойменною назвою дозволяє створювати мобільні програми для розумного будинку без програмування, при цьому в одному додатку можуть використовуватися різні технології: Z-Wave, KNX, X10, ZigBee, управління комп'ютером з ssh та ін.

OpenRemote це сервер виконує будь-які команди і конструктор інтерфейсів, у якому ви створюєте кнопки, перемикачі, написи та ін. і цим елементам вже призначаєте команди, в нашому випадку це HTTP запити на виконання JavaScript функцій на сервері Z-Wave.

Далі я по пунктах розповім як створити пульт управління розумним будинком для iPhone та Android! А ось так буде виглядати наша програма, коли ми закінчимо:

Під катом багато картинок.

1. Створення мережі Z-Wave за допомогою контролера Raspberry Pi + RaZberry

  • Установка ПЗ RaZberry на Raspberry Pi
  • Додавання Z-Wave пристроїв
  • Перевірка роботи пристрою
2. Встановлення OpenRemote контролера та мобільного додатка

3. Створення дизайну програми та логіки його роботи

  • Розробка дизайну
  • Асоціація кнопок із командами
4. Резюме

Створення мережі Z-Wave за допомогою контролера Raspberry+RaZberry

RaZberry - це плата, що підключається до Raspberry Pi через GPIO, що дозволяє створювати та керувати Z-Wave мережею. Для кращого розуміючи прочитайте Faq. У комплекті із платою йде софт, який потрібно встановити.

Установка ПЗ RaZberry на Raspberry

Інсталятор підтримує тільки Debian-based дистрибутиви (Raspbian, Xbian та ін.) Однак ручками можна поставити ПЗ і на OpenElec та інші ОС.
Виконайте команду для встановлення програмного забезпечення Z-Way:
wget -q -O - http://razberry.z-wave.me/install | sudo bash
Після встановлення потрібно обов'язково перезавантажити Raspberry Pi, щоб застосувати зміни для Serial порту.

Щоб потрапити до панелі керування розумним будинком, перейдіть за адресою http://IP_OF_YOUR_RASPBERRY:8083 . Інтерфейс програми дуже простий, розібратися в ньому не складе труднощів, є документація. Максимальну сумісність з інтерфейсом мають браузери: Chrome, Safari, Firefox та інші браузери: IE, Opera можуть працювати некоректно.

Додавання Z-Wave пристроїв

Визначимося зі списком використовуваного обладнання:
- Реле Fibaro Single Switch 3kW 2 шт.
- Датчик відкриття дверей/вікна та температури Fibaro Door/Window Sensor 1шт.

У нижньому меню виберіть Режим експерта. За допомогою верхнього меню перейдіть на вкладку Мережа → Керування мережеюта натисніть Увімкнути (заново) пристрій, це запустить процес очікування увімкнення пристрою в мережу, тепер на пристрої три рази натисніть сервісну кнопку, щоб контролер його побачив і додав.

Перевірка роботи пристрою

Переконайтеся, що пристрій працює. Перейдіть на вкладку Налаштування пристроїв, натисніть тільки, що доданий пристрій у лівій колонці і перевірте Стадію інтерв'ю, повинно бути Інтерв'ю пройшло успішноі між плюсиками не повинно бути точок та заків Ø.

Якщо інтерв'ю не пройдено (є точки та знаки Ø), то можна його повторити, для цього в нижній частині екрана натисніть Додаткові дії → Примусово повторити інтерв'ю(Режим експерта повинен бути увімкнений, щоб побачити це меню).
Після успішно пройденого інтерв'ю, на цій же вкладці Налаштування пристроївможна налаштувати деякі параметри пристрою (не забудьте застосувати налаштування кнопкою Застосувати налаштування до даному пристрою внизу екрана, а також розбудити пристрій, якщо він працює на батарейках):

Щоб керувати пристроєм, перейдіть на вкладку Керування пристроями → Вимикачі

Про наданий API автоматизації

Переконавшись, що всі пристрої працюють правильно, спробуємо тепер керувати ними віддалено. Є кілька способів:

1. За допомогою HTTP/JSON API
2. C допомогою JavaScript API

HTTP/JSON APIвикористовує простий синтаксис управління пристроями.
Увімкнути світло можна з браузера:
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.SwitchBinary.Set(255)
Або запитати температуру:
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.commandClasses.data.val.value
JavaScript APIдозволяє писати різні скриптиавтоматизації, наприклад: увімкнути/вимкнути світло, опитати датчик, отримати температуру, вимкнути світло через 2 хвилини після вмикання. Ці скрипти можуть працювати як самостійно (наприклад: вночі світло вмикається лише на 15%, щоб не зліпити очі), так і можуть бути викликані віддалено за допомогою HTTP/JSON API.

Скрипт увімкнення світла:
SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); )
Виклик скрипту увімкнення світла:
На жаль пряме зверненнядо пристроїв за допомогою HTTP/JSON API із OpenRemote проблематично з кількох причин:

1. Символи мають бути перекодовані в UTF-8 у Констукторі OpenRemote
2. При опитуванні датчиків OpenRemote очікує "on" або "off", а Z-Wave датчики можуть надіслати 255 або 0.
3. Для кожного пристрою доведеться писати свій запит, а за допомогою JS можна використовувати лише одну функцію для увімкнення різних пристроїв, змінюючи у запиті лише параметр функції – номер пристрою.

За допомогою JavaScript API всі ці проблеми зникають - кілька функцій «хелперів» допоможуть перетворити терміни Z-Wave у зручні для OpenRemote поняття.
Докладніше про синтаксис HTTP/JSON API та JavaScript API можна почитати в недавній.

Створення JS скриптів для віддаленого керування

JS скрипти знаходяться в /opt/z-way-server/automation/, створимо файл у якому зберігатимуться наші функції автоматизації openremote.js, щоб він автоматично завантажувався при включенні Z-Way, до кінця головного файлу автоматизації main.jsдодайте:
// ================================================ ====== executeFile(automationRoot + "/" + "tags.js"); executeFile(automationRoot + "/" + "openremote.js"); startAutomation();
/opt/z-way-server/automation/openremote.js
// Увімкнення пристрою SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); ) // Вимкнення пристрою SwitchOff = function(N,I) ( zway.devices[ N].instances[I].SwitchBinary.Set(0); ) // Запит на статус датчика (спрацював/не спрацював) SensorStatus = function(N,I) ( return zway.devices[N].instances[I]. SensorBinary.data.level.value; ) // Запит на стан пристрою (включено/вимкнено) SwitchStatus = function(N,I) ( return zway.devices[N].instances[I].SwitchBinary.data.level.value; ) // Запит температури з округленням до цілого Temperature = function(N,I) ( return Math.round(zway.devices[N].instances[I].commandClasses.data.val.value); )

Параметр N – номер пристрою в мережі.
Параметр I - всередині одного пристрою може бути фізично кілька пристроїв (каналів), наприклад, 2 реле або датчик температури, датчик руху, датчик освітленості. Параметр I – це номер каналу всередині пристроїв. Якщо пристрій містить лише одне фізичний пристрій, Це параметр дорівнює 0.

Після створення файлу потрібно або перезапустити команду Z-Way:
/etc/init.d/Z-Way restart
або підвантажити скрипт вручну, надіславши запит із браузера:
http://192.168.1.113:8083/JS/Run/executeFile("automation/openremote.js")
Перевірити працездатність функцій можна із браузера.
Включити світло:
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)
Запитати температуру:
http://192.168.1.113:8083/JS/Run/Temperature(8,2)
У налагодженні дуже добре допомагає лог Z-Way сервера:
tail -f /var/log/z-way-server.log
Якщо все працює, переходимо до наступного пункту!

Установка OpenRemote контролера

Контролер OpenRemote являє собою сервер, який отримує команди від мобільного або веб-додатку і далі транслює їх іншому контролеру або серверу. У нашому випадку це сервер Z-Way.

На сайті OpenRemote є дуже докладна інструкціяпо установці, якою і пропоную скористатися:
Офіційна інструкція з встановлення OpenRemote англійською мовою

Зауважу лише, що OpenRemote написано на Java і нам потрібна версія віртуальної машиниз апаратною підтримкою плаваючої коми:
JAVA для ARM процесорів підтримкою плаваючої коми

Встановіть мобільний додаток для вашого телефону:
Мобільний додаток OpenRemote

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

Створення дизайну програми та логіки його роботи

Усі попередні кроки були лише підготовкою до головного – створення мобільного додатку!
Відкрийте хмарний конструктор http://designer.openremote.org. Розібратися в ньому не важко!

Розробка дизайну

Відразу перейдемо до розробки дизайну.

1. Перейдіть на вкладку UI Designerі створіть нову панель, назвавши її, наприклад, iPhone4.

2. Перетягніть із правої панелі кнопки та зображення на екран iPhone.

3. У властивостях зображення (права панель) завантажте ваші картинки та за допомогою полів Left, Right, Width, Height розташуйте їх на екрані як вам потрібно. Я завантажив зображення квадрата та лампочки, також додав напис.

Створення команд управління та сенсорів

Тепер потрібно на кнопки призначити команди, а картинка лампочки повинна змінюватись в залежності від стану світла (ввімкнено/вимкнено).

1. Перейдіть на вкладку і створіть новий девайс, назвавши його, наприклад, Raspberry.

2. Виберіть щойно створений девайс Raspberry та створіть нову командудля нього New → New command. Вибираємо протокол HTTP, вводимо URL JS-команди та метод встановлюємо POST.
Ця команда включає пристрій №6. Аналогічно створюємо команди включення інших пристроїв та команди вимкнення.
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)

3. Тепер необхідно створити команду для опитування стану світла. Ця команда буде викликатися кожні 2 секунди, тому якщо ви вручну вимкнете світло, то в нашому додатку це одразу стане помітно. Як зазвичай New → New command, але додатково потрібно вказати з якою періодичністю проводити опитування Polling, встановлюємо 2s, літера sобов'язкова.

4. Створимо Sensor, який оброблятиме отримані значення від цієї команди і передаватиме їх зображенню або напису. New → New Sensor, вибираємо команду, яку виконуватиме сенсор, встановлюємо тип custom, додаємо два стани onі off, асоціюємо їх з значеннями, що повертаються Z-Wave.

Асоціація кнопок із командами

1. Останній етап розробки програми, асоціація кнопок із командами. Поверніться до дизайнера програми UI Designer, виберіть вашу кнопку та в її властивостях встановити команду, яку вона має виконувати.

2. Асоціюйте зображення з сенсором, щоб змінити стан пристрою, а також зображення в програмі. Виберіть зображення та встановіть сенсор у властивостях.

3. У властивостях зображення виберіть яка картинка буде показана, якщо сенсор надіслав onі яка, якщо сенсор надіслав off.

Синхронізація з мобільним додатком

1. Наша програма готова, залишилося її тільки залити в телефон. Перейдіть на адресу контролера OpenRemote

Здрастуйте, дорогі читачі! Чергова історія про те, як менеджер самої середньої ланки, здуваючи пил з залізних залозок на полиці, творить таке, від чого у професіоналів усіх мастей біль в очах. Але це працює, amigo!

Зізнаюся, цього разу я все хотів зробити правильно. Взяв Raspbery Pi з полиці. Пиріжок той самий, що я вже використовував у своєму роботі-газонокосарці: посилання на пост і посилання на інший пост. Взяв москітто, все мало працювати на mqtt, але від себе нікуди не втечеш. Під катом море граблів, велосипедів, поганого паяння, суцільне пекло для перфекціоніста.


Все почалося з бажання доповнити мій проект «Noorik», який я поставив собі на ворота. Якщо коротко – це DIY рішення для GSM блоку відкриття воріт.
Для відкриття воріт достатньо замкнути певні контакти на платі.

Замінив arduino на esp8266 та зробив веб-інтерфейс з кнопкою відкриття. Це виявилося цікаво, але далі я захотів єдиний інтерфейс для відкриття воріт, гаражних секційних воріт і хвіртки.

Коли я почав розписувати всі свої хотівки, виявилося, що мені потрібно так само:

  1. система управління котельнею
  2. охоронна система
  3. мобільний інтерфейс до камер відеоспостереження
  4. дані про температуру в будинку та на вулиці

Бекенд

Малинка працювала нормально, але при черговому включенні просто перестала вмикатися. Світлодіод живлення спочатку спалахує, потім плавно за 3-5 секунд гасне, сильно гріється елемент (polyfuse T075) біля гнізда живлення. А тут уже руки свербіли застосувати mqtt, блекджер, запросити куртизанок та інші принади.

Не біда, благо своєї долі чекав інший пацієнт. Orange pi zero у студію. Скільки я не мучився з цим дивом китайської думки - вдихнути життя в такий маленький пиріжок виявилося справою вище за мої сили. Я скачував прошивки на офіційному та лівих сайтах, я купував прошивки з рук та обмінював на криптовалюту. Думаю, мені просто потрапив бракований зразок.

Я зрозумів, що сама доля штовхає мене в обійми велосипедобудування, і що вже приховувати радість, я поринув у це заняття з головою.

Насамперед я вирішив використати як головний пристрій(брокер, сервер) бачив смартфон. Знаєте ці старі речі просто так не йдуть. Ним користувався я, дружина, дочка, потім я керував з цього смартфона своїм роботом-снігоприбирачем, я намагався втопити його в річці (до Москви-ріки я так і не дістався, але в рідній Пахрі ця труба навела шереху). І ось вона - нове життядля Samsung Galaxy S3.

Встановив на смартфон Palapa Web Server та FTP-сервер. Ідея проста в базі даних MySQLвсього три таблиці: values, logs, rules.

  • У таблиці значення пари ключ/значення.
  • У таблиці logs історія змін значень.
  • У таблиці правил правила зміни одних осередків в залежності від значення в інших.
Все це господарство обслуговує одне скрипт php, який за http запитузаписує або видає дані з бази, а також обслуговує правила за розкладом.
Я навіть не розумію який має бути рівень програмування, щоб людина захотіла це побачити, але я готовий показати Вам код – пишіть у ЛЗ.

Фронтенд

Не кидайте в мене каміння, я зізнаюся сам. Я використав Bootstrap. Так, грішний.
Початковою думкою було обернути все це через Phonegap і отримати повноцінний додаток. Скажу більше, я так і зробив, але в результаті більш працездатною виявилася online-версія. Собі та дружині на телефоні просто зробив ярлик на робочому столі для відкриття потрібної сторінки по внутрішньому ip.

Кожен елемент реагує на подію натискання + перевіряється стан ajax запитами на сервер і змінюється у разі потреби. Дуже зручно, тому що бачиш усі зміни, які набули чинності за правилом або зроблені іншим користувачем.
Власне, код на запит без проблем.

ESP-8266


Я пробував різні модулі та чистий ESP-8266. У результаті найзручнішим варіантом виявився модуль LOLIN V3.

Живлення за допомогою імпульсних блоків живлення.

Модулі для воріт вимагали реле і в мене були побоювання, що контактні реле спрацьовуватимуть. У результаті працюють і твердотільні та контактні. Проблема з тим, що велика кількість модулів навіть без маркування про це low-triggered.

При включенні модуля відбувається короткочасне відкриття, що призводить до мимовільного відкриття під час увімкнення живлення. Вирішується підтяжкою до нуля та оголошенням стану до оголошення типу виходу.

DigitalWrite(rele, 1);
digitalWrite(rele2, 1);

pinMode(rele, OUTPUT);

pinMode(rele2, OUTPUT);

У результаті модуль для гаража у зборі виглядає так. PIR-датчик для визначення руху акуратно вгризаний у рідну обшивку.

У котельні у мене котел дуже простий і ні про яку складну автоматику і не йдеться.

Кожний контур обслуговує окремий насос.

Послідовно з автоматами було включено реле для керування насосами та котлом. Акуратно впихає все господарство в щиток.Прошивка
Вирішив використовувати для прошивки Arduino IDE, щоб не зв'язуватися з nodemcu та lua. В інтернеті та на GT зокрема мережі wifiі може бути доданий. Щоб жорстко не задавати назву мережі, попередньо проводимо сканування доступних мереж.

Код setupWiFi()

void setupWiFi() ( WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); while(WiFi.status() != WL_CONNECTED) ( int n = WiFi.scanNetworks(); Serial.println("scan done"); if (n == 0) Serial.println("no networks found"); else ( Serial.print(n); Serial.println(" networks found"); for (int i = 0; i< n; ++i) { Serial.println(""); Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); j=0; ssid=WiFi.SSID(i); Serial.print("Connecting"); ssid.toCharArray(charBuf, 50); WiFi.begin(charBuf,WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); j++; if(j>20)( break; ) ) if((WiFi.status() == WL_CONNECTED))( break; ) ) ) ) Serial.println("Connected");


Serial.println(WiFi.localIP()); ) При включеномуавтоматичному режимі
  • котельні за розкладом перевіряється температура на вулиці та температура теплоносія.
  • При температурі нижче 14*С включається тепла підлога першого поверху.
При температурі нижче 4*С вмикаються всі контури.

Температура теплоносія вибирається за таблицею залежно від перерізу труб і вуличної температури. При досягненні необхідної кімнатної температури котел вимикається. До всього застосований гестерезис для згладжування перехідних значень. Система охорони працює ще простіше. У таблиці є правило про те, що при включеній системі охорони, якщо виявлено рух одного з PIR-датчиків відбуваєтьсявідправка SMS

через API одного із сервісів.

  • Плани створення online-версії навіддаленому сервері
  • та синхронізація змін для можливості віддаленого керування.
  • Відображення даних з GSM/GPS маячків у машині;
  • Відкриття воріт з появою наших машин у певній зоні;
Підключення до системи пультової охорони;Голосування за фото. Який проект робити наступним?

22 січня 2014 о 10:47

  • Розумний будинок. Конкретна реалізація

Java
Доброго дня, шановна спільнота! У , як роблю у себерозумний будинок

. З того часу минуло вже досить багато часу і я досить серйозно просунувся як в обладнанні, так і в софті. Думаю, що цю чергову статтю можна сміливо називати «Розумний дім v3»:)

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

  • Розповім, що є у мене зараз з обладнання:
  • Кілька димерів ZWave
  • Датчики ZWave (об'єму, присутності, температури, протікання, відкриття дверей/вікон, донгл для ПК)
  • Клапани ZWave
  • Вимикачі Noolite (силові модулі+вимикачі-передавачі, донгли RX та TX (PC) для ПК)
  • Їдуть димери Noolite
  • Планшети на Android (служать терміналами системи)
Про всі ці технології розказано досить докладно на Хабре (у тому числі і в моїх статтях), але я хотів би зупинитися на Noolite. Технологія добре описана (наприклад, ). Тепер моя черга:)

Ось так симпатично це виглядає в коробках (заздалегідь перепрошую за якість, зроблено в процесі установки на мобільний телефонбез будь-яких проблем з тлом, заваленим горизонтом і т.п.):

Так виглядає донгл для передачі команд силовим блокам:

Так Так! Саме для прийому команд! Це та недостатня частина Noolite, якої мені особисто не вистачало для того, щоб використовувати ці пристрої у себе. Інформації про це чомусь ніде, крім офіційного сайту, немає.
Чому він такий важливий? Якщо ви читали про Noolite раніше, то знаєте, що силові модулі (те, що включає/вимикає навантаження) мають лише приймач сигналів, а передавача немає. Це суттєво обмежувало (особисто для мене) застосування такого обладнання у розумному будинку. Виробник вирішив проблему милицею оригінальним рішенням – випустили окремий приймач сигналів від самих передавачів (радіовимикачів). Єдина проблема цього девайсу – дуже маленький радіус прийому. Можливо тут накладає обмеження сам радіовимикач, т.к. у нього досить слабка антена, та й ставилися вони як правило на місця колишніх вимикачів (щоб приховати дірки у стінах:)) - можливо, якісь наведення.

Власне, ось один з моментів процесу встановлення замість старого вимикача:

Як можна бачити, старі силові дроти закорочуються в клемнику, зверху ставиться сам вимикач.

Силовий блок до об'єктиву телефону з якихось причин не потрапив:) Результат його підключення:

Силовий блок у стані вимкненого навантаження приємно світить зеленим світлодіодом. Вночі виходить таке собі чергове світло.

Прив'язується та відв'язується все дуже просто та швидко, інструкція дуже докладна та зрозуміла. Єдине, що не сподобалося - це софт, що йде в коробці. Він явно написаний на коліні, без жодних вишукувань і іноді плюється помилками. Але мені він і не потрібен - використовувався лише один раз, щоб упевнитися в коректній роботікуплених девайсів, після чого був безжально випиляний.

Тепер можна поговорити про розумну частину будинку. Залізниці – це добре та цікаво, але має бути й практична частина. Розкажу приклад свого ранку.

Якщо сьогодні не вихідні та не свята, то о 6.00 починає розгорятися нічник, встановлений з мого боку ліжка – світловий будильник.
Близько 6.45 термінал розумного будинку (планшет на Андроїді, що висить поруч із ліжком) отримує команду від головного сервера на включення будильника (так, я розумію, що можна було б просто увімкнути будильник на планшеті:)) - програється приємний шум ранкового лісу, під який я і продовжую прокидатися.
Одночасно з цим включається світло в коридорі, на кухні, у ванній та туалеті.
Коли я нарешті виповзаю до коридору датчики присутності визначають мою сонну тушку та синтезований голос гугло-жінки вітає мене. Водночас розумний будинок відкриває клапани на подачу води (є в мене така фобія – залити сусідів).
Після будь-яких туалетних процедур я заповзаю в душ. Датчик присутності у ванній визначать, що я вже тут і місцевий термінал запитує, чи хочу я дізнатися про останні новини. Тут я вільний відповісти так чи ні (приймаються видозмінені відповіді) - працює розпізнавання голосу від того ж Гугла + нейронні мережі Wit.AI.
(До речі, поки голосове спілкування в процесі розробки - говорити потрібно чітко і голосно, приймається мова не завжди з першого разу, та й розпізнавання та реакція системи займає деякий час (від 2 до 5 секунд у середньому))
Далі я виходжу з ванної, сам собі вмикаю чайник і наливаю чай (ага, недоробка:)). Якщо я затримуюсь і система бачить мене своїми датчиками (присутності + датчик на вхідних дверях не відпрацював) – мене підганяють голосовими повідомленнями.
Іду, зачиняю двері – світло скрізь автоматично вимикається.

Це саме мій приклад. Тут можливі нюанси – встане дружина, у мене відпустка тощо. Але загалом сценарій для мене підходить у 90% випадків.

Трохи про софт. Сама система розумного будинку реалізована із трьох компонентів. Це ядро ​​системи, яке, власне, керує всім. Веб-інтерфейс на Play Framework 1.2.7, на якому в майбутньому буде реалізовано людяно-дружелюбне управління системами розумного будинку. І андроїд-додаток, який є терміналом розумного будинку.
Софт опублікований на Github"e, конкретна реалізація вищеописаного в ньому поки що відсутня, тому що багато страшного коду, який я наводжу в порядок, але в загальному функції присутні.
Написана система на Java та на Наразіне має людсько-зручного інтерфейсу, крім як деяка подоба REST"а. Зараз система не готова для простого користувачаі знаходиться в глибокій альфі. Деякі функції, які я використовую у себе, ще немає в загальнодоступному репозитарії, але це справа часу.

Основною метою даного топіка є залучення розробників-ентузіастів розумного будинку. Я цього не приховую:)
Власне, посилання на репозитарій основного модуля (інші лежать там-таки).

Поділитися