openHAB 은 자바 기반 홈 오토메이션 솔루션입니다. 특정 벤더나 기술에 종속적이지 않고 오픈소스로 제작된 솔루션이며 현존하는 여러 표준들과 연동해서 동작이 가능합니다. openHAB runtime 이라 불리는 일종의 로컬 서버를 홈 네트웍상에 설치해서 사용하는데 NAS 같은 네트웍 서버를 사용해도 좋고 라즈베리파이 같은 손바닥 PC에 구축해도 됩니다.

설치해서 잠시 사용해 본 소감은.. (설치/관리) 구조가 복잡해서 익숙해지는데 시간이 꽤나 걸릴 것 같다는 겁니다. 편하자고 쓰는게 홈 오토메이션인데 시스템 배우는 불편을 감수해야 한다는건 치명적이지만 아직 홈 오토메이션이 성숙한 시장이 아니므로 진화해 나가는 과정으로 이해해 줄 수 있겠습니다. 일단 환경 설정이 정확히 되고나면 PC/모바일/브라우저 어디서든 편리하게 사용할 수 있습니다.

윈도우는 모르겠고, 우분투 리눅스에 설치하고 설정하는 것 자체가 난관입니다. 이와 관련한 국내에 관련 자료가 많지 않아 설치, 기본 기능 테스트 하는 과정에 대한 내용을 정리했습니다.

OpenHAB 설치

두 가지 방법으로 설치가 가능합니다. 소스코드를 다운로드 받아 서버에 복사해 넣어서 설치해도 되고, apt-get 명령어로 설치해도 됩니다. 전자는 openHAB 공식 매뉴얼에서 어떻게 하는지 알려주고 있으므로 아래 링크를 참고하세요.

여기서는 apt-get 명령어로 설치한 후 사용하는 방법으로 설명합니다.

보안키 설정 및 저장소 추가

  • wget -qO – ‘https://bintray.com/user/downloadSubjectPublicKey?username=openhab’ |sudo apt-key add –
  • echo “deb http://dl.bintray.com/openhab/apt-repo stable main” | sudo tee /etc/apt/sources.list.d/openhab.list

openHAB 설치

  • sudo apt-get update
  • sudo apt-get install openhab-runtime
  • => 여기서 * no java executable found at /usr/bin/java 에러 발생하는 경우 Java 를 설치하고 다시 시도. 링크 참고.
    http://ngee.tistory.com/276
  • sudo update-rc.d openhab defaults

파일 권한 설정

  • sudo chown -R openhab:openhab /etc/openhab
  • sudo chown -R openhab:openhab /usr/share/openhab

삼바설정 (이미 삼바가 동작하고 있다면 설치는 생략해도 됨)

  • sudo apt-get install samba samba-common-bin

삼바 설정 파일을 수정

  • sudo nano /etc/samba/smb.conf

WINS 서버 설정을 켜고 편의를 위해 OpenHAP 디렉터리를 공유. 아래처럼 내용을 수정

wins support = yes

아래 내용을 모두 추가

[OpenHAB Home]
 comment= OpenHAB Home
 path=/usr/share/openhab
 browseable=Yes
 writeable=Yes
 only guest=no
 create mask=0777
 directory mask=0777
 public=no
 
[OpenHAB Config]
 comment= OpenHAB Site Config
 path=/etc/openhab
 browseable=Yes
 writeable=Yes
 only guest=no
 create mask=0777
 directory mask=0777
 public=no

삼바 패스워드 설정

  • sudo smbpasswd -a openhab
  • sudo update-rc.d smbd enable
  • sudo update-rc.d nmbd enable
  • sudo service smbd restart
  • sudo /etc/init.d/openhab start

이 상태에서 브라우저로 http://raspberrypi.local:8080/ 접속하면 에러 웹 페이지가 보임. 아직 사이트맵을 생성하지 않아서 이 상태가 정상임.

여기까지 설정이 완료되면 openHAB의 주요 디렉토리가 생성됨. 아래 두 디렉토리 경로를 확인해 둘 것.

  • OpenHAB 공유 디렉토리 : /usr/share/openhab
  • OpenHAB 설정 디렉토리 : /etc/openhab

테스트용 파일 셋업

Demo Setup은 일종의 예제 파일들 모음으로 dummy 장치들이 설정되어 있어서 실제 장치들이 없어도 테스트 가능하도록 해줌. OpenHAB 공식 홈페이지에서 Demo Setup을 다운로드.

파일을 리눅스에 올리고 권한 설정

  • sudo chown -R openhab:openhab addons
  • sudo chown -R openhab:openhab configurations/

