NodeMCU第一次接入阿里物联网记录贴-Arduino中文社区 - Powered by Discuz! Archiver

ws9528 发表于 2019-7-31 09:49

NodeMCU第一次接入阿里物联网记录贴

本帖最后由 ws9528 于 2019-8-1 17:52 编辑

此文献给小白中的小白。



阿里物联网接入教程在这里:https://help.aliyun.com/document_detail/104070.html?spm=5176.11065259.1996646101.searchclickresult.67405095dOx5Tz

所用硬件:NodeMCU   我购买的地址是:https://detail.tmall.com/item.htm?id=535433433157&spm=a1z09.2.0.0.1c722e8dBFt81y&_u=v2krn7s5755
所用软件:   android IDE 1.8.9                        下载地址:https://dl.google.com/dl/android/studio/install/3.4.1.0/android-studio-ide-183.5522156-windows.exe
实验目的:通过 NodeMCU 接入阿里物联网平台来控制NodeMCU上的蓝色LED灯打开或关闭       这个蓝色的LED灯用的引脚是D4




根据这个教程,前4步,所有同学应当没有任何问题。
第五步这里在 Arduino IDE 里面调试编译的时候就会有很多问题。我现在正在研究,先解决了这个问题。
       把教程里的代码复制到Arduino IDE 进行编译的时候会出现提示缺少下面两个库,我已经给出了下载地址,成功解决这个问题
               /* 依赖 PubSubClient 2.4.0 */
                  #include <PubSubClient.h>         //█████ 注意添加引用这个库文件   库在IDE库里找
               /* 依赖 ArduinoJson 5.13.4 */
                  #include <ArduinoJson.h>          //█████ 注意添加引用这个库文件   库在IDE库里找


现在还有个问题就是
我在编译的时候还会报 'class PubSubClient' has no member named 'setServer'错误   正在联系阿里工程师解决。
这里再给大家提个小技巧如果搞不定就到https://selfservice.console.aliyun.com/ticket/category/iot/today提交人工工单,阿里工程师会帮你处理解决问题的,比在网上乱查,乱问来的准确。


ws9528 发表于 2019-11-30 18:15

谁能比我白痴?   花了整整一下午时间把 整个代码翻译了一边把重点的地方都有说明。这次应当没有啥问题了吧。


//应用库文件
#include <ESP8266WiFi.h>          // 自带库不用安装
#include <PubSubClient.h>         // 在项目-》加载库中 查找PubSubClient   向下拉找到 PubSubClient by Nick O`Leary进行安装
#include <ArduinoJson.h>          // 在项目-》加载库中 查找ArduinoJson    第一个就是 ArduinoJson by Benoit Blanchon 进行安装

#define LED_PIN    D4

/* 修改1 开始------------------------------------------ */
#define WIFI_SSID   "HuiKeDianNaoFuWu"      // WIFI的名称
#define WIFI_PASSWD   "13488214252"         // WIFI的密码
/* 修改1 结束------------------------------------------ */

/* 修改2 开始------------------------------------------ */
#define PRODUCT_KEY       "a1cBSuDEqL0"                        // 产品密钥所在位置 阿里云->物联网平台->设备管理->产品->ProductKey
#define DEVICE_NAME       "LED_She_Bei"                        // 设备名称所在位置 阿里云->物联网平台->设备管理->设备->DeviceName/备注名称 下面那个名字
#define DEVICE_SECRET   "r0457Kve61oDC5EsbCS0O4iXpWrXA0E0"   // 设备密钥所在位置 阿里云->物联网平台->设备管理->设备->查看->右上角 DeviceSecret
#define REGION_ID         "cn-shanghai"                        // 地区ID   不需要修改
/* 修改2 结束------------------------------------------ */

#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"   // MQTT_服务器
#define MQTT_PORT         1883                                                    // MQTT_端口
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY                           // MQTT_用户名称   这是由 DEVICE_NAME "&" PRODUCT_KEY 这两个参数组成的,这两个参数在上面有。

