齐护机器人小智AI_MCP图形化编程控制Arduino_ESP32
齐护机器人小智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】