정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

웨더클락
김범식 | 2016-07-13

 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 점등하는 부분에서

계속해서 못넘어가고있네요 ㅠㅜ

도움을 좀 받을수있을까요?, 제가 찾아뵈서라도 도움을 꼭 좀 받고싶습니다.

항상 답변 남겨주셔서 감사합니다.

 

이전글   |    30mm 대형 RGB LED 줄줄이 사용법 질문이요! 2016-07-13
다음글   |    오렌지 보드 BLE 테스트용 앱 KocoaBLE_1 문의... 2016-07-14