본문 바로가기

지이노/ReView & Using

SmartThings - webCoRE - 변수를 사용하자




지난 글에서 변수(Variable)에 대해 알아보았다.


그렇다면 이 변수를 어떻게 사용해야 하는 것일까?


쉽게 생각하면 된다.


박스에 내가 원하는 값을 넣어두었으니 그 값을 비교하여 조건문으로 사용하거나


특정 조건에서 박스의 값을 바꾸는 식으로 사용 하면 된다.


이번 글에서는 이 변수를 사용하는 아주 작은 팁을 적어보고자 한다.


강조해서 말하지만 "아주 작은" 팁이다.











1. 실제값 in 변수


가장 흔하게 사용할 수 있는 센서 등의 실제값이 변할 때 마다 그 값을 변수에 저장하는 방법이다.



위 예제문에서는 외부온습도 센서의 온도값이 변할 때 마다


앞에서 선언한 Temp_Box 라는 변수에 외부온습도 센서의 온도값을 저장하는 피스톤이다.


풀어서 읽어보자면


조건 : 외부온습도 센서의 온도가 "changes"할 때


액션 : System variables의 $device의 기능으로 Temp_Box 변수에 외부온습도 센서의 온도를 

       "Set variable"한다.


라고 읽을 수 있다.


이 기능을 사용해서 모든 센서를 변수화 한다면 


나중에 특정 센서가 고장나거나 다른 센서로 교체할 때


이 센서가 사용된 모든 부분을 수정 할 필요 없이 변수에 값을 저장하는 이 구문만 수정하면 된다.


센서의 교체가 심할 경우나 나중의 교체를 염두에 두고 사용하는 방법이라고 할 수 있다.


(다른 피스톤에도 이 센서가 사용된다면 글로벌 변수를 사용하면 된다.)











2. 인터록


인터록(Interlock)은 일종의 제한조건이다.


동작 순서가 잘못되거나 하나의 조건구문이 동작하고 있을 때 다른 조건구문이 동작하면 안될 경우


동작의 시작에 인터록변수를 true로 변경하고 동작 마무리에 false로 변경한 뒤


동시 동작을 해선 안되는 조건구문에 위에서 설정한 인터록변수가 


false일 때에만 동작 할 수 있도록 제한을 걸어 두는 것이다.


조금 쉽게 예를 들자면


A 모터가 자동동작 할 때에는 B밸브가 자동동작해서는 안되는 경우가 있다고 하자


이 때 A모터와 B밸브의 동작조건은 각각 따로 가지고 있다.


이 동작조건이 일부 겹칠 때, A모터의 동작과 B밸브의 동작이 동시에 이뤄질 수도 있는 경우.


A모터와 B밸브는 동시 동작해서는 안된다고 가정하자.


이때, A모터의 Action 첫 부분에 인터록변수를 true로 하고 모터의 동작이 완료된 후 false로 변경


B밸브의 동작조건에는 인터록변수가 false일 때를 and로 추가하는 것이다.


두서없이 적었지만 인터록은 자동제어에서 안전을 담당한다.




위 예제에서는 temp변수는 온도센서를 pump변수는 펌프, valve변수는 밸브를 대신하여 


사용했다.


그대로 이해하자면 온도가 25도 이상일 때 펌프, 밸브가 동작해야 하지만


펌프가 동작하는 동안에는 밸브가 동작하지 않았으면 하는 경우가 생긴다.


이 때, 펌프가 동작하기 전에 interlock 변수를 true로 바꾸고 펌프가 정지한 뒤 false로 변경한다.


이렇게 하면 펌프가 동작하는 동안에는 밸브가 동작 할 수가 없다.











3. 조건의 간소화


피스톤을 구성하다보면 비슷한 조건을 사용하는 장치들이 있을 수 있다.


이 때 webCoRE의 Copy & Paste 기능을 이용하여 복사해 붙여 넣어도 되지만


앞에서 동일한 조건을 변수화 시켜서 사용하면


앞서 생성한 변수와 추가 조건을 이용하여 비슷하지만 한두개의 조건이 다른 장치들에


사용할 수 있고 이렇게 하면 피스톤을 간소화 할 수 있다.



위 예제에서는 동일한 조건문이 두개 뿐이라 피스톤의 간소화가 별로 느껴지진 않지만


만약 동일한 조건에 여러개의 센서가 포함된다면?


이후의 조건에는 간단하게 변수 하나로 사용 할 수 있다.


또한 이 조건을 변경해야 하는데 이 조건을 사용하는 장치가 10개가 넘어간다면?


앞서 변수화한 부분의 조건만 변경하면 10개가 넘어가는 장치의 조건을 한번에 바꾼다.


규모가 커질 수록 편리해지는 사용방법인 것이다.











4. 마치며


간단하고도 짧은 변수의 활용법 세가지를 알아보았다.


변수의 활용법이야 무궁무진하지만 모든 활용법을 적어 둘 수는 없다.


아이디어라는 것은 무한한 것이기 때문에 응용하기 좋은 팁을 몇가지만 적었다.


이 글을 읽고 좋은 생각이 떠올랐다면 이 글의 목적은 완수한 것이라고 생각한다.


더 스마트하고 더 편리한 홈자동화를 위해 고민하는 것도 너무 즐거운 일인 것 같다.


-변수를 사용하자 끝.