齊護機器人小智AI_MCP圖形化編程控制Arduino_ESP32
齊護AiTall
在項目實踐里,我們常常期望達成這樣一種場景:借助智能體(例如小智 AI)來遠程操控其他開發板上的設備,這類似于智能家居系統中智能音箱與各類家電的互動模式。以往,實現這樣的功能可能面臨諸多技術難題與復雜操作。
而現在,齊護機器人的 MCP 圖形化編程為我們提供了便捷高效的解決方案。通過這一工具,我們能夠輕松實現智能體對遠方設備的控制。無論你的 AI 智能體部署在何處,只要它接入網絡,就能突破空間限制,隨心所欲地控制遠在千里之外的 ESP32 設備,讓遠程設備操控變得簡單又可靠。
齊護AiTall mini AI智能體積木模塊 小智AI
一、 MCP協議簡介
MCP(Model Context Protocol)是新一代推薦用于物聯網控制的協議,通過標準 JSON-RPC 2.0 格式在后臺與設備間發現和調用"工具"(Tool),實現靈活的設備控制。
二、齊護MCP_Arduino編程庫圖形塊功能說明
適用的芯片:本編程庫齊護團隊測試適用于:齊護全系列ESP32開發板、ESP32S及ESP32S3 兩種模塊芯片,其它未知或沒有測試的請用戶自行調試應用!
適用的軟件:編程庫可以在【齊護教育版本Mixly 1.2.Q55】的所有Arduino_ESP32主板或在Mixly2-3 Arduino_ESP32導入云端庫【齊護AiTall小智AI對話庫】使用。
注:使用庫前請一定要了解MCP的工程原理,控制過程,及軟硬件要求,保持耐心,細心,不著急的學習態度!
2-1【初始接入點】
連接AiTall_MCP接入點(需要先連接WIFI),在連接或斷開時會執行連接斷開內的程序。
功能塊應該置于初始化中,且在WIFI連接成功之后執行。
MCP接入點地址獲取:
登錄https://xiaozhi.me/,進入【控制臺】–【配置角色】,在右下角找到MCP接入點復制,并粘貼到編程塊地址中
2-2 【服務器連接狀態】
用于在初始接入點塊內判斷服務器是否連接上,只能在【初始接入點】內使用。
2-3 【AiTall MCP 運行】
AiTall MCP 更新數據,必須放在程序循環LOOP內執行
2-4 【注冊設備】
AiTall MCP 注冊設備 (要控制的設備),設備類型及控制參數不限制,可以定義成任意你能定義出并能用文字描述出來的設備。
【名稱】:以英文命名,必須要有意義并與后面的【描述】對應,如:living_room
【描述】:對設備的簡短描述,可中英文,要有意義,AI會自動判斷識別,如:客廳的燈。
【屬性】:定義設備的控制屬性,放后面的【屬性描述塊】,對設備的屬性進行定義。
【固定返回屬性】:智能控制必須返回項。
【接收數據處理】:處理收到的指令信息,并執行相應的控制。
【回應】:將設備執行的狀態反饋給AiTall。
2-5 【屬性描述】
用于描述設備的屬性
① 屬性描述
名稱:用于標識屬性能力,要有意義,表明屬性的用途,比如燈的開關狀態應該命名為state或power,風扇的風速應該命名為speed.
類型:有字符串,整數和布爾,用于定義AiTall返回數據類型。
其它屬性:使用②對屬性進行補充說明 ,主要為整數限制最大最小值,和字符串的枚舉。
枚舉點齒輪可以添加多個項。
注:如上編程的專業詞或寫法請自行查找相關知識點!
軟件使用技巧:
當拼接程序時可以對著圖形塊點鼠標【右鍵】切換圖形塊的顯示方式為外部輸入或顯示為一行:
2-6 【固定返回屬性】
定義固定返回屬性,可用可不用,用于描述AiTall每次控制必須返回的屬性名,點齒輪可以添加多個標簽。
2-7 【數據處理】
用于處理從AiTall傳回的數據,先判斷數據中是否包含屬性名的數據,然后再解析數據為對應格式。
2-8 【回應數據】
回應數據,傳回AiTall本地執行完成的數據,如命令控制風扇的速度為50,而你實際只執行了30可將這個數據告知AiTall。通常用于傳感器的數據回傳。
三、注冊設備示例
注:每次上傳程序(新注冊設備)后,要重啟/復位一下AiTall,否則可能識別不到新注冊的設備,而無法控制!
3-1 設備注冊參數使用說明
在連接到服務器時,向服務器聲明自身身份、功能,以便AI服務器能識別并管理該設備。
在注冊時要提供設備的設備標識和功能聲明。
① 設備名稱
含義: 工具的唯一標識符(用英文表達功能與設備實際相同的含義)
作用: 服務器通過這個ID來識別和調用對應的工具
要求: 應該是字符串類型,在同一MCP實例中必須唯一
示例: “led_blink” 表示這是一個控制LED閃爍的工具
② 描述
含義: 工具的文字描述,讓AI理解的一句話或設備的特有說明,讓AI能理解你的設備是什么功能。
作用: 提供工具功能的可讀說明,可能用于服務器端生成API文檔或管理界面
要求: 人類可讀的字符串,無特殊格式要求
示例: 簡單說明了這是一個控制板載LED的工具
③ 屬性描述
名稱:屬性的標識,名稱要有意義,與他實際的用處要一致,如燈的屬性狀態(state),推薦使用英文。
類型:表示屬性內容的數據類型
其它屬性:添加對屬性的描述,如限制數值大小(整數類型)和枚舉(通常為字符串類型,限定返回枚舉中的數據)。
可定義多個的屬性
④ 固定返回屬性
設定每次控制設備必定返回的屬性
⑤ 返回數據
返回數據的是你定義的屬性名稱,判斷數據內是否包含該標簽數據后解析
⑥ 回應數據
可以回復實際執行的狀態,如收到了開燈指令,而實際由于某種原因無法打開燈,就可以回復state:false(圖中所示程序為例),告訴AiTall實際的燈并沒有打開,或回應成功為否。
3-2 檢查設備是否有正常連接MCP小智服務
當上傳程序后,復位設備,并確認連網正常后,可以在小智后臺的【配置角色】中,MCP查看接入點狀態,在這里可以看到正常連接的注冊設備。
四、MCP控制設備程序示例
4-1 控制LED燈
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
LED只需要一個狀態,開“on”或關“off”,這里都以字符串類型傳回。在枚舉中你也可以增加別的狀態,比如blink等。
⑨ 固定返回屬性,為要求AiTall每次必須返回屬性,可以選擇多個。
⑩ 判斷AiTall返回的數據是否包含屬性名稱的數據。
? 聲明全局變量用于保存狀態字符串。
? 解析字符串內容,并賦值給變量。
? 判斷收到的內容是否是對應枚舉,并執行相關動作。
? 將狀態回傳給AiTall告訴它控制成功,也可以只返回成功。
? AiTall MCP 更新數據,必須放在LOOP內執行
4-2 RGB燈帶控制
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
這里定義的彩燈屬性有開始和結束序列號,可以這樣控制說“把客廳燈帶1~10號的顏色調成紅色”。
⑨ 固定返回屬性,為要求AiTall每次必須返回屬性,這里選擇返回所有的屬性。
⑩ 解析數據
? 將狀態回傳給AiTall告訴它控制成功,也可以只返回成功。
? AiTall MCP 更新數據,必須放在LOOP內執行
4-3 風扇控制
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
定義的風扇的開關、風速和搖頭屬性,對應不同的數據類型。
⑨ 風扇可以不固定其返回值,收到什么屬性執行什么命令。
⑩ 判斷AiTall返回的數據是否包含屬性名稱的數據。
? 解析數據內容,并賦值給變量。
? 返回成功給AiTall告訴它控制成功。
? AiTall MCP 更新數據,必須放在LOOP內執行。
4-4 控制空調
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
空調屬性:
電源:布爾類型,開或關
溫度:數值類型,限制范圍16~30
模式:字符串類型,制冷,制熱、除濕、送風
風速:字符串類型,高、中、低
定義空調的電源、溫度、模式、風速屬性,對應不同的數據類型。
⑨ 空調可以不固定其返回值,收到什么屬性執行什么命令。
⑩ 判斷AiTall返回的數據是否包含屬性名稱的數據。
? 解析數據內容,并賦值給變量。
? 返回成功給AiTall告訴它控制成功。
? AiTall MCP 更新數據,必須放在LOOP內執行。
4-5 燈的亮度調節
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
定義燈返回的屬性為亮度。
⑨ 必須返回亮度值
⑩ 判斷AiTall返回的數據是否包含屬性名稱的數據。
? 解析數據內容,并賦值給變量。
? 返回成功給AiTall告訴它控制成功。
? AiTall MCP 更新數據,必須放在LOOP內執行。
4-6 查詢溫濕度傳感器
完整程序
① 串口初始化
② 連接WIFI
③ 等待WIFI連接成功
④ 打印IP地址
⑤ 連接AiTall MCP
⑥ 當MCP連接成功后才開始注冊設備
⑦ 名稱 設備的名稱,推薦用英文。描述使用中文,決定了你用何種語音指令控制,注意不要與AiTall本身帶的設備名稱相同。
⑧ 對于設備屬性的描述
名稱:定義屬性的名稱,回傳的數據就會以這個名稱命名(命名一定要有意義)。
定義屬性名為查詢(query),查詢的值為枚舉中的一個,溫度、濕度和所有。
⑨ 必須要返回查詢這個屬性
⑩ 判斷AiTall返回的數據是否包含屬性名稱的數據。
? 判斷查詢的內容,將對應的內容通過回應數據返回給AiTall。
? 如果前面的任何一項都沒有則返回讀取失敗。
? AiTall MCP 更新數據,必須放在LOOP內執行。
4-7 多設備注冊應用
多設備與單設備應用是一樣的,只是把多個注冊設備編程塊拼在一起就好,但一定要注冊變量(參數)的處理,不要重復,特別是設備名稱及功能的定義不要太相似,要有明顯的區分,否則AI將無法識別或錯誤混亂。
下面我們以一個設備同時注冊LED和RGB燈帶為例學習其用法:
4-8 查看播報設備的消息
可以把設備上運行的變量值或提示字符串,組成新的消息內容放到一個參數中,讓AiTall去查詢播報,比如當一些條件達到時可以存放不同的消息在上面,給予一些動作或當前情況的提示。
五、教程例程源文件下載
注:源文件采用的是【齊護教育版Mixly 1.2.Q55】制作的,請打開文件前確使用此軟件并版本在55或以上!
【齊護AiTall小智AI_MCP_Arduino應用例程Mixly】