정보나눔

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

OPENWEATHER로 기상 정보 받기
좋은사람 | 2018-05-30

void loop() {
  if (client.connected()) {
    while (client.available() && !SuccessCall) {
      //라인을 기준으로 문자열을 저장한다.
      String line = client.readStringUntil('\n');
      //Serial.println(line);

      //시간
      int temp11 = line.indexOf("</hour>");
      if (temp11 > 0) {
        String tmp_str = "<hour>";
        String wt_hour = line.substring(line.indexOf(tmp_str) + tmp_str.length(), temp11);
        Serial.print("hour is ");
        Serial.println(wt_hour);
      }

      //온도
      int temp = line.indexOf("</temp>");
      if (temp > 0) {
        String tmp_str = "<temp>";
        String wt_temp = line.substring(line.indexOf(tmp_str) + tmp_str.length(), temp);
        Serial.print("temperature is ");
        Serial.println(wt_temp);
      }

      //날씨 정보
      int wfEn = line.indexOf("</wfEn>");
      if (wfEn > 0) {
        String tmp_str = "<wfEn>";
        String wt_twfEn = line.substring(line.indexOf(tmp_str) + tmp_str.length(), wfEn);
        Serial.print("weather is ");
        Serial.println(wt_twfEn);

        if (wt_twfEn == "Rain") {
          colorWipe(strip.Color(0, 0, 255), 50);
          colorWipe1(strip1.Color(0, 0, 255), 50);
          colorWipe2(strip2.Color(0, 0, 0), 50);
          colorWipe3(strip3.Color(0, 0, 0), 50);
        }

        else if (wt_twfEn == "Lightning") {
          colorWipe(strip.Color(255, 255, 255), 50);
          colorWipe1(strip1.Color(0, 0, 0), 50);
          theaterChase2(strip2.Color(255, 150, 0), 50);
          //colorWipe2(strip2.Color(255, 150, 0), 50);
          colorWipe3(strip3.Color(0, 0, 0), 50);
        }

        else if (wt_twfEn == "snow") {
          colorWipe(strip.Color(100, 155, 255), 50);
          colorWipe1(strip1.Color(0, 0, 0), 50);
          colorWipe2(strip2.Color(0, 0, 0), 50);
          colorWipe3(strip3.Color(100, 155, 255), 50);
        }
        else {
          colorWipe(strip.Color(255, 255, 255), 50);
          colorWipe1(strip1.Color(0, 0, 0), 50);
          colorWipe2(strip2.Color(0, 0, 0), 50);
          colorWipe3(strip3.Color(0, 0, 0), 50);
        }
      }

      //습도
      int reh = line.indexOf("</reh>");
      if (reh > 0) {
        String tmp_str = "<reh>";
        String wt_reh = line.substring(line.indexOf(tmp_str) + tmp_str.length(), reh);
        Serial.print("Humidity is ");
        Serial.println(wt_reh);
        SuccessCall = true;
      }
    }
  }
  if (millis() - lastConnectionTime > postingInterval) { //interval 시간이 충족되었다면
    connectToServer(); //데이터 호출
  }

}
 

저희가 https://kocoafab.cc/make/view/668를 참고하여 만드는 와중에 한국 RSS로 안된다는 것을 알고, OPENWHEATHERMAP을 참고하여 날씨 정보 받아오는것을 성공하였는데, 저희가 이제 네오픽셀을 제어하여야하는데 이게 한국 RSS코드에 맞춰줘 있어서 그런지 날씨 정보를 네오 픽셀에 적용이 되지가 않네요.... 어떻게 해야 적용이 될까요???....

이전글   |    아두이노 lcd 질문있습니다 2018-05-30
다음글   |    WiFi shield not present 이 계속 떠요 2018-05-31