반응형

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

 

 

[붱이 Story/IoT] - SmartThings 자동화 이해하기 - 기본 원리 및 트리거란?

[붱이 Story/IoT] - SmartThings 자동화 이해하기 - 선행 조건 알고 쓰자

 

이번 내용은 "이 상태가 일정 시간 유지될 때" 즉 웹코에서 Stay라고 불리는 기능과

Switch류들 동작에서 "켜기"를 선택하면 나타나는 "자동 끄기" 에 대해서 얘기해보려고합니다. 

 

 

예시를 들어 설명하는게 좋을것 같네요

 

간단히 예제 상황은 이렇습니다

 

기기는 두개가있습니다.

"현관 앞 모션센서", "현관 앞 휴 전구"

 

> 자동화 목표

"누군가 현관앞에 지나갈때 전구가 켜지고 아무도 없을때 전구를 꺼지게 하고싶다"

 

어떤 자동화를 만들면 될까요?

초반에 입문하신분들은 아마 대부분 이렇게 만들꺼에요

1. 초기버젼

모션감지되면 켜기 모션 감지 안되면 끄기

그래도 동작은 잘될꺼에요 근데 이렇게 만들면 아직 현관에 있지만 신발끈을 묶거나? 할때 움직임 감지가 안되서

전구가 꺼져버리면 머리위로 손을 흔들거나 몸을 크게움직여서 다시 켜지게 하곤하겠죠?

 

그럼 좀더 좋은건 없을까요?

 

2. 자동 끄기 기능 사용하기

요건 자동화 하나만 만들어서 켜고 끄고를 자동으로 할수있어요! 너무좋지요?

 

현관앞에서 보통 저는 1분이상 머물지 않는다고 생각해서 켜진뒤 1분 후 끄도록 "자동 끄기" 를 설정했어요

이 자동 끄기의 매커니즘은 살짝 복잡한데요

시간으로 설명드릴게요

시간 모션센서
(20초 인터벌)
휴 전구
0:00 움직임 감지됨 켜짐
0:20 움직임 없음  
0:25 움직임 감지됨 켜짐 명령 또날아감
(전상태가 미감지에서 감지로
트리거로 인해 날라감)
0:45 움직임 없음  
1:25   꺼짐

요렇게 보면 이해되실까요? 원래는 처음 0:00에 켜지고 1분뒤니 1:00에 꺼져야하지만

1분 사이 움직임이 또 발생되서 켜짐 명령이 한번더 날라갔어요 그래서 앞에꺼 자동꺼짐을 무시하고 연장되서 1분 25초에 꺼지게 되는거죠 

 

이기능이 자동 끄기 기능이에요

 

근데 이게 다 커버못하는 한 가지 사항이있어요 아래사항인데요

시간 사람  모션센서
(20초 인터벌)
휴 전구  
0:00 사람 움직임 움직임 감지됨 켜짐  
0:15 사람 움직임      
0:33 사람 움직임      
0:45 사람 움직임      
1:00 사람 움직임   꺼짐  
1:01 전구 꺼진거 인지하고 다시 막 움직이기 시작함 이미 움직임 감지된 상태 켜지지 않음 문제상황
1:20   움직임 없음    

이해하셨을까요? ST 정식센서의경우 20초 인터벌이지만

그사이 움직임이 있으면 움직임 상태가 계속 연장되서

"움직임 없음"이 계속 연장될수가있어요

 

이케이스때 트리거는 최초 0:00때 한번뿐이 없었기때문에 자동끄기가 정확히 1분뒤 1:00에 꺼져버려요

그담 꺼지면 저는 뭐지하고 막 손을 흔들겠죠? 하지만 이번엔 켜지지않아요

왜냐면 모션센서는 아직 "움직임 감지됨" 상태거든요

 

이케이스는 드물지만 종종 나와요 그럼 짜증나겠죠?

 

이제 Stay를 쓸때가 왔어요

 

3. 이 상태가 일정 시간 유지될때 - Stay 사용하기

Stay의 기본개념은 간단해요 지정한 그 상태값이 지정한 시간동안 계속 유지하고 있어야 만족합니다.

"움직임 없음" 1분이상 이라고 했다면 1분동안은 온전히 계속 "움직임 없음" 상태여야지만 만족합니다.

1분 사이에 "움직임 감지"로 바뀐다면 해당 타이머 체크는 취소가 됩니다.

다시 "움직임 없음"이 발생되면 그때부터 다시 1분을 만족하는지 Timer가 돕니다. 이해되죠?

 

하지만 Stay를 사용하면 1번처럼 두개를 만들어야해요 

모션 감지되면 꺼져있을때 켜기 모션 감지안됨 유지가 1분이상되고 전구가 켜져있으면 끄기

이렇게 만들면 2번의 문제 상황 표에서 연장해서 본다면 우선 내가 머무는동안은 최소한 꺼지지 않습니다.

시간 사람  모션센서
(20초 인터벌)
휴 전구
0:00 사람 움직임 움직임 감지됨 켜짐
0:15 사람 움직임    
0:33 사람 움직임    
0:45 사람 움직임    
1:00 사람 움직임    
1:20   움직임 없음  
2:20     꺼짐

단 자동끄기 보다 좀더 길게 켜져있긴하겠죠? 시간조절은 본인 상황에 맞게 조절해서 사용하시면됩니다.

 

이제끝난줄알았죠?

 

하지만!!  이것도 문제가 있습니다!!

 

위와같이하면 모션에 의해 자동 켜지고 그다음 자동으로 꺼짐에 대해서는 완벽하지만

움직임이 감지 되지않는 상태에서 전구가 켜지는 경우?에 대해서 커버가 안됩니다.

 

