齐护机器人小智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】

相关推荐
普蓝机器人21 分钟前
果蔬采摘机器人:自动驾驶融合视觉识别,精准定位,高效作业
人工智能·机器人·自动驾驶
普蓝机器人23 分钟前
普蓝自研AutoTrack-4X导航套件平台适配高校机器人实操应用
人工智能·科技·机器人·三维仿真导航·移动机器人底盘
makerjack0012 小时前
Java中使用Spring Boot+Ollama实现本地AI的MCP接入
java·人工智能·spring boot
陈敬雷-充电了么-CEO兼CTO2 小时前
深度拆解判别式推荐大模型RankGPT!生成式精排落地提速94.8%,冷启动效果飙升,还解决了传统推荐3大痛点
大数据·人工智能·机器学习·chatgpt·大模型·推荐算法·agi
stbomei2 小时前
生成式 AI 的 “魔法”:以 GPT 为例,拆解大语言模型(LLM)的训练与推理过程
人工智能
有才不一定有德2 小时前
多代理系统架构:Supervisor 与 Swarm 架构详解
人工智能·chatgpt·架构·系统架构
计算机sci论文精选4 小时前
CVPR 强化学习模块深度分析:连多项式不等式+自驾规划
人工智能·深度学习·机器学习·计算机视觉·机器人·强化学习·cvpr
华略创新5 小时前
用KPI导航数字化转型:制造企业如何科学评估系统上线成效
人工智能·制造·crm·管理系统·erp·软件·mes
嘀咕博客5 小时前
Komo Searc-AI驱动的搜索引擎
人工智能·搜索引擎·ai工具
小马过河R6 小时前
GPT-5原理
人工智能·gpt·深度学习·语言模型·embedding