이번 포스트에서는 Home IoT Gateway에서 수개월간 수집한 센서 데이터를 로딩해 보겠습니다. 그리고 이 데이터로 간단하게 Tag Analyzer를 활용해 보겠습니다.
1. 실습 자료
1-1. 디렉터리 확인
가장먼저 이번 실습에서 사용할 스크립트와 데이터를 확인해 보겠습니다. edu_4_house_sensor 디렉터리를 확인하면 이전의 실습에서 사용했던 것과 비슷한 파일들이 있습니다.
Host:~/work/TagTutorial/edu_4_house_sensor$ ls 1_create_table.sql # ENERGYDATA 테이블 생성 1_create_tag.sql # Tag Table 생성 : 이미 생성했다면 필요 없음. 2_meta.sql # 태그 매타 정보 3_load.sh # 리눅스용 PLC 데이터 로딩 3_load.bat # Windows용 PLC 데이터 로딩 4_to_tag.sql # PLC로 부터 Tag 테이블 로딩 energydata_complete.zip # 실제 센서 데이터
1-2. 데이터 셋
데이터는 energydata_complete.zip으로 압축되어 있습니다. 압축해제 후, energydata_complete.csv를 확인하면 수집 기간은 2016년 1월 11일 오후 5시부터 그해 5월 27일 오후 6시이며, 모두 10분 간격으로 입력되었습니다.

csv의 최상단에 있는 컬럼명과 데이터베이스 입력시 대응될 태그명은 다음과 같습니다.
컬럼명 | 태그명 | 내용 (단위) |
---|---|---|
APPLIANCES | ETAG_APPLIANCES | 가전 전력 사용량 (Wh) |
LIGHTS | ETAG_LIGHTS | 조명 전력 사용량 (Wh) |
T1 | ETAG_T1 | 주방 온도 (섭씨) |
T2 | ETAG_T2 | 거실 온도 (섭씨) |
T3 | ETAG_T3 | 세탁실 온도 (섭씨) |
T4 | ETAG_T4 | 사무실 온도 (섭씨) |
T5 | ETAG_T5 | 화장실 온도 (섭씨) |
T6 | ETAG_T6 | 북쪽 외부 온도 (섭씨) |
T7 | ETAG_T7 | 다용도실 온도 (섭씨) |
T8 | ETAG_T8 | 자녀방 온도 (섭씨) |
T9 | ETAG_T9 | 부모방 온도 (섭씨) |
TO | ETAG_TO | 외부 온도 (섭씨) |
RH_1 | ETAG_RH_1 | 주방 습도 (%) |
RH_2 | ETAG_RH_1 | 거실 습도 (%) |
RH_3 | ETAG_RH_1 | 세탁실 습도 (%) |
RH_4 | ETAG_RH_1 | 사무실 습도 (%) |
RH_5 | ETAG_RH_1 | 화장실 습도 (%) |
RH_6 | ETAG_RH_1 | 북쪽 외부 습도 (%) |
RH_7 | ETAG_RH_1 | 다용도실 습도 (%) |
RH_8 | ETAG_RH_1 | 자녀방 습도 (%) |
RH_9 | ETAG_RH_1 | 부모방 습도 (%) |
RH_OUT | ETAG_RH_OUT | 외부 습도 (%) |
PRESSURE | ETAG_PRESSURE | 기압 (mm Hg) |
WINDSPEED | ETAG_WINDSPEED | 바람세기 (m/s) |
VISIBILITY | ETAG_VISIBILITY | 가시도 (km) |
TDEWPOINT | ETAG_TDEWPOINT | 온도 (섭씨) |
RV1 | ETAG_RV1 | Random 값 |
RV2 | ETAG_RV2 | Random 값 |
2. 실습
이전의 튜토리얼과 동일한 순서대로 수행하면 됩니다. 먼저 machadmin으로 DB를 초기하고 아래의 스크립트들을 실행시켜 주세요.
Host:~/work/TagTutorial/edu_4_house_sensor$ machsql -f 1_create_tag.sql Host:~/work/TagTutorial/edu_4_house_sensor$ machsql -f 1_create_table.sql Host:~/work/TagTutorial/edu_4_house_sensor$ machsql -f 2_meta.sql Host:~/work/TagTutorial/edu_4_house_sensor$ unzip energydata_complete.zip Host:~/work/TagTutorial/edu_4_house_sensor$ sh 3_load.sh (윈도우는 3_load.bat) Host:~/work/TagTutorial/edu_4_house_sensor$ machsql -f 4_to_tag.sql
2-1. Rollup 생성 확인
위의 스크립트 수행 후 약 2~3분간 대기하면, TAG TABLE의 인덱스와 Rollup Table이 모두 생성됩니다. 생성된 모습은 MWA의 SQL 화면에서 아래와 같이 확인할 수 있습니다. 여기서는 반드시 TAGROLLUP_HOUR의 Records 개수가 0이 아닌 23030이 된것을 확인해 주셔야 합니다.

2-2. Tag Analyzer 시간 범위 설정
최초로 Tag Analyzer를 보면, 아무것도 없이 아래와 같이 생긴 것을 보실 수 있습니다 우측 상단의 시계 모양 아이콘을 클릭해서 차트를 볼 전체 시간 범위를 설정해 주세요.

Apply를 누르면 시간이 확정됩니다. 만일 이 시간의 범위를 저장하고 싶다면 디스크 모양의 아이콘을 클릭해서 저장명과 타이틀 명을 각각 입력해 주시면 됩니다.


