String location ="seoul";
String currentLine = ""; //서버에서 읽어온 데이터를 저장할 String
String tempString = ""; //온도 데이터를 저장할 String
String weatherCodeString= ""; //날씨 코드를 저장할 String
boolean readingTemp = false; //온도 데이터가 있는지 여부 판단
boolean readWeatherCode = false; //날씨 코드 데이터가 있는지 여부 판단
cc3000.printIPdotsRev(ip);
//날씨 데이터 호출
Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
if (www.connected()) {
www.fastrprint(F("GET "));
www.fastrprint(WEBPAGE);
www.fastrprint(F(" HTTP/1.1\r\n"));
www.fastrprint(F("Host: ")); www.fastrprint(WEBSITE); www.fastrprint(F("\r\n"));
www.fastrprint(F("\r\n"));
www.println();
} else {
Serial.println(F("Connection failed"));
return;
}
Serial.println("");
unsigned long lastRead = millis();
while (www.connected() && (millis() - lastRead < IDLE_TIMEOUT_MS)) { //클라이언트가 연결되어 있는지 여부 판단
while (www.available()) { //클라이언트로 읽어오는 데이터가 있는지 여부 판단
char c = www.read(); //읽어온 데이터를 c에 저장
currentLine += c;
if (c == '\n') { //줄 바꿈이 전송되면 저장하지 않음.
currentLine = "";
}
//온도 데이터 저장
if ( currentLine.endsWith("<temperature value=")) { //현재 스트링이 "<temperature value="로 끝나면 온도 데이터 저장 준비
readingTemp = true;
tempString = "";
}
if (readingTemp) {
if (c != 'm') { //m 이전까꺼지 tempString에 저장
tempString += c;
}
else { //m이 전송되면 저장 중지
readingTemp = false;
}
}
//날씨 코드 데이터 저장
if ( currentLine.endsWith("<weather code=")) { //현재 스트링이 "<weather number="로 끝나면 날씨 코드 데이터 저장 준비
readWeatherCode = true;
weatherCodeString = "";
}
if (readWeatherCode) {
if (c != 'd') { //v 이전까지 weatherCodeString에 저장
weatherCodeString += c;
}
else { //v가 전송되면 저장 중지
readWeatherCode = false;
}
}
lastRead = millis();
}
}
www.close(); //클라이언트 종료
//저장한 데이터를 시리얼 모니터에 출력
Serial.println("");
Serial.println("- locaton="+location);
Serial.println("- weather code"+weatherCodeString);
Serial.println("-----------------------------");
Serial.println("- temperature"+tempString);
Serial.println(F("\n\nDisconnecting"));
cc3000.disconnect(); //연결 종료
}
void loop(void)
{
if(weatherCodeString>299 && weatherCodeString<532){ //rainny
}
else if(weatherCodeString>599 && weatherCodeString<623){ //snow
}
else if(weatherCodeString>700 && weatherCodeString<782){ //mist
}
else if(weatherCodeString>799 && weatherCodeString<802){ //clear and sunny
}
else if(weatherCodeString>801 && weatherCodeString<805){ //cloudy
}
delay(1000);
}
String 전역변수도 설정해주었는데
계속해서 같은 에러가 뜹니다, exit status 1
converting to 'const String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'
날씨 파싱해오는건 정상적으로 되는데 IF문을 사용해 웨더코드에 따라 LED 점등하는 부분에서
계속해서 못넘어가고있네요 ㅠㅜ
도움을 좀 받을수있을까요?, 제가 찾아뵈서라도 도움을 꼭 좀 받고싶습니다.
항상 답변 남겨주셔서 감사합니다.
|