/* 修改3 ------------------------------------------ */
#define CLIENT_ID    "LED_She_Bei|securemode=3,signmethod=hmacsha1,timestamp=1575099760|"
//参数具体说明在这里 https://help.aliyun.com/document_detail/86706.html?spm=a2c4g.11174283.2.44.2b351668mRnKcK
// CLIENT_ID 是由三部分组成的,分别clientIdsecuremodesignmethod
//clientId    为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。
//securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2。
//signmethod为算法类型,支持hmacmd5和hmacsha1
#define MQTT_PASSWD       "65E493A5E6AABBAF1DAE7EDD6A4C2ACABA08BA66"
//MQTT_PASSWD 是用一个工具算出来的 下载地址为:https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.70045800E7MImP&file=88413c66e471bec826257781969d1bc7.zip
/* 修改3 end--------------------------------------- */

#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"                                  // 链接主题文章

unsigned long Zui_Hou_Hao_Miao = 0;// 最后毫秒这个是上次执行动作的时间
WiFiClient espClient;                // 实例化 WIFIClient 为 esp客户端
PubSubClientclient(espClient);   // 发布一个子客户端 客户端(esp客户端)



void setup() { //██████████████████████████████████████████████

pinMode(LED_PIN,OUTPUT);   // 管脚模式(LED管脚,输入);
Serial.begin(115200);       // 串口.启动(115200);
Serial.println("演示开始");// 串口.打印(WiFi.本地IP);
Lian_Jie__WIFI();         // 连接_WIFI

}

void loop() { //██████████████████████████████████████████████

//这段代码的作用是:每5秒 检查一下MQTT连接情况 并 上服消息
if (millis() - Zui_Hou_Hao_Miao >= 5000){   // 如果 当前毫秒 减去 最后毫秒 大于等于 5秒
    Zui_Hou_Hao_Miao = millis();                // 最后毫秒 等于 当前毫秒

    Jian_Cha__MQTT_Lian_Jie();                  // 检查_MQTT_连接
    Shang_Bao_Xiao_Xi();                        // 上报消息

}

client.loop();                              // 客户.循环();


//这段代码的作用是:检查引脚当前情况
if (digitalRead(LED_PIN) == HIGH) {         // 如果 (数字读取(LED引脚 等于 高)
    Serial.println("检测到引脚为 高 电平!");      // 串口.打印(检测到引脚为高电平!);
    delay(2000);                              // 延时(2秒)
} else if (digitalRead(LED_PIN) == LOW) {   // 如果 (数字读取(LED引脚 等于 高)
    Serial.println("检测到引脚为 低 电平!");      // 串口.打印(检测到引脚为高电平!);
    delay(2000);                              // 延时(2秒)
} else {                                    // 否则
    Serial.println("未检测到引脚情况");         // 串口.打印(未检测到引脚情况);
    delay(2000);                              // 延时(2秒)
}

}















void Lian_Jie__WIFI() {                     // 连接_WIFI
WiFi.mode(WIFI_STA);                      // WIFI.模式(站点)
WiFi.begin(WIFI_SSID, WIFI_PASSWD);       // WiFi.开始(WIFI_名称,WIFI_密码)
while (WiFi.status() != WL_CONNECTED){// 循环判断 (WIFI.状态 不等于 连接)
    delay(1000);                            // 延时(1秒)
    Serial.println("WiFi未连接");            // 串口.打印("WiFi未连接");
}                                       // 如果 (WIFI.状态 等于 连接) 则执行下面的语句
Serial.println("连接到AP");                // 串口.打印("连接到AP");
Serial.println("IP地址: ");                // 串口.打印("IP地址: ");
Serial.println(WiFi.localIP());         // 串口.打印(WiFi.本地IP);

client.setServer(MQTT_SERVER, MQTT_PORT); // 客户端.设置服务器(MQTT_服务器,MQTT_端口)这两个变量上面有
client.setCallback(Hui_Diao);             // 客户端.设置回调(回调)
}


