将ESP8266通过MQTT协议链接阿里云IoT物联网平台

1 申请阿里云IoT平台

登录阿里云,申请开通IoT平台。https://iot.console.aliyun.com/lk/summary

1.1 注册产品和设备

在【设备管理】-【产品】中创建产品。


创建产品

在【设备管理】-【设备】中创建设备,其中DeviceName可以自动生成。


创建设备

1.2 添加产品的属性

在【设备管理】-【产品】-【功能定义】


功能定义

在自定义功能中添加属性。


添加属性

1.3 获取产品和设备信息

在【设备管理】-【设备】-【设备详情】可以找到DeviceName,DeviceSecret,ProductKey等信息,后续在接入时会需要。


设备详情

如果需要ProductSecret可以在【设备管理】-【产品】-【产品详情】中找到。

2 ESP8266设备端使用arduino开发

实现需要准备好ESP8266的开发板和Arduino开发环境,详细参考另一篇文章。https://www.jianshu.com/p/d236f8983871

2.1 获取MQTT的sample

事先在【Tools】- 【Manage Libraries】中安装PubSubClient库。
可以参考【File】-【Samples】-【PubSubClient】中的mqtt-esp8266例子。

2.2 支持MQTT协议

导入PubSubClient库,实现MQTT协议的传输。
修改例子中的Server地址,端口,用户名,以及命令的BODY和TOPIC。

#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
#define MQTT_PORT         1883
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY

#define ALINK_BODY_FORMAT         "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"thing.event.property.post\",\"params\":%s}"
#define ALINK_TOPIC_PROP_POST     "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"

2.3 集成阿里云IoT接入鉴权函数

参考MQTT连接签名示例,推荐直接引用里面的函数实现鉴权过程。
https://help.aliyun.com/document_detail/116333.html?spm=a2c4g.11186623.6.652.d9f63f86nJPMqY
参考链接的响应码,如果error为-4,就是鉴权失败。

iotx_dev_meta_info_t meta_info;
iotx_sign_mqtt_t sign_mqtt;

memset(&meta_info, 0, sizeof(iotx_dev_meta_info_t));
memcpy(meta_info.product_key, PRODUCT_KEY, strlen(PRODUCT_KEY));
memcpy(meta_info.product_secret, PRODUCT_SECRET, strlen(PRODUCT_SECRET));
memcpy(meta_info.device_name, DEVICE_NAME, strlen(DEVICE_NAME));
memcpy(meta_info.device_secret, DEVICE_SECRET, strlen(DEVICE_SECRET));

IOT_Sign_MQTT(IOTX_CLOUD_REGION_SHANGHAI, &meta_info, &sign_mqtt);

2.4 发送设备状态和云端设置状态命令的实现

sprintf(param, "{\"idle\":%d}", digitalRead(SENSOR_PIN));
sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
boolean bRet = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
Serial.println(bRet ? "OK" : "NG");

事先在【Tools】- 【Manage Libraries】中安装ArduinoJson库。
导入ArduinoJson库,实现Json串的解析。

StaticJsonDocument<MQTT_MAX_PACKET_SIZE> doc;
DeserializationError error = deserializeJson(doc, (char *)payload);  

if (!error) //检查反序列化是否成功
{
    //读取json节点
    Serial.println(doc["id"].as<char*>());
    boolean isIdle = doc["params"]["idle"];
    Serial.println(isIdle);
}

3 调试

3.1 云端调试

利用阿里云的在线调试功能,可以接收设备Post的信息,也可以发送set命令给设备。
在【监控运维】-【在线调试】中选择设备后,选择调试的功能和方法,修改值发送指令给设备。

云端调试set命令

3.2 设备端调试

利用Arduino中的Serial Monitor监控串口的调试信息输出。

ESP8266相关文章阅读

《利用USB转TTL链接mini ESP8266进行开发和调试》 https://www.jianshu.com/p/2207a44dedc5
《ESP8266在线升级OTA的Arduino IDE实现方法之WebServer》 https://www.jianshu.com/p/b54b18f56d6a
《ESP8266串口数据错误不准确问题的解决》https://www.jianshu.com/p/7ddefcfc2acd
《如何利用Arduino IDE开发ESP8266程序?》https://www.jianshu.com/p/d236f8983871
《将ESP8266通过MQTT协议链接阿里云IoT物联网平台》 https://www.jianshu.com/p/4d6e216c2280

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342