IoT Wireless

Xively Demo with WizFi250 본문

WiFi module

Xively Demo with WizFi250

DH0815 2014. 11. 14. 11:27
이번에는 WizFi250을 이용하여 Xively 서버와 통신하는 예제를 수행해 보겠다. 테스트를 위해서 Xively 계정을 만들고 Channel과 API Key를 얻어 오는 과정을 생략한다. 이에 대한, 자세한 과정은 Xively Tutorial이나 구글 검색을 이용하기 바란다.

이번 게시물에서는 Xively로부터 할당 받은
  • Feed ID : 1805123826 
  • X-ApiKey : H3lr9T1As7ADOfpXCvg8fdcUYC3wX39tXVUBGAIKvouibJnM 
  • Channel : Demo 
를 이용하여 

(A) 로컬 데이터를 Xively 클라우드에 저장하는 과정
(B) Xively 클라우드에서 데이터를 가져오는 과정

에 대한 Demo를 진행할 예정이다.

 (A) 로컬 데이터를 Xively 클라우드에 임의의 값인 4를 저장하는 Request Raw Data
PUT /v2/feeds/1805123826/datastreams/Demo HTTP/1.1\r\n
Host: api.xively.com\r\n
X-ApiKey: H3lr9T1As7ADOfpXCvg8fdcUYC3wX39tXVUBGAIKvouibJnM\r\n
Content-Length:81\r\n
\r\n
{\r\n
  "id": "Demo",\r\n
  "tags": [],\r\n
  "unit": {},\r\n
  "current_value": "4"\r\n
}\r\n
\r\n
\r\n
(총 236 Byte)
(B) Xively 클라우드에서 데이터를 가져오는 Request Raw Data
GET /v2/feeds/1805123826/datastreams/Demo HTTP/1.1\r\n
Host: api.xively.com\r\n
X-ApiKey: H3lr9T1As7ADOfpXCvg8fdcUYC3wX39tXVUBGAIKvouibJnM\r\n
\r\n
(총 136 Byte)

자 이제, Xively 서버와의 통신 준비는 끝났고, WizFi250을 이용하여 실제 Xively 서버와 통신을 해보자. WizFi250이 AP에 Association되는 과정은 생략한다. 먼저 Xively API 서버의 IP 주소를 얻어온다.
AT+FDNS=api.xively.com,3000
64.94.18.120
[OK]
Xively API 서버와 접속하고, Channel Demo에 4라는 값을 저장하라는 Request를 보낸다.
AT+SCON=O,TCN,64.94.18.120,80,,0
[OK]

[CONNECT 0]
AT+SSEND=0,,,236
[0,,,236]
(여기에서 위의 (A) 236 Byte를 전송한다.)
[OK]

{0,64.94.18.120,80,251}HTTP/1.1 200 OK
Date: Wed, 06 Aug 2014 03:52:05 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 0
Connection: keep-alive
X-Request-Id: 65d5981411f55879f102ebd8df82e4c2978cfac1
Cache-Control: max-age=0
Vary: Accept-Encoding

Xively API 서버에서 "HTTP/1.1 200 OK...."이라는 데이터를 받은 것을 보니, 아마도 잘 저장이 된 것 같다. 자 이제, Xively API 서버와 접속을 종료한다.
AT+SMGMT=ALL

[DISCONNECT 0]
[OK]
이 때, Xively의 해당 Feed Channel을 보면, 실시간 적용되는 것을 확인할 수 있다. https://xively.com/feeds/1805123826


자, 이번에는 (B) Xively 클라우드에서 데이터를 가져오는 과정을 살펴 보겠다. (A)의 과정과 유사하므로 별도의 설명은 생락한다. Xively API 서버로부터 받은 데이터를 보면, "current_value":"4" 라는 부분이 있는데, 이 값이 조금 전에 예제에서 저장했던 값이다.
AT+SCON=O,TCN,64.94.18.120,80,,0
[OK]

[CONNECT 0]
AT+SSEND=0,,,136
[0,,,136]
(여기에서 위의 (B) 136 Byte를 전송한다.)
[OK]
{0,64.94.18.120,80,441}HTTP/1.1 200 OK
Date: Wed, 06 Aug 2014 03:52:18 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 122
Connection: keep-alive
X-Request-Id: 749920b4abcd6c4f6953906d14b4204002ae42be
Cache-Control: max-age=86400
X-Licence: http://creativecommons.org/publicdomain/zero/1.0/
Vary: Accept-Encoding

{"id":"Demo","current_value":"4","at":"2014-08-06T03:52:05.847187Z","max_value":"7.0","min_value":"0.0","version":"1.0.0"}
AT+SMGMT=ALL

[DISCONNECT 0]
[OK]

참고로, 아래 링크를 보시면, Arduino와 온도 센서를 이용하여 Xively와 연동하는 과정에 대한 자료가 있다. 
http://wizwiki.net/blog/2014/03/19/arduino-temperature-monitoring-system-using-xively-server-wizfi250-evb/