Data_pharsing(){ } 안에 일부 코드가 날아갔네요...
Data_pharsing(){ } 안의 코드를 아래 코드로 바꿔 주세요 ;)
if (client.connected()) {
delay(1000);
while (client.available()) {
//전송된 데이터가 있을 경우 데이터를 읽어들인다.
char inChar = client.read();
// 읽어온 데이터를 inChar에 저장한다.
currentLine += inChar;
//inChar에 저장된 Char변수는 currentLine이라는 String변수에 쌓이게 된다.
Serial.print(currentLine);
//라인피드(줄바꿈)문자열이 전송되면 데이터를 보내지 않는다.
if (inChar == '\n') {
//Serial.print("clientReadLine = ");
//Serial.println(currentLine);
currentLine = "";
}
//온도 데이터가 전송되었는지 확인
if ( currentLine.endsWith("<weather number=")) {
//현재 스트링이 "<temperature value="로 끝났다면 온도데이터를 받을 준비를 한다.
Serial.println("h");
readingWeather = true;
weatherString = "";
}
//<temperature value=뒤에 오는 문자열을 tempString에 저장한다.
if (readingWeather) {
if (inChar != 'v') { //전송될 문자가 'm'이 올때까지 온도값으로 인식
weatherString += inChar;
}
else { //전송된 문자가 'm'이라면 온도데이터를 그만 저장하고 온도값 출력
readingWeather = false;
weather = getInt(weatherString);
Serial.print("- weathercode: ");
Serial.print(weather);
}
}
if ( currentLine.endsWith("</current>")) { //현재 스트링이 </current>로 끝났다면 연결을 끊고 다시 서버와 연결을 준비한다.
delay(10000); //10초뒤에 서버와 연결을 끊고 재연결을 시도한다.
client.stop();
connectToServer();
//Serial.println("Disconnected from Server.\n");
}
}
}
else if (millis() - lastAttemptTime > requestInterval) {
//연결을 실패했다면 requestInterval(60초)이후에 다시 연결을 시도한다.
connectToServer();
}
Klant 2015-10-14 20:59:51
안녕하세요
openweathermap API 사용시 사용법이 조금 달라졌습니다.
서버에게 날씨데이터를 호출할 때 별도의 API key를 요구하지 않았었는데요.
현재는 openweathermap 홈페이지에 가입 후 api key를 할당받아야합니다.
사용 방법은 날씨를 알려주는 무드 램프[part 1]에 언급했으니 참고하신 후 변경하시면 되겠네요 ;)
화이팅입니다!