반응형

※ 우리 부부가 직접 구매하고 사용한 후기입니다.


[붱이 Story/IoT] - SmartThings 자동화 이해하기 - 기본 원리 및 트리거란?
[붱이 Story/IoT] - SmartThings 자동화 이해하기 - 선행 조건 알고 쓰자
[붱이 Story/IoT] - SmartThings 자동화 이해하기 - Stay와 자동 끄기 알아보기
[붱이 Story/IoT] - SmartThings 자동화 이해하기 - 멤버 위치, 장소 상태 재실에 관해

멤버 위치에 대해선 다룰 내용이 많아서 따로 포스팅 하였습니다

1. 위치 판단은 누가??

멤버 위치는 폰이 판단합니다 SmartThings와 무관합니다.
Google Geofence
https://developer.android.com/training/location/geofencing?hl=ko

지오펜싱 만들기 및 모니터링  |  Android 개발자  |  Android Developers

지오펜싱 만들기 및 모니터링 지오펜싱은 현재 위치에 관한 사용자의 인식과 관심 위치에 관한 사용자의 근접성 인식을 결합합니다. 관심 위치를 표시하려면 위도와 경도를 지정합니다. 위치

developer.android.com

요 기능에 의해서 SmartThing의 역할은 위치 정보를 사용자가 "장소 관리"를 통해서 위치와 반경을 입력을 한거대로 안드로이드 시스템에 정보를 등록을 합니다

등록이 되면 안드로이드는 등록된 반경에 들어올때와 나갈때마다 SmartThings에 알려줍니다
야~~ 너가 등록한 GeofenceId 뭐뭐뭐가 Enter 되었어~~~
야~~ 너가 등록한 GeofenceId 뭐뭐뭐가 Exit 되었어~~~

그럼 그때 SmartThings는 오 알겠어 SmartThings Cloud에게 이폰에 매핑되는 Mobile Presence 기기한테 event를 날려줍니다.

2. 어떤원리로 안드로이드는 in out을 판단할까?

GPS, WIFI, 기지국으로 판단합니다.

일반적으론 GPS가 가장 정확도가 높고
그외엔 wifi와 기지국 정보를 가지고 안드로이드가 알아서? 잘 판단해서 위치를 판단합니다.
해서 밖에서는 gps 기반으로 위치를 판단할것이고 내부나 gps센싱을 못하는 곳에서는
주로 wifi에 의존해서 위치 판단을 합니다.

여기까진 이제 다아는 사실이고
클리앙에서 아주 자세히 다룬 글이있어서 첨부합니다
https://www.clien.net/service/board/lecture/3319515

3. 난 왜 이렇게 잘 안될까 어떻게 해야하나?

Q1. 멤버 위치사용해서 룰을 만들었는데 잘안되요

A1. 이분들을 보면 룰이 엄청 많아요 실제로 멤버위치가 잘동작 안해서 안되는건지 조건이 이상한지 판단하기가 너무너무 어렵습니다. 이 경우엔 먼저 아래 방법을 꼭 테스트 해서 멤버 위치에 이상이 있는지 없는지 확인을 부탁드립니다

옵션도 그외 조건도 아무것도 하지말고 위에 딱 저모양대로 그대로 두개 룰만 만들어서 푸쉬 알림이 잘오는지 관찰
그리고 다른 조건에 문제가 없었는지 확인해보시면 자동화 오류에 확인하기 좋습니다.

Q2. 집에 다들어와서 자동화가 실행되거나 반응이 늦을때가 있어요

A2. 우선 실내에 들어오는 시점에 자주 튀거나 늦게 반응 하는 사례들에 대한 정보들

Q3. 집에만 들어오면 자주 밖으로 나갔다고 인식되요 (이사나 공유기 바꾼사례)

A3. 이경우는 저도 겪었고 주위 몇분 겪은걸 실제로 본사례인데
위에 말씀드렸다시피 집안에 들어오면 gps가 센싱이 안되기때문에 wifi에 의존해서 위치값을 판단하게 됩니다.
그럼 wifi 공유기는 자기의 위치를 어떻게 알려줄까요?
정확한 원리는 모르겠지만 지속적인 학습으로 ? 자신의 공유기의 위치는 어디다라고 인터넷 어딘가에 위치를 기록하게됩니다.(google db 인지 어떤 공용으로 쓰는곳인지는 모르겠음)
그래서 이사를 했거나 중고로 공유기를 구입했거나 했을때 튀는순간 제빠르게 다른맵들을 켜서 현재 위치를 보면
공유기의 전주인의 집을 가리키고있거나, 이사오기 전 집 으로 인지되어있을겁니다

