본문 바로가기
프로그래밍/ESP8266 Tutorial

ESP8266에서 인터넷 날씨 가져오기

by choies1 2016. 2. 10.

인터넷으로 날씨를 갖고 와서 GLCD에 출력해보고 싶었다.

처음 접하는 ESP8266이였으므로 고생을 좀 했는데, 결국했다.

ESP8266의 인터넷 연결 설정과, https://thingspeak.com의 도움이 있어야 가능한 일이다.


https://thingspeak.com는 필요한 사이트에 연결한 후에 데이터를 파싱해 주는 역할을 수행한다. 이후 우리는 https://thingspeak.com에 접속하여 필요한 정보를 갖고 온다. 필요정보를 갖고 올 수 있을 뿐만 아니라, ESP8266의 데이터도  https://thingspeak.com 으로 보낼 수 있다. 보낸 정보는 공개하면 누구나 볼 수가 있다. IoT를 이용한 센서 정보 수집에 아주 편리한 사이트다. matlab관련된 언급과 연결이 많을 것을 보니 matlab에서 만든 사이트 같다.

https://thingspeak.com 사용하여 인터넷 데이터를 얻어오는 방법은 아래의 동영상을 참조하면 된다.

https://www.youtube.com/watch?v=j1ZDtobzin0


날씨 정보를 얻을 수 있는 곳

http://openweathermap.org/ (나중에 파씽하기가 이것이 더 편해서 이것을 이용함)

http://www.accuweather.com/ (이것도 테스트 해봤는데, 파씽은 잘 됨)

(둘다 지역을 설정하면 한국 도시의 날씨도 알 수 있다.)


시간 정보를 얻을 수 있는 곳

http://www.worldtimeserver.com/

(인터넷으로 날씨를 얻어올 때도 날짜와 시간 정보를 얻을 수 있는데, 기준 시간으로 되어 있어서 그대로 표시할 수가 없어서, local time으로 변환해서 주는 곳을 찾았음)

한국 시간은 아래를 이용해서 파씽했음.

http://www.worldtimeserver.com/time-zones/kst/


ESP8266의 Lua 코드는 아래를 참조하면 된다. 아래는 thingspeak로 데이터를 보내는 것이지만, 조금만 수정하면 데이터를 얻어오는 코드도 작성이 가능하다.

http://captain-slow.dk/2015/04/16/posting-to-thingspeak-with-esp8266-and-nodemcu/

위의 예제를 이용해서 실행을 했는데, 자꾸만 오류가 발생했다. 오랜 시간 오류로 고생하다가 나중에 알았는데 'HTTP/1.1' 을 'HTTP/1.0'로 바꾸어 주니 잘 동작했다. (정확한 원인은 잘 모르겠음. 하지만 내 보드에서는 수정해야 동작했음)

이 둘 차이의 자세한 내용은 아래를 참조하길..

http://bluestarblogkr.blogspot.kr/2011/10/http10-11.html

http://jaweb.tistory.com/entry/HTTP-HTTP-10-%EA%B3%BC-11-%EC%9D%98-%EC%B0%A8%EC%9D%B4-HTTP10-VS-HTTP11


얻어진 정보는 Lua의 string.sub(payload,string.find(payload,"Date: ")+23,string.find(payload,"Date: ")+35)

방법으로 원하는 부분만 획득했다. 아래 내용 참조

http://lua-users.org/wiki/StringLibraryTutorial