2-3. 차트 출력을 위한 태그명 선택
Tag Analyzer에서 큰 + 를 누르면 팝업 윈도우가 뜨고, 이곳에서 아래와 같은 태그 선택 창이 나타납니다. 원하는 태그가 선택되었으면, OK 버튼을 눌러서 적용해 주세요.
- 검색창을 통해서 태그 이름을 필터링할 수 있다. 리스트가 너무 많을 경우 원하는 이름의 일부를 넣고, Search를 누른다.
- 좌측 패넬은 이렇게 필터링 된 태그 리스트이다. 이 태그 이름을 클릭하면, 우측에 나타나면서 선택된다.
- 우측 패넬은 선택된 태그의 리스트이다. 이 태그 이름을 클릭하면, 우측에서 사라지면서 선택이 취소된다.
- 차트 종류를 현재 선과 점 두 개 중에 하나를 선택할 수 있다. 기본으로는 선 차트가 선택된다.

2-4. 전력량 차트 그리기
전력 사용량 태그인 ETAG_APPLIANCES와 ETAG_LIGHTS를 설정하고, 각각 통계지표를 Average로 선택하면, 아래와 같이 출력됩니다.

2-5. 대시보드 색 조절
현재 MWA는 두 종류의 칼럼 템플릿이 대시보드를 위해 존재합니다. 위의 그림을 White 색상이고, 아래와 같이 선택하면, 블랙 색상을 사용할 수 있습니다. Set ▶ Preference 메뉴를 클릭하면, 다음과 같이 White 혹은 Black을 선택할 수 있습니다.

- Home Dashboard : 저장된 대시보드에서 default 화면 변경
- Query Timeout : 일정 시간동안 DB가 답이 없을 경우에 해당 질의 취소하여 웹서버와 DB 부하 방지, Default로 10초로 되어 있음.

아래는 Black으로 변경했을 때의 화면입니다.

2-6. 대시보드 저장하기
다양한 종류의 차트를 만들고, 주제별로 저장하여 나중에 해당 대시보드 화면을 쉽게 불러올 수 있습니다. 아래와 같이 디스크 모양의 아이콘을 클릭해 주세요.

그러면, 다음과 같은 화면이 나타나는데, 각각의 내용은 다음과 같습니다.
- Board ID : 이것은 저장된 대시보드가 저장될 유일한 아이디 명을 기록한다. 중복될 수 없다.
- Board Title : 이것은 화면에서 해당 대시보드를 선택할 때 사용하는 설명이다.

위와 같이 저장하면, 화면에 상단에 아래와 같이 위에서 저장한 보드 타이틀이 출력됩니다.

2-7. 차트 메뉴
만들어진 하나의 차트는 다양하게 표현될 수 있습니다. 차트의 우측 상단메뉴를 확인해 주세요.

- 첫 번째 : 해당 차트만 별도의 웹 윈도우로 만들어서 링크로 활용할 수 있도록 해 준다.
- 두 번째 : 해당 차트를 수정할 수 있는 다양한 메뉴 화면이 출력된다.
- 세 번째 : 해당 차트를 리프레시 하여 새롭게 그린다.
- 네번째 : 해당 차트를 삭제하는 메뉴이다.
2-8. 차트 수정 세부 메뉴
위의 두 번째 메뉴를 누를 경우 아래와 같이 다섯 개의 세부 항목이 나타납니다. 각각의 역할은 다음과 같습니다.
2-8-1. General 메뉴
해당 차트의 크기와 이름을 설정할 수 있습니다. 또한 차트를 클릭했을 경우의 동작 등이 설정 가능합니다.

2-8-2. Datas 메뉴
보려고 하는 태그를 추가, 변경, 삭제할 수 있습니다.

2-8-3. Axes 메뉴
좌표 축을 세부적으로 조절할 수 있습니다. 특히 Y-axis의 경우에는 Y 축의 시작 값을 0으로 할지 결정합니다.

2-8-4. Display 메뉴
실제 차트의 라인과 포인트의 크기 및 굵기, 색상을 설정합니다.

2-8-5. Time Range 메뉴
해당 차트의 시간 속성 값을 부여합니다. 출력할 전체의 시간 범위를 설정할 수 있을 뿐만 아니라, 실시간 데이터 입력 시 해당 차트를 Refresh 하기 위한 주기도 설정할 수 있습니다.

2-9. 차트 수정후 주의할 점
변경된 차트는 반드시 대시보드에 반영되어야 하는데, 이를 위해서는 아래의 그림과 같이 번호 순서대로 클릭해야 합니다.
- 만일 차트가 변경되었으면, 1번의 체크박스가 붉은색으로 변경되고, 이를 클릭하면 검은색으로 다시 바뀐다.
- 이때 2번의 체크박스를 눌러서 변경된 차트를 대시보드에 반영하도록 한다.
- 그리고, 변경된 차트를 영구히 저장하기 위해서는 앞에서 언급한 것처럼 대시보드 저장을 반드시 수행한다.

3. 다양한 차트 표현
3-1. 선 없는 점, 면 차트 (전기 사용량)

3-2. 가는 선과 점, 면 차트 (평균 습도)

3-3. 점만 활용한 차트 (평균 온도)

3-4. 하나의 태그에 대한 다양한 통계 출력 (풍량 평균/최소/최대)

4. 기타 : 데이터 추적 및 분석
Tag Analyzer의 진정한 능력은 위의 차트를 기반으로 실제 통계 데이터로부터 실제 Raw 데이터까지의 추적과 분석이 가능하다는 것입니다. 그러나, 이 부분은 세부적인 내용이 많기 때문에 이후 다른 튜토리얼을 통해 다시 소개해 드리겠습니다.
이상으로 기본적인 Tag Analyzer의 기능들을 보여드렸습니다. Tag Analyzer를 활용하여 다양한 차트를 구현하실 수 있습니다. 다양한 태그 시각화와 분석에 많은 도움이 되었기를 바랍니다.