void Jian_Cha__MQTT_Lian_Jie() {                               // 检查_MQTT_连接
while (!client.connected()) {                              // 循环判断(不等于 客户端.连接)
    Serial.println("正在连接到MQTT服务器。。。");               // 串口.打印("正在连接到MQTT服务器。。。");
    if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)){// 如果(客户端.连接(客户端ID,MQTT_用户名称,MQTT_密码))//MQTT连接服务器所需要的三个参数具体说明在这里 https://help.aliyun.com/document_detail/86706.html?spm=a2c4g.11174283.2.44.2b351668mRnKcK
      Serial.println("MQTT已连接!");                            // 串口.打印("MQTT已连接!");
    } else {                                                    // 否则
      Serial.print("MQTT连接错误:");                            // 串口.打印("MQTT连接错误:");
      Serial.println(client.state());                           // 串口.打印(客户端.状态);
      delay(5000);                                              // 延时(5秒)
    }
}
}


void Hui_Diao(char *topic, byte *payload, unsigned int length) { // 回调
Serial.print("消息已到达 [");                                 // 串口.打印("消息已到达 [");
Serial.print(topic);                                           // 串口.打印(话题);
Serial.print("] ");                                          // 串口.打印("] ");
payload = '\0';                                        // 有效载荷[长度] 等于 '\0'
Serial.println((char *)payload);                               // 串口.打印(有效载荷);
}


void Shang_Bao_Xiao_Xi() {                                       // 上报消息
char param;                                                // 声明一个char变量 名称为 参数 字符数组 长度为32字节      char类型为一个字节          char*是变量,值可以改变, char[]是常量,值不能改变。char[]对应的内存区域总是可写,char*指向的区域有时可写,有时只读
char jsonBuf;                                             // 声明一个char变量 名称为 JSONBUF格式 字符数组 长度为128字节      char类型为一个字节

sprintf(param, "{\"引脚状态\":%d}", digitalRead(LED_PIN));      // 把格式数据写成串(参数,"{\"引脚状态\":%d}",读取引脚(LED_引脚))
sprintf(jsonBuf, ALINK_BODY_FORMAT, param);                  // 把格式数据写成串(JSONBUF格式,链接体格式,参数)

Serial.println(jsonBuf);                                       // 串口.打印(JSONBUF格式);
boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);    // 声明一个布尔型变量 名字为 D 等于 客户端.发布(链接主题文章,JSONBUF格式)
Serial.println("出版说明: 0=失败 ; 1=成功");                     // 串口.打印("出版:0=失败;1=成功");
Serial.println("出版情况: " + String(d));
}

ws9528 发表于 2019-8-7 15:09

#include <ESP8266WiFi.h>
#include <PubSubClient.h>   /* 依赖 PubSubClient 2.4.0 */            //████████加载这个库文件在项目-》加载库中 查找PubSubClient   向下翻一页
#include <ArduinoJson.h>   /* 依赖 ArduinoJson 5.13.4 */             //████████加载这个库文件在项目-》加载库中 查找ArduinoJson

#define SENSOR_PIN    D4

/* 连接您的WIFI SSID和密码 */
#define WIFI_SSID         "HuiKeDianNaoFuWu"                         //████████这里需要修改
#define WIFI_PASSWD       "13488214259"                              //████████这里需要修改

/* 设备证书信息*/
#define PRODUCT_KEY       "a1NXVscyN7F"                              //████████这里需要修改
#define DEVICE_NAME       "NodeMCU_CeShi"                            //████████这里需要修改
#define DEVICE_SECRET   "kZvditUJbrvoWouVjZMO88hcWpwpH1Jx"         //████████这里需要修改
#define REGION_ID         "cn-shanghai"                              //████████这里需要修改

/* 线上环境域名和端口号,不需要改 */
#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
#define MQTT_PORT         1883
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY               //MQTT_用户名

#define CLIENT_ID         "ws9528|securemode=3,timestamp=1564888547518,signmethod=hmacsha1|"//客户端的_ID ████████这里需要修改    生成工具在这里http://makertools.cn
#define MQTT_PASSWD       "1215415B59497C78C0C0919648D2DA9817853618"                        //MQTT_密码 ████████这里需要修改


#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"

unsigned long lastMs = 0;//最后一次报告时间
WiFiClient espClient;
PubSubClientclient(espClient);//发布子客户 客户机(ESP客户)

