代码如下
/*************************************************** 这是一个例子的dfrobot维多-无线集成物联网建兴传感器和控制节点 *产品页面及更多信息:http://www.dfrobot.com.cn/goods-997.html *特别设计的dfrobot维多产品的工作: * *图书馆叉从Adafruit * *劳伦写的 * BSD许可证,所有以上文字必须包含在任何重 * ****************************************************/ /* This example code is used to connect the Yeelink cloud service (Official homepage: www.yeelink.net). 这个示例代码用于连接Yeelink云服务(官方主页:www.yeelink.net)。 The device required is just: 需要的设备是: 1. LM35 low cost temperature sensor or any device you used to upload data 1。LM35低成本温度传感器或任何用于上传数据的设备 2. And Wido 2。和Wido 注意:请不要忘记在使用前更改下面的设置! 1。wlan_ssid和wlan_pass 2。api_key 三.设备ID和传感器ID */ #include <Adafruit_CC3000.h> #include <ccspi.h> #include <SPI.h> #define Wido_IRQ 7 #define Wido_VBAT 5 #define Wido_CS 10 Adafruit_CC3000 Wido = Adafruit_CC3000(Wido_CS, Wido_IRQ, Wido_VBAT, SPI_CLOCK_DIVIDER); // 你可以改变这个时钟速度。 //安全可以wlan_sec_unsec,wlan_sec_wep,wlan_sec_wpa或wlan_sec_wpa2 #define WLAN_SECURITY WLAN_SEC_WPA2 #define WLAN_SSID "modou-2002" // 不能超过32个字符! #define WLAN_PASS "23456789" //用于连接的路由器或AP,不要忘记设置SSID和密码!! #define TCP_TIMEOUT 3000 //#define CC3000_TINY_DRIVER #define WEBSITE "api.yeelink.net" #define API_key "733115abefe88b0033c035ac9e000000" // Update Your API Key. To get your API Key, please check the link below // http://www.yeelink.net/user/user_profile void setup(){ Serial.begin(115200); Serial.println(F("Hello, CC3000! ")); /* Initialise the module */ Serial.println(F(" Initialising the CC3000 ..."));//初始化的CC3000… if (!Wido.begin()) { Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));//无法初始化的CC3000!检查你的线路?” while(1); } /* 尝试连接到接入点*/ char *ssid = WLAN_SSID; /* Max 32 chars */ Serial.print(F(" Attempting to connect to ")); Serial.println(ssid); /* 注意:安全连接在“微”模式下不可用! 默认情况下connecttoap将重试下去,但是你可以通过 最大重试次数可选(大于零)作为第四个参数。 */ if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) { Serial.println(F("Failed!")); while(1); } Serial.println(F("Connected!")); /* 等待DHCP完成 */ Serial.println(F("Request DHCP")); while (!Wido.checkDHCP()) { delay(100); // ToDo: 插入DHCP超时! } } uint32_t ip = 0; float temp = 0; void loop(){ static Adafruit_CC3000_Client WidoClient; static unsigned long RetryMillis = 0; static unsigned long uploadtStamp = 0; static unsigned long sensortStamp = 0; if(!WidoClient.connected() && millis() - RetryMillis > TCP_TIMEOUT){ // Update the time stamp更新时间戳 RetryMillis = millis(); Serial.println(F("Try to connect the cloud server")); WidoClient.close(); // Get Yeelink IP address把Yeelink IP的地址 Serial.print(F("api.yeelink.net -> ")); while (ip == 0) { if (!Wido.getHostByName(WEBSITE, &ip)) { // Get the server IP address based on the domain name根据域名获取服务器IP地址 Serial.println(F("Couldn't resolve!")); } delay(500); } Wido.printIPdotsRev(ip); Serial.println(F("")); // Connect to the Yeelink Server连接到服务器的yeelink WidoClient = Wido.connectTCP(ip, 80); // Try to connect cloud server } if(WidoClient.connected() && millis() - uploadtStamp > 2000){ uploadtStamp = millis(); // If the device is connected to the cloud server, upload the data every 2000ms.如果设备连接到云服务器,上传数据的每一2000ms。 // Prepare Http Package for Yeelink & get length准备和包装长度yeelink for HTTP get int length = 0; char lengthstr[3]; // Create Http data package char httpPackage[60] = ""; strcat(httpPackage,"{"value":"); itoa(temp,httpPackage+strlen(httpPackage),10); // push the data(temp) to the http data package日期(时间)Push the to the HTTP数据包 strcat(httpPackage,"}"); length = strlen(httpPackage); // get the length of data package获取数据包的长度 itoa(length,lengthstr,10); // convert int to char array for posting Serial.print(F("Length = ")); Serial.println(length); Serial.println(F("Connected to Yeelink server."));//yeelink服务器连接 // Send headers Serial.print(F("Sending headers")); WidoClient.fastrprint(F("POST /v1.0/device/")); WidoClient.fastrprint(F("100/sensor/20/datapoints")); //Please change your device ID and sensor ID here, after creating //Please check the link: http://www.yeelink.net/user/devices /*请在创建后更改您的设备ID和传感器id / /请查看链接:http://www.yeelink.net/user/devices //例网址:*/ //The example URL: http://api.yeelink.net/v1.0/device/100/sensor/20/datapoints WidoClient.fastrprintln(F(" HTTP/1.1")); Serial.print(F(".")); WidoClient.fastrprintln(F("Host: api.yeelink.net")); Serial.print(F(".")); WidoClient.fastrprint(F("U-ApiKey: ")); WidoClient.fastrprintln(API_key); Serial.print(F(".")); WidoClient.fastrprint("Content-Length: "); WidoClient.fastrprintln(lengthstr); WidoClient.fastrprintln(""); Serial.print(F(".")); Serial.println(F(" done.")); // Send data Serial.print(F("Sending data")); WidoClient.fastrprintln(httpPackage); Serial.println(F(" done.")); /********** Get the http page feedback ***********/ unsigned long rTimer = millis(); Serial.println(F("Reading Cloud Response!!! ")); while (millis() - rTimer < 2000) { while (WidoClient.connected() && WidoClient.available()) { char c = WidoClient.read(); Serial.print(c); } } delay(1000); // Wait for 1s to finish posting the data stream WidoClient.close(); // Close the service connection RetryMillis = millis(); // Reset the timer stamp for applying the connection with the service } if(millis() - sensortStamp > 1000){ sensortStamp = millis(); // 读LM35温度传感器值转换为度每隔1000ms。 int reading = analogRead(0); temp = reading *0.0048828125*100; Serial.print(F("Real Time Temp: ")); Serial.println(temp); } }