Android Things


Google представила оновлену платформу для інтернету речей — Android Things

13 грудня Google офіційно объявила про вихід реліз Developer preview своєї платформи для інтернету речей з підтримкою розробки під Android. Тепер всім знайомим з Android розробкою буде ще легше увійти в світ створення IoT пристроїв.

Офіційно підтримуються три типи пристроїв:

Підтримка ще двох очікується найближчим часом:

  • Intel® Joule™ 570x
  • NXP Argon i.MX6UL
Все що потрібно для розробки програми це Android Studio, і один з пристроїв вище.

Додаток
<img alt=«image » alt" src=«habrastorage.org/files/484/d32/173/484d32173dba4e2782e42da4259cf08c.png» />
Структура додаток для Android Things

Всі приклади Ви можете подивитися в офіційному репозиторії. template для старту нового додатка.

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

Для відображення додаток використовує той же UI toolkit що і звичайне Android програми, не підтримує system status bar і navigation buttons. Наявність дисплея не обов'язкова для роботи програми, а всі події автоматично доставляються до activity програми.

У gradle-файлі додатки встановлюємо minSdkVersion 24 і додаємо provided-залежність:

provided 'com.google.android.things:androidthings:0.1-devpreview'

У AndroidManifest у application треба вказати:

<uses-library android:name="com.google.android.things"/>

У додатку всього одна activity яка запускається при старті пристрої і знищується при виключенні.

Для забезпечення автоматичного старту актівіті при старті пристрої необхідно додати їй додаткові параметри:

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.IOT_LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

Доступні так само стандартні теми оформлення: Theme.DeviceDefault

Периферія
Платформа підтримує набір інтерфейсів обладнання: GPIO, PWM, I2C, SPI, UART. Бібліотеки для підключення різних периферійних пристроїв доступні з коробки:

  • RGB LED apa102
  • Сенсор температури bmx280
  • Кнопка
  • Touch сенсор cap12xx
  • UART GPS
  • Дисплеї HT16K33, TM1637, OLED дисплей ssd1306
  • Акселерометр MMA7660FC
  • Сервопривід
  • Спікер
  • Rainbowhat
Є можливість для написання свого драйвера. Тут Google представляє концепцію user driver, яка передбачає що драйвера до датчиків будуть підтримувати вже існуючий сервіс роботи з драйверами, що дозволить легко використовувати їх на різних платформах.


Майже порівну

Підтримується три типи драйверів:

Думаю основний інтерес представляє підключення різноманітних сенсорів, тому зупинюся на цьому детальніше.

Для початку необхідно створити об'єкт драйвера. Драйвер датчика повинен успадковувати абстрактний клас UserSensorDriver і перевизначити всього два методи:

read — викликається для отримання нових даних від сенсора і повинен повертати дані у вигляді об'єкта класу UserSensorReading.
setEnabled — використовується для можливості переходу у режим сну або економії енергії.

Далі з допомогою UserSensor.Builder створюємо свій об'єкт UserSensor, вказуємо його ім'я виробника, задаємо свій тип і передаємо йому драйвер. Реєструємо сенсор в менеджері UserDriverManager і не забуваємо відключити реєстрацію при закритті програми.
Детальніше почитати про створення драйверів можна тут.

Як видно з демо прикладів, додаток складається з двох основних частин. Activity в якій і відбувається вся робота і допоміжний клас BoardDefaults, який повертає рядкові назва пінів до яких підключені ті або інші пристрої в залежності від платформи, на якій працює додаток.

Для роботи з підтримуваними пристроями в системі передбачений PeripheralManagerService за допомогою якого можна отримати список доступних пінів/шин для конкретної платформи, а так само вказати на який пін підключено пристрій.

Кожен тип пристроїв має свій набір методів для управління і інтерфейсів зворотного зв'язку.

Приклад підключення світлодіода
PeripheralManagerService pioService = new PeripheralManagerService();
mLed = pioService.openGpio(BoardDefaults.getLedGpioPin());
mLed.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);

І передаємо boolean значення
mLedGpio.setValue(value);

Приклад підключення кнопки
mButtonInputDriver = new ButtonInputDriver(
BoardDefaults.getGPIOForButton(),
Button.LogicState.PRESSED_WHEN_LOW,
KeyEvent.KEYCODE_SPACE);
mButtonInputDriver.register();

І далі ловимо натискання кнопки
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SPACE) {
// button pressed
return true;
}
return super.onKeyUp(keyCode, event);
}

Докладніше можна подивитися приклад з підключенням великої кількості сенсорів.

Можливості платформи
Спочатку про обмеження. У платформі не доступні багато стандартні програми і контент-провайдери, а так само деякі Google API
Intents Google Api
CalendarContract AdMob
ContactsContract Чоловічий Pay
DocumentsContract Firebase App Indexing
DownloadManager Firebase Authentication
MediaStore Firebase Dynamic Links
Settings Firebase Invites
Telephony Firebase Notifications
UserDictionary Maps
VoicemailContract Play Games
Search
Sign-In
Так як у зв'язку з відсутністю status bar, не підтримуються повідомлення, NotificationManager API не доступні.

Але і доступно не мало:

Cast
Drive
Firebase Analytics
Firebase Cloud Messaging (FCM)
Firebase Crash Reporting
Firebase Realtime Database
Firebase Remote Config
Firebase Storage
Fit
Instance ID
Location
Nearby
Places
Mobile Vision
І тут не може не порадувати наявність підтримки Firebase Realtime Database, Firebase Analytics і FCM, які з легкістю дозволять керувати Android Things пристроями через інтернет і збирати дані з них.

Так само немає необхідності запитувати дозволу в процесі роботи, всі дозволи, зазначені у AndroidManifest, автоматично будуть дані.

Google Weave
Одночасно з Android Things Google представила платформу Weave. Платформа включає в себе:

  • Weave Server, який здійснює реєстрацію пристроїв, обмін та зберігання даних, а так само інтеграцію з іншими сервісами Google;
  • SDK для підключення пристроїв до Weave сервера. Поки підтримуються платформи: Linux, Qualcomm QCA4010, і Marvell MW302;
  • Набір інструментів для розробки та інтеграції, включаючи спеціальний додаток.
Weave в даний час підтримує: HVAC контролери, лампочки, розетки, ТБ і вимикачі.

Для отримання доступу до всіх можливостей платформи необхідно вступити в групу Google.

Weave вже використовуються в пристроях Philips Hue and Samsung SmartThings і є домовленості про використання платформи ще рядом виробників Belkin WeMo, LiFX, Honeywell, Wink, TP-Link і First Alert.

Вартість
Raspberry Pi 3 model B ~ 4 000р. + блок живлення від 500р. (Intel® Edison with Arduino Breakout Kit ~ 7500р. + блок живлення від 800р.) + SD card 32GB ~ 700р. Дошка для прототипування від 700 р

У підсумку відмінний новорічний подарунок Вам обійдеться близько 7 000 рублів. А також є вже готові набори, що включають Raspberry Pi 3 з деяким набором сенсорів, приблизно за цю ж вартість.

Всіх з наступаючим Новим роком!

Офіційний сайт Android Things
Github репозиторій з прикладами
Офіційний сайт Google Weavr
Джерело: Хабрахабр

0 коментарів

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