전 두개다 겪어봤습니다. 어떻게 해결해야하냐? 좀번거롭지만
문제의 공유기 wifi에 기기가 붙어있으면서 gps센싱도 되게 한체로 며칠간 노출시켜놔야 공유기의 위치를 바로잡습니다.

저같은경우는 집에 노는 탭에 Tmap을 켜고 wifi 는 중고 공유기에 붙인채로 대략 워킹데이 5일 방치해두었는데 어느날 부터 이문제가 해결되었습니다.

구글링에 뭐 어떤 사이트가서 mac주소에 대한 주소를 다시 업뎃해라 뭐 이런것도있엇느데 다안됬었고 위 방법으로 해결했었습니다.

관련 링크들 첨부합니다
http://redoubtsolutions.com/android-reports-wrong-location-when-connected-to-wifi/
https://android.stackexchange.com/questions/106833/moved-out-with-my-router-location-services-dont-get-ithttps://community.tp-link.com/en/home/stories/detail/1200

Q4. 어느날 부터 갑자기 멤버위치가 동작을 안하는것 같아요

A4. 이케이스는 보통 두가지가 있습니다.
가장 많은것은 중간에 어떤 연유던간에 위치 권한이 항상허용이 아닐때

위와같은 경우로 발생이될수도있고 몇개월만에 다시써보려할때?
또는 어떤연유로 그냥? 무의식중에 위치 권한? 뭐지 하고 앱사용중으로 바꿨을때?

위 케이스로 권한은 반드시 "항상 허용"이여야 합니다.
이게 아닌경우 아래 SmartThings 설정에 가보면 "이 휴대전화를 내 위치로 활용하기" 옆에 빨간 느낌표가 떠있거나


진입해보면 위에 도움말로 뭐라고 적혀있을겁니다


해당 느낌표나 Tips가 안뜨게 하면 권한은 만족하고 있다고 봐도됩니다.

그리고 두번째 안되는 이유?
앱의 버그던? 시스템 오류던 등록된 Geofence가 날라갔을경우?
구글 문서엔 이렇게 적혀있습니다

SmartThings앱도 폰을 재부팅시에 다시 재등록하는 로직이 들어있습니다.(테스트로 확인함)
이경우는 폰을 재부팅해보는 방법으로 해결이 될수있으니 시도해보세요~

Q5. 위치 상태를 알고싶은데 알길이 없어서 답답해요

A5. SmartThings new app에서는 Mobile Presence를 숨기고있어요(제발 보이게해주세요 ㅠㅠ)
임시방편으로 제가만든 People SmartApps를 통해서 확인이 가능하니 요것도 해두시면 문제 상황에서 기록으로 상태를 확인하기 쉬워요
[붱이 Story/IoT] - People - SmartThings SmartApp 소개

People - SmartThings SmartApp 소개

※ 우리 부부가 직접 구매하고 사용한 후기입니다. SmartThings classic때는 Mobile Presence가 카드로 보여져서 in out 보기가 좋았는데 New app으로 오면서 Mobile Presence가 쏙 숨어서 여간 불편한게 아니여..

blog.weekendproject.net


Q6. 위치 정확도가 떨어지는것 같아요

A6. 아래 메뉴들을 확인해 보시길 바래요~

Q7. 출근길에 출근 동작했는데 퇴근길에는 퇴근 동작을 안해요

A7. 이케이스 사용자가 다음날 출근길에도 역시 출근 동작을 안하고 퇴근길에 퇴근 동작을 했다면
아래의 이유입니다.
1일차(처음 문제 발생날) 2일차로 부르겠습니다.

가. 1일차 출근길 - 집 반경 OUT -> 폰 Geofence OUT감지 -> Server OUT - 룰동작 O
나. 1일차 퇴근길 - 집 반경 IN -> 폰 Geofence IN감지 -> 네트워크 오류로 인해 Server IN 전송 실패 - 룰동작 당연 X
다. 2일차 출근길 - 집 반경 OUT -> 폰 Geofence OUT감지 -> Server OUT - 룰동작 X
라. 2일차 퇴근길 - 집 반경 IN -> 폰 Geofence IN감지 -> Server IN - 룰동작 O

