Feb 282017
 

이번 글은 우분투 12.04를 기준으로 OpenHAB2와 Mosquitto를 설치해서 MQTT 바인딩을 통해 가상의 스위치의 상태를 보고 제어하는 과정이다. 궁극적으로는 실제 센서나 원격제어 가능한 스위치에 사용할 수 있는 방법으로써 OpenHAB을 어떻게 사용할 수 있는지, MQTT를 가지고 어떻게 HW등과 연동하는지 알 수 있는 기회가 되었으면 한다. 추후 Kankun wifi plug를 위한 준비 과정이다. 참 길다 ㅠ.ㅠ

Zulu
다음은 OpenHAB2에서 권장하는 Open JDK계열의 Zulu를 설치하고 설정하는 과정이다.
(1) Installation
http://zulu.org/zulu-community/zuludocs
sudo apt-key adv –keyserver –recv-keys 0x219BD9C9
sudo apt-add-repository ‘deb http://repos.azulsystems.com/ubuntu stable main’
sudo apt-get update
sudo apt-get install zulu-8

(2) Additional setups
cd ~
vi .profile
export JAVA_HOME=/usr/lib/jvm/zulu-8-amd64/
export PATH=/$JAVA_HOME/bin:$PATH
source .profile

(3) Choose JDK
sudo update-alternatives –config java
Notes.
– 만약 jdk가 1개 뿐이면 선택할 필요 없음

OpenHAB2
(1) 설치
http://docs.openhab.org/installation/linux.html#package-repository-installation
wget -qO – ‘https://bintray.com/user/downloadSubjectPublicKey?username=openhab’ | sudo apt-key add –
echo ‘deb http://dl.bintray.com/openhab/apt-repo2 stable main’ | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
sudo apt-get install openhab2 openhab2-addons

(2) 서비스 제어
sudo update-rc.d openhab2 defaults
sudo /etc/init.d/openhab2 start
sudo /etc/init.d/openhab2 stop
Notes.
– restart 명령의 경우 서비스가 제대로 종료안되는 이슈가 있으므로 stop 후 start해야 함.

(3) 초기 설정
sudo /etc/init.d/openhab2 start
웹브라우저에서 http://openhab_server_ip:8080 접속
Standard package setup 클릭해서 UI 설치
Paper UI 선택
우측 상단 메뉴 –> Addons –> Bindings tab에서 MQTT binding 선택 후 설치

MQTT
가벼운 메시징 프로토콜로서 센서 등과 같은 HW에서 사용하기 좋은 통신 방법이다. HTTP바인딩과 달리, 메시징 서버(=브로커)가 외부접근 가능하면, 방화벽 등의 상관없이 통신이 가능하여 선택하였다. 사실 로컬네트워크안에 라즈베리파이를 가지고 MQTT 서버(=브로커)를 운영해도 괜찮지만, 이미 가지고 있는 $5 짜리 DigitalOcean 가상서버에 OpenHAB2와 MQTT서버를 운영함으로써, 방화벽 등의 문제도 피해갈 수 있으리라는 판단이었다. (사실 인터넷망이 공인 ip를 주지 않는 서비스라서… ㅠ.ㅠ)

(1) 설치
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients

(2) 기본 테스트
터미널 1: mosquitto_sub -h localhost -t /test_topic
터미널 2: mosquitto_pub -h localhost -t /test_topic -m “Message from terminal 2”
Notes.
– topic = 채팅방이라고 생각하면 됨

OpenHAB2 + MQTT기반 Switch 연동
Notes
– 현재 시점으로 MQTT binding의 경우 OpenHAB2의 UI에서 설정이 안되므로 1.x처럼 파일을 직접 편집해야 함

(1) /etc/openhab2/services/mqtt.cfg
mymqtt.url=tcp://localhost:1883
mymqtt.clientId=openHAB
mymqtt.qos=2
mymqtt.retain=true
mymqtt.async=true

NoteS.
– “mymqtt” = MQTT broker name

