본문 바로가기

지이노/ReView & Using

SmartThings - webCoRE - 변수에 대하여




webCoRE를 사용함에 있어서, 아니 자동제어를 구축함에 있어 흔히들 착각 하는 것이 있다.


대부분 각 센서류들의 상태에 맞춰 출력장치를 제어하는 것 이라고 생각하는데


그렇게 하면 처음 구성할 때에 별 문제없고 쉽게 구성 할 수 있지만


나중에 시간이 지나고 센서가 마음에 들지 않거나 고장이 나거나 더 좋은 센서가 나와서


교체를 하려고 했을 때 모든 Piston을 수정해야 하는 불상사가 일어나 버릴 것이다.


그래서 일반적으로 설비자동화를 구축할 때에는 (PLC 등의 장치) 변수를 사용한다.


변수라고 하면 "???" 라고 생각 하는 사람이 있을 수도 있다.


오늘은 그 변수에 대해 알아보고자 한다.










1. 변수란?


변수는 영어로 Variable 이라고 하는데, 사전 적 의미로는 아래와 같다.



영어사전의 뜻 처럼 변화를 일으키는 요인 이라고 생각해도 좋지만 우리가 사용 할 CoRE에서는


프로그래밍적인 뜻으로 접근 하는 것이 맞겠다.


변수란 값이 특정지어지지 않아 임의의 값을 가질 수 있는 문자를 뜻하는데


백과사전에 적혀있는 뜻은 항상 아리송하다.


조금, 아주 조금 쉽게 설명하자면 박스가 하나 있고 그 박스 안에 원하는 값 또는 센서의 값 등을


담아 두고 이름을 정해서 필요한 곳에서 꺼내 쓰는 것 이라고 생각할 수 있다.



- 내가 생각하는 변수의 이미지 -











2. 변수의 종류


우선 변수를 만들기 전에 webCoRE에는 2가지의 변수가 존재한다.


Local Variable과 Global Variable, 이 2가지의 변수를 필요한 곳에 적절히 활용해야 한다.


첫 번째인 Local Variable은 지역변수라고도 부른다. 


이 지역변수의 특징은 이름 그대로 이 지역에서만 사용 할 수 있는 변수이다.


그리고 webCoRE에서의 지역은 Piston이다.


지역변수가 선언되어 있는 해당 피스톤에서만 통용되는 변수가 바로 이 Local Variable인 것이다.


그렇다면 두 번째인 Global Variable은 어떤 변수인가.


이 변수는 전역변수라고도 부르며 전 지역에서 사용 할 수 있는 변수가 되는 것이다. 


지역변수와 같은 변수이지만 이 전역변수는 모든 피스톤에서 사용 할 수 있기 때문에


피스톤A에서 값을 입력 받은 전역변수를 피스톤B에서 사용 할 수 있다.


요약하자면 아래와 같다.


Local Variable(이하 지역변수) : 선언된 피스톤에서만 사용 가능


Global Variable(이하 전역변수) : CoRE내 모든 피스톤에서 사용 가능











3. 변수 만들기


변수가 무엇인지 알아보았고 그 종류는 어떤 것이 있는지 알아보았다.


이제 변수를 만드는 방법을 알아보자.


우선 첫 번째로 지역변수의 생성방법이다.


1. 피스톤편집화면의 우측상단의 Options를 클릭한다.


 <- 클릭



2. Options를 클릭하고 나오는 리스트에서 "Show variables"를 체크한다.



* 1, 2를 생략하고 우측상단에 있는 버튼을 눌러도 무방하다.


* 편집화면에 define 이라는 공간이 생겼다면 지역변수를 사용 할 준비가 된 것이다.



3. define 이라는 공간의 "+ add a new variable" 을 클릭한다.




4. 변수 선언창에 변수를 선언한다.



이상으로 지역변수의 선언방법을 알아보았다.


다음은 전역변수의 선언방법을 알아보자.



1. 피스톤편집화면의 우측에 있는 Global variables 부분을 확인한다.




2. Global variables의 "+ add a new global variable"을 클릭한다.




3. 변수 선언창에 변수를 선언한다.



변수의 선언방법은 위와 같이 간단하다.


이때, 지역변수와 전역변수의 구분은 "@"로 하게 된다.











4. 변수 선언창




변수 선언을 위한 창은 위와 같이 구성되어 있다.


하나 하나 살펴보자면


ㅁ. 변수타입


선언할 변수의 타입을 정한다. 선택 할 수 있는 타입은 9가지로 그 내용은 아래와 같다.


1) Dynamic