여기서 "나" 사례는 오케이 네트워크 오류라고 치고 "다" 는 왜 안될까?
각 항목당 Mobile Presence 상태를 보겠습니다.
가. OUT
나. OUT (in 실패했기때문)
다. OUT
라. IN

이제 이해가 되시죠?
라에서 드디어 OUT에서 IN상태가 바뀌어 트리거가되어서 라시점에 발생을 한겁니다.
이케이스는 나시점에 왜 네트워크 에러가 발생했었는지 보면
1. wifi를 켜고 다니는 분이 geofence반경에 in out event 발생 시점에
길거리에서 인터넷이 안되는 wifi에 붙어 있어서 서버 전송 실패했는 경우

2. wifi 자동 켜기 끄기 옵션(삼성폰에만 있나?) 으로 알수없는곳에서 꺼지거나 켜지는 그 스위칭 구간에 이벤트가 왔는데 인터넷이 안되는 경우

이런 사례는 사실 해결하기가 쉽지 않습니다만 이렇게 오류가 발생했을수도 있구나 알고있으면 추후 문제 발생시 도움이 될수도 있을것같아 적어봤습니다.



왠만한 이슈들에 대해선 다 다룬것 같은데
추가 더 궁금한 이슈나 다루지 않은게 있으면 말씀해주세요 추가하도록 하겠습니다.

반응형
반응형

※ 우리 부부가 직접 구매하고 사용한 후기입니다. 

 

현재 SmartThings에서는 조건으로 특정요일만 지정할뿐 공휴일이나 연차때에 대한 조건을 쓸수 없었다

 

그래서 Google calendar를 연동해서 오늘이 휴일인지 아닌지 구분할수있는 센서를 만들었다.

 

 

정리하자면 3가지중에 하나라도 걸리면 휴일이라고 판단하고있다

 

1. 요일 - 사람마다 쉬는 요일이 다르기때문에 자기가 쉬는날을 체크하면된다

2. 공휴일 - Google Calendar에서는 빨간날을 모른다 그리고 사람또는 회사마다 조금씩 편차가있으니 자기가 쉬는 날 체크하면된다.

3. TAG - 본인 연차라던가? 근로자의날(구글에서 제공안함), 회사 창립기념일, 학교 개교기념일, 그리고 격주로 생성된 일정 생성시에 memo에 #dayoff만 넣어두면 알아서 휴일로 인지된다.

 

이제 이 센서를 조건으로 사용하면 좀더 스마트하게 자동화 룰을 생성할수있다.

 

하나 예를 들면 이런거?

예전 : 매일 일출시 커튼 열어를 했던것을 

이제 : 매일 일출시 && 휴일이 아닌날에 커튼을 열어로

 

New SmartThings 앱에서도 룰로 사용할수있습니다~

 

 

 

 

첫시작 Google Calendar API Client ID 받기

 

우선 일루 이동

https://console.developers.google.com

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

이동하면 프로젝트가 없을것이다 프로젝트부터 만들자

 

 

프로젝트를 만든다음에 이제 Google Calendar API를 Enable하자 아래 따라~~

 

 

이제 Enable은 됬고 OAuth client ID를 발급받자

아래따라~~~

 

 

 

위에 보이는 client ID와 client secret 아이디를 복사해두자

이때 복사 못했어도 다시가서 볼수있다

 

복사는 끝났고 이제 github의 코드를 가져와야한다

방법은 오날두님 Youtube로 대체 

 

github 정보는 위와같으니

 

SmartApp 설치시에 필요작업은

위에 복사해둔 client ID, client secret 넣고 oauth enable만 하면 끝

 

그리고 DTH도 같이 꼭 publish하고

 

그리고 Classic SmartThings 앱으로 가서 아래와 같이 설치 ㄱㄱ

 

 

Save를 하게되면  이제 설정은 끝

아래처럼 Device가 생성이 될것이고 

구글 캘린더에가서 일정을 만들때

메모에 #dayoff 를 작성해두면 그날을 휴일로 인식하게끔 되어있다.

 

 

 

 

궁금한점은 댓글주세요

 

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

반응형
반응형

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

 

붱이 Story

 

[붱이 Story/IoT] - 구글홈 한국어 지원 - 조명, 커튼, 가전 기기 제어 하기


지난번 정식 국내 출시전에는 컨트롤만 가능해서


SmartThings연동된 조명과 스위치 에어컨 선풍기 가습기 공청기 등등

