Posting

Machbase의 최신 소식을 지금 만나보세요

EdgeMaster와 Raspberry pi 4를 이용해서 온습도 감시 시스템을 구축해 보자

개요

올해 초에 서버실의 에어컨이 고장이 나면서 서버실의 온도가 올라가서 서버가 전부 다운되는 사고가 발생했던 일이 있었다.

이때 이런 일을 방지하려고 EdgeMaster를 이용해서 서버실의 온도를 감시해서 경고 메일을 발송하는 시스템을 만들었었다.

EdgeMaster에 접근하는 간단한 예가 될 수도 있으므로 과정을 소개하려고 한다.

준비물

  • Raspberry pi 4 (4G RAM & ubuntu OS)
  • EdgeMaster Server로 사용할 Linux 서버(Machbase가 설치된 서버)
  • 온습도 센서 (DHT22)
  • 소켓 점퍼 케이블 1P(암-암) 3개

센서 연결

Raspberry pi의 핀배열을 참조하여 해당되는 핀에 DHT22 온습도 센서를 소켓 점퍼 케이블을 사용해서 연결한다.

Raspberry4_gpio.png
DHT22.png

Raspberry pi 4 준비

gpio를 사용해서 센서와 통신을 하기 때문에 gpio 라이브러리가 설치되어 있어야 한다. 없는 경우 아래와 같이 설치한다.

$ git clone https://github.com/WiringPi/WiringPi
$ cd WiringPi
$ ./build

그리고 부트시 device에 접근할 수 있도록 권한을 부여해 주어야 한다.

$ sudo chown root:sudo /dev/gpiomem
$ sudo chmod g+rw /dev/gpiomem

EdgeMaster Server 설치

리눅스 서버에 EdgeMaster를 설치해야 한다.(Machbase는 이미 5656번 port를 사용하도록 설치되어 있다고 가정한다.)

아래와 같이 설치 파일의 압축을 풀고 환경변수를 설정해 준다. (설치 폴더는 ~/edgemaster 라고 가정한다.)

$ cd ~
$ wget http://dl.machbase.com/dist/edgemaster/1.0.4/edgemaster-server-1.0.4-official-LINUX-X86-64-release.tgz
--2020-10-16 15:47:38--  http://dl.machbase.com/dist/edgemaster/1.0.4/edgemaster-server-1.0.4-official-LINUX-X86-64-release.tgz
Connecting to dl.machbase.com:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 70193826 (67M) [application/x-gzip]
Saving to: ‘edgemaster-server-1.0.4-official-LINUX-X86-64-release.tgz’
100%[========================================================================================================================================================>] 70,193,826  11.2MB/s   in 6.0s
2020-10-16 15:47:44 (11.1 MB/s) - ‘edgemaster-server-1.0.4-official-LINUX-X86-64-release.tgz’ saved [70193826/70193826]
 
$ mkdir edgemaster
 
$ cd edgemaster
$ tar xzvf ../edgemaster-server-1.0.4-official-LINUX-X86-64-release.tgz
$ export EM_SERVER_HOME=~/edgemaster
$ export PATH=$EM_SERVER_HOME/bin:$PATH

아래와 같이 EdgeMaster Server를 실행한다.

$ em-server start

만약 Machbase의 port가 기본값인 5656이 아니라면 $EM_SERVER_HOME/conf/server.json 에서 fog_connect 항목을 변경하고 EdgeMaster Server를 실행하면 된다. conf폴더에 server.json 파일이 없는 경우에는 conf/default 폴더의 server.json 파일을 변경한다.

예를 들어 Machbase의 Port가 27002라면 아래와 같이 변경하면 된다.

....
"fog_connect": {
    "id": "",
    "ip": "",
    "pass": "",
    "port": "27002"
},
....

Machbase에 이미 Tag 테이블이 생성되어 있다면 삭제하고 EdgeMaster를 실행해야 한다.
Tag테이블은 EdgeMaster에서 자동으로 생성한다. (따라서 최초 실행시에는 Tag 테이블 생성시간에 필요한 만큼 시간이 소요된다.)

EdgeMaster Client 설치 및 등록

Raspberry pi에 EdgeMaster Client를 설치하는 것은 Web에서 진행하면 된다.

EdgeMaster Client 패키지와 Machbase 패키지를 미리 다운로드받아 준비해둔다. (CPU가 ARM이므로 맞는 것으로 준비한다.)

http://server ip:5002로 접속하면 아래와 같은 초기화면이 나타난다. 기본 ID/PW는 admin/admin 이다.

00_home.png

메뉴에서 Manage를 선택하면 EdgeMaster Client를 설치할 수있다.

아래의 화면에서 사용할 패키지를 업로드하고 Next를 누른다.

01_install_file.png

먼저 설치를 진행할 Raspberry pi의 IP를 Edge List에 추가하고, 접속정보(ID, PW 등)를 입력한다.

