본문 바로가기

지이노/ReView & Using

SmartThings - webCoRE - 기본명령에 대해 알아보기 1





WebCoRE(이하 웹코어)를 통해 동작을 구현하기 위해서는


Statements에 대해 알아 둘 필요가 있다.


Statements가 무엇인가? 언어적 뜻은 여럿 있겠지만 


여기서의 의미는 (작업)명령 이라고 보면 된다.


이번 글에서는 웹코어에서 사용하는 기본 명령(Basic Statement)에 대해 알아보도록 한다.











1. 종류


기본 명령에는 세가지 종류가 존재한다.


If Block , Action , Timer


이 세가지의 명령은 각각의 역할이 있고 그 역할에 맞게 사용해서 동작을 구현하는 것 이다.








위에 보이는 세개의 기본명령을 용도에 따라 구분하자면


조건과 동작으로 구분 할 수 있겠다.


조건에는 If Block 과 Timer를 사용 할 수 있고


동작으로는 Action을 사용 할 수 있다.


그렇다면 조건과 동작의 차이는 무엇인가?


간단한 문장으로 설명하자면


"만약 A하다면 B한다."


라고 표현 할 수 있겠는데 여기서 "만약 A하다면"은 조건문이고 "B 한다"는 동작문이다.


그렇다면 이 세개의 기본명령에 대해 알아보자.











2. If Block에 대해




If Block은 "만약" 이다.


만약 A한 경우의 조건문을 만드는 명령으로써


가장 많이 사용하는 조건이라고 생각하면 된다.


예를 들어 아래와 같은 조건이 있다고 생각해보자


"만약 Room1온습도 센서의 온도가 26도 이상이라면"


위 조건의 경우 Room1 이라는 온습도 센서가 있고 그 온도를 비교해서 26도 보다 높은 경우


조건을 만족한 것이 된다.


얼추 If Block에 대해 알아보았으니 이제 "Add an if"를 클릭하여 실제로 만들어 보자.








새로운 If Block을 추가하기 위한 페이지로 이동하였다.


이 페이지에서는 내가 생성할 조건문이 단독인지, 그룹인지를 선택 할 수 있다.


웹코어에서 하나의 조건문에서는 and 또는 or 둘 중 하나만 사용 가능하다.


이게 무슨말이냐면


[모션A active] and [모션B active] and [모션C active]


라는 조건문에서 가운데 and가 통합이다.


여기서 하나라도 or로 변경하면 전부 or가 되버리는 것이다.


이럴 때 모션A는 반드시 active이고 모션B나 C 둘중에 하나만 active여도 된다면


[모션A active] and ( [모션B active] or [모션C active] )


라는 식으로 모션B와 C를 따로 그룹지어서 사용하면 그룹안에서는 따로 적용이 될 수 있다.


물론 그룹안에서도 and 또는 or 둘 중 하나만 사용 가능하니 주의하자.


다시 본론으로 돌아와서 이 페이지에서 단독은 Condition이고 그룹은 Group이다.











3. Compare




단독조건(condition)을 선택하게 되면 위와 같은 화면으로 이동한다.




빨간화살표는 조건으로 사용할 종류(피연산자)를 선택한다.


그 종류로는


ㅁ. Physical device(s)


   "물리적 장치"를 선택한다.


   ST에 등록한 장치 중 웹코어에 연동한 장치들을 나타낸다.


   선택한 장치의 속성을 사용할 수 있다.


ㅁ. Virtual device


   "가상 장치"를 선택한다.


   ST에 등록한 장치가 아닌 ST에 포함되어 있는 가상 장치를 나타낸다.


   날짜, 시간, 장소모드, 루틴, IFTTT 등 의 기본으로 포함되어 있는 기능을 사용할 수 있다.


ㅁ. Value


   "값"을 선택한다.


   값은 피연산자의 기본이고 데이터 유형에 따라 상수 문자열, 정수, 시간으로 구성된다.


   표현식을 포함 할 수 있으며 중괄호 안에 포함 할 수 있다.


ㅁ. Variable


   "변수"를 선택한다.


   지금까지 다뤘던 변수를 선택해서 조건문으로 사용한다.


ㅁ. Expression


   "표현"을 선택한다.


   가장 복잡한 피연산자로써 더 복잡한 계산을 수행 할수 있다.


   예를 들면 5 + 4 등의 일반계산식, $ hour * 60 + $ minute 등의 시간계산식 등이 있다.