제어하기만 가능했었다.


근데 18일 정식 출시후에 구글홈 앱에 들어가니

컨트롤기기가 아닌 상태값만 있는 센서들도 업데이트가 되어있더라


이런식으로 도어센서들도 추가가되었다.

근데 아무리해봐도 답을 안해주던데...

근데 단순히 무슨센서 상태 어때? 물어보는건 안되고

꼭찝어서

지금 에어컨 켜져있어?

문 열려있어?

파워 꺼져있어?로 물으면

커튼은 열려있어로는 안되고

제어할대도 커튼 켜줘 꺼줘로 했던것처럼

커튼 켜져있어로 질문해야

답을 해준다


영상하나로 설명 끝


점점 좋아지는 구글홈 어디까지 갈지~


아 그리고 구글홈은 미국 구글홈 미니는 독일서 샀는데


오늘 들어가보니 유투브 프리미엄 6개월을 마찬가지로 주더라

옥션에서만 주는건 줄 알았는데 

다주는건가벼?

난 국내서 산것도아닌데....




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


반응형
반응형

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

 

붱이 Story

 

 

[붱이 Story/IoT] - IoT 입문기 1탄 - 로지텍 하모니 구입

[붱이 Story/IoT] - IoT 입문기 2탄 - 로지텍 하모니 세팅

[붱이 Story/IoT] - IoT 입문기 3탄 - DYSON 날개없는 선풍기(AM-07) 하모니 연결 및 제어

[붱이 Story/IoT] - IoT 입문기 4탄 - 10년된 에어컨 하모니에 연결 및 제어

[붱이 Story/IoT] - IoT 입문기 5탄 - 샤오미 센서 SmartThings에 연동 및 삽질기

[붱이 Story/IoT] - IoT 입문기 6탄 - SmartThings hub A/S 및 샤오미 정상 동작

[붱이 Story/IoT] - IoT 입문기 7탄 - SmartThings와 로지텍 하모니 연동하기

[붱이 Story/IoT] - IoT 입문기 8탄 - SmartThings에 Rule Engine CoRE 설치하기

[붱이 Story/IoT] - IoT 입문기 9탄 - 28도가 넘으면 10년된 에어컨을 자동으로 On 하자

 

이제 어느정도 단순 기기 동작까진

얼추 되었고 최초 목표였던

특정온도에 의한 에어컨 제어까지는 잘된다

지금도 잘쓰고있다.

 

 


음성으로 제어해보자 - 구글홈

 

 

이제좀 업그레이드 버젼을 해보자

 

지금까진 스마트띵 앱

또는

하모니 앱

또는

해당기기 리모컨

으로 On / Off 를 했다

 

이걸 음성으로 자고있는 도중이나

리모컨이 멀리있을때 등등

 

당장 끄거나 키고싶을때

음성으로 제어를 해보기에 대한 포스팅이다

(이글을 제일 먼저 보았다면 사전세팅은

1탄부터 4탄까지의 과정이 수반된 뒤에 아래 과정을 할수있다.

절대 1에서 4탄이 없이 아래 과정을 할수 없다)

 

그럴려면 음성을 인식해서 컨트롤 할수 있는 기기가 있어야한다.

 

가장 대표적인건 아마존 알렉사(Amazon Alexa)

그래서 알렉사를 사려고 중고나라에 알림을 걸어두었었다.

가장 보편화되어있으니까???

 

근데 구글 홈으로 급 변경하였다.

 

가장 큰이유는

 

1. makelism님의 조언

내가 안드로이드를 쓰고있으니

구글홈이 더 좋을것같다라는 의견

 

2. 12월이면 공식으로 한국어를 지원한다고 한다.

아마존 알렉사는 한국어 지원에

대한 언급이 아직까진 없다.

 

https://www.google.co.kr/amp/s/9to5google.com/2017/05/17/google-assistant-expands-to-more-new-languages-as-home-goes-up-for-sale-in-new-countries/amp/



- Update -

한국어 지원 관련 포스팅은 여기로

[붱이 Story/IoT] - 구글홈 한국어 지원 - 조명, 커튼, 가전 기기 제어 하기

[붱이 Story/IoT] - 구글홈 정식 출시 한국어로 SmartThings 연동된 기기 상태값 물어보기

[붱이 Story/IoT] - 구글홈 x 필립스 휴 사용자들을 위한 연동 및 사용방법 소개

