en ko

태그 표현식

태그 표현식을 사용하여 고유하고 동적인 시계 화면을 만듭니다. 태그 표현식은 태그 값(날짜 및 시간 또는 배터리 상태, 걸음 수와 같은 시계 데이터)을 기반으로 구성요소의 회전, 배치, 불투명도를 변경할 수 있는 조건입니다. 태그 값이 변경되면 시계 화면이 동적으로 변경됩니다.

예를 들어 화면의 객체가 찰나의 순간에 수직으로 이동하는 시계 화면을 만들거나, 특정 시간에 표시되거나 사라지는 객체가 있는 시계 화면을 만들 수 있습니다.

구성요소의 회전, 배치, 불투명도 속성 입력란에 태그 표현식을 직접 입력합니다.

태그는 대괄호로 묶어야 합니다. 시계 화면 스튜디오에서 태그 스크립팅 대화상자를 열려면 태그를 클릭하세요. 스크립팅 대화상자에서 긴 태그 표현식을 입력하고 원하는 데이터를 검색할 수 있습니다.

그림 1. 태그 스크립팅 대화상자

다음 표에는 태그 설명 및 값 범위가 나와 있습니다.

날짜 및 시간

태그 정의 범위
UTC_TS 에포크로부터 UTC 밀리초로 표시된 타임스탬프 1256953732
MSEC 밀리초 0 - 999 123
SEC 1분 기준의 초 0 - 59 12
SEC_Z 1분 기준의 초(앞에 0 표시) 00 - 59 03
SEC_MSEC 1분 기준의 초(밀리초 포함) 0.0 - 59.999 1.234
SEC_IN_DAY 1일 기준의 초 0 - 86,400 12,345
MIN 1시간 기준의 분 0 - 59 3
MIN_Z 1시간 기준의 분(앞에 0 표시) 00 - 59 03
MIN_SEC 1시간 기준의 분(초 포함) 0.0 - 59.999 1.234
HOUR_0_11 1일 기준의 시(0-11) 0 - 11 3
HOUR_0_11_Z 1일 기준의 시(0-11, 앞에 0 표시) 00 - 11 03
HOUR_0_11_MIN 1일 기준의 시(0-11, 분 포함) 0.0 - 11.999 1.234
HOUR_1_12 1일 기준의 시(1-12) 1 - 12 3
HOUR_1_12_Z 1일 기준의 시(0-12, 앞에 0 표시) 01 - 12 03
HOUR_1_12_MIN 1일 기준의 시(0-12, 분 포함) 1.0 - 12.999 1.234
HOUR_0_23 1일 기준의 시(0-23) 0 - 23 3
HOUR_0_23_Z 1일 기준의 시(0-23, 앞에 0 표시) 00 - 23 03
HOUR_0_23_MIN 1일 기준의 시(0-23, 분 포함) 0.0 - 23.999 1.234
HOUR_1_24 1일 기준의 시(1-24) 1 - 24 3
HOUR_1_24_Z 1일 기준의 시(1-24, 앞에 0 표시) 01 - 24 03
HOUR_1_24_MIN 1일 기준의 시(1-24, 분 포함) 1.0 - 24.999 1.234
DAY_1_31 날짜(1-31) 1 - 31 3
DAY_1_31_Z 날짜(1-31, 앞에 0 표시) 01 - 31 13
DAY_1_31_HOUR 날짜(1-31, 시 포함) 1.0 - 31.999 1.234
DAY_WEEK 요일 1(일요일) - 7(토요일) 3
DAY_WEEK_F 요일(전체 텍스트) 일요일 - 토요일 수요일
DAY_WEEK_S 요일(약어) 일 - 토
DAY_IN_YEAR 1년 기준 날짜 1 - 365 123
DAYS_IN_MON 이번 달 기준 날짜 28 - 31 31
MON 1년 기준 월 1 - 12 3
MON_Z 1년 기준 월(앞에 0 표시) 01 - 12 03
MON_F 1년 기준 월(전체 텍스트) 1월 - 12월 11월
MON_S 1년 기준 월(약어) 1 - 12 11
MON_DAY 월(날짜 포함) 1.0 - 12.999 11.111
YEAR 연도 0000 - 9999 2021
YEAR_S 축약된 연도(마지막 두 자리로 표시) 00 - 99 21
YEAR_MON 연도(월 포함) 2021.307
WEEK_IN_YEAR 1년 기준 주 1-52 24
WEEK_IN_MON 1개월 기준 주 1 ~ 5 2
IS_24H 시스템에서 24시간 형식을 사용하는지 여부 0(12시간), 1(24시간) 0
IS_DST 시스템에서 일광 절약 시간을 사용하는지 여부 0(아니요), 1(예) 0
TMZN_ABB 시간대 약어 PST
TMZN_OFS 시간대 오프셋 -12 - +14 +9
TMZN_OFS_WITH_DST 일광 절약 시간에 맞게 수정된 시간대 오프셋 -12 - +14 -7
TMZN_ID 시간대 ID Asia/Seoul
IS_AFTNOON 시간이 정오 이전인지 이후인지 여부 0(오전), 1(오후) 0
AMPM_PO AM 또는 PM 문자열의 위치 -1(알 수 없음), 0(첫 번째), 1(마지막) 0
AMPM 시스템 언어에 맞게 형식이 지정된 AM/PM 문자열 AM/PM AM

