정보나눔

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

OpenWeatherMap 날씨정보에 관해 문의 드립니다
김은혜 | 2019-06-07

void loop() {

  String valString;
  while (client.available()) {


    // {"id": 뒤에 오는 문자열을 날씨 코드로 저장
    if ( rcvbuf.endsWith("{\"id\":")) {
      readingVal = true;
      valString = "";
    }

    char c = client.read();

    if ( c != NULL ) {
      if (rcvbuf.length() > 30)
        rcvbuf = "";
      rcvbuf += c;
      //Serial.write(c);
    }

    if (readingVal) {
      if (c != ',' ) {
        valString += c;
        //Serial.write(c);
      }
      else {
        readingVal = false;
        tempVal = valString.toInt(); // 날씨 코드를 String에서 Integer로 변환
        Serial.println(tempVal);  // 시리얼 모니터에 날씨 코드 출력
      }
    }
  }


  //전송 받은 날씨 데이터에 따라 네오픽셀 온오프 변경

    if (tempVal > 299 && tempVal < 532) {  //rainny
      colorWipe2(strip2.Color(0, 216, 255), 50); //하늘색 출력
    }
    else if (tempVal > 599 && tempVal < 623) { //snow
      colorWipe3(strip3.Color(255, 255, 255), 50); //흰색 출력
    }
    else if (tempVal > 799 && tempVal < 802) { //clear and sunny
      colorWipe(strip.Color(255, 187, 0), 50); //진노랑색 출력
    }
    else if ((tempVal > 801 && tempVal < 805) || (tempVal > 700 && tempVal < 782)) { //cloudy & mist
      colorWipe1(strip1.Color(1, 0, 255), 50); //진파랑색 출력
    }

 

 

안녕하세요

 

klant님의 웨더클락 코드를 약간 변형 시켜서 if문으로 tempVal값을 조건을 걸어서 코딩을 했습니다.

 

그런데 OpenWeatherMap 사이트에서는 Rain 값으로 나오는데 

 

네오픽셀에 출력이 안되거나 cloudy & mist값으로 출력이 나올 때가 있어서

 

왜 tempVal값이 저 조건(숫자)로 되야하는지 궁금합니다.

 

위에 코드는 일부만 발췌한 것이고 Rain으로 잘 출력되는 경우도 있습니다.

프로필사진

판다마니아 2019-06-11 11:04:25

저도 해보면서 오픈웨더맵 홈페이지에서 뜨는 자료랑 API로 받아온 데이터랑 좀 다른 경우가 있더라고요,

 

그리고 API에서 제공하는 날씨 데이터는 날씨를 숫자값으로 저장하여 뿌려주기 때문에 저렇게 한것 같습니다.

이전글   |    다중 시리얼통신시 값이 출력이 안됩니다 ... 2019-06-07
다음글   |    DFPlayer 작동이 안됩니다!! Help me!! 2019-06-07