[붱이 Story/IoT] - 구글홈 & 크롬케스트를 통한 Netflix YouTube 재생 - UC40 미니빔



 

구글홈 구입 및 개봉기

 

 

그래서 구글홈은 급하게 살이유도 없고 해서

 

새거사서 해외배송 10일 20일 기다리느니

그사이 국내 중고를 사기로 마음먹고

중고나라 카페 알림을 걸어두었다.

(전구 on off도 해보려고 6월11일에 아마존에서 구입한게 아직도 안오고있다 ㅠㅠ)

 

좀 사용감있거나 수개월 지난거 11만원

미개봉 14정도에 거래되고 있었다

 

난 11만원뜨는거 겟하려는데

나같은사람이 여럿있나보다

 

알림을 걸어두었는데도 불구하고 두건을 놓쳤다.

 

그리고 뜬

3개월쓴 제품 거의 사용안한 제품

 택배비포함 12에 올라왔다.

 

바로 연락해서 송금

토요일 오후에 받을수있었다

 

상태는 새거나 다름없을정도

 

 

 

위사진에서 아래부분만 다시보면

 

아래와 같은 앱? 회사? 들이 구글홈과 연동된다.

 

나에게 중요한부분은 마지막 회사인 "SmartThings"

 

 

 

그리고 몇가지 예시들이 나열되어있는데

 

4번째 항목

"What's 'nice to meet you' in Korean?"

 

Korean이 예시로 사용된게 눈에 띈다.

 

 

 

 

중고지만 쌔거같다^^

꺼내보니 귀엽다 디자인은 맘에듬

 

 

플러그는 당연 미국에서 왔으니 110v

돼지코 껴서 사용하면된다

 

 

설명서가 심플하다?

진짜 이게 다인지 다른게 있는데 안보낸건진 알수없지만

이거 하나로 설명은 충분하다

 

 

구글홈의 위부분 평소 상태

 

 

Ok Google 또는 hey~ Google 외치거나

 위에 설명서에도 있지만

윗부분 가운데를 꾸욱누르면

아래와 같은 상태가 된다.

주인님 저 들을 준비됬어요??라는 말이다.

 

처음 사용이라 또박또박

발음 신경쓰고

가까이가서 말하고

크게 말했는데

 

 크게

또박또박

가까이서

모두 안해도 된다

 

멀리서도 잘되고

발음이 좋지 않아도

소리가 그리 크지 않아도

 

잘 반응한다.

 

 

 

둥그렇게 돌리면

아래와 같이 음량을 조절할수있다.

 

 


 

 

 


구글홈 설치 및 설정하기

 

 

Play Store를 이동하여 구글홈을 검색해서 설치한다.

 

 

 

설치후 앱을 실행시키고 아래 스샷들처럼 진행하면 된다.

 

어떤 블로그는 꼭 언어를 영어로 해야지 셋업이 된다고 되어있는데

 

예전버젼에선 안 되었던 것 같고

한글 상태에서 잘 진행되었다.

 

 

 

 

아래 기기 검색 중에 실패 하는 경우가 있는데

 

설정하려고 하는폰의 wifi와 구글홈이 붙은 wifi가 다를경우이다

 

우리집의 경우 2.4g와 5g wiif 가 있는데 난 5g로 맞추었다.

 

하나로 맞추면 다시 연결이된다.

 

 

 

 

 

"테스트 소리 재생"

 다음 단계 스샷은 안찍었더라 우선 말로 설명하면

구글홈에서 소리내보냈는데 나느냐?

 

난다 안난다 확인하는 단계이다

 

소리보냈느냐 할때 구글홈에서 "띠링" 하고 짧게 소리가 나온다.

 

TV보면서 설정했는데 저소리를 못들었었는데 보니

구글홈 볼륨이 작아서 못들었던것이다.

구글홈 볼륨을 키워놓던지 주위조용할때 들어보면

 

명확히 "띠링" 하고 울릴것이다

 

울렸다고 확인을 하고 나면 아래로 이동된다.

 

 

 

요기부분이 중요하다

 

여기서 한국어로 설정했다가 삽질을 한 30분했다.

한국어로 벌써 지원 되는줄알고 오예하고 설정했다.

한국어로 구글홈이 대답을 하는것이다???

근데 거의안되고 반응도 거의 없다.

 

"내이름이 뭐야?" 라는 것에만 반응했고

 

