Телефонуйте » (+38) 096 227 41 41

В статті розглянемо, як реалізувати бота Android Things для виконання деяких завдань. Це цікава тема, оскільки вона поєднує дві нові технології: Internet of Things (IoT) та боти.

Ви вже знаєте, що Android Things - це нова ОС Google, створена для Інтернету речей. Ця ОС допоможе розробляти професійні проекти IoT, не заглиблюючись в особливості вбудованих систем. Android Things побудований на Android, тому можна повторно використовувати досвід роботи з Android і бути готовим до розробки проектів IoT.

Крім того, ви вже знаєте, що таке бот. Можливо, багато чули про цю технологію, наприклад, про чат-бот, розмовний бот або навіть чат-бот ШІ, який використовує штучний інтелект.

У будь-якому випадку, якщо ви новачок у концепції, бот - це програма, яка виконує автоматичні завдання. Іншими словами, це частина програмного забезпечення, яку ми розробляємо, для виконання певного конкретного завдання. Ці завдання можуть варіюватися від виконання запитів в Інтернеті, щоб щось шукати, або відповісти на якусь команду та отримати інформацію про погоду.

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

Завантажте вихідний код Android Things

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

Огляд проекту бота IoT

Ідея, яка стоїть за цим проектом Android Things, - це керування віддаленими периферійними пристроями за допомогою задач, які виконує бот. У проекті бот Android Things буде керувати двома різними світлодіодами, аналізуючи вхідні команди та вмикати або вимикати їх.

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

Щоб побудувати бот IoT, нам потрібно виконати наступні кроки:

• Створити та налаштувати бота в Telegram
• Розробити додаток Android Things, який взаємодіє з ботом за допомогою API
• Перетворити команду, що надходить як повідомлення, в команди "hardware" для керування дистанційними периферійними пристроями.

Ми розробляємо цей проект, використовуючи Android Things, оскільки це нова ОС, і вона пропонує чудові функції. Крім того, ми можемо використовувати існуючі бібліотеки Android у Android Things, і є кілька бібліотек Java-бібліотек Telegram, готових до використання.

Як побудувати бота

Першим кроком є створення бота в Telegram. Для цього ми можемо виконувати кроки, описані в посібнику. Щоб це зробити, необхідно взаємодіяти з BotFather:

Ми розпочинаємо розмову з BotFather, використовуючи команду /start, і команду /newbot повідомлячи боту, що ми хочемо створити нового бота. Необхідно надати таку інформацію:

• ім'я бота
• ім'я користувача бота (воно повинне закінчитися Bot)

Після цих простих кроків бот готовий. Для даного бот-проекту IoT ми створили бота під назвою AndroidThingsBot:

Наприкінці процесу створення бот telegram забезпечує токен HTTP-API, який будемо використовувати в нашому боті Android Things IoT.
Це все, щоб, наш бот був готовий отримувати команди. Наступним кроком буде реалізація бота Android Things, який обробляє вхідні команди та взаємодіє з периферійними пристроями.

Розробка бота Android Things для виконання завдань IoT

Першим кроком необхідно створити у студії Android новий Android Things проект. Цей підручник передбачає, що ви знайомі з Android Things. Якщо хочете дізнатись, як використовувати Android Things в проекті IoT, то можете ознайомитись з книгою, опублікованою Packt під назвою "Програми Android Things".

Після налаштування проекту ми можемо додати залежності. Даний проект IoT використовує бібліотеку з відкритим кодом для взаємодії з Telegram. Для цього додайте наступні рядки до build.gradle:

dependencies {
    ...
    compile 'com.github.pengrad:java-telegram-bot-api:3.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.8.1'
}
Це все, щоб ми були готові взаємодіяти з ботом. Наша мета - отримувати повідомлення від AndroidThingsBot і керувати за допомогою них. Для цього ми повинні ініціалізувати клас, який обробляє деталі передачі, використовуючи Telegram API:
TelegramBot bot;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Log.d(TAG, "onCreate");
  bot = TelegramBotAdapter.build(BOT_TOKEN);
  ...
}

