Slack是一款在線協作軟件,可以讓你與團隊成員進行聊天、文件傳送、語音/視頻通話等功能。Slack還可以整合多種工具和服務,如電子郵件、Google Drives、Twitter、Trello等,以提高工作效率和自動化任務。有App方便大家在手機或平板電腦上使用。
這次要實現的樹莓派Pico W遠程控制機器人,簡單來說,就是我們在手機上用Slack發消息,指揮Pico W幫我們干活。
Slack 的 chat.postMessage API 可將消息從開發板發送到 Slack 頻道。Slack 為應用和機器人提供了一個事件 API,用于響應 Slack 上的活動。由于開發板不能從公共互聯網直接訪問,因此無法使用公共 HTTP webhook。
我們必須使用Slack 的Socket Mode。 Socket Mode使應用和機器人能夠使用動態的WebSocket 接收事件。動態套接字的URL可以通過Slack的apps.connections.open API獲取。
Pico W與Slack API 接收事件和發送消息的通信機制:
要完成上述操作,你必須先有Slack令牌。
配置 Slack
在 Web 瀏覽器中訪問:
并使用您的 Slack 憑據登錄,單擊“創建新應用”按鈕。
單擊“From scratch”選項。
輸入應用程序的名稱(例如“Pico W”),為應用程序選擇一個工作區,然后單擊“創建應用程序”按鈕。
單擊左側的“Socket Mode”部分,然后單擊切換到“啟用Socket Mode”。
輸入應用級令牌的“Token Name”,例如“Pico W app”,然后單擊“生成”按鈕。
生成并顯示應用級令牌,復制該值并保存以備將來使用,然后單擊“完成”按鈕。
單擊左側的“OAuth 和權限”部分,向下滾動到“Scopes”部分,然后單擊“添加 OAuth 范圍”按鈕。
添加“app mention:read”權限。
添加“chat:write”權限。
單擊左側的“事件訂閱”部分,然后單擊“啟用事件”開關。
展開“訂閱bot事件”部分并單擊“添加bot用戶事件”按鈕。
選擇“app_mention”。
點擊右下角的“保存更改”按鈕。
點擊左側的“基本信息”部分,然后點擊“請求安裝”按鈕。
填寫“簡短描述”,選擇“背景顏色”,點擊“保存更改”按鈕
工作區管理員可以批準申請。然后轉到“基本信息”部分,單擊“安裝到工作區”按鈕。
安裝完成后,單擊左側的“OAuth & Permissions”部分,滾動到“工作區的OAuth Token”部分,然后復制“Bot User OAuth Token”值并保存以供將來參考。
現在你有了一個應用程序級別的令牌值和一個Slack應用程序的Bot用戶OAuth令牌值,可以在Raspberry Pi Pico W板上使用。
基于 MicroPython?的 Slack 機器人
MicroPython 為許多基于Arm?Cortex-M 的微控制器提供Python 3實現,包括 Raspberry Pi Pico W上的RP2040。
Thonny IDE 將用于安裝 MicroPython 并將代碼上傳到 Raspberry Pico W。
從 Thonny 主頁下載適用于您的計算機的操作系統?(OS) 專用版本的 Thonny。在撰寫本指南時,Thonny 4.1.2 是最新版本。
用Thonny刷好MicroPython以后,將 GitHub 中的代碼下載到計算機上的文件夾。
相關代碼:
https://github.com/IoToutpost/example-of-a-slackbot-for-pico-w
打開 Raspberry Pi Pico W 板上的 config.py 文件,填寫?Wi-Fi?網絡的 SSID 和密碼,以及之前配置的 Slack 應用和機器人令牌。
打開樹莓派Pi Pico W板上的 main.py 文件,然后按綠色的播放按鈕運行應用程序。如果一切配置正確,開發板現在將連接到您的 Wi-Fi 網絡,然后連接到 Slack。
基于 C 語言的 Slack 機器人
對于 C 版本,以下庫將與pico-sdk一起使用:
FreeRTOS?內核– 為網絡堆棧提供實時操作系統(RTOS)
lwIP– 用于 TCP/IP 通信
MbedTLS – 用于 TLS 通信
coreHTTP– 用于 HTTP 客戶端
cJSON– 用于解析和序列化 JSON 數據
使用 Raspberry Pi 的 Pico SDK 和所需的工具鏈設置您的計算機。
有關更多信息,請參閱 Raspberry Pi Pico 入門指南。
在終端窗口中,設置 PICO_SDK 環境變量:
exportPICO_SDK_PATH=/path/to/pico-sdk
將目錄更改為下載示例代碼的位置,然后將目錄更改為文件夾:pico-sdk
cd path/to/example-of-a-slackbot-for-pico-w
cd pico-sdk
創建一個構建目錄,并將目錄更改為該目錄:
mkdir build
cd build
使用你的 Wi-Fi SSID 和密碼以及 Slack 應用和機器人令牌運行,然后運行以編譯應用程序。
?
cmake .. -DPICO_BOARD=pico_w -DWIFI_SSID=""</wifi?ssid>
-DWIFI_PASSWORD=""
-DSLACK_APP_TOKEN=""
-DSLACK_BOT_TOKEN=""
make
按住Pico W上的BOOTSEL按鈕,同時將USB電纜插入計算機。
將文件復制到掛載的Raspberry Pi Pico,
啟動ROM磁盤:picow_slack_bot.uf2
cp -a picow_slack_bot.uf2
/Volumes/RPI-RP2/.
使用串行監視器應用程序(如屏幕)查看主板的 USB 串行輸出,
將 /dev/cu.usbmodem00000000000001 替換為主板的路徑:
screen /dev/cu.usbmodem0000000000001
如果一切配置正確,開發板現在將連接到您的 Wi-Fi 網絡,然后連接到 Slack。
在計算機上打開 Slack,并創建一個新的測試頻道。在信息輸入窗口中輸入,然后點按綠色按鈕或按回車鍵發送。@?LED?on
由于 Pico W 不在頻道中,系統將提示您添加它們。點擊“邀請他們”按鈕。
被邀請后,開發板將點亮 LED, 然后回復消息告知狀態。您也可以嘗試發送消息以關閉 LED。@?LED off
結論
本指南介紹了通過Raspberry Pi Pico W上運行MicroPython和C應用程序,來與Slack API發送和接收消息。
示例應用程序代碼可以接收并處理消息文本,以控制板載 LED,然后將 LED 的當前狀態告知用戶。
你可以在自己的Raspberry Pi Pico W上嘗試一下,然后在示例代碼的基礎上構建更多功能,從而將 Slack 擴展到物理世界。
作者:Sandeep Mistry 編譯:IoT前哨站