ㅁ. Argument


   "인수"를 선택한다.


   이 피연산자는 다양한 실행 채널을 통해 피스톤으로 전달 된 데이터를 검색할 수 있다.


   예를 들면 IFTTT 트리거는 피스톤에 데이터를 전달 할 수 있고 


   데이터는 인수 피연산자를 통해 읽을 수 있다.




주황색화살표는 피연산자를 선택함에 따라 변동하는데


선택된 피연산자의 종류에 맞는 선택을 할 수 있는 부분이다.(몇 몇 피연산자는 입력타입이다.)




노란색화살표는 피연산자로 물리적장치를 선택했을 때에만 표시되는데


선택된 물리적장치의 속성을 선택 할 수 있다.


예를 들면 온습도 센서의 속성 중 온도를 선택할 것인지 습도를 선택할 것인지 정하는 부분이다.











4. Comparison




앞에서 비교할 "무엇"을 선택했다면


바로 밑에서는(빨간화살표) 앞에서 선택한 "무엇"을 "어떻게" 비교할 것인지 설정 할 수 있다.


이 종류는 굉장히 많기 때문에 간단하게 설명하기로 한다.


아래는 대표적으로 많이 사용하는 기능들이다.


ㅁ. Changed (do not change)


   "선택한 값이 변경된 지 얼마나 지났는가" 에 대한 비교문이다.


   괄호는 "선택한 값이 변경되지 않은지 얼마나 지났는가"로써


   이 두 기능은 상태가 변경되거나 변경되지 않은지 설정시간 만큼 지났을 때 참이 된다.


ㅁ. is (is not)


   "이다"와 "이 아니다"라고 표현 할 수 있다.


   이 기능은 설정한 값이 맞을 때 참(is) 이거나 설정한 값이 맞지 않을 때 참(is not)이 된다.


   가장 대표적인 비교문이고 모션센서가 active가 맞을 때, 혹은 맞지 않을 때라는 식으로 


   사용된다.


ㅁ. Changes (Changes to)


   이 비교문은 "변경될 때" 와 "설정된 값으로 변경될 때"로 표현한다.


   이 두 기능을 사용하게 될 경우 Changes는 어느 값이든 변경하면 참


   Changes to는 설정된 값으로 변경될 경우 참이 된다.


ㅁ. Stays


   이 기능은 "설정한 값으로 설정한 시간만큼 머물었을 때" 참이 되는 기능이다.


   어떻게 보면 Changed와 비슷하다고 생각 할 수 있지만 이 둘의 차이는


   값을 설정할 수 있느냐 없느냐다.


   예를 들면 Stays는 모션센서가 active로 10초 머물었을 때 라는 조건이 되지만


   Changed는 모션센서가 무엇으로든 변경되고 10초 머물었을 때 라는 조건이 된다.











5. Logical Operator


조건문이 두개 이상이 되었을 때는 이 두개 이상의 조건문에 대한 정의가 필요하다.


이럴 때 필요한 것이 논리게이트인데, 


웹코어에서는 AND, OR, XOR, Followed by 네가지가 존재한다.


논리게이트에 대해서는 블로그내에 따로 설명을 적어 두었으므로 생략하도록 한다.


논리게이트에 관하여





두개 이상의 조건문이 생성되었을 때 처음 생성되는 논리게이트는 and이다.


이때 이 and를 클릭하게 되면 위와 같은 창이 팝업되게 된다.


여기서 논리게이트를 선택 할 수 있다.


"Logical Operator"를 클릭하게 되면


앞서 말한 AND, OR, XOR, Followed by를 선택 할 수 있다.


"Whole group negation" 에서는 부정게이트의 사용여부를 선택 할 수 있다.


이 또한 논리게이트에 설명이 되어 있으므로 생략한다.











6. 마치며


본 글에서는 기본명령이 무엇인지와 If Block에 대해서 적어보았다.


사실 처음 글을 작성할 때에는 기본명령 전부를 적어보려고 했으나...


작성하다보니 양이 많아져서 2부작이 될지 3부작이 될지 잘 모르겠다.


다음 글에서는 Action에 대해 (분량이 안되면 Timer까지) 적어야겠다.



- 기본명령에 대해 알아보기1 끝.