search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Android Things bot:如何構建一個IoT Bot來執行任務

在本教程中,我們將介紹如何實施 Android Things bot來執行任務。 這是一個有趣的話題,因為它將兩種新興技術(物聯網)和機器人相結合。你可能知道,Android Things是為物聯網而建的新的Google操作系統。該操作系統可幫助您開發專業的物聯網項目,而無需了解嵌入式系統。Android的東西是建立在Android上的,所以你可以重用你的Android專業知識,並準備開發IoT項目。

此外,你已經知道機器人是什麼。也許你聽過很多關於這個話題。無論如何,如果你是一個新的概念,機器人是一個執行自動化任務的應用程序。換句話說,它是我們開發的一個軟體來執行一些特定的任務。這些任務的範圍可以是在線執行查詢以搜索某些內容,或者回答某些命令並檢索天氣信息。

在本文中,我們將討論實現使用bot來控制遠程外設的不同服務的機器人主題。這個IoT項目集成了IoT和bots,從而提供可在現實生活中的IoT項目中擴展和重用的服務。

物聯網項目概述

這個Android Things bot項目背後的想法是使用機器人來控制遠程外圍設備來執行任務。在這個項目中,Android Things bot將控制兩個不同的LED來解析傳入的命令並打開或關閉它們。

如前所述,該項目可以進一步擴展並應用於現實用例。該項目使用 Telegram 作為支持第三方應用程序的機器人平台。要與機器人互動,我們使用聊天,我們發送消息到機器人是命令。

要構建這個IoT機器人,我們需要按照以下步驟:

  • 在電報中創建並配置機器人。
  • 開發使用API與機器人交互的Android Things bot應用。
  • 將作為消息進入的命令轉換為「硬體」命令來控制遠程外設。

我們將使用Android Things開發這個項目,因為它是一個新的操作系統,它提供了很好的功能。此外,我們可以在Android Things中使用現有的Android庫,並且有幾個Telegram bot,基於Java的庫可以使用。

如何創建一個機器人

第一步是在電報中創建機器人。為此,我們可以按照本指南中描述的 步驟進行操作。另外,為了構建我們的bot,我們需要與BotFather進行交互 :

我們使用/start 命令和 /newbot 命令與BotFather開始對話 ,從而告訴我們想要創建一個新的機器人的機器人。有必要提供一些信息,如:

  • 要創建的機器人的名稱。
  • 機器人的用戶名(它必須以機器人結尾)。

在這些簡單的步驟之後,機器人就準備好了。對於這個IoT bot項目,我們創建了一個名為AndroidThingsBot的機器人 :

在此過程結束時,電報bot提供了我們將在我們的Android Things IoT機器人中使用的HTTP API令牌。

就這樣; 我們的機器人已經準備好接收命令。下一步是實現處理傳入命令並與外設交互的Android Things bot。

開發一個Android Things Bot來執行IoT任務

作為第一步,有必要在Android Studio中創建一個新的 Android Things項目 。本教程假定您熟悉Android Things。如果您想了解如何在IoT項目中使用Android Things,您可以閱讀 由Packt發布的題為「Android Things Projects」的書。

項目配置完成後,我們可以添加依賴關係。該IoT項目使用開源庫與Telegram進行交互。將以下行添加到build.gradle中:

依賴 { ... 編譯 'com.github.pengrad:java-telegram-bot-api:3.0.1' 編譯 'com.squareup.okhttp3:okhttp:3.8.1'}

就這樣!我們準備與機器人進行互動。我們的目標是收到AndroidThingsBot的消息並處理它們。接下來,我們必須使用Telegram API初始化處理通信詳細信息的類:

TelegramBot 機器人 ; @覆蓋protected void onCreateBundle savedInstanceState){ onCreatesavedInstanceState); 登錄dTAG「onCreate」); bot = TelegramBotAdapter構建BOT_TOKEN); ...}

BOT_TOKEN是我們在上一段創建步驟中收到的令牌。

我們可以利用幾種策略來接收消息。該庫提供了一個偵聽器來收聽傳入的消息:

//開始偵聽收到的消息GetUpdates getUpdates = new GetUpdates限制100偏移0超時10); 機器人setUpdatesListenernew UpdatesListener{ @覆蓋 public int processList < Update > updates){ for更新 更新updates){ 消息 msg = 更新message; // Bot邏輯這裡 } 返回 UpdatesListenerCONFIRMED_UPDATES_ALL ; }});

這樣一來,一旦機器人收到消息,Android Things應用就會通知並處理該命令。最後,最後一步,我們的Android Things應用程序與外設交互。

如何處理命令

在本節中,我們介紹了Android Things應用程序如何控制外設,在這種情況下,它們是簡單的LED。當然,您可以擴展此項目並使用其他類型的外設。原理圖如下所示:

連接非常簡單,兩個LED使用220Ω電阻連接到Raspberry Pi,以限制流過LED本身的電流。此外,LEDS在Raspberry Pi中使用兩個GPIO引腳進行管理:

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

有關更多信息,請查看 Android Things Raspberry Pinout。

一旦連接準備就緒,我們可以將注意力集中在開發源代碼上。您可能已經知道,Android Things的強大功能正在抽象出硬體的工作原理,提供了與組件和外設交互的常用方式。

讓我們初始化用於管理引腳的外設服務。要完成此操作,請將以下行添加到Android Activity:

私人 PeripheralManagerService pmService = new PeripheralManagerService;

然後,我們必須初始化引腳:

private void initPins{ 嘗試 { bluePin = pmServiceopenGpio「BCM22」); yellowPin = pmServiceopenGpio「BCM27」); bluePinsetDirectionGPIODIRECTION_OUT_INITIALLY_LOW); yellowPinsetDirectionGPIODIRECTION_OUT_INITIALLY_LOW); } catchIOException ioe){ IOEprintStackTrace; }}

調用MainActivity類的時間。此外,添加另一種管理引腳的方法是有用的,以便應用程序可以打開或關閉LED:

private void setPinGpio pinString state){ 嘗試 { 的setValue布爾parseBoolean狀態)); } catchIOException ioe){ IOEprintStackTrace; }}

最後,應用程序必須處理來自機器人的傳入命令並管理LED,因此,有必要修改處理傳入消息的方法:

機器人setUpdatesListenernew UpdatesListener{ @覆蓋 public int processList < Update > updates){ for更新 更新updates){ 消息 msg = 更新message; ifmsg != null){ String txt = msgtext; 如果TXT修剪startsWith「LED」 )){ 登錄dTAG「LED命令」); String data = txtsplit「」); 如果數據長度 < 3){ 登錄dTAG「命令格式錯誤」); 返回 UpdatesListenerCONFIRMED_UPDATES_ALL ; } String value = data [ 2 ]; ifdata [ 1 ] 。equalsIgnoreCase「b」)){ 登錄dTAG「Blue pin [」 + value + 「]」); setPinbluePinvalue); } else ifdata [ 1 ] 。equalsIgnoreCase「y」)){ setPinyellowPinvalue); } } } } 返回 UpdatesListenerCONFIRMED_UPDATES_ALL ; }});

現在你可以測試你的機器人 機器人手柄的命令格式如下:

LED y | b開|關



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