ESP-01S通过AT指令上报数据到阿里云物模型

ESP-01S使用AT指令上报数据到阿里云物模型

上篇文章介绍了如何用AT指令连接阿里云并进行通信:https://blog.youkuaiyun.com/weixin_46251230/article/details/128995530

但最终需要将传感器数据上报到云平台显示,所以需要建立阿里云物模型

阿里云平台建立物模型

在产品的功能定义中,点击编辑草稿,新建物模型

在这里插入图片描述

可以选择添加标准功能,也可以自己定义

在这里插入图片描述

选择添加标准功能,这些是云平台已经生成好的物模型,可以直接使用

在这里插入图片描述

选择自定义,可自己设置模型的参数,例如数据类型和取值范围等

在这里插入图片描述

设置完成则生成以下物模型,最后记得点击发布上线,这里生成的只是草稿,要发布后才能在设备中使用

在这里插入图片描述

ESP-01S上报温湿度数据到物模型

首先获取物模型属性上报Topic

在这里插入图片描述

在设备已经显示在线的前提下,发送下面AT指令,上报物模型数据

注意:ESP8266-1是设备号,要改为自己的设备,id可以随便写,params后面是标识符和对应值,改变值即可上传不同数据

继电器:

AT+MQTTPUB=0,"/sys/hiyfcAbCXmq/ESP8266-1/thing/event/property/post","{\"method\":\"thing.event.property.post\"\,\"id\":\"1231\"\,\"params\":{\"Relay\":0}\,\"version\":\"1.0.0\"}",1,0

温度:

AT+MQTTPUB=0,"/sys/hiyfcAbCXmq/ESP8266-1/thing/event/property/post","{\"method\":\"thing.event.property.post\"\,\"id\":\"1234\"\,\"params\":{\"temperature\":20}\,\"version\":\"1.0.0\"}",1,0

湿度:

AT+MQTTPUB=0,"/sys/hiyfcAbCXmq/ESP8266-1/thing/event/property/post","{\"method\":\"thing.event.property.post\"\,\"id\":\"1234\"\,\"params\":{\"Humidity\":88}\,\"version\":\"1.0.0\"}",1,0

在这里插入图片描述

JSON格式物模型属性上报格式
{
  "method": "thing.event.property.post",
  "id": "162277852",
  "params": {
      "Relay": 1,
      "Humidity": 75.6,
      "temperature": 18
    },
    "version": "1.0.0"
}

JSON格式的可以在MQTTX软件中发送物模型数据

回到阿里云可以看到物模型数据已经上传成功,要打开实时刷新,数据便会自动更新,否则要刷新网页

在这里插入图片描述

阿里云下发物模型数据到ESP-01S

复制订阅权限的Topic

在这里插入图片描述

ESP-01S发送AT指令,订阅该Topic

AT+MQTTSUB=0,"/sys/hiyfcAbCXmq/ESP8266-1/thing/service/property/set",1

在这里插入图片描述

在阿里云平台的在线调试页面设置物模型参数,点击设置进行数据下发

在这里插入图片描述

点击设置后,ESP-01S会收到数据,物模型数据被改变

在这里插入图片描述

<think>好的,我现在需要解决用户的问题:如何通过AT命令使用MQTT协议发布消息到阿里云IoT平台的设备属性上报主题。首先,我得回忆一下阿里云物联网平台的相关知识,以及MQTT协议的基本操作步骤。 根据用户提供的引用内容,特别是引用[3],里面提到了ClientId的格式,包含securemode、signmethod、timestamp等信息。这可能与设备的鉴权有关。阿里云物联网平台使用MQTT协议,设备需要先进行连接认证,然后才能发布消息。用户提到想发送消息到属性上报的主题,所以需要确定正确的主题名称。 接下来,我需要确认阿里云IoT平台设备属性上报的Topic格式。通常,阿里云的主题结构是固定的,比如`/sys/${productKey}/${deviceKey}/thing/event/property/post`,其中productKey和deviceKey需要替换为具体设备的标识符。所以,用户需要先获取自己设备的这些信息。 然后是关于AT命令的部分。用户可能使用的是支持MQTT的模组,比如ESP8266,通过AT指令集进行操作。根据引用[2],ESP8266可以通过MQTT连接阿里云,所以可能需要发送一系列AT命令来建立连接、设置参数,然后发布消息。 步骤可能如下: 1. 设置Wi-Fi连接,确保设备联网。 2. 配置MQTT连接参数,包括ClientID、用户名、密码、服务器地址和端口。 3. 连接到阿里云MQTT服务器。 4. 发布消息到属性上报的Topic,消息内容需要符合阿里云数据格式,通常是JSON结构。 需要特别注意鉴权信息的生成,比如密码可能由设备密钥、时间戳等通过HMAC-SHA1计算得到,如引用[3]中的signmethod=hmacsha1。这部分可能需要用户在发送AT命令前先计算好密码,再填入参数中。 另外,引用[1]中提到使用mqtt.fx测试阿里云平台的消息收发,这说明用户可能需要先在平台上配置好产品和设备,确保Topic权限正确,设备具有发布权限到属性上报的Topic。 可能遇到的难点包括AT命令的格式是否正确,参数是否正确填写,尤其是ClientID和密码的生成是否正确。此外,消息内容需要符合阿里云模型的定义,否则可能导致平台解析失败。 总结步骤应该是:配置MQTT参数,连接服务器,发布消息到指定Topic。需要验证每个步骤的AT命令是否成功执行,比如收到OK响应。如果连接失败,需要检查参数和网络状态;如果发布失败,检查Topic名称和消息格式。</think>要通过AT命令使用MQTT协议向阿里云IoT平台发布设备属性上报消息,需按照以下步骤操作: --- ### 一、配置设备连接参数 1. **生成MQTT连接参数** - **ClientID**:格式为`${deviceId}|securemode=3,signmethod=hmacsha1,timestamp=${timestamp}|`,其中: - `securemode=3`表示安全模式为TCP直连+对称加密 - `signmethod=hmacsha1`指定签名算法 - `timestamp`为13位Unix时间戳,例如`1700000000000` - **用户名**:由设备名称(`${deviceKey}`)、产品标识(`${productKey}`)和平台域名组成,例如`${deviceKey}&${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com` - **密码**:通过设备密钥(`deviceSecret`)和签名参数计算HMAC-SHA1值,再Base64编码得到[^3]。 2. **设置MQTT服务器地址** 阿里云MQTT服务器地址为`${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com`,端口为`1883`[^1]。 --- ### 二、发送AT指令流程 1. **连接Wi-Fi网络** ```bash AT+CWJAP="SSID","password" ``` 2. **配置MQTT参数** ```bash AT+MCONFIG="ClientID","Username","Password" ``` 3. **连接阿里云服务器** ```bash AT+MCONNECT=1,120 ``` 4. **发布属性上报消息** - **Topic**:`/sys/${productKey}/${deviceKey}/thing/event/property/post` - **Payload**:需符合阿里云模型JSON格式,例如: ```json { "id": "123", "params": {"temperature": 25}, "method": "thing.event.property.post" } ``` - **发送指令**: ```bash AT+MPUB="/sys/a1B2c3d4e5/device1/thing/event/property/post",1,1,"{\"id\":\"123\",\"params\":{\"temperature\":25},\"method\":\"thing.event.property.post\"}" ``` --- ### 三、验证与调试 1. **订阅调试** 使用mqtt.fx订阅设备属性上报Topic,验证消息是否成功发送[^1]。 2. **错误排查** - 检查AT指令参数格式是否正确(尤其注意转义字符`\"`) - 确认设备三元组(`productKey`、`deviceKey`、`deviceSecret`)输入无误 - 通过`AT+MLOG?`查看MQTT日志[^2] --- ### 示例完整流程 ```bash AT+CWJAP="MyWiFi","12345678" AT+MCONFIG="device1|securemode=3,signmethod=hmacsha1|","device1&a1B2c3d4e5","xxxxxxxxxxxx" AT+MCONNECT=1,120 AT+MPUB="/sys/a1B2c3d4e5/device1/thing/event/property/post",1,1,"{\"id\":\"123\",\"params\":{\"temperature\":25}}" ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值