(2) /etc/openhab2/items/switch.items
Switch mqttsw1 “Switch 1″ (all) {mqtt=”>[mymqtt:/testsw/1/command:command:ON:1],>[mymqtt:/testsw/1/command:command:OFF:0],<[mymqtt:/testsw/1/state:state:ON:1],<[mymqtt:/testsw/1/state:state:OFF:0]”}
Notes.
– mqttsw1 : OpenHAB2내부에서 사용되는 id
– mqtt : mqtt type binding
– mymqtt : broker name
– /testsw/1/command : 제어용 MQTT 채널
– /testsw/1/state: 상태확인용 MQTT 채널

(3) /etc/openhab2/sitemaps/Test.sitemap
sitemap Test label=”Menu”
{

Frame label=”MQTT”
{
Switch item=mqttsw1 label=”MQTT Switch 1″
}

}
Notes.
– Test : sitemap name, file name과 일치해야 함
– mqttsw1: OpenHAB2내부에서 사용되는 id
– “MQTT Switch 1”: UI에서 표시되는 레이블

(4) 안드로이드폰에 OpenHAB 설치 설치
– 실행 후 처음 보는 선택창에서 _default 선택(의미없슴)
– 우측 상단 버튼(…) 눌러서 Setting 진입 후 demo mode uncheck 한 후 openHAB URL에 http://openhab_server_ip:8080 입력 후 이전으로 돌아가기 버튼 누르면 지정해준 서버에 연결함
– 우측 상단 버튼(…) 눌러서 Select default sitemap 선택해서 위에서 생성해준 Test를 선택하면 다음처럼 제어버튼 및 현재 상태를 볼 수 있슴
openhab_android_app

(5) 안드로이드에서 테스트
OpenHAB서버에서 tail -f /var/log/openhab2/events.log해서 상태변화를 감지함
Toggle 스위치를 선택할 때마다 다음과 같은 메시지가 나오면서 상태가 변화됨을 확인
2017-02-27 19:58:24.608 [ItemCommandEvent ] – Item ‘mqttsw1’ received command OFF
2017-02-27 19:58:24.614 [ItemStateChangedEvent ] – mqttsw1 changed from ON to OFF

(6) MQTT 메시지를 가지고 테스트(HW 스위치 시뮬레이션)
OpenHAB서버에서 tail -f /var/log/openhab2/events.log해서 상태변화를 감지함
mosquitto_pub -h localhost -t /testsw/1/state -m 1 실행 후 상태가 ON으로 변하는 지 확인(참고로 1, 0, “1”, “0” 모두 가능함)

(7) MQTT 사용자 인증 / 토픽 접근 제어
sudo vi /etc/mosquitto/mosquitto.users 해서 아이디:암호 형식으로 다음처럼 1줄에 1개씩 기재
user_1:password_1

sudo mosquitto_passwd -U /etc/mosquitto/mosquitto.users

sudo vi /etc/mosquitto/mosquitto.conf 해서 다음을 추가
allow_anonymous false
password_file /etc/mosquitto/mosquitto.users

sudo service mosquitto restart

테스트 해보자.
터미널 1: mosquitto_sub -h localhost -t /test_topic -u user_1 -P password_1
터미널 2:
– mosquitto_pub -h localhost -t /test_topic -m “Message from terminal 2” -u user_1 -P password_1  –> OK
– mosquitto_pub -h localhost -t /test_topic -m “Message from terminal 2” –> Connection refused

sudo vi /etc/mosquitto/mosquitto.acl 해서 다음을 추가
user user_1
topic /testsw/1/command
topic /testsw/1/state

sudo service mosquitto restart

테스트 해보자.
터미널 1: mosquitto_sub -h localhost -t /testsw/1/state -u user_1 -P password_1
터미널 2: mosquitto_pub -h localhost -t /testsw/1/state -m “ON” -u user_1 -P password_1 –> OK

터미널 1: mosquitto_sub -h localhost -t /testsw/2/state -u user_1 -P password_1
터미널 2: mosquitto_pub -h localhost -t /testsw/2/state -m “ON” -u user_1 -P password_1  –> 메시지가 보내지지 않음

