반응형

※ 우리 부부가 열심히 일하고 야근해서 받은 머니로 구입한 후기입니다

 

붱이 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 및 샤오미 정상 동작

 

 

 

 

※ 공감 및 댓글 한마디는 포스팅하는데 큰 힘이 됩니다.

 

 

 

 

반응형

+ Recent posts