개요

Machbase는 Tag Table에 접근하기 위한 RESTful API를 제공한다.

$MACHBASE_HOME/webadmin/flask/MWAserver start를 이용해서 Machbase Web Analytics(MWA)를 실행시키면 Tag Table Restful API를 사용할 수있다.

[mach@localhost]$ cd $MACHBASE_HOME/bin [mach@localhost]$ MWAserver start

별도의 언급이 없으면 모두 GET method를 사용한다.

작동여부 확인

사용법

{MWA URL}/machiot-rest-api/      --> 최신버전 api
{MWA URL}/machiot-rest-api/v1/   --> Version 1

예제

http://192.168.0.31:5003/machiot-rest-api/
http://192.168.0.31:5003/machiot-rest-api/v1/

결과

{
 "status": "Working",
 "version": "1.0"
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/'

get Calculated Data

사용법

{MWA URL}/machiot-rest-api/datapoints/calculated/{TagName}/{Start}/{End}/{CalculationMode}/{Count}/{IntervalType}/{IntervalValue}/
 
TagName         : Tag Name. 복수의 Tag 지원(,로 구분하여 사용) -> 복수의 Tag 결과를 하나의 Series로 전달
Start, End      : 기간, YYYY-MM-DD HH24:MI:SS 또는 YYYY-MM-DD
CalculationMode : min, max, total(sum), count(cnt), average(avg)
Count           : LIMIT, 0이면 전체
IntervalType    : sec(second), min(minute), hour, day
IntervalValue   : IntervalType의 단위(5 sec, 3min 등) 기본값 1

Get method parameter로도 전달 가능(중복시 URL이 우선됨)

TagName을 ,로 구분해서 복수의 Tag를 지정하면 하나의 Series로 return 된다.
데이터가 특정시간대에만 존재하는 여러개의 Tag들을 연결해서 하나의 Series로 결과를 얻고 싶을때 사용한다.
만약 데이터가 중복된다면 TagName의 order by 순서로 빠른 Tag의 자료가 선택된다.

예제

http://192.168.0.31:5003/machiot-rest-api/v1/datapoints/calculated/TAG_193,TAG_194/2018-01-16T14:40:00/2018-01-16T14:50:00/cnt/0/sec
http://192.168.0.31:5003/machiot-rest-api/v1/datapoints/calculated?TagNames=TAG_193,TAG_194&Start=2018-01-16T14:40:00&End=2018-01-16T14:50:00&CalculationMode=cnt&count=0&IntervalType=sec

결과

{
 "ErrorCode": 0,
 "ErrorMessage": "",
 "Data": [
     {"DataType": "LONG",
      "ErrorCode": 0,
      "TagName": "TAG_193,TAG_194",
      "CalculationMode": "cnt",
      "Samples": [
          {"TimeStamp": "2018-01-16 14:40:05 000:000:000", "Value": 6, "Quality": 0},
          {"TimeStamp": "2018-01-16 14:40:06 000:000:000", "Value": 25, "Quality": 0}, ....
      ]
     }
 ]
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/datapoints/calculated/TAG_193,TAG_194/2018-01-16T14:40:00/2018-01-16T14:50:00/cnt/0/sec'

get Raw Data

사용법

{MWA URL}/machiot-rest-api/datapoints/raw/{TagName}/{Start}/{End}/{Direction}/{Count}/{Offset}/
 
TagName    : Tag Name. 복수의 Tag 지원(,로 구분하여 사용) -> 복수의 Tag 결과를 하나의 Series로 전달
Start, End : 기간, YYYY-MM-DD HH24:MI:SS 또는 YYYY-MM-DD 또는 YYYY-MM-DD HH24:MI:SS,mmm (mmm: millisecond, 생략시 start는 000, End는 999)
Direction  : 0(not use= 기본값), 1(descend), 2(ascend)
Count      : LIMIT, 0이면 전체
Offset     : offset (기본값 = 0)

Get method parameter로도 전달 가능(중복시 URL이 우선됨)

TagName을 ,로 구분해서 복수의 Tag를 지정하면 하나의 Series로 return 된다.
데이터가 특정시간대에만 존재하는 여러개의 Tag들을 연결해서 하나의 Series로 결과를 얻고 싶을때 사용한다.
만약 데이터가 중복된다면 TagName의 order by 순서로 빠른 Tag의 자료가 선택된다.

예제

http://192.168.0.31:5003/machiot-rest-api/v1/datapoints/raw/TAG_193,TAG_194/2018-01-16T14:40:00,500/2018-01-16T14:40:10,800
http://192.168.0.31:5003/machiot-rest-api/v1/datapoints/raw?TagNames=TAG_193,TAG_194&Start=2018-01-16T14:40:00,500&End=2018-01-16T14:40:10,800

결과

{
 "ErrorCode": 0,
 "ErrorMessage": "",
 "Data": [
     {"DataType": "DOUBLE",
      "ErrorCode": 0,
      "TagName": "TAG_193,TAG_194",
      "Samples": [
          {"TimeStamp": "2018-01-16 14:40:05 538:012:000", "Value": 100.0, "Quality": 0},
          {"TimeStamp": "2018-01-16 14:40:05 798:813:000", "Value": 26.0, "Quality": 0}, ....
      ]
     }
 ]
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/datapoints/raw/TAG_193,TAG_194/2018-01-16T14:40:00,500/2018-01-16T14:40:10,800'

INSERT

POST method로 호출하면 TAG 테이블에 append 된다.
parameter는 RESTful API의 POST method parameter에서 name(=Table Name)이 없는 것을 제외하고는 같다.

Parameter

{
 "values":[
     [TAG_NAME, TAG_TIME, VALUE],
     [ .... ]....
 ],
 "date_format":"Date Format"
}
 
참고: date_format은 생략시 'YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn' 로 설정

예제 : 호출 URL

http://192.168.0.31:5003/machiot-rest-api/

예제 : POST data

{
 "values":[
     ["TAG_0","2018-01-11 01:16:37",100],
     ["TAG_1","2018-01-11 01:16:37",100],
     ["TAG_2","2018-01-11 01:16:37",100],
     ["TAG_3","2018-01-11 01:16:37",100],
     ["TAG_4","2018-01-11 01:16:37",100],
     ["TAG_5","2018-01-11 01:16:37",100],
     ["TAG_6","2018-01-11 01:16:37",100],
     ["TAG_7","2018-01-11 01:16:37",100],
     ["TAG_8","2018-01-11 01:16:37",100],
     ["TAG_9","2018-01-11 01:16:37",100]
 ],
 "date_format":"YYYY-MM-DD HH24:MI:SS"
}

curl 예제

curl -X POST -H "Content-Type: application/json" "http://127.0.0.1:5003/machiot-rest-api/" -d '{ "values":[["TAG_00","2018-01-11 01:16:37",100],["TAG_01","2018-01-11 01:16:37",100]], "date_format":"YYYY-MM-DD HH24:MI:SS" }'

Get Tag List

tag의 목록을 얻는다.

사용법

{MWA URL}/machiot-rest-api/tags/list/

예제

http://192.168.0.31:5003/machiot-rest-api/tags/list/

결과

{
 "ErrorCode": 0,
 "ErrorMessage": "",
 "Data": [
     {"NAME": "TAG_00"},
     {"NAME": "TAG_01"},
     {"NAME": "TAG_02"},
     {"NAME": "TAG_03"}, ......
 ]
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/tags/list'

Get Time Range

입력된 Data의 시간 범위를 얻는다.

사용법

{MWA URL}/machiot-rest-api/tags/range/
{MWA URL}/machiot-rest-api/tags/range/{TagName}
 
TagName    : Tag Name (현재 복수의 Tag Name은 지원하지 않음)
TagName이 없는 경우는 전체 Data를 대상으로 시간범위를 구함

예제

http://192.168.0.31:5003/machiot-rest-api/tags/range/TAG_00

결과

{
 "ErrorCode": 0,
 "ErrorMessage": "",
 "Data": [
     {"MIN": "2017-01-01 00:00:00 000:000:000", "MAX": "2017-02-02 19:02:13 000:000:000"}
 ]
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/tags/range/TAG_00'

Request Rollup

Rollup을 강제로 실행한다. ('EXEC ROLLUP_FORCE' 명령을 실행, 약 6초 소요)

사용법

{MWA URL}/machiot-rest-api/rollup/

예제

http://192.168.0.31:5003/machiot-rest-api/rollup/

결과

{
 "ErrorCode": 0,
 "ErrorMessage": "",
 "Data": [
     {"EXECUTE RESULT": "Execute Success"}
 ]
}

curl 예제

curl -G 'http://192.168.0.31:5003/machiot-rest-api/rollup/'
  • No labels