(8) OpenHAB2의 mqtt.cfg 변경
설정한 아이디/암호를 /etc/openhab2/services/mqtt.cfg에 반영
mymqtt.user=user_1
mymqtt.pwd=password_1

Feb 242017
 

작년 ADSL 모뎀을 자동으로 리부팅시켜주는 기기를 찾다가 우연히 발견한 제품이다. 당시 아마존에 인터넷 연결이 끊어지면 모뎀을 자동으로 리부팅시켜주는 Wifi Resetplug제품이 있었는데, 거기에서 이 제품이 Kankun smartplug제품과 동일하다는 글을 보게 되었다. Aliexpress에서 보니 역시나 동일한 외양의 제품이 약 USD 13에 판매중이었다. 꼬리에 꼬리를 이은 검색 끝에, Kankun Smart Plug KK-SP3라는 제품이 OpenWRT기반의 AC outlet sw라는 것이었다. 무슨 얘기냐 하면, AC플러그 제어가 가능한 초저전력 USD 13짜리 리눅스 박스였다. AC outlet은 Free volt로 대략 10A / 90V-265V  / 50HZ-60HZ / 최대 2200W를 지원하므로 큰 전력을 필요로 하지 않는 기기에만 사용해야 한다. 제어용 안드로이드앱을 사용하면 Timer/Delayed timer/스마트폰 완충시 자동 차단/Wifi 신호 증폭 기능을 사용할 수 있다. 입력 단자는 US, AU, EU, UK형식이 있고 출력 단자는 유니버셜타입이여서 AU형식으로 3개를 주문했다. 작년 기준으로 일단 원격 제어만 해도 13불 정도면 쓸만한  수준(지금은 더 저렴한 녀석들도 많긴 하다)이었고, 추후 해킹(구글그룹 참조)을 통해 가지고 놀 수도 있을 거라는 생각(PushBullet연동, 인터넷 회선 감시, 출/퇴근시 자동 ON/OFF, OpenHAB연동 등등)에서 였다. 물론 인터넷 회선 감시해야 하는 필요성은 인터넷 회사를 바꿈으로서 사라지긴 했다. 구매 이유가 되어주는 역할을 했으니…

kankun_appearance

 

받고나서 제어용 안드로이드앱을 깔아서 설정하면 되는데 이 과정이 작년에는 조금 잘 안되었고 기능도 없었는데 최근에 해보니 앱도 깔끔해지고 설정/기능도 훨씬 좋아졌다. 앱스토어에서 Kankun을 검색 후 나오는 중국어플을 깔면 된다. 물론 설치 후에는 영어로 표시된다.
kankun_app

1.스마트폰: 집안 무선랜에 접속한다.

kankun_setup_2
2.스마트폰: SmartPlug앱을 실행해서 Setting탭으로 간 후 접속한 무선랜 비번을 입력한다.
3.SW: 스위치를 콘센트에 꽂은 후 20초를 기다린다 –> 한쪽 끝에 있는 스위치를 5초간 누른 후 손을 뗀다 –> 다시 20초를 기다리면 파란색 LED가 점등한다.
4.스마트폰: 무선랜 목록에서 OK_SP3(스위치가 생성한 ad-hoc 무선랜)를 선택해서 연결한다.
kankun_setup_35.스마트폰: SmartPlug앱에서 Configure버튼을 누른다. 100%까지 될 때까지 기다린다.
kankun_setup_6

6.스마트폰: 다음과 같은 메시지가 나와도 별 이상없으니 무시한다.kankun_setup_8

7.스마트폰: SmartPlug라고 상단에 새로 잡힌 스위치가 Device List로 가면 보인다.kankun_setup_7

기기 목록에서 스위치를 선택하면 현재 상태를 보여준다.kankun_control_1

가운데 버튼을 누르면 ON/OFF 조절이 가능하다. kankun_control_2

오른쪽 하단 + 버튼을 누르면 추가 기능 메뉴가 나온다. kankun_control_4