설치를 진행하기 전에 먼저 설치가능 여부를 검사하기 위한 테스트를 진행한다.

02_install_test.png

테스트를 통과해야지만 하단의 Install 버튼이 활성화 되어서 설치를 진행할 수 있다.

03_install_complete.png

설치가 완료되면 자동으로 Server에 등록된다. 등록진행 여부를 질문했을 때 No로 대답했으면 Home에서 Create를 눌러서 별도로 추가할 수 있다.

DHT22 센서 Taglet 추가

Edge List에서 Edge를 선택하면 Taglet 리스트를 확인할 수 있다. Taglet은 Tag(센서)와 EdgeMaster를 연결해주는 프로그램으로 적절한 Taglet을 선택해서 사용하면 된다.

Taglet List에서 + 버튼을 눌러서 Taglet을 추가한다.

04_add_taglet_button.png

Profile항목에서 dht22csv를 선택하고 Name을 결정한다.

05_add_taglet_main.png

Tags 탭에서 사용할 Tag를 확인하고 data의 제한 범위를 설정한다.

DHT22 센서는 측정할 때마다 썹씨온도(TemperC), 습도(Humidity), 화씨온도(TemperF)의 값을 보내준다.

사용하지 않을 Tag는 Using항목을 끄면되고, 값을 EdgeMaster Server로 전송해서 보관하지 않을 Tag는 To Fog를 끄면된다. 대부분의 Edge는 저장공간이 작다는 것을 감안해서 수집된 data는 Edge에 보관하는 기간이 한정되어 있다.(기본값 3일, Setting 메뉴에서 변경 가능)

Warning Range를 벗어나면 warning이 발생하고 Error Range를 벗어나면 error가 발생한다. 사용하지 않을 범위는 앞부분의 checkbox를 끄면 된다.

이 범위를 벗어나면 뒤에서 설명할 mail 설정에 따라서 mail이 발생된다.

06_add_taglet_tag.png

등록을 완료하고 Home으로 돌아오면 아래와 같이 data가 수집되고 있는 것을 확인할 수 있다.  DHT22 Taglet는 3초간격으로 온습도를 측정해서 Edge로 전달해 준다.

DHT22 spec상으로는 측정 후 최소한 2초간 쉬라고 되어있어서 2초 간격으로  측정을 했더니 측정오류가 많이 발생해서 3초간격으로 측정한다.

07_add_taglet_home.png

Home화면에서 특정 Edge의 우상단에 있는 Edge chart 아이콘을 클릭하면 Edge에 저장되고 있는 값들을 실시간 chart로 확인할 수 있다.

08_edge_chart.png

Alarm 메일 설정

온도나 습도가 정해진 범위를 벗어나면 메일을 발송하도록 설정하려면 메일서버를 설정해 주어야 한다.

Setting의 Alarm 탭에서 Mail 전송여부를 Y로 변경하고 각 항목을 입력한다.

SMTP Information

항목설명비고
ServerMail 서버의 접속 IP 
PortMail 서버의 접속 Port 
Server UserMail 서버 계정의 User ID 
Server PasswordMail 서버 계정의 비밀번호 

Mail Information

항목설명비고
Mail From발송자 Mail 주소 
Mail To수신자 Mail 주소수신자가 여러 명일 경우 “,”로 구분하여 입력한다.
Mail SubjectMail의 제목 
Mail MessageMail의 내용기본적인 포맷이 설정되어 있으며, 사용자가 원하는 대로 수정 가능하다.메일의 내용에는 아래의 변수를 사용할 수 있다.
{{event_name}} : Event의 명칭
{{event_level}} : Event 단계
{{event_edge}} : Event가 발생한 Edge
{{event_from}} : Event 발생 시작 점
{{event_to}} : Event 발생 종료 점
{{event_tag}} : Event가 발생한 Tag

많이 사용하는 Google의 메일 서버를 사용하는 경우는 아래와 같이 설정하면 된다.(google 계정 설정의 보안 탭에서 “보안 수준이 낮은 앱의 엑세스”항목을 허용으로 변경해 주어야 한다.)

09_alarm_set.png

이렇게 설정하고 Save 버튼을 눌러 저장한 다음 Taglet 설정에서 아무 Tag나 Warning Range를 변경해서 warning이 발생하도록하면 경고 메일이 발송된 것을 확인할 수 있다.

10_alarm_mail.png

동일한 종류의 오류가 계속 발생하고 있어도 경고 메일은 1시간이 지나야 발송된다.(단 오류 발생은 계속 기록된다.)

마무리

Raspberry pi를 활용한 온습도 감시 시스템은 구축방법이 소개되어 있는 것도 많고 손쉽게 구축할 수도 있다.

EdgeMaster를 이런 시스템으로만 활용하는 것은 낭비일 수도 있지만 이런 시스템을 한번 구축해 보는 것이 EdgeMaster를 쉽게 이해할 수 있는 방법인 것 같아서 소개를 한다.

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을