void setup() {
pinMode(SENSOR_PIN,INPUT);

Serial.begin(115200);         /*初始化串行以进行调试*/
Serial.println("演示开始");//演示开始

wifiInit();//链接WIFI过程
}



void loop() {

if (millis() - lastMs >= 5000){
    lastMs = millis();
    mqttCheckConnect();   //mqtt检查连接

    mqttIntervalPost();   // 上报消息心跳周期 MQTT间隔岗位   上报消息心跳周期
}

client.loop();//客户端循环

if (digitalRead(SENSOR_PIN) == HIGH) {
    Serial.println("高电平检测到运动!");//检测到运动!
    delay(2000);
}
else {
    Serial.println("低电平没有动作!");//没有动作!
    delay(2000);
}

}








































void mqttCheckConnect()//MQTT检查连接
{
while (!client.connected()){                                       //如果客户机没有链接则
    Serial.println("正在连接到MQTT服务器…");                            //正在连接到MQTT服务器…
    if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD))    {   //如果客户端用 客户端_ID   MQTT户用名和MQTT密码 连接服务器成功
      Serial.println("已连接MQTT!");                                    //MQTT已连接!
    }
    else{                                                               //否则显示MQTT连接错误
      Serial.print("MQTT连接错误:");                                     //MQTT连接错误:
      Serial.println(client.state());                                 //显示客户端状态
      delay(5000);
    }
}
}



void callback(char *topic, byte *payload, unsigned int length)//回拨
{
Serial.print("消息已到达[");
Serial.print(topic);
Serial.print("] ");
payload = '\0';
Serial.println((char *)payload);
}





void mqttIntervalPost(){//上报消息心跳周期   MQTT间隔岗位
char param;
char jsonBuf;

sprintf(param, "{\"idle\":%d}", digitalRead(13));   //把格式数据写成串
sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
Serial.println(jsonBuf);
boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
Serial.print("出版:0 失败;1成功");
Serial.println(d);
}


void wifiInit(){//链接WIFI过程
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
while (WiFi.status() != WL_CONNECTED){
    delay(1000);
    Serial.println("WiFi未连接");
}

Serial.println("连接到AP");
Serial.println("IP地址: ");
Serial.println(WiFi.localIP());


Serial.print("ESP客户[");


client.setServer(MQTT_SERVER, MQTT_PORT);   /* 连接WiFi之后,连接MQTT服务器 */
client.setCallback(callback);
}

ws9528 发表于 2019-8-7 15:11

用这个代码可以直接连接上阿里云,连接上后在https://iot.console.aliyun.com/这里可以看到连接状态为绿色,连接成功了。

但是如何进行数据交换还没搞明白。如控制台发送指令1   板子这边是接收到了消息,但是针脚好像没有动作,正在研究。有看到的朋友给指导一下。

ws9528 发表于 2019-11-30 18:15

//应用库文件
#include <ESP8266WiFi.h>          // 自带库不用安装
#include <PubSubClient.h>         // 在项目-》加载库中 查找PubSubClient   向下拉找到 PubSubClient by Nick O`Leary进行安装
#include <ArduinoJson.h>          // 在项目-》加载库中 查找ArduinoJson    第一个就是 ArduinoJson by Benoit Blanchon 进行安装

#define LED_PIN    D4

/* 修改1 开始------------------------------------------ */
#define WIFI_SSID   "HuiKeDianNaoFuWu"      // WIFI的名称
#define WIFI_PASSWD   "13488214252"         // WIFI的密码
/* 修改1 结束------------------------------------------ */

/* 修改2 开始------------------------------------------ */
#define PRODUCT_KEY       "a1cBSuDEqL0"                        // 产品密钥所在位置 阿里云->物联网平台->设备管理->产品->ProductKey
#define DEVICE_NAME       "LED_She_Bei"                        // 设备名称所在位置 阿里云->物联网平台->设备管理->设备->DeviceName/备注名称 下面那个名字
#define DEVICE_SECRET   "r0457Kve61oDC5EsbCS0O4iXpWrXA0E0"   // 设备密钥所在位置 阿里云->物联网平台->设备管理->设备->查看->右上角 DeviceSecret
#define REGION_ID         "cn-shanghai"                        // 地区ID   不需要修改
/* 修改2 结束------------------------------------------ */