변수의 타입이 Dynamic(동적)이게 된다.

선언되는 변수의 타입이 고정되지 않고 어떠한 타입으로든 사용 될 수 있다.


2) String (text)

변수의 타입이 String(문자)의 속성을 지니게 된다.

선언된 변수에 저장되는 값은 문자여야만 한다.


3) Boolean (true/false)

변수의 타입이 Boolean(참 또는 거짓)의 속성을 지니게 된다.

이 속성의 변수는 참 또는 거짓의 값 만을 지닌다.


4) Number (integer)

변수의 타입이 Number(숫자)의 속성을 지니나 그 숫자는 integer(정수)여야만 한다.

소수점이하로는 인식 할 수 없다.


5) Number (decimal)

변수의 타입이 Number(숫자)의 속성을 지니나 그 숫자가 decimal(소수)여도 된다.

4번과의 차이점으로 이 변수는 정수, 소수 둘 모두를 인식할 수 있다.

정수도 1.0 이라고 표현 할 수 있기 때문에 저장 가능하다.


6) Date and Time

변수의 타입이 Date and Time(날짜와 시간)이 된다.

저장되는 값은 날짜와 시간이라는 형식만 저장 할 수 있게 된다.


7) Date (date only)

변수의 타입이 Date(날짜)의 속성을 갖는다.

오직 날짜의 형식의 값만 저장 할 수 있다.


8) Time (time only)

변수의 타입이 Time(시간)의 속성을 지니게 된다.

저장되는 값은 오직 시간의 형식을 가져야 한다.


9) Device

변수의 타입이 Device(장치)의 속성을 지닌다.

이 타입의 변수에는 장치를 저장 할 수 있다.

*단 장치의 값을 저장하는 것은 아님!


이상 9가지의 변수타입이 존재한다.


ㅁ. 변수명


선언할 변수의 이름을 뜻하며 이 이름에는 특수문자 또는 한글은 입력 할 수 없다.


오직 영어로만 적어야 한다.


ㅁ. 초기값 종류


초기값의 종류는 다양하게 존재하나 이번 글에서는 argument는 생략한다.


1) Nothing selected

초기값을 비워두는 선택이다.

이 초기값종류를 선택 할 경우 선언된 변수의 초기값은 Not Set이 된다.

이후 피스톤에 의해 변수에 값이 저장될 경우 해당 값으로 변하지만

그 전까진 Not Set이다.


2) Physical device(s)

장비목록의 장비에서 선택한 값을 초기값으로 저장한다.

이 선택을 할 경우 원하는 장비의 원하는 값을 초기값으로 저장할 수 있다.


3) Virtual device

가상장비의 값을 초기값으로 저장한다.

이 가상장비의 리스트에는 날짜, 시간, 루틴, 모드 등이 있다.


4) Value

사용자가 정한는 임의의 "값"을 초기값으로 저장한다.

이 경우 변수의 타입에 따라 초기값으로 설정 할 수 있는 값이 달라진다.


5) Variable

변수를 초기값으로 저장한다.

이미 선언된 변수의 값을 초기값으로 저장하게 된다.


6) Expression

정해진 표현을 초기값으로 저장한다.

이 기능의 경우 CoRE에서 제공하는 함수, 또는 수식에 의한 여러 값의 계산값을

변수에 저장 할 수 있다.


초기값은 피스톤의 동작 초기에만 저장되는 값이기 때문에


나중에 피스톤내부의 동작에 의해 값을 바꿀 수 있다.


ㅁ. 초기값


앞서 선택한 초기값의 종류에 따라 입력 할 수 있는 초기값이 변화한다.











5. 마치며


변수에 대해 알아보았다.


변수는 사용방법에 따라 무궁무진한 방식을 제공하기 때문에 자동제어를 하고 싶다면


필히 알고 있어야 한다.


시작하면서 적었듯 나중에 센서를 교체할 경우를 대비해 모든 센서의 값을 변수화 해서 


사용 할 수도 있지만 비슷한 조건을 사용하는 출력에 대해 조건이 같은 부분을 따로 변수화 하면


여러 조건문에 변수하나와 추가조건을 묶는 식으로 피스톤을 간략화 할 수도 있다.


그 외에도 조건내에 연속해서 조건이 들어가는 경우에도 논리게이트와 변수를 이용해서


피스톤을 간략화 및 보기 편하게 할 수도 있다.


일정 조건에서 특정값을 저장해두는 용도로도 사용 할 수 있으니


잘만 사용하면 자동제어를 더욱 더 스마트하게 구성할 수 있게 된다.



-변수에 대하여 끝.