2016년 11월 23일 수요일

ThingSpeak 기반 IoT 데이터 분석

오늘은 ThingSpeak (씽 스피크) 기반 데이터 분석 방법에 대한 글을 이야기해 보겠습니다.

IoT 장치에서 데이터를 취득한 후에는 데이터 통계 및 분석 방법을 이용해, 패턴을 추출하고, 변화량이나 추세를 예측하는 등의 작업이 매우 중요해 집니다. 예를 들어, 에너지 전력 소비량을 시간에 따라 그래프에 표시하면, 불필요하게 에너지를 소비하는 시점이 언제인지, 그때 어떤 장치가 에너지를 소비하는 지 등을 알 수 있습니다.

이 글은 IoT 장치에서 센싱된 데이터를 취득하여 데이터를 분석하는 간단한 방법을 보여줍니다. 이 글에서는 데이터 취득 및 제어는 아두이노와 Blynk를 사용하며, 데이터 분석은 ThingSpeak를 사용할 것입니다.

이 글은 다음 레퍼런스를 참고 하였습니다.
ThingSpeak 기반 데이터 분석


ThingSpeak 데이터 분석 영상

1. ThingSpeak 동작 방식
ThingSpeak는 클라우드 기반으로 동작되는 데이터 분석 솔류션으로 오픈소스 기반으로 동작합니다. RESTful API를 사용하기 때문에, 데이터를 ThingSpeak로 전송하는 것은 매우 쉽습니다. Matlab 스크립트를 웹상에서 지원하므로, 과학 실험 데이터 분석도 가능합니다. 게다가, 메시지 교환 세계 표준인 MQTT (Message Queueing Telemetry Transport) 도 지원합니다.

ThingSpeak에서 데이터 분석을 위해서는 보통 다음과 같은 준비 단계를 거쳐야 합니다.

1. ThingSpeak 가입
2. ThingSpeak 데이터 분석 채널 생성
3. 채널에 분석이 필요한 데이터 필드 생성
4. 채널 설정 저장

이렇게 채널이 만들어지면, 채널 내에 정의된 필드 별로, 데이터를 RESTful API를 이용해, ThingSpeak에 저장하면 됩니다.

2. 센싱 데이터 전송
센싱 데이터는 다음 코드와 같이 ThingSpeak 에서 제공하는 API, 미리 생성된 API 키를 이용해, 각 데이터 필드에 데이터를 전송하는 과정을 거칩니다.

#include "Bridge.h"
#include "HttpClient.h"

//Thingspeak parameters
String thingspeak_update_API    = "http://api.thingspeak.com/update?";
String thingspeak_write_API_key = "key=XXXXXXXXXXXXXX";//Insert Your Write API key here
String thingspeakfieldname      = "&field1=";

void setup() {
  Bridge.begin();       // Initialize Bridge
  Serial.begin(9600);  // Initialize Serial
  
  while (!Serial);        // Wait until a Serial Monitor is connected.
  int data=240;        // Data to be sent to thingspeak, change this variable value and post accordingly
  
  postToThinspeak(data);  // run various example processes
  Serial.flush();         // Ensure the last bit of data is sent.
}

void loop() {
  // Do nothing here.
}

void postToThinspeak(int data) {
  HttpClient client;

    String request_string =  thingspeak_update_API + thingspeak_write_API_key + thingspeakfieldname + data;
    // Make a HTTP request:
    client.get(request_string);

  // if there are incoming bytes available
  // from the server, read them and print them:
  while (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  delay(15000);
}

이제, 이 코드를 WiFi 쉴드가 장착된 아두이노에 입력하고, 실행을 하면, ThingSpeak의 해당 채널에서 수집되는 데이터를 실시간 그래프로 시각화될 것입니다. 물론, 이 데이터는 통계 데이터, 회귀분석, 연관분석, 패턴분석, 클러스터링 등 다양한 데이터 분석 자료로 활용할 수 있고, Matlab과 같은 스크립트를 약간만 수정함으로써 손쉽게 결과값을 얻을 수 있습니다.


3. 결론
이 글에서는 ThingSpeak를 간단히 알아 보았습니다. 이런 데이터 분석 사이트는 많은 기능이 무료로 제공되고, RESTful API를 지원하고 있어, 사용이 매우 쉽습니다. 게다가, 과학 데이터 분석에서 사용하는 Matlab과 같은 스크립트도 지원하고 있어 그 활용도가 매우 높습니다. 다음과 같이 본인이 만든 채널을 공유하고 피드백도 받을 수 있습니다.


IoT 시대에 꼭 필요한 데이터 분석도구입니다.



댓글 2개:

  1. 띵스피크로 업로드해서 데이터를 확인할 수있는거는 알겠습니다. 그런데 혹시 띵스피크로 센서를 제어할수있는지 궁금합니다

    답글삭제
    답글
    1. 데이터를 얻을 수 있는 API가 있습니다. 클라우드에 저장된 데이터 얻어 제어 하면 됩니다. 아래 링크 참고하시면 됩니다 .
      http://iotmonk.com/lessons/controlling-esp12e-nodemcu-led-website-using-thingspeak-anywhere-world-part-1/

      삭제