파일을 대상 디렉토리에 복사

  • sudo cp -r * /etc/openhab/configurations/
  • sudo cp * /usr/share/openhab/addons/

설정 파일 생성 및 서비스 재실행

  • cd /usr/share/openhab/configurations
  • sudo cp openhab_default.cfg openhab.cfg
  • sudo chown openhab:openhab openhab.cfg
  • sudo /etc/init.d/openhab restart

외부 네트웍과 연동

openHAB 서버가 설치되면 내부 네트웍에서 브라우저로 접근은 되지만 외부 네트웍에서의 접근은 안되네요. myopenhab 애드온을 설치하고 공식 홈페이지(http://www.openhab.org/)를 이용해야 가능한 듯 합니다.

myopenhab 애드온 설치

  • sudo apt-get install openhab-addon-io-myopenhab
  • sudo chown -R openhab:openhab /usr/share/openhab

webapps 디렉토리에 uuid, secret 파일이 있어야 함. 파일들을 확인.

  • cd /usr/share/openhab/webapps/static
  • ls

자바 1.7 이상이 필요하므로 버전 확인

  • java -version

공식 홈페이지에 가서 계정을 생성

계정 생성할 때 바로 위에서 확인했던 uuid, secret 파일 내용을 입력

설정 파일을 수정

  • cd /usr/share/openhab/configurations
  • sudo nano openhab.cfg

persistence:default 항목을 찾아 주석을 해제하고 아래와 같이 수정

persistence:default=myopenhab

configurations/persistence 디렉토리에 myopenhab.persist 파일을 생성

sudo nano persistence/myopenhab.persist

아래 내용을 입력

Strategies {
    default = everyChange
}
Items {
    * : strategy = everyChange
}

OpenHAB 서비스 재실행

  • sudo /etc/init.d/openhab restart

브라우저에서 OpenHAB 사이트에 로그인

브라우저에서 아래 경로를 통해 접속 가능

모바일용 OpenHAB

iOS, Android 전용 앱 다운로드 (openHAB 검색)

메뉴 – Settings – openHAB URL 에 자신의 서버 경로를 설정

  • http://<openHAB address or hostname>:8080

메뉴 – Settings – openHAB Remote URL 에 아래 경로를 설정

  • http://my.openhab.org

메뉴 – Settings – Username, Password 항목에 openHAB 홈페이지 가입시 사용한 id/pw 입력. id/pw 가 없으면 내부 네트워크(같은 공유기) 안에서만 접근이 가능함.

설정이 정상적으로 되면 아래처럼 앱에서 제어가 가능함. PC 브라우저를 함께 띄워서 설정을 변경하면 다른 곳에서도 상태가 변경되는지 확인할 것.

classicui

openHAB 동작 구조

위에서 설명한 내용은 openHAB을 설치하고 테스트 데이터를 이용해서 동작을 확인해 본겁니다. 그럼 실제 장치들을 연동해서 동작을 확인하려면? openHAB의 동작 구조에 맞게 설정을 변경해줘야 합니다.

로컬 네트워크(같은 공유기)내에서 브라우저로 접속할 때 아래처럼 사용합니다.

  • http://raspberrypi.local:8080/openhab.app?sitemap=demo

이 때 sitemap 이란걸 사용했습니다. sitemap은 openHAB 의 UI, 유저 인터페이스에 해당합니다. 즉, 화면에 어떻게 보여질것인가에 대한 정보를 담는 파일입니다. 앞서 사용한 Demo Setup은 configurations/sitemaps/demo.sitemap 파일에 해당 내용이 들어있고, 이게 아래처럼 브라우저 또는 모바일 앱에 표시될 화면을 구성합니다.

openhab-demo-running-496x500

sitemap 은 최상위 그룹(장치들의 묶음) 또는 방(공간) 단위로 구성할 수 있습니다. sitemap 파일 관련된 문법은 링크에서 확인하실 수 있습니다.

configurations/items 폴더에는 openHAB 과 연동될 장치들에 대한 정보가 기록됩니다. 반드시 물리적인 장치일 필요는 없으며 날씨, 주가와 같은 정보도 아이템으로 등록될 수 있습니다. items 파일에서 아이템들에 이름을 부여하고 다양한 그룹에 연동할 수 있습니다. 각 아이템은 대소문자 구분하니 주의해야 합니다.

configurations/items 폴더에는 rules 파일이 들어갑니다. rules 파일은 특정 시간이나 조건에 작업을 실행할 수 있도록 해주는 타이머, 매크로를 담습니다. 일종의 스크립트 언어를 사용하는 것과 유사하게 룰을 작성할 수 있습니다.

configurations/persistence 폴더는 조금 특수합니다. openHAB의 sitemap을 이용한 UI 는 인식된 장치들의 현재 상태를 보여주긴 하지만 데이터가 계속 기록으로 남도록 설정하지는 못합니다. persistence는 데이터베이스에 센서값 등이 일정한 간격, 일정한 양만큼 저장될 수 있도록 설정하는데 사용됩니다.

configurations/persistence 폴더의 파일들은 각 장치가 전송해주는 값이 어떻게 문자로 표시되어야 할지를 지정합니다. 예를 들어 온습도 센서가 값을 전달해준다면 이 값이 어떤 범위의 값이며 사용자에게 보여질 때는 어떻게 가공되어야 하는지를 설정하는 겁니다.

이 중 sitemapitems 만 필수이며 나머지는 옵션입니다. 따라서 모든 설정을 일일이 만져줘야 할 필요는 없습니다. 꽤나 복잡하긴 합니다만 자신만의 sitemap과 item을 하나씩 설정해가면 감을 잡으실 수 있을겁니다.

새로운 sitemap 생성과 설정

sitemaps 디텍토리에 home.sitemap 파일을 만들고 아래 내용을 넣으세요.

sitemap home label="My Home"
{
 
}

items 디렉토리에는 home.items 파일을 만들고 비워둡니다. 그리고 아래 경로로 접속해보면 “My Home” 이라는 사이트 맵이 보여질겁니다. 물론 아무 내용이 없는 상태겠죠.

  • https://my.openhab.org/openhab.app?sitemap=home

이제 설정 파일에 내용을 하나씩 추가해나가면서 테스트하면 됩니다. 특정 장치 아이템의 경우에는 그에 맞는 add-on 을 설치해줘야 동작합니다. 보다 자세한 내용은 아래 매뉴얼을 참고하세요.

이렇게 설정파일을 일일이 수정해서 홈 오토메이션 환경을 만드는 것은 어렵울 뿐 아니라 비효율적이기도 합니다. 하지만 openHAB에서는 설정을 도와줄 GUI 도구를 기본으로 제공해주지는 않습니다. GUI를 이용한 설정 작업은 HABmin 이라 불리는 별도의 add-on을 설치해서 사용할 수 있습니다. 당연하게도 HABmin을 사용하는 것이 훨신 직관적이고 효율적입니다.

charting-edit

HABmin을 설치하기 위해서는 관련 파일들을 다운로드 받아야 합니다. 아래 링크에서 받을 수 있습니다.

[Download ZiP] 버튼으로 전체 파일을 받아 압축을 풉니다. [addons] 폴더안에는 2개의 jar 파일이 있습니다. 이걸 라즈베리파이의 아래 경로에 복사해서 넣어줘야 합니다.

  • /usr/share/openhab/addons/

아래 경로에 habmin (반드시 소문자!!) 디렉토리를 만들고 나머지 파일들을 모두 넣어줍니다.

  • /usr/share/openhab/webapps/

HABmin과 유사하게 HABmin2 프로젝트도 개발되고 있습니다. OpenHAB2를 지원하고 보다 향상된 UI와 기능을 제공하는 듯 하니 설치하는 김에 같이 설치해 줍니다. 설치방법은 HABmin과 유사합니다. 아래 링크에서 파일을 받습니다.

[Download ZiP] 버튼으로 전체 파일을 받아 압축을 풉니다. [output] 폴더안에는 1개의 jar 파일이 있습니다. 이걸 라즈베리파이의 아래 경로에 복사해서 넣어줘야 합니다. [output] 폴더에는 apk 파일이 하나 있는데, 이건 안드로이드용 설치파일 입니다. 안드로이드 폰에서 이 파일을 설치하면 전용앱이 폰에 설치됩니다.

  • /usr/share/openhab/addons/

아래 경로에 habmin2 (반드시 소문자!!) 디렉토리를 만들고 나머지 파일들을 모두 넣어줍니다.

  • /usr/share/openhab/webapps/

openHAB 서비스를 재실행하고

  • sudo service openhab restart

라즈베리파이와 같은 공유기에 연결된 PC에서 브라우저로 아래 URL에 접속하세요.

  • http://openhab_server_IP:8080/habmin2
  • 또는 http://openhab_server_IP:8080/habmin/

테스트 해보니 공유기 외부의 네트웍에서는 HAPmin 에 접근이 안되는 것 같습니다.

설치가 설공적으로 진행되면 아래와 유사한 GUI 를 통해 openHAB 서버의 설정을 바꿀 수 있습니다.

habmin

참고자료