그외엔 무슨말인지 모르겠다는 말만 계속 계속...

영어는 아예 반응도 안한다....

뭔가 한국어도 진행중이긴한것같다.

 

여튼 되는게 없어서

다시 기기 삭제하고 영어로 하니 잘된다.

 

공식 발표 전엔 꼭 꼭 영어 미국으로 설정하길 바란다.

공식지원땐 다시 포스팅하겠다.

 

 

구글홈의 위치를 묻는이유???

 

오늘의 날씨라던가 뉴스라던가 등등 반응할때

이위치값을 기반으로 오늘의 소식 및 날씨를 알려준다

지금 사는곳이 알아서 gps에서 잡아서 뜬다.

 

 

 

위치 설정을 하고 나면 아래와 같은 설정이 있다.

 

음악을 켜줘라던가 누구 음악 틀어줘 등등을

Google play 뮤직으로서비스 하는데 난 안쓴다.

 

 

 

패스하려고 햇더니 아래와 같은 문구가 뜬다

여튼 난 사용할 예정이 없으니 무시

그리곤 드뎌 설정 완료 메세지가 출력되었다.

 

 

 

 

설정이 완료 되자 튜토리얼이 진행된다

(한국어로 처음 했을시에 이과정에서 구글홈이 반응이없었다)

 

적힌대로 말하면 구글홈이 반응한다~~ 신기신기

 

 

 

 

 

구글홈에 SmartThings 연결하기

 

 

위에 설치한 구글홈 앱을 실행하고

메뉴에서 "Home 기기제어" 선택

그리고 "+" 버튼 선택

 

 

어떤 기기를 추가할수 있는지 확인해볼수있다.

화살표로 표시한 "SmartThings / Samsung Connect"를 볼수있다.

선택하자

 

 

 

SmartThings ID로 로그인하여 연동하자

 

로그인을하면 아래와 같이 서로 연동하겠느냐라는 메세지인데

 

"Select one..."을 클릭하면

 

드롭박스로 SmartThings의 Location이 뜬다.

 

난 Home밖에 없으므로 Home 선택

 

선택을 하면 위와 같이 구글홈으로 제어 가능한(switchges/lights)

기기 리스트가 자동으로 보여진다.

 

물론 IoT 입문기 1탄 부터 4탄에서 설정한것이 있기때문에 보이는것이다

그냥보이는게 아니니 1탄부터 4탄 꼭 읽고 오자

 

[붱이 Story/IoT] - IoT 입문기 1탄 - 로지텍 하모니 구입

[붱이 Story/IoT] - IoT 입문기 2탄 - 로지텍 하모니 세팅

[붱이 Story/IoT] - IoT 입문기 3탄 - DYSON 날개없는 선풍기(AM-07) 하모니 연결 및 제어

[붱이 Story/IoT] - IoT 입문기 4탄 - 10년된 에어컨 하모니에 연결 및 제어

지금 오고 있는 Osram RGBW A19 전구도 추가하면

아래에 추가되서 보일것이다.

 

우선 난 셋다 선택

 

 

 

추가하고나면 방을 설정해야 쓸수있다는 메세지가 나온다.

방을 하나 만들고 지정해주자

난 "my room"이라고 하나 만들었다.

지정해주고 "완료" 누르자

 

 

 

완료를 누루면 할당중이란 팝업이 뜨고

아래 오른쪽 처럼 위에서 지정된 방 없으미 아니라

my room이라고 되어있는것을 볼수있다.

 

지금 보이는 이름으로 제어를 할예정인데

Dyson의 경우 말하기 불편할듯 하다.

 

 

 

Dyson AM-07을 선택해보면 기기 세부 정보에서 닉네임을 지정할수있다.

 

한글로 쓰면 인식못하니 영어로 꼭쓰자

난 간단히 Dyson으로 바꿨다 (아래)

 

 

 

이제 설정은 완료되었다.

 

SmartThings App에 가보면

자동으로 The Google Assistant가 추가 되어 있는것을 볼수있다.

 

 

 


OK Google / Hey Google

 

 

Dyson 날개 없는 선풍기를 구글홈으로 이제 제어해보자

 

잘 되는걸 확인할 수 있다.

 

 

이젠 10년된 에어컨 삼성 하우젠을 제어해보자

 

 

요건 좀 이상현상이 있긴한데 보면 켜기고 꺼질때

 

띠리리링 하는걸 들을수있다

 