설정 정보

태그 정의 범위
LANG_LOC 언어, 국가, 변형, 스크립트, 확장자로 구성된 시스템 언어 객체의 문자열 표현 예: en-US ko_KR

디바이스 정보

태그 정의 범위
BATT_PER 현재 배터리 잔량 비율 0~100 70
BATT_IS_CHARGE 배터리가 충전 중인지 여부 0(아니요), 1(예) 1
BATT_IS_LOW 시계의 배터리가 부족한 상태에서 충전 중이 아닌지 여부 0(아니요), 1(예) 0
BATT_TEM_C 현재 배터리 온도(°C) 28.8
BATT_TEM_F 현재 배터리 온도(°F) 83.84
UNREAD_NC 기기에서 읽지 않은 알림 수 3

센서 데이터

태그 정의 범위
IS_ACC 기기에 가속도계 센서가 있는지 여부 0(아니요), 1(예) 1
ACC_X X축에서의 가속도
ACC_Y y축에서의 가속도
ACC_Z Z축에서의 가속
ACC_A_X X축에서의 가속 각도 -90.0 - 90.0
ACC_A_Y Y축에서의 가속 각도 -90.0 - 90.0
ACC_A_Z Z축에서의 가속 각도 -90.0 - 90.0
ACC_A_XY 각도 X + 각도 Y -180.0 - 180.0

헬스 데이터

태그 정의 범위
HR 심박수 0 - 60
HR_Z 심박수(앞에 0 표시) 00

80


120

SC 걸음 수 0 - 1000
SC_GOAL 걸음 수 목표 1 - 20000 20000
SC_PER 걸음 수 목표 대비 걸음 수 0 - 100

달의 위상

태그 정의 범위
MOON_PO 달의 위상 위치 0 - 28(아래 참고) 14.5
MOON_TY 달의 위상 유형 0 - 7(아래 참고) 2
MOON_TY_NAME 유형 이름 (아래 참고)

MOON_PO 태그의 범위 정의는 다음과 같습니다.

  • 0-0.5: 신월
  • 0.5-6.5 : 저녁 초승달
  • 7 : 상현
  • 7.5-13.5 : 상현망
  • 14 : 보름달
  • 14.5-20.5 : 하현망
  • 21 : 하현
  • 21.5-27.5 : 아침 초승달
  • 27.5-28 : 신월

MOON_TY 및 MOON_TY_NAME 태그의 범위 정의는 다음과 같습니다.

  • 0 : 신월
  • 1 : 저녁 초승달
  • 2 : 상현
  • 3 : 상현망
  • 4 : 보름달
  • 5 : 하현망
  • 6 : 하현
  • 7 : 아침 초승달

함수

함수 정의 표현식 예 출력 예
round(num) num에 가장 가까운 정수를 반환합니다.

round(1.6) 2
floor(num) num보다 작거나 같은 최대 정수를 반환합니다.

floor(1.6) 1
ceil(num) num보다 크거나 같은 최소 정수를 반환합니다.

ceil(1.2) 2
sin(num) num의 사인 값을 반환합니다.

sin(1) 0.84147096
cos(num) num의 코사인 값을 반환합니다.

cos(1) 0.5403023
tan(num) num의 탄젠트 값을 반환합니다.

tan(1) 1.5574077
abs(num) 0부터의 거리를 반환합니다. abs(-10) 10
clamp(num, min, max) maxmin 사이에 고정된 num 값을 반환합니다.

clamp([ACC_A_X], -30, 60) -30~60
numberFormat(form, num) numform 형식으로 변환합니다. form은 다음 값으로 구성됩니다.

0: 빈 공백을 0으로 채웁니다.


#: 값이 없는 곳은 표시하지 않습니다.


.: 소수점 위치를 나타냅니다.