де BOT_TOKEN - токен, який ми отримали під час кроку створення в попередньому абзаці.

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

// start listening for incoming messages
GetUpdates getUpdates = new GetUpdates()
  .limit(100)
  .offset(0)
  .timeout(10);

  bot.setUpdatesListener(new UpdatesListener() {
    @Override
    public int process(List<Update> updates) {
     for (Update update : updates) {
        Message msg = update.message();
       // Bot logic Here
     }
     return UpdatesListener.CONFIRMED_UPDATES_ALL;
  }
});

Таким чином, як тільки бот отримує повідомлення, програма Android Things отримує сповіщення та виконує команду. Нарешті, останній крок, коли додаток Android Things взаємодіє з периферійними пристроями.

Як бот управляє командами

У цьому розділі ми розглянемо, як бот Android Things контролює периферійні пристрої, які, в нашому випадку, є простими світлодіодами. Звичайно, ви можете розширити проект і використовувати інші види периферійних пристроїв. Схематичне зображення показано нижче:

З'єднання дуже прості, два світлодіоди підключені до виводів Raspberry Pi за допомогою  резисторів на 220 Ом, щоб обмежити струм, який протікає через світлодіоди. Крім того, світлодіоди керуються двома виводами GPIO у Raspberry Pi:

• Pin 13 -> BCM 27
• Pin 15 -> BCM 22

Щоб дізнатися більше, ознайомтеся з інформацією про Android Things Raspberry Pinout.

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

Давайте ініціалізуємо службу Peripheral, яка використовується для керування виводами, тому додайте наступні рядки до Android Activity:

private PeripheralManagerService pmService = new PeripheralManagerService();

які необхідні для ініціалізації виводів:

private void initPins() {
  try {
   bluePin = pmService.openGpio("BCM22");
   yellowPin = pmService.openGpio("BCM27");
   bluePin.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
   yellowPin.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
  }
  catch(IOException ioe) {
    ioe.printStackTrace();
  }
}

і викликати її в класі MainActivity. Крім того, корисно додати інший спосіб керування пінами, щоб додаток міг вмикати або вимикати світлодіоди:

private void setPin(Gpio pin, String state) {
 try {
   pin.setValue(Boolean.parseBoolean(state));
 }
 catch (IOException ioe) {
   ioe.printStackTrace();
 }
}

Нарешті, додаток повинен обробляти вхідні команди від бота і керувати світлодіодами, тому необхідно змінити метод, який обробляє вхідні повідомлення:

bot.setUpdatesListener(new UpdatesListener() {
   @Override
   public int process(List<Update> updates) {
     for (Update update : updates) {
       Message msg = update.message();
       if (msg != null) {
         String txt = msg.text();
         if (txt.trim().startsWith("LED")) {
           Log.d(TAG, "LED COMMAND");
           String[] data = txt.split(" ");
           if (data.length < 3) {
             Log.d(TAG, "Command format error");
             return UpdatesListener.CONFIRMED_UPDATES_ALL;
           }
           String value = data[2];
           if (data[1].equalsIgnoreCase("b")) {
             Log.d(TAG, "Blue pin ["+value+"]");
             setPin(bluePin, value);
           }
           else if (data[1].equalsIgnoreCase("y")) {
             setPin(yellowPin, value);
           }
        }
     }
   }
   return UpdatesListener.CONFIRMED_UPDATES_ALL;
  }
});

Тепер ви можете перевірити свій бот. Команда, яку виконує бот, має формат:

LED y|b on|off

Висновки

Ми розглянули цікаву тему, яка об'єднує дві нові технології Android Things і ботів. Бот Android Things IoT може бути розширений, щоб міг обробляти більше команд і міг взаємодіяти з іншими видами периферійних пристроїв. Це проект прототипу, але ідея, яка стоїть за ним, може бути використана та застосована в інших галузях.

(Джерело: survivingwithandroid.com)

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс