一、阿里云后台配置添加 3 个标准属性1. 进入物模型编辑页物联网平台 → 对应产品 →功能定义→ 编辑物模型2. 逐个添加属性温度功能类型设备属性功能名称温度标识符Temperature数据类型浮点型float读写类型只读单位℃取值范围自定义即可湿度功能类型设备属性功能名称湿度标识符Humidity数据类型浮点型float读写类型只读单位% RH设备开关功能类型设备属性功能名称设备开关标识符DeviceSwitch数据类型布尔型bool读写类型可读写取值true 开启 /false 关闭3. 发布上线填写完成 →提交→发布物模型发布成功即自动生成标准上下行 JSON 通信格式二、ESP32 适配代码上报温湿度 接收云端开关指令#include WiFi.h #include AliyunIoTSDK.h #include PubSubClient.h // 填写自己信息 #define WIFI_SSID WiFi名 #define WIFI_PASS WiFi密码 #define PRODUCT_KEY 你的PK #define DEVICE_NAME 你的DN #define DEVICE_SECRET 你的DS #define REGION cn-shanghai WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); AliyunIoTSDK iotLink; // 模拟传感器数据 float temp 25.6; float humi 60.2; bool devSwitch false; // 云端下发指令回调接收开关控制 void iotMsgCallback(char* topic, byte* payload, unsigned int len) { String msg ; for(int i0;ilen;i) msg (char)payload[i]; Serial.println(云端下发数据msg); // 解析物模型设置属性指令修改本地开关状态 if(msg.indexOf(DeviceSwitch) ! -1) { if(msg.indexOf(true) ! -1) devSwitch true; if(msg.indexOf(false) ! -1) devSwitch false; Serial.print(本地设备开关状态); Serial.println(devSwitch?开启:关闭); } } void initWiFi() { WiFi.begin(WIFI_SSID,WIFI_PASS); while(WiFi.status()!WL_CONNECTED) delay(500); Serial.println(WiFi连接成功); } void setup() { Serial.begin(115200); initWiFi(); // 阿里云加密连接 iotLink.connect(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET,REGION); mqttClient.setCallback(iotMsgCallback); } // 上报温湿度只读属性 void uploadData() { // 标准物模型上报JSON格式 String json {\params\:{; json \Temperature\:String(temp),; json \Humidity\:String(humi),; json \DeviceSwitch\:(devSwitch?true:false); json }}; // 上报属性接口 iotLink.postProperty(mqttClient,json); Serial.println(上报物模型数据json); } void loop() { mqttClient.loop(); if(!mqttClient.connected()) { iotLink.connect(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET,REGION); } // 5秒上报一次数据 static unsigned int tmr0; if(millis()-tmr5000) { tmrmillis(); uploadData(); // 模拟数据波动 temp 0.1; humi - 0.05; } }三、上下行数据格式自动适配物模型1. 设备上行上报数据json{ params:{ Temperature:25.7, Humidity:60.1, DeviceSwitch:false } }2. 云端下行下发开关指令json{ method:thing.service.property.set, params:{ DeviceSwitch:true } }四、验收标准后台物模型页面成功显示 3 个自定义属性读写权限与类型完全匹配设备在线后云端实时刷新温湿度数值云端手动修改「设备开关」状态开发板串口同步收到指令并切换本地状态上下行报文完全遵循阿里云标准物模型协议可直接对接小程序 / APP 控制台
硬件入门 + 单片机基础(第17天)云端物模型自定义
一、阿里云后台配置添加 3 个标准属性1. 进入物模型编辑页物联网平台 → 对应产品 →功能定义→ 编辑物模型2. 逐个添加属性温度功能类型设备属性功能名称温度标识符Temperature数据类型浮点型float读写类型只读单位℃取值范围自定义即可湿度功能类型设备属性功能名称湿度标识符Humidity数据类型浮点型float读写类型只读单位% RH设备开关功能类型设备属性功能名称设备开关标识符DeviceSwitch数据类型布尔型bool读写类型可读写取值true 开启 /false 关闭3. 发布上线填写完成 →提交→发布物模型发布成功即自动生成标准上下行 JSON 通信格式二、ESP32 适配代码上报温湿度 接收云端开关指令#include WiFi.h #include AliyunIoTSDK.h #include PubSubClient.h // 填写自己信息 #define WIFI_SSID WiFi名 #define WIFI_PASS WiFi密码 #define PRODUCT_KEY 你的PK #define DEVICE_NAME 你的DN #define DEVICE_SECRET 你的DS #define REGION cn-shanghai WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); AliyunIoTSDK iotLink; // 模拟传感器数据 float temp 25.6; float humi 60.2; bool devSwitch false; // 云端下发指令回调接收开关控制 void iotMsgCallback(char* topic, byte* payload, unsigned int len) { String msg ; for(int i0;ilen;i) msg (char)payload[i]; Serial.println(云端下发数据msg); // 解析物模型设置属性指令修改本地开关状态 if(msg.indexOf(DeviceSwitch) ! -1) { if(msg.indexOf(true) ! -1) devSwitch true; if(msg.indexOf(false) ! -1) devSwitch false; Serial.print(本地设备开关状态); Serial.println(devSwitch?开启:关闭); } } void initWiFi() { WiFi.begin(WIFI_SSID,WIFI_PASS); while(WiFi.status()!WL_CONNECTED) delay(500); Serial.println(WiFi连接成功); } void setup() { Serial.begin(115200); initWiFi(); // 阿里云加密连接 iotLink.connect(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET,REGION); mqttClient.setCallback(iotMsgCallback); } // 上报温湿度只读属性 void uploadData() { // 标准物模型上报JSON格式 String json {\params\:{; json \Temperature\:String(temp),; json \Humidity\:String(humi),; json \DeviceSwitch\:(devSwitch?true:false); json }}; // 上报属性接口 iotLink.postProperty(mqttClient,json); Serial.println(上报物模型数据json); } void loop() { mqttClient.loop(); if(!mqttClient.connected()) { iotLink.connect(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET,REGION); } // 5秒上报一次数据 static unsigned int tmr0; if(millis()-tmr5000) { tmrmillis(); uploadData(); // 模拟数据波动 temp 0.1; humi - 0.05; } }三、上下行数据格式自动适配物模型1. 设备上行上报数据json{ params:{ Temperature:25.7, Humidity:60.1, DeviceSwitch:false } }2. 云端下行下发开关指令json{ method:thing.service.property.set, params:{ DeviceSwitch:true } }四、验收标准后台物模型页面成功显示 3 个自定义属性读写权限与类型完全匹配设备在线后云端实时刷新温湿度数值云端手动修改「设备开关」状态开发板串口同步收到指令并切换本地状态上下行报文完全遵循阿里云标准物模型协议可直接对接小程序 / APP 控制台