※ 우리 부부가 열심히 일하고 야근해서 받은 머니로 구입한 후기입니다
붱이 Story
[붱이 Story/IoT] - IoT 입문기 1탄 - 로지텍 하모니 구입
[붱이 Story/IoT] - IoT 입문기 2탄 - 로지텍 하모니 세팅
[붱이 Story/IoT] - IoT 입문기 3탄 - DYSON 날개없는 선풍기(AM-07) 하모니 연결 및 제어
[붱이 Story/IoT] - IoT 입문기 4탄 - 10년된 에어컨 하모니에 연결 및 제어
우선 너무많이 한번에 질러서
일일이 개봉기쓰긴 너무많고
개봉기는 특별한게 없으니
한방에 퉁
약 보름걸려서 받은것들
허브가 있어야 센서들을 붙일수있다.
SmartThings hub(아래)
(아래) 왼쪽부터 순서대로
SmartThings Multipurpose Sensor - 문 열고 닫고, 온도 측정 가능
Xiaomi Temperature Humidity - 온도 및 습도 측정
Xiaomi Motion Sensor - 동작 센서
Xiaomi Door/Window Sensor - 문 열고 닫고 감지
SmartThings Multipurpose Sensor 는
샤오미를 먼저 사고
며칠간 엄청난 개고생을해서
샤오미 센서가 고장인지 SmartThings hub가 고장인지
판단하기위해 구입했다.
근데 왜 샤오미홈사면되지 굳이
이렇게 어렵게 하느냐??
샤오미홈은 샤오미로만 가지고 놀지만
SmartThings는 100개가 넘는 다른 회사 센서들까지
연동이 가능하기때문에
SmartThings 에 굳이 붙여서 사용하면
응용력이 배가된다.
얘기가 길어지니 간결하게
SmartThings Multipurpose Sensor는
한방에 연결이되어
hub는 이상없다는걸 확인하였다.
특히 뭐 포스팅할게 없을정도로
쉽게 등록이 되니 따로 포스팅 하진 않겠다
이포스팅의 핵심은 삽질을 거듭한 샤오미가 주인공
사실 SmartThings 센서하나값 = 샤오미 센서 4개값
이여서 샤오미 센서만 사서 하려했는데
결국 구입해버렸다...
SmartThings에서 공식적으로 지원하지 않지만
샤오미를 구입한 이유!!!
나의 참고서격인
kuku님 makelism님 모두 만족하시는것 같아 구입
이 두포스팅에 의해 구입을 하였다
상세내용은 아래 블로그 링크 참조
http://kuku.pe.kr/?p=6348
http://kuku.pe.kr/?p=6421
http://kuku.pe.kr/?p=6374
http://makelism.tistory.com/entry/샤오미-Xiaomi-센서류를-지르다-2-도어-센서
위에서 참고해서 나도 시작했지만
처음보고 이해못한 부분들은
나같은 보고도 못따라하는 분들을 위해
위분들꺼외에 다루지 않는부분은 좀더 자세히 다루겠다.
(먼저 저두분껄 보고 내 포스팅을 보면 엄청난 초보자도 실패 없이 세팅할수있다.)
1단계 : DTH 등록
http://makelism.tistory.com/entry/샤오미-Xiaomi-센서류를-지르다-2-도어-센서
위 포스팅을 참고로 따라했음
그럼 초보자 입장에서
나도 첨에 이걸 이해하는데 좀 오래걸렸다
그래서 간단한게 언급
DTH가 우선 무엇이냐?
Device Type Handler 라는놈인데
위에도 언급했다시피 샤오미는 SmartThing에서 공식적으로
지원하지 않는다
이론적으로 SmartThings 허브는 Zigbee Z-wave 디바이스는 다붙일수있다.
근데 샤오미는 지원하지않으니
지금 내가 수동?으로 등록한 Device가
어떤놈이다 라는걸 알려줘야한다
예를들어 모션센서이고
어떤값들을 제공한다
이런것들을 할수있게 정의된놈을 DTH라고 보면된다.
Xiaomi DTH는 그럼 어디서 구하냐??
http://kuku.pe.kr/?p=6348 여기에 자세히 포스팅되어있다
하지만 기반지식이 없던 나로선 좀 삽질을 해서
진짜 나같은 초보자를 위해
요약하자면 이렇다.
우선 DTH를 등록하기위해
아래 사이트로 이동
https://graph.api.smartthings.com
이사이트는 SmartThing IDE로 SmartThigns hub와
hub에 연결된 Device들을 웹으로 관리하고 볼수있는 곳이라고 생각하면된다.
ID를 만들거나 삼성폰 사용자라면 삼성 계정으로 로그인이 가능하다.
로그인을 한뒤
(아 당연한 소리지만 WELCOME CODE로 SmartThings Hub는 연결되어있어야한다.)
"My Device Handlers" Tab으로 이동
이미지는 잘안보이지만 들어가면 우측에
"Enable GitHub Intergration" 을 클릭
아래화면에서 "Authorize applicaition" 클릭
github에 연결이되는데 개발자들은 하나정도있을텐데
없으면 아이디를 하나 만들자
만들고 Sign in을 하면
Step2로 넘어가게되고 오른쪽 아래 "Next"를 누루면
빨간색 으로 repository가 없다고 하면서 에러가뜬다
무시하자
위에서 바로 My Device Handleres 탭을 누루면
아래와같이 Settings 버튼이 생겼다
눌러보자
아래와같은 팝업이 뜨는데
이제 샤오미 DTH를 만든 개발자의 정보를 넣어주자
원제작자의 git-hub 주소
https://github.com/a4refillpad/Xiaomi
아래와같이 입력 하고 "SAVE"
그리고 Settings 버튼 왼쪽에 있는
"Update from Repo" 버튼을 누르자
아래와 같이 자동으로 a4fillpad의 DTH정보가 나온다
모두 선택하고
Publish도 체크한뒤
"Excute Update"
를 누르자
이제 샤오미 DTH등록을 모두 하였고
샤오미 Device를 SmartThings 앱에서 모니터링이 가능해졌다
여기까지가 준비과정이였다.... ㄷㄷㄷ
초보님들 이정도 자세히썼으면 알겠쬬???
삽질시간 좀 줄었을거에요 ㅎ
2단계 : 샤오미 Device SmartThings Hub에 등록하기
샤오미 센서는 3개나 있지만 등록과정은 모두 같으니 간략화하겠다
SmartThings 앱을 먼저 열자
열고 Add a Thing 터치~
그러면 뱅글 뱅글 돈다
하지만 SmartThing은 한방에 잘되지만
샤오미껀 뜰수도 안뜰수도있다....
반드시 돌고있을때
아래와 같이 Reset 버튼을 열심히 찌른다
이때 초기화 팁은 꾸욱누루면
파란버튼이 세번 깜빡인다
그리고 똥침을 마구 마구 찌르면된다.
며칠간 수십번한듯....
도어센서 같은 경우는 가끔 바로 뜬다....
아래와같이 뜨면 아주 쌩유
하지만 아마 안뜰것이다.....
안뜰때의 방법은
SmartThings IDE에서
hub event에서
catchall 을 이용하여 추가하는 방법이 있다.
makelism님 글 참고 아주 자세히 설명해주셨다.
http://makelism.tistory.com/entry/샤오미-Xiaomi-센서류를-지르다-2-도어-센서
간단히 요약하면
SmartThings IDE 접속후 "My hubs" 탭 이동
등록한 허브 선택
(이때 등록했는데도 안보일수도있다. bug임
안보이면 당황하지말고
My Locations 탭으로 이동
로케이션 name 선택
Hubs 항목에 등록된 hub가보일것이다 여길통해 이동)
위에보면 Events의 "List Events" 항목으로 이동
이때 열심히 똥침을 누루고있자~~~
(SmartThigns는 Add a thing 디바이스 찾는중)
List Events 에서 f5를 누루면
허브의 상태를 로그로 볼수있다
그중 "catchall"을 눈여겨봐야한다.
가끔뜨고 다른 로그들 사이에 있으니 잘찾자
catchall로그의 위에 "2F1E" 가 바로 등록하려고하는 Device의 network id이다
이건 초기화하면 랜덤으로 계속 바뀐다
저값을 이제
"My Devices" 탭으로 이동하여
+ New Device를 통해
아래와같이 형관팬 부분만 입력하면된다.
핵심은 "Device Network Id"와
"Type"
Name은 본인이 원하는 이름으로 하면된다~
Device network ID에는 위에 Catchall로 얻은 값을
Type은 위 1단계에서 등록한 Xiaomi 센서를 선택
그리고 Create
이제 내폰의 SmartThings에 가면 Add a Thing을 종료하면
이미 Device가 추가되어 있는것을 볼수있다.
아주 아주 이때 기분이 좋았다.
하지만 뒷 이야기를 더 들어보자
센서 값이 바뀌지않는다
열고 닫고 해봐도 변경되지 않고
온도값도 냉장고 넣어다빼도... 바뀌지 않고
모션도... 손을 아무리 흔들고해도.... 변경되지 않는다...
도통 이유를 모르겠다
참고로 난... 이거땜에 며칠동안 위의 동작을 수십번했다..
그래서 hub가 이상한지 아닌지 판단을위해
SmartThings에서 제작한 Multipurpose 센서를 구입한것이다.
위에도 말했지만 허브는 이상없었다.. 아주 잘동작함
Makelism님한테도 조언을 구했지만 뾰족한 해결책을 못찾음
결론은 해결했다
3단계 : 샤오미 센서 디버깅해보기
도대체 뭐가 문제일까???
허브도 문제없는건 확인했으니
샤오미가 문제이거나
내가 세팅을 잘못한것일거다
검증해보자
How???
SmartThings IDE에
"Live logging" 탭 이 보인다.
클릭해보자
실시간 Logging이 되고있다..
도어센서를 붙였다 떨어뜨렸다 해보자
오 뭔가 된다!!!
on/off:0
on/off:1
근데 이상한 메세지가 있다.
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:34: error java.lang.NullPointerException @ line 87
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:34: debug Parsing 'on/off: 1'
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:32: error java.lang.NullPointerException @ line 87
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:32: debug Parsing 'on/off: 0'
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:00: debug configure: Write IAS CIE
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:00: debug 4f5e82feff570b00
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:00: debug 00158D0001A34928
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:35:00: debug 2C95
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:34:42: error java.lang.NullPointerException @ line 87
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:34:42: debug Parsing 'on/off: 1'
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:34:41: error java.lang.NullPointerException @ line 87
xxxxxxxxxxxxxxxxxxxxxxxxxx 오전 12:34:41: debug Parsing 'on/off: 0'
error java.lang.NullPointerException @ line 87
뭔가 에러가있다.
Xiaomi Door Sensor DTH로 이동해보자
87: def now = new Date().format("yyyy MMM dd EEE h:mm:ss a", location.timeZone)
87라인 주석을 하고 돌려보자
(참고로 각 DTH에서 저부분이 하나씩은 꼭있다.
지금 예로 도어만 했을뿐 모션과 온습도에도 있다.
저부분을 위에처럼 모두 바꿔야
스마트띵스 앱에서 샤오미 동작을 모니터링 할수있다.)
오 된다 !!!
스마트띵 앱에도 값이 업데이트 되고있다
유레카~!!! 저값은 현재 시간 찍는 코드이다
뭐때문에 NPE(Null Pointer Exception)가 뜰까
의심되는건 time zone
DTH는 groovy라는 스크립트를 쓴다.
구글링
TimeZone.getTimeZone()으로 Timezone을 가지고 오고있었다.
여긴 기본으로 UTC인데 한국시간으로 가져와보자
KST(UTC+9)로 해보자 안된다...
다시 구글링 KST안되면 JST로해보라는 글 발견
일본이랑 우리랑은 시간같으니 JST로 변경하고
Time fomat도 내입맛에 맞게 바꿔보자
//원래 코드는 주석으로 처리하고
//def now = new Date().format("yyyy MMM dd EEE h:mm:ss a", location.timeZone) // 원래 코드
// 포맷과 timezone 부분을 고쳤다.
def now = new Date().format("yyyy-MM-dd EEE h:mm:ss a", TimeZone.getTimeZone('JST'))
다 고쳤으면
Save->Publish->For Me
스마트띵앱에서 관찰하니
올레 한국시간으로
잘 갱신되어 올라온다
도어센서 닫혔을때
도어센서 열렸을때
온도센서 모습
모션센서 모션없을때
모션센서 모션있을때
모션 센서는 모션이 감지되고 No Motion으로 인식하기까지
약 2분이 걸리니
왜 동작 제대로 안하지라고 생각하지말자
약 2분뒤 "No Motion"으로 인식한다
힘든 샤오미 센서 연동기 끝 ㅠㅠ
내 삽질의 모든것을 기록했으니
다음 초보자분은 시간 낭비하지말고 잘했으면 하는 마음으로
포스팅했다
그래도 모르는분은 댓글로 문의~!!
총평
재밌지만 돈여유되면 그냥 SmartThings 센서를 구입해라....
샤오미는 힘들다
2017.06.19. 추가 포스팅
error java.lang.NullPointerException @ line 87
뭔가 에러가있다.
Xiaomi Door Sensor DTH로 이동해보자
87: def now = new Date().format("yyyy MMM dd EEE h:mm:ss a", location.timeZone)
위 내용에서 왜 나만 NPE가 발생했는지 알게되어 추가 포스팅한다
내 로케이션이 최초 허브 세팅할때
미국으로되어있었다.
스마트띵앱으로 지금 사는곳으로 옮기고
저장하고 테스트해보니
NPE가 발생하지 않는다
그리고 모든 저장이나 로그들이 UST기준이였는데
로케이션을 옮기고나니 KST로 바뀌어있었다.
나같은 문제 발생했을때 자신의 로케이션이 한국인지 확인하길 바란다
미국이라한들 에러는 날필요없는데 뭔가 다른 체크하는 로직이 더있는것 같다.
그리고 추가로 주말에 일요일에 세팅후
아침에 일어나니 스마트띵 센서는 잘 동작하고 있지만
샤오미는 모션센서와 도어센서는 Unavailable
온습도 센서는 업데이트가 되고있지 않았다.
그리고 makelism님과 kuku님은
베터리 정보가 올라오는데 난 올라오지도 않는다...
해결책을 찾으면 추가 포스팅하겠음...
해결 포스팅
[붱이 Story/IoT] - IoT 입문기 6탄 - SmartThings hub A/S 및 샤오미 정상 동작
※ 공감 및 댓글 한마디는 포스팅하는데 큰 힘이 됩니다.