(numberFormat("#.#", [SEC_MSEC]))

(numberFormat("#.###", ([SEC_MSEC]*10)))


(numberFormat("000.000", ([SEC_MSEC]*10)))


(numberFormat("0000.000", ([SEC_MSEC]*10)))

32.4

324.37


324.370


0324.370

asin(num) num의 아크사인 함수를 반환합니다.

asin(0.841) 1
acos(num)m num의 아크코사인 함수를 반환합니다.

acos(0.54) 1
atan(num) num의 아크탄젠트 함수를 반환합니다.

atan(1.557) 1
deg(num) num을 라디안에서 도 단위로 변환합니다.

deg(3.142) 180
rad(num) num을 도에서 라디안 단위로 변환합니다.

rad(180) 3.141
pow(base, exponent) 지수로 제곱된 밑의 결과를 반환합니다. pow(12, 2) 144

연산자

태그 표현식은 태그 표현식의 값을 수정할 수 있는 다양한 연산자를 지원합니다.

산술 연산자

산술 연산자는 기본적인 수학 함수입니다. 산술 연산자는 두 값(피연산자) 간에 함수를 실행합니다.

연산자 정의
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈의 몫
% 나눗셈의 나머지

다음 예는 태그 표현식에서 태그 및 산술 연산을 사용하는 방법을 보여줍니다.

  • 5 * [BATT_PER] :

    배터리 잔량 비율에 5를 곱한 값이 반환됩니다.

    배터리 잔량 비율이 7%이면 반환되는 값은 35입니다.

  • [SEC] / 3 :

    1분 기준 초를 3으로 나눈 몫이 반환됩니다.

    1분에 경과된 초 수가 7이면 반환되는 값은 2.33입니다.

  • [SEC] % 3 :

    1분 기준 초를 3으로 나눈 나머지가 반환됩니다.

    1분에 경과된 초 수가 7이면 반환되는 값은 1입니다.

  • 3 + 5 * [BATT_PER] :

    배터리 잔량 비율에 5를 곱한 다음 3이 더해집니다.

    배터리 잔량 비율이 7%이면 반환되는 값은 38입니다.

    곱셈이 덧셈보다 우선하므로 먼저 곱셈이 수행된 다음, 3이 그 결과에 더해집니다(3 + 5 * 7 → 3 + 35 → 38).

  • (3 + 5) * [BATT_PER] :

    괄호의 덧셈 연산이 먼저 수행되고 그 결과에 배터리 진량 비율이 곱해집니다. 배터리 잔량 비율이 7%이면 반환되는 값은 56입니다.

관계 연산자

관계 연산자는 두 값을 비교하여 관계(예: 어느 값이 더 크거나 작은지 또는 서로 같은지)를 결정합니다. true인 비교는 값 1을 반환합니다. false인 비교는 값 0을 반환합니다.

연산자 정의
< 미만
<= 이하
> 초과
>= 이상
== 같음
!= 같지 않음

관계 연산은 산술 연산과 결합되는 경우가 있습니다. 다음은 관계 연산만 사용하거나 관계 연산과 산술 연산을 사용하는 예입니다.

  • [BATT_PER] <= 15 :

    배터리 잔량 비율이 15% 이하인 경우 [BATT_PER] <= 15가 true이고 1을 반환합니다.

    배터리 잔량 비율이 15%보다 큰 경우 [BATT_PER] <= 15는 false이고 0을 반환합니다.

  • 1000 * ([HRATE] < 100) + 120

    심박수가 100bpm 미만인 경우 [HRATE] < 100은 true이고 값 1을 반환합니다. 그다음으로 1에 1,000을 곱하고 120을 더합니다. 반환되는 최종 값은 1,120입니다.

    심박수가 100bpm 이상인 경우 [HRATE] < 100은 false이고 값 0을 반환합니다. 그다음으로 0에 1,000을 곱하고 120을 더합니다. 반환되는 최종 값은 120입니다.

논리 연산자

논리 연산자는 둘 이상의 관계 연산의 결과를 결합하고 값 1(true) 또는 0(false)을 반환합니다. 태그 표현식은 두 가지 유형의 논리 연산(AND 및 OR)을 지원합니다.

  • AND – 별표(*)로 표시됩니다.

    AND 논리 연산자가 값 1(true)을 반환하려면 두 관계 연산이 모두 true여야 합니다. 그렇지 않은 경우 반환 값은 0(false)입니다.

  • OR – 더하기 기호(+)로 표시됩니다.

    OR 논리 연산자가 값 1(true)을 반환하려면 하나 이상의 관계 연산이 true여야 합니다. 두 관계 연산이 모두 false인 경우 반환 값은 0(false)입니다.