신호를 여러번 보내서 발생한것이다.

 

이건 Dyson 선풍기 하모니로 제어할때와 동일한 현상으로

하모니에서 Repeat Command로 조절해서 해결했었는데

[붱이 Story/IoT] - IoT 입문기 3탄 - DYSON 날개없는 선풍기(AM-07) 하모니 연결 및 제어

 

이상하게 하우젠에는 repeat command를 1로해도 잘 안된다

 

이유는 잘모르겠다

 

잘되니 걍 쓸란다

 

 


 

귀요미 구글홈


 

 

붱이 : "내 와이프 알아?"

구글홈 : "아뇨 당신이 말해준적 없어요 말해주세요"

붱이 : "내 와이프 이름은 은쟈야"

구글홈 : "네 알겠어요 기억할게요"

붱이 : "내 와이프 이름 뭐라고?"

구글홈 : "당신의 와이프 이름은 은지에요"

 

ㄷㄷㄷㄷㄷ 정보를 말해주면 저장해둔다

기특한놈



한국어 지원 관련 포스팅은 여기로

[붱이 Story/IoT] - 구글홈 한국어 지원 - 조명, 커튼, 가전 기기 제어 하기

[붱이 Story/IoT] - 구글홈 정식 출시 한국어로 SmartThings 연동된 기기 상태값 물어보기

[붱이 Story/IoT] - 구글홈 x 필립스 휴 사용자들을 위한 연동 및 사용방법 소개

[붱이 Story/IoT] - 구글홈 & 크롬케스트를 통한 Netflix YouTube 재생 - UC40 미니빔



 

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

 

반응형
반응형

 

붱이 Story

안드로이드에서 json 파싱 노가다를

아주 간단히 한 두줄로 끝낼수 있는 강력한 방법

GSON

Gson?

Gson에 대해 알아보자

상세 설명은 링크로 대체 ㅎㅎ

너무 설명을 잘하셔서...

http://emflant.tistory.com/47

 

내가 처음 GSON 을 알고

사용법을 익히기위해

찾아본 blog에는

솔직히 너무 기본적인 내용밖에 없었다

이런느낌?

 

<PPT를 만들기법>

ppt를 띄운다

제목란에 제목을 쓴다

내용에 내용을 쓴다.

 

실전에 활용하기엔 역부족

 

요근래 GSON에 대해서 문의가 많이 들어와서

설명해주기 힘들었었다.

정리해두면 다른 사람들이 또 질문했을때 유용할듯

 

예제설명을 위한 가상 app을 예제로 설명을 해보려한다.

(추후 만들예정)
 

은쟈 요구사항(실제 몇달전 요청했었다)


"화장품 사면 유효기간이 언제까지인지 까먹다가 못쓰는 화장품이 많은데

앱에 유효기간을 저장해두고 시간이되면 알려주는 앱 만들어주면 안되?"

 

생각해보니 나도 쿠폰 같은거 받아두고

그전에 써야지 생각하고 보면 이미 유효기간 아웃..

해서 화장품뿐만 아니라 쿠폰, 가전제품 등의

유효기간 이나 A/S 기간이 있는 것들에 대해서 확장하여 구상을 했다.
   

앱에서 보여줄 필요한 정보들

예시

> Category
  전자제품
  가구
  화장품
  음식
  약제
  쿠폰
  + 사용자 얼마든지

> Item
  분류 : Category중에 하나꼭 선택
  제품명 : 다이슨 선풍기 AM-07
  생성일 : 만든날 또는 구입일
  만료일 : 유효기간 or A/S기간
  제품 img : list형태
  영수증img : list형태
  대표 img : 제품 img중에 하나 선택하게
  알람 : 만료기간 몇일전 알람

 