타이머 설정으로 특정 시간/요일 범위에서 ON/OFF를 조절할 수 있는데, 복수 타이머 설정도 가능하다. kankun_control_5

Delay timer는 일단 시간 후에 상태를 toggle해주는 타이머다. kankun_control_6

스마트 컨트롤에는 Wifi 신호 증폭 및 만충시 자동 차단 기능이 있다. 신호 증폭은 얼마나 되는 지 모르겠으나 스마트폰 만충시 자동차단을 쓸만한 거 같다. 다만 스위치를 계속 켜고 스마트폰의 무선랜도 계속 켜놔야 한다는 점에서 과연 얼마나 실효가 있을지는 모르겠다.

kankun_control_7

이로써 기본적인 소개와 사용법은 끝났고 신나게 갖고 노는 방법은 다음에 알아보기로 하겠다.

Feb 162017
 

어느 날 HRV(외부 공기를 필터링 후 집안 내부로 강제 흡기하는 공기 순환 장치 중 유명한 회사의 브랜드명) 필터 교체 등이 켜졌는데 리셋할 때까지 계속 켜져있었다. 리셋하지 않고 필터 교체후에 하겠다고 했는데, 필터 사놓고 거의 몇개월을 그렇게 지내다 드디어 교체를 마쳤다.HRV_filter_replacement_led

HRV팬은 천정과 지붕 사이에 있는데, 필터는 그 철로 된 박스안에 다음처럼 껴 있다.HRV_where_filter_is

필터를 교체하려면, 필터 + 커터칼 + 전등(머리에 쓰는 게 좋다) + 덕트용 테이프을 들고 천정 위로 기어올라가서 다음처럼 팬이 지붕에 걸려있는 곳으로 접근해야 한다. 그 후 커터칼로 기존에 붙어있는 테잎 부분을 살짝 그어서 위쪽 흡기 부분과 아래쪽 배기 부분을 분리 후 필터를 교체하고 다시 덕트용 테이프로 봉합해주면 된다.HRV_how_to_replace_filter

 

Trademe나 인터넷 검색을 해보면 F7등급과 F8 등급의 필터가 있는데 F8 등급이 조금 더 필터링 능력이 좋아서 조금 비싸게 판매된다. 대략 60~80불이면 F7이나 F8을 구입할 수 있을 듯 하다. 굳이 HRV가 파는 필터를 안해도 무방하고, 직접 해볼만한 쉬운 diy이다. 작년에 F7 등급을 트레이트미에서 덕트 테이프 포함해서 구입후 직접 했는데, 대략 30분이 소요된다. 통상 천정과 지붕 사이 온도가 높으므로 덥지 않을 때 하는 게 좋다. 사람 불러서 교체시 필터값 + 60불 정도를 더 내야한다.

교체 후에 필터 교체 LED를 끄기 위해서는 다음의 2가지 방법을 시도하면 된다.
방법 1
Switch off at the control panel
Press down button for 8 seconds
It will beep after about 3 seconds, but keep it pushed for the full 8 seconds
0.2 is displayed in the roof
20 is displayed in the house
Push the on/off button and a 1 or a 5 will be displayed
Push the on/off button again & again to cycle through the numbers displayed until you come back to the 1 or 5 being displayed again
Push the Function button to confirm

방법 2
Switch off at the control panel
Hold the “down” button for 8 seconds
It will beep after about 3 seconds, but keep it pressed for the full 8 seconds
02 is displayed in the roof
Press the “up” button to increase 02 to 22 (not holding it down, short pushes)
Below the 22 you will see a 0
Press the power button to increase the 0 to 9
Push the Function button to save settings

참고. 위의 이미지 2개는 http://davidchin38.blogspot.co.nz/2016/08/hrv.html에서 받았다.

Jan 012017
 

언어
한국어는 놀라울 정도의 습득하고 있다. 말 대답도 하기 시작(아 짜증난다 ㅠ.ㅠ)하고, 거짓말도 잘 만들어낸다. 영어도 문장을 조금씩 만들기 시작했다. 말하기를 좋아하는 편이라서 그런지 습득 속도가 빨라서 새로운 자극 등을 많이 주려고 노력중이다.