#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"   // MQTT_服务器
#define MQTT_PORT         1883                                                    // MQTT_端口
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY                           // MQTT_用户名称   这是由 DEVICE_NAME "&" PRODUCT_KEY 这两个参数组成的,这两个参数在上面有。

/* 修改3 ------------------------------------------ */
#define CLIENT_ID    "LED_She_Bei|securemode=3,signmethod=hmacsha1,timestamp=1575099760|"
//参数具体说明在这里 https://help.aliyun.com/document_detail/86706.html?spm=a2c4g.11174283.2.44.2b351668mRnKcK
// CLIENT_ID 是由三部分组成的,分别clientIdsecuremodesignmethod
//clientId    为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。
//securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2。
//signmethod为算法类型,支持hmacmd5和hmacsha1
#define MQTT_PASSWD       "65E493A5E6AABBAF1DAE7EDD6A4C2ACABA08BA66"
//MQTT_PASSWD 是用一个工具算出来的 下载地址为:https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.70045800E7MImP&file=88413c66e471bec826257781969d1bc7.zip
/* 修改3 end--------------------------------------- */

#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"                                  // 链接主题文章

unsigned long Zui_Hou_Hao_Miao = 0;// 最后毫秒这个是上次执行动作的时间
WiFiClient espClient;                // 实例化 WIFIClient 为 esp客户端
PubSubClientclient(espClient);   // 发布一个子客户端 客户端(esp客户端)



void setup() { //██████████████████████████████████████████████

pinMode(LED_PIN,OUTPUT);   // 管脚模式(LED管脚,输入);
Serial.begin(115200);       // 串口.启动(115200);
Serial.println("演示开始");// 串口.打印(WiFi.本地IP);
Lian_Jie__WIFI();         // 连接_WIFI

}

void loop() { //██████████████████████████████████████████████

//这段代码的作用是:每5秒 检查一下MQTT连接情况 并 上服消息
if (millis() - Zui_Hou_Hao_Miao >= 5000){   // 如果 当前毫秒 减去 最后毫秒 大于等于 5秒
    Zui_Hou_Hao_Miao = millis();                // 最后毫秒 等于 当前毫秒

    Jian_Cha__MQTT_Lian_Jie();                  // 检查_MQTT_连接
    Shang_Bao_Xiao_Xi();                        // 上报消息

}

client.loop();                              // 客户.循环();


//这段代码的作用是:检查引脚当前情况
if (digitalRead(LED_PIN) == HIGH) {         // 如果 (数字读取(LED引脚 等于 高)
    Serial.println("检测到引脚为 高 电平!");      // 串口.打印(检测到引脚为高电平!);
    delay(2000);                              // 延时(2秒)
} else if (digitalRead(LED_PIN) == LOW) {   // 如果 (数字读取(LED引脚 等于 高)
    Serial.println("检测到引脚为 低 电平!");      // 串口.打印(检测到引脚为高电平!);
    delay(2000);                              // 延时(2秒)
} else {                                    // 否则
    Serial.println("未检测到引脚情况");         // 串口.打印(未检测到引脚情况);
    delay(2000);                              // 延时(2秒)
}

}















void Lian_Jie__WIFI() {                     // 连接_WIFI
WiFi.mode(WIFI_STA);                      // WIFI.模式(站点)
WiFi.begin(WIFI_SSID, WIFI_PASSWD);       // WiFi.开始(WIFI_名称,WIFI_密码)
while (WiFi.status() != WL_CONNECTED){// 循环判断 (WIFI.状态 不等于 连接)
    delay(1000);                            // 延时(1秒)
    Serial.println("WiFi未连接");            // 串口.打印("WiFi未连接");
}                                       // 如果 (WIFI.状态 等于 连接) 则执行下面的语句
Serial.println("连接到AP");                // 串口.打印("连接到AP");
Serial.println("IP地址: ");                // 串口.打印("IP地址: ");
Serial.println(WiFi.localIP());         // 串口.打印(WiFi.本地IP);

client.setServer(MQTT_SERVER, MQTT_PORT); // 客户端.设置服务器(MQTT_服务器,MQTT_端口)这两个变量上面有
client.setCallback(Hui_Diao);             // 客户端.设置回调(回调)
}