Json Sample에 대응되는 class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    // 여기서 final은 상속불가를 위해 선언
    public final class ExpireData {
        // @SerializedName의 값은 json에서 Object로 파싱 되어질 때 key의 name이다.
        // 변수명은 달라도 된다. 이왕이면 같게
        // Catetory 리스트 Type이 Category로 되어있다
        public @SerializedName("categories") ArrayList<Category> categories; 
        // Item 리스트 Type이 Item으로 되어있다
        public @SerializedName("items") ArrayList<Item> items;
 
        // inner class는static으로 
        // 위 categories에 들어갈 Category Class
        public static final class Category {
            public @SerializedName("name"String name;
            public @SerializedName("icon"String icon;
 
            public Category(String name, String icon) {
                this.name = name;
                this.icon = icon;
            }
        }
 
        // 위 items에 들어갈 Item Class
        public static final class Item {
            public @SerializedName("name"String name;
            public @SerializedName("category"String category;
            public @SerializedName("createDate"String createDate;
            public @SerializedName("expireDate"String expireDate;
            // 제품 이미지는 여러장이 될수 있기 때문에 ArrayList
            public @SerializedName("productImgs") ArrayList<String> productImgs; 
            public @SerializedName("receiptImg"String receiptImg;
            public @SerializedName("alarm"String alarm;
 
            public Item(String name, String category, String createDate, String expireDate,
                    ArrayList<String> productImgs, String receiptImg, String alarm) {
                this.name = name;
               this.category = category;
                this.createDate = createDate;
                this.expireDate = expireDate;
                this.productImgs = productImgs;
                this.receiptImg = receiptImg;
                this.alarm = alarm;
           }
        }
   }
cs

 

test용도이니 getter setter 및 생성자는

개발자 입맛에 맞게 변경~~

 

Json Sample

 

json 이쁘게 node로 볼수 있는 사이트
http://jsonviewer.stack.hu/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
  "categories": [
    {
      "name""Electronic",
      "icon""electronicIcon.png"
    },
    {
      "name""Cosmetic",
      "icon""cosmeticIcon.png"
    },
    {
      "name""Food",
      "icon""foodIcon.png"
    }
  ],
  "items": [
    {
      "name""TV",
      "category""Electronic",
      "createDate""2017-06-01",
      "expireDate""2018-06-01",
      "productImgs": [
        "productimg01.png",
        "productimg02.png"
      ],
      "receiptImg""receipt.png",
      "alarm""2018-05-15 09:00"
    },
    {
      "name""Founder",
      "category""Cosmetic",
      "createDate""2017-06-01",
      "expireDate""2018-06-01",
      "productImgs": [
        "productimg01.png"
      ],
      "receiptImg""receipt.png",
      "alarm""2018-05-15 AM 9:00"
    },
    {
      "name""Water melon",
      "category""Food",
      "createDate""2017-06-01",
      "expireDate""2018-06-01",
      "productImgs": [
        "productimg01.png",
        "productimg02.png",
        "productimg03.png"
      ],
      "receiptImg""receipt.png",
      "alarm""2018-05-15AM9: 00"
    }
  ]
}
cs

 

 

 

ExpireData 생성

 

 

1
2
3
4
5
6
7
//사용자가 입력한 값들을expireData에 담는다
ExpireData expireData = new ExpireData();
expireData.categories.add(new ExpireData.Category("Electronic""electronicIcon.png"));
ArrayList<String> productsImgs = new ArrayList<>();
productsImgs.add("productimg01.png");
productsImgs.add("productimg02.png");
expireData.items.add(new ExpireData.Item("TV""Electronic""2017-06-01""2018-06-01", productsImgs
cs


 

Gson을 이용한 ExpireData to json

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Gson gson = new Gson();
String json = gson.toJson(expireData);
 
//결과 
{
  "categories": [
    {
      "icon""electronicIcon.png",
      "name""Electronic"
    }
  ],
  "items": [
    {
      "alarm""2018-05-15 09:00",
     "category""Electronic",
      "createDate""2017-06-01",
      "expireDate""2018-06-01",
      "name""TV",
     "productImgs": [
        "productimg01.png",
        "productimg02.png"
      ],
     "receiptImg""receipt.png"
    }
  ]
}
cs

 

이경우는 사용자가 입력한 data를

json파일로 저장할때 쓰인다.

저장한 json은 app이 로딩될때

아래와 같은 방법으로 파싱되어

app에서 보여질수 있다~

 

 

Gson을이용한 json to ExpireData

 

1
2
3
// 단 두줄로... json을 parsing 하여 Object에 바로 담아준다
Gson gson = new Gson();
ExpireData getExpireData = gson.fromJson(json, ExpireData.class);
cs

 

app에서 기존 저장된 json data를

불러올때 쓰거나

 server에서 받아온 json을

정해진 class타입에 맞게 파싱할때 쓰인다.

위에 설명해준 @SerializedName 의 값에 의해

 파싱이 되니 꼭 이름이 같아야한다!!

 

문의사항은 댓글남겨주세요

 

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

반응형

+ Recent posts