IoT за копійки, або Що може DeviceHive

В сучасному світі «інтернет речей» (IoT) стрімко набирає популярність. Він в майбутньому допоможе людству автоматизувати багато аспектів життя, спростити рутинні операції, так і просто зробити життя комфортнішим і приємнішим. Сучасна елементна база тільки сприяє цьому. Ще кілька років тому завдання управління пристроєм з мережі породжувала необхідність використовувати високопродуктивні процесори, що збільшувало вартість кінцевого виконавчого пристрою в рази. Зараз же є можливість побудувати прості та ефективні IoT-рішення за копійки.

Зробити свій будинок воістину «розумним» можна і без використання модних Raspberry Pi або Arduino. Більшість IoT-завдань зводиться до підключення типових датчиків і виконавчих механізмів зі стандартними інтерфейсами: I2C, SPI, UART. А іноді навіть з елементарним аналоговим висновком, з якого потрібно вважати наявність напруги або подати його, або просто замкнути.


Ось розсип датчиків — приблизно $ 20 за все. Продаються на купі онлайн-майданчиків (Aliexpress, Ebay і т. п.).



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



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

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

У більшості випадків, для вирішення завдання доведеться трохи модифікувати кофемашину — поставити механізм, який буде тиснути на кнопку, або додати всередину реле, яке буде замикати контакти, імітуючи натискання кнопки.

Більшість розробників віддасть перевагу широко розпіарені Raspberry Pi або Arduino — це все одно, що стріляти з гармати по горобцях. Розробників приваблює простота написання програми для даних платформ та велика спільнота. При цьому такі завдання можна вирішити, використовуючи мікросхеми вартістю по два долари ($ 2,5 у вигляді модуля на більшості китайських торгових майданчиків, включаючи доставку) і при цьому отримати всі переваги і гнучкість розробки на вашому улюбленому мовою. У підсумку вийде повноцінне IoT-пристрій, який є частиною мережі, дозволяючи легко масштабувати, змінювати систему. Підключатися до мережі воно буде за допомогою звичайного Wi-Fi, який найчастіше вже є.

При такій вартості у багатьох випадках буде дешевше встановити такий модуль, ніж прокладати кабель (вартість міді + прокладки). Якщо б всі виробники домовилися б встановлювати подібні інтерфейси в побутові прилади (наприклад, у вищеописану кавоварку), вартість виробництва більшості пристроїв збільшилася б на копійки, але при цьому «розумний будинок» був би дійсно розумним і недорогим.

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

DeviceHive
Ми пропонуємо використовувати нашу платформу з відкритим кодом DeviceHive і мікросхему ESP8266 c нашій прошивкою, реалізує протокол DeviceHive на цьому SoC. Вам залишиться лише підключити пристрій до модулю і спілкуватися з серверів DeviceHive по HTTP або через WebSocket в середовищі, в якому ви звикли.

Ми надаємо свій код під ліцензією MIT — серверної частини і всього клієнтського ПЗ. Сервер можна легко розгорнути і хмарному сервісі, і в локальній мережі. Щоб просто пограти і спробувати DeviceHive в дії, можна скористатися безкоштовним плейграундом.

Спілкування з прошивкою для ESP8266 зводиться до трьох простих дій:
  • послати команду на пристрій для здійснення якої-небудь дії (активування висновків мікросхеми, запис даних в інтерфейс, включення «подятжки» для вхідних виводів мікросхеми, запит стану висновків, повідомлення сервера про зміну рівня на виводах);
  • запитати сервер результаті виконання команди;
  • почати «поллить» повідомлення, на які підписалися за допомогою команд.


Розглянемо, як послати команду по HTTP, на прикладі JavaScript:

function send(command, r, g, b) {
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open('POST', 'http://server.example.com/api/device/device-uuid/command', true);
xmlhttp.setRequestHeader("Authorization", "Basic " + btoa("user:password"));
xmlhttp.setRequestHeader("Content-type", "application/json;charset=UTF-8");
var myjson = {};
myjson["command"] = command;
myjson["parameters"] = {};
myjson["parameters"][12] = r;
myjson["parameters"][13] = b;
myjson["parameters"][14] = g;
xmlhttp.send(JSON.stringify(myjson));
}


Потім досить покликати цю функцію, наприклад, send('gpio/write', 1, 0, 0), вказавши команду і параметри. В даному випадку команда «gpio/set» встановить логічну одиницю на висновках GPIO4 і GPIO5, після чого підключений пристрій виконає щось. Просто, чи не правда?

Написання HTTP-запиту, задача, розв'язана для будь-якої мови програмування, тобто розробник може реалізовувати своє клієнтське додаток в будь-якому середовищі розробки, на будь-якій платформі, і при цьому керувати справжнім IoT-пристроєм.

У планах реалізувати:
  • SPI;
  • I2C;
  • UART;
  • ADC (аналоговий вхід);
  • 1-wire-інтерфейс для DS18B20 і DHT11;
  • PWM (ШІМ, широтно-імпульсна модуляція).


Поки є тільки демо, але найближчим часом з'явиться версія з відкритим вихідним кодом, доступна всім для скачування. Слідкуйте за оновленнями. З першим релізом підготуємо ще одну статтю з докладним відео, рассказывающуя, як завести плейграунд DeviceHive, як прошити і запустити модуль з ESP8266, підключивши найпростіші дискретні пристрої. І напишемо просту веб-сторінку, щоб ними управляти.

Автор: Микола Хабаров, Senior Embedded Developer

Джерело: Хабрахабр

0 коментарів

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