Nodemcu上阿里云记录
1、移动应用开发时,编辑完记得保存。
2、产品、设备标识码在与阿里云通讯时需要用到。
3、MQTT的PASSWD要使用专门的工具生成,否则无法连接。
软件环境:
ArduinoIDE
测试源码:
#include <ESP8266WiFi.h>
/* 依赖 PubSubClient 2.4.0 */
#include <PubSubClient.h>
/* 依赖 ArduinoJson 5.13.4 */
#include <ArduinoJson.h>
#define LED_IO D1
#define PWM_IO_R D2
#define PWM_IO_G D3
#define PWM_IO_B D4
/* 连接您的WIFI SSID和密码 */
#define WIFI_SSID "test"
#define WIFI_PASSWD "123456789"
/* 设备证书信息*/
#define PRODUCT_KEY "a1YSkpQ02ky"
#define DEVICE_NAME "led_text"
#define DEVICE_SECRET "hN2hAcbs6z2eSOG95Fgp20elIplFCeIg"
#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
#define CLIENT_ID "esp8266|securemode=3,signmethod=hmacsha1,timestamp=1234567890|"
// MQTT连接报文参数,请参见MQTT-TCP连接通信文档,文档地址:https://help.aliyun.com/document_detail/73742.html
// 加密明文是参数和对应的值(clientIdesp8266deviceName${deviceName}productKey${productKey}timestamp1234567890)按字典顺序拼接
// 密钥是设备的DeviceSecret
//要使用加密工具,输入以上证书信息加密(时间戳可以省略)
#define MQTT_PASSWD "5275C24B8FADC899816716FBD8106E06166F1544"
#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;
PubSubClient client(espClient);
unsigned int pwm_r=0,pwm_g=0,pwm_b=0;
int status=0;
void callback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
payload[length] = '\0'