움직임은 감지되지 않았지만 모션센서가 인지 안되는 다른쪽에서 전구를 수동으로 켯다면?

또는 앱으로 실수로 자동으로 켰다면?

다른 자동화에 의해 실수로 켜졌다면?

 

이케이스에는 방어가 안되어있습니다?

 

아쉽지만 하나 더 만들어서 커버를 해야합니다.

 

위 케이스에서 저는 현관 전구는 최대 5분이상은 켜져있을일이 없다고 가정하고

아래와 같이 하나더 만들었습니다 (잘일어나지 않기때문에 마지막 이건 패스해도됩니다!!!)

총 3개나 만들어야했지만 좀더 스마트한 우리집이 된것 같습니다? ㅎㅎ

 

자동끄기와 Stay에 대해서 이제좀 이해가 되나요? 안되면 댓글 달아주세요~~~

반응형
반응형

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

 

붱이 Story

나는 data.go.kr에서 제공하고있는

미세먼지 정보 Open API를 사용해서

Home Assistance에서 사용하고 있었다.


SmartApp으로 만들어서 서버없이 해야지 생각만하다가


SmartHome 카페 slasher님이 위에 환경 공단 API를 가지고


DTH를 만들어주셨다. 너무 감사합니다^^


http://cafe.naver.com/stsmarthome/2536



미세먼지뿐만 아니라 Weather정보도 같이 표시되는

dth하나가 있으면 좋겠다 생각이 들어서


토요일 아침부터 작업을 시작하였다.


slasher님꺼에서


SmartThings에서 자체적으로 제공해주는 weather함수를 이용해서


통합하는게 목표



결과를 먼저 보여드리면




대기 오염 부분은 환경공단에서 제공하는 API를 사용해서 출력하였고 (Slasher님의 dth 기반)


아래 날씨 정보 부분은 smartThings weather함수를 이용하여서 출력하였다.


두개의 특징을 소개하면


"환경공단 정보"

 gps정보가 아닌 측정소의 기준으로 정보를 준다

그래서 Configuration에서 API키 뿐만 아니라 측정소 정보도 알려주어야한다.



"SmartThings Weather"

날씨 Open API인 https://www.wunderground.com 를 기반으로

API Key가 별도 없이(SmartThings내부에 내제됨) dth에서 사용가능하다.


Home Location의 GPS값을 통해 정보를 가지고 온다.


attribute값들은 https://www.wunderground.com/weather/api/ 


참조해서 어떤것이든 가져다 쓸수있다.



두가지 정보를 하나로 합치고 Weather Station을 꾸며보았다.


카페에서 ShinJjang님과 Onaldo님이 Tile 재배치와 색상변경 및 테스트 마루타가 되어주셨다 ㅎ

다시 한번 감사드립니다.



사용법



1. https://data.go.kr 에 가서 회원 가입

2. "대기오염정보 조회 서비스" Open API 활용 신청


여기서 상세 기능 보이는거 다신청하자

여담으로 측정소 조회를 하려면 "측정소정보 조회 서비스" 요것도 신청 같이하자~



3. API Key 받기



4. Graph IDE가서 git hub repository 입력

https://graph.api.smartthings.com/이동

본인 Location 선택 

주소 타입이 자기맞는 서버로 이동확인 아래처럼~

https://graph-na04-useast2.api.smartthings.com

"My Device Handlers" 이동

"Settings" 클릭

아래처럼 입력


"Save"


5. DTH Self Publish

"Update from Repo" 에서

"BooungThings(master)" 선택

New (only in GitHub) 에서 deviceType선택

맨아래 Publish 선택후

"Execute Update" 클릭


6. Weather Station Device 만들기

"My Devices" 이동

"+New Device" 선택

아래 처럼 Type에 방금 추가한 "SmartWeather Station For Korea"

Device network Id는 기존 device들과 겹치지 않게만 아무값

7. Configuration

그리고 바로 컴터로 하는김에

설정값까지 컴터로

위에 만든 Device로 이동

 중간에 Preferences가 보일것이다


edit 클릭

아래 빈곳에 위에 얻은 API키 입력

그리고 측정소 입력 측정소 뭘입력해야하는지는 아래 다시 설명

Tile에서 보여질 이름은 

측정소 이름대신에 보여질 이름 입력 안쓰면 측정소 이름으로 출력

Interval은 사실 정보제공해주는 측정이 정각에만 측정을 한다.

하루 500회 콜만 가능하니 알아서 판단~



8. 측정소 조회


측정소 이름이 뭐가있을까 갑자기 짜증이난다


환경공단가서 측정소가 뭐가있나 봐야한다


Kotlin과 web도 공부할겸


짱나서 만들었다




사용 방법은 간단

http://weekendproject.net:8081/api/airstation/{검색어}


아래는 "중구"로 검색한 예이다

http://weekendproject.net:8081/api/airstation/중구




결과가 없는경우는

여튼 검색해서 측정소 이름 부분의 것을 입력하면된다.


컴터로 안하고 폰으로 바로하려면


Weather Station Device선택하고 

오른쪽위 톱니바퀴 아이콘 Configuration 해서

아래 항목에서 입력



참고로 측정소 조회는 내 key로만들어서 하루 500회 호출만 되니


악의적으로 너무 많이 조회하지마세요 ㅠㅠ


측정소 조회 서비스도 신청하신분은 아래 query로 직접 조회하세요

http://openapi.airkorea.or.kr/openapi/services/rest/MsrstnInfoInqireSvc/getMsrstnList?addr=${SearchWord}&ServiceKey=${본인APIKey}


끝~~~ 

WebCore에서 자동화는 알아서 입맛에 맞게~




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


반응형

+ Recent posts