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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92549.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92549.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92549.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPO-SVM分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角

代码功能 该Matlab代码实现了一个基于CPO-SVM冠豪猪算法优化支持向量机的数据分类模型,结合了SHAP可解释性分析,CPO选择最佳的SVM参数c和g。 SVM模型有两个非常重要的参数C与gamma。其中 C是惩罚系数,即对误差的宽容度。c越高,说明…

Failed to restart docker.service: Unit docker.service is masked.

docker.service 被标记为 "masked" 意味着 systemd 已阻止该服务被启动或运行。这通常发生在 Docker Desktop 安装过程中,因为它使用自己的服务管理机制。以下是解决方法: 解决方案: 解除服务的 mask 状态: bash sudo systemctl unmask docker.service sudo sys…

2025 蓝桥杯C/C++国B 部分题解

P12836 [蓝桥杯 2025 国 B] 翻倍 题目描述 给定 nnn 个正整数 A1,A2,…,AnA_1, A_2, \ldots, A_nA1​,A2​,…,An​,每次操作可以选择任意一个数翻倍。 请输出让序列单调不下降,也就是每个数都不小于上一个数,最少需要操作多少次?…

os标准库

os标准库os包提供了操作系统函数,但和操作系统无关。 os包的接口规定为在所有操作系统中都是一致的。 设计为Unix风格的。1. 权限说明 os标准库有大量的文件操作,在创建文件等操作中,需要指的perm。 在go语言中perm是一个uint32类型 在go语言…

QtC++ 中使用 qtwebsocket 开源库实现基于websocket的本地服务开发详解

前言 当前实时通信功能越来越受到重视,无论是在线聊天、实时数据监控还是多人协作工具,都离不开高效、稳定的实时通信技术。WebSocket 作为一种全双工通信协议,为实时通信提供了良好的解决方案。而在 QtC 开发环境中,qtwebsocket …

小程序实时保存优化

背景。避免数据存储后丢失。要求实时保存。问题:保存时出现卡断,输入的内容会被抹除。问题原因。输入频繁速度块,会影响cpu处理速度。解决方案。用户停止输入500ms后开始保存,否则不保存。这里是保存方法:当500ms以内有…

国产化Excel处理组件Spire.XLS教程:使用 C# 将 DataTable 导出为 Excel 文件

在 C# 中将 DataTable 导出为 Excel 文件,是 .NET 开发中常见的任务,广泛应用于报表生成、日志导出、系统间数据共享等场景。通过使用独立的组件库,开发者可以轻松将 DataTable 数据写入 Excel 文件,并应用格式设置,生…

C语言学习笔记——编译和链接

目录1 C程序的执行流程2 翻译环境2.1 预编译2.2 编译2.2.1 词法分析2.2.2 语法分析2.2.3 语法分析2.3 汇编2.4 链接1 C程序的执行流程 用户编写好的C程序不能直接被计算机识别并执行,在执行前,要先将源文件和头文件进行编译,生成目标文件&am…

Flink-1.19.0源码详解9-ExecutionGraph生成-后篇

《Flink-1.19.0源码详解8-ExecutionGraph生成-前篇》前篇已从Flink集群端调度开始解析ExecutionGraph生成的源码,解析了ExecutionGraph的ExecutionJobVertex节点、ExecutionVertex节点、IntermediateResult数据集、IntermediateResultPartition数据集分区与封装Task…

19、阈值分割+blob分析

目录 一、仿射变换 1.变换矩阵 2.在矩阵的基础上添加各种变换形式 3.开始变换 4.计算变换矩阵参数 新算子 二、阈值分割 新算子 三、blob分析案例 1.焊点 2.石头 3.木材 4.车牌 5.骰子 新算子 一、仿射变换 1.变换矩阵 // 产生仿射变换矩阵hom_mat2d_identity…

破解 Django N+1 查询困境:使用 select_related 与 prefetch_related 实践指南

破解 Django N+1 查询困境:使用 select_related 与 prefetch_related 实践指南 开篇引入 数据库查询性能常常是 Web 应用性能瓶颈中的重中之重。Django ORM 以简洁直观的 API 层将 Python 代码与数据库打通,却也可能因默认的惰性加载带来 N+1 查询问题,造成不必要的网络往…

深入解析K-means聚类:从原理到调优实战

一、聚类分析与K-means的核心价值在无监督学习领域,聚类分析是探索数据内在结构的核心技术。​K-means算法因其简洁高效成为最广泛使用的聚类方法,在客户分群、图像压缩、生物信息学等领域应用广泛。其核心目标是将数据集划分为K个簇,实现“簇…

数据结构基础:哈希表、排序和查找算法

目录 一、哈希表 1.哈希算法 2.哈希碰撞 3.哈希表 4.哈希表相关操作 哈希表插入 哈希表遍历 元素查找 哈希表销毁 二、排序算法 1. 排序算法对比 2. 排序算法实现 冒泡排序 选择排序 插入排序 希尔排序 快速排序 三、查找算法 1. 查找算法对比 2. 查找算法实…

Linux内核参数调优:为K8s节点优化网络性能

在高并发微服务环境中,网络性能往往成为K8s集群的瓶颈。本文将深入探讨如何通过精细化的Linux内核参数调优,让你的K8s节点网络性能提升30%以上。引言:为什么网络调优如此重要?作为一名在生产环境中维护过数千节点K8s集群的运维工程…

全家桶” 战略如何重塑智能服务标准?无忧秘书 AI + 智脑 + 数字人协同模式的底层架构解析

在数字化浪潮的推动下,企业对智能化服务的需求日益增长。然而,单一的技术或产品往往难以满足复杂场景下的多样化需求。近年来,“全家桶”战略成为科技行业的一大趋势,通过整合多维度技术与服务,为企业提供全方位的支持…

前端后端之争?JavaScript和Java的特性与应用场景解析

一、名字相似,本质迥异 1.1 历史渊源与命名背景 在编程世界中,很少有两种语言像JavaScript和Java这样,仅仅因为名字的相似性就引发了无数初学者的困惑。然而,这种相似性纯属巧合——或者说是一种营销策略的产物。 JavaScript诞…

【文献分享】Machine learning models提供数据和代码

数据输入及前期信息:ChronoGauge 需要一个基因表达矩阵,其中包括来自多个时间进程 RNA-测序实验的观测数据,用于训练,并且需要有关每个基因在连续光照(LL)条件下经过光暗(LD)周期调整…

PHP MySQL Delete 操作详解

PHP MySQL Delete 操作详解 引言 在Web开发中,数据库是存储和管理数据的重要工具。PHP作为一种流行的服务器端脚本语言,与MySQL数据库结合使用可以高效地处理数据。本文将详细介绍PHP中如何使用DELETE语句删除MySQL数据库中的数据。 什么是DELETE语句&am…

计组-大/小端存放区别

在计算机系统中,大端存放(Big-Endian)和小端存放(Little-Endian)是两种不同的多字节数据存储方式,主要区别在于字节在内存中的排列顺序。理解它们对底层编程(如网络通信、二进制文件处理、硬件交…

线程同步相关知识

文章目录一、线程同步的核心目标二、线程安全的判定条件三、同步方式一:synchronized 关键字1. 同步代码块2. 同步方法四、锁的释放与不释放场景1. 自动释放锁的场景2. 不会释放锁的场景五、同步方式二:ReentrantLock(显式锁)1. 核…