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