생활습관
식사는 아직도 먹여달라고 하는 때가 많지만, 기본적으로 혼자 먹을 수 있는 능력이 갖춰졌다. 야채를 포함해서 고기도, 밥도, 멸치 등도 잘 먹는 편이다. 또한 양치질/목욕도 정말 많이 좋아졌다. 시간도 줄어들고, 티격태격 신경싸움하지 않고 부드럽게, 양치질/목욕/로션바르기/옷입기/머리말리기 까지 진행이 되고 있다. 이 모든 것에 뽀로로에 나오는 크롱의 역할이 95% 이상이다. 감사선물을 보낼까 고려중이다. 장난감 정리는 조금 약해져서 요즘 다시 강화시키려고 노력중이다.

신체 발달
바퀴 3개짜리 Kick scooter도 집안에서 타기도 하고, 작은 3바퀴 오토바이는 쌩쌩 타고 다니기 시작했다. 자신의 다리를 박차면서 앞으로 전진하는 부분이 많이 좋아졌다. 가끔 매달릴 수 있는 구조물에 자꾸 매달리려고 한다. 대략 3초 정도는 매달릴 수 있다. 아무래도 내가 하는 턱걸이 운동 등에 자극받아서 그런 거 같다. 그림 그릴 때도 많이 달라졌다. 의미없는 선들 등에서 요즘은 세모, 네모, 동그라미를 그럭저럭 비슷하게 그릴 수 있다. 크게 달라진 점은, 뭔가를 “그리려고” 한다는 것이다. 사물이나 사람, 동물 등을 그리려고 하기 시작했다. 산책도 꽤나 멀리 같이 갈 수 있게 되었다. 조금 많이 걷고 나면 안아 달라고, 세발 자전거 들어달라고 하지만, 거부하면 자기가 하려고 하기는 한다.

애착인형
요즘은 토끼 인형을 주로 데리고 논다. 자신의 투사하면서 노는 데 너무 귀엽다. 가끔은 생각하는 의자에, 말도 안되는 이유를 대가며 앉히기도 하고, 자신의 가슴으로 수유를 하려고 하기도 한다. 분유 수유는 물론, 기저귀 채우기 등등 자신의 모든 것을 투사하면서 노는 데, 그 행위가 점점 다양해지고 있다. 이러한 행동은 다른 아이들에 대해서도 그대로 행해지는 거 같다. 유치원에서도 한 아이가 울면, 토닥여주고, 안아주고, 물 갔다 주고 등등 한다고 한다.

나쁜 습관
유치원에 보낸 이후로 조금씩 안 좋은 습관들을 보여서 그것을 없애려고 조금씩 신경쓰고 있다. 물건을 던진다던지, 자신의 이마를 때리면서 짜증을 표현한다던지, 손으로 음식을 먹는 행동들이다. 스트레스를 풀어주기 위해 장난감을 일정한 곳에 던지는 놀이나, 필요없는 종이들을 찢으면서 하는 놀이 등이다.

소리와 노래
세이펜을 이제서야 사용하기 시작했는데, 관심을 많이 보이고 있다. 특히나 각 책 뒷 표지에 나오는 노래에도 관심을 많이 보이고 있는데, 노래를 같이 부르는 걸 좋아한다. 새로운 노래를 캐취하는 능력도 좋아져서, 같이 노래를 반복하면서 부르고, 콧노래도 부르고 하면서, 의미있는 노래를 많이 만들려고 하고 있다.

Dec 072016
 

드디어 평영 100m 성공했다. 이로써 5개 목표 중 2개 달성했다. 자유영과 평영을 번갈아 하니 500미터를 한번에 할 수 있었다. 아무래도 상체 위주의 자유영과 하체 위주의 평영이 충분한 휴식을 가질 수 있게 해줘서 인듯 하다.

Selection_266

« 1 2 3 4 5 6 7 8 9 10 11 12 ... 66 »