#include <aliIotLink.h>#include <ESP8266WiFi.h>#include <ArduinoJson.h>#include <Wire.h>#include <Adafruit_BMP085.h>Adafruit_BMP085 bmp;const char* ssid = "OCROBOT";const char* password = "jikegongfang";String updateAlinkJson(uint16_t _id, JsonObject &_AliIotJson);void working(uint16_t delayTime);WiFiClient espClient; //实例化 wifi网络PubSubClient client(espClient); //将网络传入MQTTAliIotLink aliLink(client); //将mqtt传入服务bool led_status = 0; //默认是关闭的//回调函数void Callbacks(char* topic, byte* payload, unsigned int length){ String LED_topic = "/sys/a1agPKQ3fSf/sensor1/thing/service/property/set"; if (strcmp(topic, LED_topic.c_str()) == 0) { StaticJsonBuffer<128> jsonBuffer; JsonObject& payloadData = jsonBuffer.parseObject(payload); led_status = payloadData["params"]["led"]; //获取开关设置信息 digitalWrite(D1,led_status); Serial.println(led_status); }}void setup(){ Serial.begin(115200); bmp.begin(); //传感器初始化 pinMode(D1, OUTPUT); //初始化led灯 WiFi.mode(WIFI_STA); //配置为客户端模式 WiFi.begin(ssid, password); //初始化并且链接wifi while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //aliLink.subTopic("/sys/a1agPKQ3fSf/sensor1/thing/service/property/set"); //订阅 //aliLink.subTopic("/sys/a1agPKQ3fSf/sensor1/thing/event/property/set_reply"); //订阅 //阿里云初始化 aliLink.setCallback(Callbacks); aliLink.begin("sensor1", "a1agPKQ3fSf", "J0lvZSntI0ZYfpqkQ4h40OU7WOxoAYgH"); //完成初始化配置 三元素(DeviceName,ProductKey,DeviceSecret)}void loop(){ if (aliLink.state() != 0) { Serial.println(aliLink.state()); } aliLink.loop(); working(5000); //定时上报业务(15秒一次上报)}// 构建Alink协议的要求String updateAlinkJson(uint16_t _id, JsonObject &_AliIotJson){ StaticJsonBuffer<256> jsonBuffer; JsonObject& AlinkJson = jsonBuffer.createObject(); AlinkJson["id"] = _id; AlinkJson["version"] = "1.0"; AlinkJson["params"] = _AliIotJson; //AlinkJson["method"] = "/sys/a1agPKQ3fSf/sensor1/thing/event/property/post"; AlinkJson["method"] = "thing.event.property.post"; String JsonStr; AlinkJson.printTo(JsonStr); return JsonStr;}//定时上报传感器数据与状态void working(uint16_t delayTime){ uint32_t thisTime = millis(); if ((thisTime % delayTime) == 0) { StaticJsonBuffer<130> jsonBuffer; JsonObject& paramsJson = jsonBuffer.createObject(); //paramsJson["led"] = led1; paramsJson["temperature"] = bmp.readTemperature(); paramsJson["atmosphere"] = bmp.readPressure(); String data = updateAlinkJson(random(1, 100), paramsJson); char outputTopic[] = "/sys/a1agPKQ3fSf/sensor1/thing/event/property/post" ; aliLink.publish(outputTopic, data.c_str()); //Serial.println(data); }}