다음 표는 논리 연산의 결과를 설명합니다.

관계 연산 1의 결과 관계 연산 2의 결과 AND(*)의 결과

(관계 연산 1) * (관계 연산 2)

OR(+)의 결과

(관계 연산 1) + (관계 연산 2)

0(false) 0(false) 0 * 0 = 0 0 + 0 = 0
0(false) 1(true) 0 * 1 = 0 0 + 1 = 1
1(true) 0(false) 1 * 0 = 0 1 + 0 = 1
1(true) 1(true) 1 * 1 = 1 1 + 1 = 1

두 피연산자(연산자 양쪽의 값)가 모두 관계 연산인 경우에만 논리 연산자가 적용됩니다. 두 피연산자 중 하나가 숫자 값인 경우 산술 연산자가 적용됩니다.

논리 연산 산술 연산 산술 연산
두 피연산자가 모두 관계 연산임:

(0 <= 1) * (1 < 2)


결과: 1

한 피연산자는 관계 연산이고 다른 피연산자는 값임:

(0 <= 1) *120


결과: 120

두 피연산자가 모두 값임:

1 * 120


결과: 120

이 태그 표현식은 연산자 양쪽에 두 개의 관계 연산(0<=1 및 1<2)으로 구성됩니다. 따라서 논리 연산자가 적용됩니다. 두 관계 연산이 모두 true이므로 이 태그 표현식의 최종 결과는 1(true)입니다. 이 태그 표현식은 관계 연산(0<=1)과 숫자 값(120)으로 구성됩니다. 따라서 산술 연산자가 적용됩니다.
관계 연산의 결과는 1(true)이고, 여기에 120이 곱해집니다. 이 연산의 최종 결과는 120입니다.

이 태그 표현식은 2개의 숫자 값(1과 120)으로 구성됩니다. 따라서 산술 연산자가 적용됩니다. 결과는 1에 120을 곱한 값이며, 최종 결과 120이 반환됩니다.

3항 연산자

3항 연산에는 3개의 피연산자가 있습니다. 조건부 연산과 조건부 연산이 true인 경우의 결과, 조건부 연산이 false인 경우의 결과가 여기에 해당됩니다. 조건부 연산은 관계 연산 또는 논리 연산일 수 있습니다.

3항 연산은 다음과 같은 형식으로 표시됩니다.

conditional_operation? result_if_true: result_if_false

다음 예는 시계 화면에서 이미지의 불투명도를 설정하는 데 사용됩니다.

  • [BATT_PER] <= 20? 15: 100

    이 연산은 배터리 잔량 비율이 20% 이하인 경우 시계 화면의 이미지 불투명도를 15로 설정합니다. 그 외의 경우에는 불투명도를 100으로 설정합니다.

  • ([BATT_PER] >= 50) * ([BATT_PER] <= 75)? 100: 0

    이 예에서는 조건부 연산에 논리 연산을 사용합니다.

    이는 배터리 잔량 비율이 50% 이상이고 75% 이하인 경우 시계 화면의 이미지 불투명도를 100으로 설정합니다. 그 외의 경우에는 불투명도를 0으로 설정합니다.

중첩 3항 연산

3항 연산은 다른 3항 연산의 결과 피연산자 내에 중첩될 수 있습니다.

예를 들어 두 개의 3항 연산 (a? b: c)와 (x? y: z)가 있는 경우 다음과 같은 중첩된 3항 연산을 만들 수 있습니다.

  • conditional_operation? (a? b: c): result_if_false

    If conditional_operation 이 true인 경우 조건부 연산 a를 확인합니다.

    a가 true인 경우 결과는 b입니다. a가 false인 경우 결과는 c입니다.

    If conditional_operation 이 false인 경우 결과는 result_if_false.

  • conditional_operation? result_if_true: (x? y: z)

    If conditional_operation 이 true인 경우 결과는 result_if_true.

    If conditional_operation 이 false인 경우 조건부 연산 x를 확인합니다.

    x가 true인 경우 결과는 y입니다. x가 false이면 결과는 z입니다.

  • conditional_operation? (a? b: c): (x? y: z)

    If conditional_operation 이 true인 경우 조건부 연산 a를 확인합니다.

    a가 true인 경우 결과는 b입니다. a가 false인 경우 결과는 c입니다.

    If conditional_operation 이 false인 경우 조건부 연산 x를 확인합니다.

    x가 true인 경우 결과는 y입니다. x가 false이면 결과는 z입니다.