最详细、最全面的连接阿里云物联网
(1)登录进入
1、浏览器搜索阿里云

2、点击阿里云界面

3、点击控制台

4、登录

输入账号密码
(2)物联网平台
1.点击左上角三横线

2.弹出界面找到物联网平台

3.找到公共实例

4.点击公共实例界面

点击后就可以进入物联网平台。
5.创建产品
1)点击设备管理
在左边是菜单栏,点击设备管理。

将会用到产品、设备、设备模拟器。
(2)点击创建产品
点击设备管理下面的产品,进入产品页面。

进入产品页面。


还需要填写所属品类,这是为了推广后面的手机APP用的,可以不用,但在这里必须填写,可以随便选一个。
然后点击确认。
6.创建设备
设备可以理解为具体的传感器。
最好填写一个符合实际、可以记住的名称。
添加产品点击确定后就会弹出下面这个界面,可以直接点击添加设备(这是添加设备的两种方法之一)。

添加设备有两种方法,接着产品添加完成后添加,也可以在弹出扇面这个界面后不管,直接点击左边菜单栏里面的的设备按钮。

在弹出的界面里选择产品。
也就是这个传感器(设备)是属于哪一个产品里面的。也就是进行归类。

如果是已经进行过操作,在下拉列表里会看见许多产品,一定要注意这个设备是归属于哪一个产品,要注意点击选择。



但是需要注意,设备名称,也就是DeviceName,这个需要记住,而且最好有意义。
点击确认后,弹出下面的界面就可以了。

点击完成。
7.添加自定义功能


注意:这里的未激活是指没有设备连上,而不是说注册未激活,不必着急。
1)点击产品

在左边菜单栏里点击产品,然后到右边找到刚刚添加的产品(这里是“温湿度显示”),点击名字就可以弹出一个对话框。

点击选择功能定义即可。

点击编辑草稿。

功能就是指这个设备将来有什么用,能完成哪些作用。

点击添加自定义功能。


可以根据需要再添加一个功能。
比如温湿度传感器除了温度意外还有湿度,所以再点击添加自定义功能。


添加的第二个功能——采集湿度信息。


最后一定要点击发布上线。

发布上线并没有完成,一定还要点击右上角发布(相当于发布上线是填写完成并报告,最后完成后有很多功能,就算只填写了一个,但是在后台也可以看成需要选择,所以还要在这里面选择一个去发布)。


(3)平台内测试
回到设备管理菜单栏。
1)点击设备模拟器

2)选择产品

选择调试产品名称和设备。



3)查看


【2】MQTT.fx、MQTTX连接云物联网调试
(1)连接
1】点击操作里面的查看

2】MQTT参数

3】点击查看MQTT参数
这是一个悬浮窗口,可以不用复制,直接在上面复制相关数据到MQTT.fx
4】打开MQTT.fx
因为云里面的MQTT参数是一个悬浮窗口,所以不用关闭,点击MQTT.fx后,注意把对应的数据复制粘贴就可以了。
5】点击连接

右边变成绿色就表示连上阿里云了。
6】确认

这个时候回到设备可以在设备列表里看到在线状态。
(2)使用
1】找到产品


2】进入topic
设备管理→产品→(右边)topic类列表

因为是功能定义里面的数据传输,所以选择物模型通信。

复制topic
/sys/k0s88ZAzwWj/${deviceName}/thing/event/property/post
注意这里面有一个变量。
${deviceName}——这是一个变量。
/sys/k0s88wWeQEU/humiture/thing/event/property/post
把变量修改为设备名。
设备名可以在设备信息里找到。

3】通信传输

在MQTT.fx里输入js语句:
{
"method":"thing.event.property.post",
"params":{
"hum":60,
"temp":20
}
}
回到设备里查看


就可以看到上传的数据了。
也可以在日志服务里查看
1)点击日志服务

2)点击查看

3)前往查看
可以发现,日志里的内容就是MQTT.fx发布的消息。
【3】ESP32连接物联网云
(1)ESP32
ESP32调试成功,可以发布数据,但是后面的ESP8266不可以,还需要调整ESP8266的代码。
下面是完整代码。
#include<WiFi.h>
#include<PubSubClient.h>
const char* ssid ="@Ruijie-sAF11";//wifi名
const char*password ="luo200408";//wifi密码
const char*mqttHostUrl = "iot-06z00by0c4a5y2i.mqtt.iothub.aliyuncs.com";//阿里云服务器域名
const int mqttPort =1883;//端口号
const char*mqttUser = "temp&k0s88C6ZIY7";//username
const char*mqttPassword = "b1d86cce3d0e07fb98b72f4bfedfcc475cf5d4293b601913fe8f6ee29a0aeb90";//密钥
const char*clientId = "k0s88C6ZIY7.temp|securemode=2,signmethod=hmacsha256,timestamp=1707613008198|" ;//连接id
#define PRODUCT_KEY "k0s88C6ZIY7"
#define DEVICE_NAME "temp"
//下面组包用
#define ALINK_BODY_FORMAT "{\"id\":\"level\",\"version\":\"1.0\",\"method\":\"thing.event.property.post\",\"params\":%s}"
#define ALINK_TOPIC_PROP_POST "/sys/"PRODUCT_KEY"/"DEVICE_NAME"/thing/event/property/post"
unsigned long lastMs = 0;
WiFiClient espClient;
PubSubClient client(espClient);
//连接wifi
void wifiInit()
{
WiFi.begin(ssid,password);
while (WiFi.status()!= WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
//mqtt连接
void mqttCheckConnect()
{
client.setServer(mqttHostUrl,mqttPort);
while (!client.connected()){
Serial.println("Connecting to MQTT...");
if (client.connect(clientId,mqttUser, mqttPassword )) {
Serial.println("connected");
}else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
}
//组数据帧并发送
void mqttIntervalPost()
{
char param[32];
char jsonBuf[128];
sprintf(param, "{\"num8\":%d}", 9);
sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
Serial.println(jsonBuf);
client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
}
void setup() {
Serial.begin(115200);
wifiInit();//连接wifi
mqttCheckConnect();//连接阿里云
}
void loop() {
client.loop();
if (millis() - lastMs >= 5000)
{//定时检查或上报数据
lastMs = millis();
mqttCheckConnect();
// 上报
mqttIntervalPost();
}
}
注意,如果只是用上面的代码,是不能成功的,还需要需改一些地方。
首先找到首选项里面的设置。
然后到相应找到C:\Users\Administrator\Documents\我的文档\Documents\Arduino\libraries。

在libraries文件夹里找到PubSubClient文件夹。

在PubSubClient文件夹里找到src文件夹。

在src文件夹里找到PubSubClient.h文件并打开。
修改相应参数。

修改两个宏:
MQTT_MAX_PACKET_SIZE 1024
MQTT_KEEPALIVE 60
在云平台里就可以看见发布的数据了。


(2)ESP8266