DOU Labs: як в ElifTech розробили розумний кулер для води

В рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Офіси зазвичай оснащені кулерами для води. В ElifTech він також є, донедавна цілком пересічний: бутель з водою, дві кнопки для подачі води — гарячої та холодної — і жодних гарантій на те, що вода не закінчиться прямо перед твоєю чашкою. Ми взялися вдосконалити пристрій у рамках внутрішнього експерименту SmartOffice. Тож читайте що з цього вийшло.

Ідея

Ідея експерименту виникла під час командного мозкового штурму, у ході розмови про проекти розумних будинків і автоматизовані побутові прилади. Вирішили надати додаткових можливостей нашому офісному пристрою аби випробувати технології Internet of Things. Кулер — один з найпопулярніших за використанням девайсів, тож він і став пілотним проектом. Ми його назвали «Smart Water Cooler».

Команда розробників

Концепція Smart Water Cooler

У випадку зі звичайним приладом вода у офіс замовляється нерегулярно, доставка відбувається із затримкою. Через це часто-густо колектив залишається без питної води. Smart Water Cooler слідкує за запасом води та завчасно замовляє наступну партію через SMS-повідомлення, процес не потребує втручання людей. Колектив отримує у корпоративний чат нотифікацію від системи — щось на зразок «залишилось води лише на 3 горнятка чаю». Проте якщо людська істота все ж бажає втрутитись, рівень та температуру води можна перевірити з будь-якої точки світу.

Реалізація

Реалізацію розумного кулера ми здійснили у три етапи: дослідили, як влаштовано базову модель; розробили апаратне рішення та запрограмували його, інтегрувавши з Amazon Web Services.

Процеси здійснювали у такій послідовності:

  • аналіз рішень для визначення рівня води;
  • аналіз платформ та MCU (Micro Controller Unit) для реалізації проекту;
  • дослідження будови піддослідного кулера;
  • реалізація POC (Proof of Concept) з мінімальним втручанням у апаратну частину;
  • розробка ПЗ для мікроконтролера;
  • дооснащення Smart Water Cooler;
  • розробка ПЗ для моніторингу;
  • розробка UI.

Інтеграція визначення рівня води

Ми визначили три кандидати: поплавковий рівень, лічильник протоку рідин та сенсор ваги.
Проаналізувавши їх, відкинули перший, оскільки він потребує втручання у ємність з водою. Другий варіант, лічильник витрат рідини Arduino Water Meter, також потребує контакту з питною водою, до того ж його не так просто купити. Переможцем став сенсор ваги: знаючи показники повного і порожнього бутля, можна вирахувати залишок рідини.

Серед протестованих екземплярів найкраще себе показав масив з 4-х датчиків, що використовується у звичайних вагах, Scale Sensor OR Load Cell. Для підʼєднання датчика до MCU ми використали плату HX711 (Load Cell Amplifier).

Аналіз платформ та MCU (Micro Controller Unit) для реалізації проекту

Тут ми також мали трьох кандидатів: Tessel 2, Arduino + Ethernet/Wifi shield та ESP8266. Tessel 2 — надто потужне рішення для нашої задачі. Arduino Nano + Ethernet/WiFi shield поступився ESP8266, оскільки той має на борту Wi-Fi, потужний процесор і достатню кількість портів, при цьому його розміри та ціна мінімальні. У якості базової прошивки для MCU використали NodeMCU — це дало змогу вивчити нову мову програмування.

Дослідження будови піддослідного кулера

Кулер виявився, на диво, простим приладом, має багато вільного місця — це дало широкі можливості для апгрейду.

Реалізація POC (Proof of Concept)

Аби перевірити концепції, ми розробили мінімальне ПЗ для MCU. Дані передавали на локальний MQTT broker Mosquitto за допомогою поширеного у IoT стандарту MQTT. Швидкоруч прилаштували MCU у кулер і підключили термосенсор до ємності з водою.

У якості UI виступав MQTT Dashboard Android application, за допомогою якого ми бачимо на графіку зміну температури у реальному часі.

Розробка ПЗ для мікроконтролера

Дані отримуються із двох цифрових датчиків: температурного ds18b20 та датчика ваги через HX711. Передаються вони у JSON-форматі за допомогою протоколу MQTT через Wi-Fi підключення. Скрипти написали на мові Lua, вони виконуються NodeMCU firmware. Через обмеженість MCU, а саме неможливість використати криптографію та сертифікати, ми запустили у локальній мережі окремий MQTT broker у режимі мосту, що підписує повідомлення сертифікатом AWS та передає дані у AWS IoT.

SmartCooler/NodeMCU/cooler.lua на GitHub

Дооснащення Smart Water Cooler

Для спрощення монтажу скомпонували плату-перехідник та разом із додатковим блоком живлення інтегрували у кулер. Згодом підʼєднали датчики ваги і температури.

Розробка ПЗ для моніторингу

У AWS IoT налаштували Rule Action, що зберігає отримані від MCU дані у базу даних DynamoDB.

ПЗ для моніторингу реалізовано у вигляді Serverless Lambda function, що викликається за допомогою AWS CloudWatch із заданим інтервалом часу. Lambda перевіряє актуальний запис у DynamoDB та вирішує, які дії потрібно виконати.

SmartCooler/SupervisorLambda/index.js на GitHub

Lambda надсилає повідомлення у відповідну тему AWS SNS (Simple Notification Service), їх отримують Lambda-функції — так здійснюється нотифікація. Для доставки повідомлення у месенджер одна з Lambda-функцій використовує Slack Webhooks, а інша працює з сервісом Twilio для надсилання SMS.

Розробка UI

Web UI ми розробили на AngularJS та розмістили на AWS S3 у ролі хостингу.

Backend для UI імплементовано у вигляді AWS Lambda, що викликається через AWS API Gateway за допомогою звичайних REST запитів. Таким чином, вся програмна складова працює у Managed Cloud Environment, не потребуючи оренди серверу/VPC та додаткового адміністрування. Кількість використаних ресурсів повністю вписується у AWS Free Tier і фактично не потребує плати за використання.

Tech Stack

  • NodeMCU та мова програмування Lua;
  • Сервіс Twilio;
  • AWS IoT;
  • AWS DynamoDB;
  • AWS Lambda;
  • AWS SNS;
  • AWS CloudWatch;
  • AWS API Gateway.

Розробкою команда займалась близько місяця у вільний від проектів час. Окрім отриманого фану та пізнання нових технологій, проект спростив роботу офіс-менеджера та урятував офіс від ймовірної засухи.

Вже маємо на прикметі кілька SmartOffice проектів: автоматизація офісної сигналізації для автоматичного керування світлом і автоматизація опалення та кондиціювання повітря у офісі.

Похожие статьи:
Новые версии Yii 1.1.17 jQuery 1.12, 2.2 и jQuery 3.0 Beta Elixir v1.2 Rust 1.6 Clojure 1.8 Ansible 2.0 Git 2.7.0 Linux 4.4 Debian 8.3 PostgreSQL 9.5 Новости Support for older versions of Internet Explorer ended...
На нашем YouTube канале появились новые видеоролики.Обзор Philips Xenium...
11 років ми складаємо рейтинг мов програмування. Вперше...
На DOU можно найти много различных статей про эмиграцию...
Перший повноцінний обмін військовополоненими...
Яндекс.Метрика