Wido用GET方法访问Onenet数据流-Arduino中文社区 - Powered by Discuz! Archiver

snw0511 发表于 2016-5-23 21:58

Wido用GET方法访问Onenet数据流

本帖最后由 snw0511 于 2016-5-23 22:27 编辑

代码不知道哪里错了 返回总是 400 Bad Request请大家帮忙看看 谢谢了!
#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <SPI.h>
#include <HttpPacket.h>
#define Wido_IRQ   7
#define Wido_VBAT5
#define Wido_CS    10

Adafruit_CC3000 Wido = Adafruit_CC3000(Wido_CS, Wido_IRQ, Wido_VBAT,
SPI_CLOCK_DIVIDER); // you can change this clock speed
// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY   WLAN_SEC_WPA2


#define WLAN_SSID       "MOTO"         // cannot be longer than 32 characters!
#define WLAN_PASS       "12345678"          // For connecting router or AP, don't forget to set the SSID and password here!!


#define TCP_TIMEOUT      3000
//#define CC3000_TINY_DRIVER

#define WEBSITE"api.heclouds.com"
#define API_key""// Update Your API Key. To get your API Key, please check the link below

void setup(){

Serial.begin(115200);
Serial.println(F("Hello, CC3000!\n"));

/* Initialise the module */
Serial.println(F("\nInitialising the CC3000 ..."));
if (!Wido.begin())
{
    Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));
    while(1);
}

/* Attempt to connect to an access point */
char *ssid = WLAN_SSID;             /* Max 32 chars */
Serial.print(F("\nAttempting to connect to "));
Serial.println(ssid);


if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
    Serial.println(F("Failed!"));
    while(1);
}

Serial.println(F("Connected!"));

/* Wait for DHCP to complete */
Serial.println(F("Request DHCP"));
while (!Wido.checkDHCP())
{
    delay(100); // ToDo: Insert a DHCP timeout!
}

}


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){
    // 如果连接中断且时间超过TCP_TIMEOUT,则重新连接
    RetryMillis = millis();

    Serial.println(F("Try to connect the cloud server"));
    WidoClient.close();

    // Connect to the Yeelink Server
    uint32_t ip = Wido.IP2U32(183,230,40,33);
    WidoClient = Wido.connectTCP(ip, 80);          // Try to connect cloud server
}

if(WidoClient.connected() && millis() - uploadtStamp > 2000){
    uploadtStamp = millis();
    // 如果连接正常且上传数据时间超过2000ms,则更新
    Serial.println(F("Connected to OneNet server."));
    Serial.println(F("Sending headers"));

   //发送查询数据包
    WidoClient.fastrprint(F("GET /devices/"));
    WidoClient.fastrprint(F("DEV_ID/datastreams"));
    WidoClient.fastrprint(F("/LED"));
    WidoClient.fastrprintln(F(" HTTP/1.1"));
    WidoClient.fastrprint(F("api-key:"));
    WidoClient.fastrprintln(API_key);
    WidoClient.fastrprintln(F("Host: api.heclouds.com"));
    WidoClient.fastrprintln("");

      /********** Get the http page feedback ***********/

   unsigned long rTimer = millis();
    Serial.println(F("Reading Cloud Response!!!\r\n"));
    while (millis() - rTimer < 2000) {
      while (WidoClient.connected() && WidoClient.available()) {
      char c = WidoClient.read();
      Serial.print(c);
      }
    }
/*    String comdata = "";
    while (Serial.available() > 0)
    {
      comdata += char(Serial.read());
      delay(2);
    }
    if (comdata.length() > 0)
    {
      Serial.println(comdata);
      comdata = "";
    }
*/

    delay(100);             // 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
}


}


snw0511 发表于 2016-5-23 22:28

代码可以用了 之前GET后面少了空格 太隐蔽了。。。
页: [1]
查看完整版本: Wido用GET方法访问Onenet数据流