void Jian_Cha__MQTT_Lian_Jie() {                               // 检查_MQTT_连接
while (!client.connected()) {                              // 循环判断(不等于 客户端.连接)
    Serial.println("正在连接到MQTT服务器。。。");               // 串口.打印("正在连接到MQTT服务器。。。");
    if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)){// 如果(客户端.连接(客户端ID,MQTT_用户名称,MQTT_密码))//MQTT连接服务器所需要的三个参数具体说明在这里 https://help.aliyun.com/document_detail/86706.html?spm=a2c4g.11174283.2.44.2b351668mRnKcK
      Serial.println("MQTT已连接!");                            // 串口.打印("MQTT已连接!");
    } else {                                                    // 否则
      Serial.print("MQTT连接错误:");                            // 串口.打印("MQTT连接错误:");
      Serial.println(client.state());                           // 串口.打印(客户端.状态);
      delay(5000);                                              // 延时(5秒)
    }
}
}


void Hui_Diao(char *topic, byte *payload, unsigned int length) { // 回调
Serial.print("消息已到达 [");                                 // 串口.打印("消息已到达 [");
Serial.print(topic);                                           // 串口.打印(话题);
Serial.print("] ");                                          // 串口.打印("] ");
payload = '\0';                                        // 有效载荷[长度] 等于 '\0'
Serial.println((char *)payload);                               // 串口.打印(有效载荷);
}


void Shang_Bao_Xiao_Xi() {                                       // 上报消息
char param;                                                // 声明一个char变量 名称为 参数 字符数组 长度为32字节      char类型为一个字节          char*是变量,值可以改变, char[]是常量,值不能改变。char[]对应的内存区域总是可写,char*指向的区域有时可写,有时只读
char jsonBuf;                                             // 声明一个char变量 名称为 JSONBUF格式 字符数组 长度为128字节      char类型为一个字节

sprintf(param, "{\"引脚状态\":%d}", digitalRead(LED_PIN));      // 把格式数据写成串(参数,"{\"引脚状态\":%d}",读取引脚(LED_引脚))
sprintf(jsonBuf, ALINK_BODY_FORMAT, param);                  // 把格式数据写成串(JSONBUF格式,链接体格式,参数)

Serial.println(jsonBuf);                                       // 串口.打印(JSONBUF格式);
boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);    // 声明一个布尔型变量 名字为 D 等于 客户端.发布(链接主题文章,JSONBUF格式)
Serial.println("出版说明: 0=失败 ; 1=成功");                     // 串口.打印("出版:0=失败;1=成功");
Serial.println("出版情况: " + String(d));
}

ws9528 发表于 2020-1-23 15:11

现在还是不会如何控制LED灯的开关,现在只是能连接上阿里的MQTT服务器而已

ws9528 发表于 2020-1-23 15:35

在这里我需要骂阿里,你看我第一次尝试是什么时候,在这段时间里,我有多少次尝试你们懂知道吗?为什么这么复杂?为什么?我智商太低?连接MQTT搞的非常复杂,麻烦。示例代码也没有ARDUINO IDE的。想接入怎么就这么难呢?我自己建立的平台都完全搞定了,但这个就是搞不定。要不是我的平台接入并发数不高,我咋就放弃研究阿里接入了。MLGB

ws9528 发表于 2020-1-23 16:00

这是是计算MQTT_PASSWD工作的说明。

ws9528 发表于 2020-1-27 17:35

现在是可以成功连接阿里的MQTT平台,可以从平台发送信息,NODEMCU这边也可以收到,但是如何从平台下发的字符中提取有用的值,这个还没有解决。平台发过来的字符是两层JSON只能获取到外行的键值,但内层的数据怎么获取还搞不明白。

hhxx558 发表于 2020-4-3 13:39

感谢楼主分享!简直是太有用了,我去年早些时候和你研究方向一样,要是那时候看到了估计现在问题都解决了!感谢!
页: [1] 2 3
查看完整版本: NodeMCU第一次接入阿里物联网记录贴