시작하기
부록

동작 타입 상세

동작 타입 33종의 명령, 입력 항목, 출력 변수를 동작 추가 창의 타입 목록 순서대로 정리했습니다. 동작을 추가하고 편집하는 방법과 재생 종료 대기, 상태 변수의 공통 설명은 4부를, AI 분석 동작은 부록 D를 참고합니다.

알아두기 리소스를 사용하는 동작은 첫 항목에서 설정에 등록한 리소스(장치, 타이머, 클라이언트 등)를 선택합니다(6부). 리소스는 선택 창에서도 추가, 편집, 삭제할 수 있습니다. 값 입력 항목은 직접 입력 외에 변수의 값이나 블록 편집기를 사용할 수 있고(8부), 파일 항목은 프로젝트에 업로드한 파일을 선택합니다(3부). 출력 변수 항목에는 설정 → 변수에서 만든 변수 중 타입이 맞는 것만 표시됩니다. 「~일 때만 표시됩니다」는 그 조건에서만 항목이 나타난다는 뜻입니다.

I/O 장치 제어

LED, 센서, LCD, 모터 등 컨트롤러에 연결된 I/O 장치를 제어합니다. 지원 장치의 분류와 목록, 장치별 명령은 7부를 참고합니다.

장치

제어할 I/O 장치를 선택합니다. 장치는 설정 > I/O장치 에서 등록합니다.

명령

선택한 장치에서 실행할 명령을 선택합니다. 명령 목록은 장치 종류에 따라 다르며, 선택한 명령의 설명이 아래에 표시됩니다.

값

선택한 명령의 입력 값 또는 출력 값을 표에서 설정합니다.

변수 쓰기

선택한 변수에 값을 씁니다. 변수 타입에 따라 쓰기 옵션과 값 입력 항목이 달라집니다.

변수

값을 쓸 변수를 선택합니다. 모든 타입의 변수를 선택할 수 있습니다.

쓰기 옵션

값을 쓸 때 적용할 연산을 선택합니다. 기본값은 없음이며, 선택할 수 있는 옵션은 변수 타입에 따라 다릅니다.

변수 타입쓰기 옵션설명
디지털없음 / 반전반전은 현재 값을 뒤집습니다(true → false). 반전을 선택하면 값 항목이 숨겨집니다.
숫자없음 / 더하기 / 빼기 / 곱하기 / 나누기현재 값에 입력 값을 산술 연산합니다(예: 5 + 3 = 8).
시간, 시간길이없음 / 더하기 / 빼기현재 값에 입력 값을 더하거나 뺍니다.
텍스트, 바이트배열없음 / 추가현재 값의 앞 또는 뒤에 입력 값을 이어 붙입니다(예: 「가나다」 뒤에 「라마바사」 추가 → 「가나다라마바사」).
날짜, 색상(옵션 없음)입력 값을 그대로 씁니다.
추가 위치

입력 값을 붙일 위치를 앞에 또는 뒤에(기본값)에서 선택합니다. 쓰기 옵션이 추가일 때만 표시됩니다.

값

변수에 쓸 값을 입력합니다. 입력 항목은 변수 타입(디지털, 숫자, 텍스트, 날짜, 시간, 시간길이, 바이트배열, 색상)에 맞는 형식으로 바뀝니다.

SHELL 명령 실행

컨트롤러 운영체제의 기본 셸로 명령을 실행합니다. 시스템 명령을 실행하거나 외부 프로그램과 스크립트를 호출할 때 사용합니다.

명령

실행할 셸 명령을 입력합니다(예: ls -al /home, python /path/script.py). 명령은 컨트롤러 운영체제의 기본 셸에서 실행됩니다.

완료시까지 대기

명령이 끝날 때까지 동작을 대기시킬지 선택합니다. 기본값은 꺼짐이며, 켜면 실행 결과를 변수로 받을 수 있습니다.

실행 결과

명령의 실행 결과를 저장할 텍스트 타입 변수를 선택합니다. 완료시까지 대기를 켠 경우에만 표시됩니다.

중복 실행 옵션

같은 이름의 프로세스가 이미 실행 중일 때의 처리 방법을 선택합니다.

  • 중복 실행 허용(기본값): 같은 이름의 프로세스가 있어도 새 프로세스를 실행합니다.
  • 중복 실행 안함: 같은 이름의 프로세스가 실행 중이면 실행하지 않고 건너뜁니다.
  • 이전 프로세스 종료: 같은 이름의 프로세스가 실행 중이면 기존 프로세스를 강제로 종료한 뒤 새로 실행합니다.

파일 읽기/쓰기

파일에서 텍스트 또는 바이너리 데이터를 읽거나 파일에 데이터를 씁니다. 파일 편집기는 설정 > 파일 편집기 에서 등록합니다.

파일 편집기

사용할 파일 편집기를 선택합니다.

명령

  • 읽기(기본값): 파일을 읽어 내용을 변수에 저장합니다.
  • 한줄 읽기: 파일에서 한 줄만 읽어 변수에 저장합니다. 읽은 뒤에는 커서가 자동으로 다음 줄로 이동합니다.
  • 쓰기: 파일에 텍스트 또는 바이너리 데이터를 씁니다. 파일이 없으면 새로 만듭니다.
  • 이어 쓰기: 파일의 기존 내용 뒤에 데이터를 이어 씁니다. 파일이 없으면 새로 만듭니다.
  • 모두 삭제: 파일의 내용을 모두 지웁니다.
  • 파일 닫기: 열려 있는 파일을 닫습니다.
  • 파일의 끝(EOF) 여부: 커서가 파일의 끝에 도달했는지를 변수에 저장합니다.

항목

파일

읽을 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. 명령이 읽기 또는 한줄 읽기일 때만 표시됩니다.

파일 경로

쓸 파일의 경로를 입력하거나 파일 브라우저에서 선택합니다(예: C:\Users\me\file, /home/me/file). 슬래시와 역슬래시를 모두 쓸 수 있으며 앞뒤 공백과 감싸는 따옴표는 자동으로 제거됩니다. 명령이 쓰기 또는 이어 쓰기일 때만 표시됩니다. 모두 삭제, 파일 닫기, 파일의 끝(EOF) 여부에서는 파일 항목이 표시되지 않습니다.

파일 모드

읽거나 쓸 데이터의 형식을 텍스트(기본값) 또는 바이너리(바이트배열)에서 선택합니다. 명령이 읽기, 쓰기, 이어 쓰기일 때만 표시됩니다.

기존 내용 삭제

쓰기 전에 파일의 기존 내용을 지울지 선택합니다. 기본값은 켜짐입니다. 명령이 쓰기일 때만 표시됩니다.

커서 위치

읽거나 쓸 커서의 위치를 현재 위치, 파일의 처음(기본값), 위치 지정에서 선택합니다. 명령이 읽기, 한줄 읽기, 또는 기존 내용 삭제를 끈 쓰기일 때 표시됩니다. 위치 지정을 선택하면 커서 위치 입력에 바이트 위치(0~4294967295)를 입력합니다.

알아두기 커서는 파일에서 현재 읽거나 쓰는 바이트 위치입니다. 파일을 열면 커서는 시작(0)을 가리키고, 읽거나 쓴 만큼 앞으로 이동하며, 내용을 끝까지 읽으면 파일의 끝(EOF)에 도달합니다.
읽을 크기

파일의 끝까지(기본값) 또는 크기 지정에서 선택합니다. 크기 지정을 선택하면 읽을 크기 입력에 읽을 바이트 수(1~4294967295, 기본값 10)를 입력합니다. 명령이 읽기일 때만 표시됩니다.

쓸 내용

파일에 쓸 데이터를 입력합니다. 파일 모드가 텍스트이면 텍스트를, 바이너리이면 바이트배열을 입력합니다. 명령이 쓰기 또는 이어 쓰기일 때만 표시됩니다.

자동 줄바꿈

이어 쓸 때 기존 내용 뒤에 줄바꿈을 넣은 뒤 쓸지 선택합니다. 기본값은 꺼짐입니다. 파일 모드가 텍스트이고 명령이 이어 쓰기일 때만 표시됩니다.

출력 변수

  • 읽은 내용: 읽은 데이터를 저장할 변수입니다. 파일 모드가 텍스트이면 텍스트, 바이너리이면 바이트배열 타입 변수를 선택합니다. 명령이 읽기 또는 한줄 읽기일 때 표시됩니다.
  • 파일의 끝 (EOF): 커서가 파일의 끝에 도달했는지를 저장할 디지털 타입 변수입니다. 명령이 파일의 끝(EOF) 여부일 때만 표시됩니다.

파일 시스템

컨트롤러의 로컬 파일과 폴더를 만들고 복사, 이동, 삭제하거나 정보를 조회합니다. 경로는 Windows 와 Linux 형식을 모두 쓸 수 있습니다(예: C:\Users\me\file, /home/me/file). 슬래시와 역슬래시를 모두 인식하며 앞뒤 공백과 감싸는 따옴표는 자동으로 제거됩니다.

명령

명령설명입력 항목출력 변수
폴더 생성경로의 폴더를 새로 만듭니다.경로(폴더)
복사원본 경로의 파일 또는 폴더를 대상 경로로 복사합니다.원본 경로, 대상 경로, 중복 처리 옵션
이동원본 경로의 파일 또는 폴더를 대상 경로로 옮깁니다.원본 경로, 대상 경로, 중복 처리 옵션
삭제경로의 파일 또는 폴더를 삭제합니다.경로
이름 변경경로의 파일 또는 폴더 이름을 새 이름으로 바꿉니다.경로, 새 이름
존재 여부경로의 파일 또는 폴더가 있으면 true 를 반환합니다.경로반환값(디지털)
빈 폴더 여부경로의 폴더가 비어 있으면 true 를 반환합니다.경로반환값(디지털)
파일 여부경로가 파일이면 true 를 반환합니다.경로반환값(디지털)
폴더 여부경로가 폴더이면 true 를 반환합니다.경로(폴더)반환값(디지털)
심볼릭링크 여부경로가 심볼릭 링크이면 true 를 반환합니다.경로반환값(디지털)
파일 정보파일의 크기와 마지막 수정 시간을 반환합니다.경로파일 크기(숫자), 마지막 수정 시간(텍스트)
경로 분리경로를 부모 경로, 파일 이름, 확장자를 뺀 파일 이름, 확장자로 나눕니다.경로부모 경로, 파일 이름, 파일 이름 (확장자 제외), 확장자(모두 텍스트)
홈 디렉토리컨트롤러를 실행하는 사용자의 홈 디렉토리 경로를 반환합니다.홈 디렉토리(텍스트)
임시 디렉토리운영체제의 임시 디렉토리 경로를 반환합니다.임시 디렉토리(텍스트)
데이터 디렉토리컨트롤러의 데이터 디렉토리 경로를 반환합니다.데이터 디렉토리(텍스트)

항목

경로

대상 파일 또는 폴더의 경로를 입력하거나 브라우저에서 선택합니다. 폴더 생성과 폴더 여부에서는 폴더 브라우저가, 나머지 명령에서는 파일 브라우저가 열립니다.

원본 경로, 대상 경로

복사 또는 이동할 원본 파일이나 폴더의 경로와 대상 폴더의 경로를 입력합니다. 명령이 복사 또는 이동일 때만 표시됩니다.

중복 처리 옵션

대상 경로에 같은 이름의 파일 또는 폴더가 이미 있을 때의 처리 방법입니다. 명령이 복사 또는 이동일 때만 표시됩니다.

  • 없음(기본값): 작업을 취소하고 에러를 발생시킵니다.
  • 덮어쓰기: 원본으로 덮어씁니다.
  • 건너뛰기: 덮어쓰지 않고 건너뜁니다.
  • 최신일때만 덮어쓰기: 원본이 더 최신일 때만 덮어씁니다.
새 이름

바꿀 이름을 입력합니다. 명령이 이름 변경일 때만 표시됩니다.

출력 변수

표의 출력 변수 항목은 해당 명령을 선택했을 때만 표시되며, 표에 적힌 타입의 변수를 선택합니다.

시간 지연

설정한 시간만큼 대기한 뒤 다음 동작으로 넘어갑니다.

모드
  • 일반(기본값): 밀리초 단위의 지연입니다.
  • 정밀: 마이크로초 단위의 정밀한 지연이며 0~999μs 범위에서 사용합니다.
지연 시간

대기할 시간(시간길이)을 입력합니다. 기본값은 5초입니다. 모드가 일반일 때만 표시됩니다.

지연 시간 (μs)

대기할 시간을 마이크로초로 입력합니다(0~999, 기본값 10). 모드가 정밀일 때만 표시됩니다.

타이머

기준 시간에서 경과한 시간을 계산합니다. 시간을 증가 또는 감소시키도록 설정할 수 있어 타이머나 스톱워치로 사용합니다. 타이머는 설정 > 타이머 에서 등록합니다.

타이머

제어할 타이머를 선택합니다.

명령

  • 시작(기본값): 타이머를 시작합니다. 증가 또는 감소 모드를 함께 선택합니다.
  • 정지: 타이머를 정지합니다.
  • 초기화: 타이머를 정지하고 현재 시간을 설정 시간으로 되돌립니다.
  • 시간 설정: 타이머의 현재 시간을 설정 시간으로 바꿉니다.
  • 현재 시간: 타이머의 현재 시간을 변수로 읽어옵니다.

항목

모드

증가(기본값)는 시간이 늘어나는 타이머, 감소는 시간이 줄어드는 타이머이며 감소 모드의 최소값은 0초입니다. 명령이 시작일 때만 표시됩니다.

설정 시간

초기화 또는 시간 설정에 사용할 시간(시간길이)을 입력합니다. 명령이 초기화 또는 시간 설정일 때만 표시됩니다.

현재 시간

현재 시간을 저장할 시간길이 타입 변수를 선택합니다. 명령이 현재 시간일 때만 표시됩니다.

컬렉션

컬렉션에 값을 추가, 조회, 삭제합니다. 컬렉션은 여러 값을 담아 두는 저장소이며 리스트와 맵 두 타입이 있습니다. 컬렉션의 타입과 키·값 타입은 설정 > 컬렉션 에서 만들 때 정합니다(6부).

  • 리스트: 값을 순서대로 담습니다. 각 값은 0부터 시작하는 인덱스(위치 번호)를 가지며, 인덱스로 값을 찾고 추가, 변경, 삭제합니다.
  • 맵: 값을 키(Key)와 값(Value)의 쌍으로 담습니다. 키는 고유한 식별자이며, 키로 값을 찾고 추가, 변경, 삭제합니다.

리스트 구조의 예(장보기 목록)는 다음과 같습니다.

인덱스값
0사과
1우유
2고기
3라면

맵 구조의 예(전화번호부)는 다음과 같습니다.

키값
김철수010-1111-2222
이영희010-2222-3333
홍길동010-3333-4444
컬렉션

사용할 컬렉션을 선택합니다. 선택한 컬렉션의 타입에 따라 아래의 리스트 명령 또는 맵 명령이 표시되고, 값과 키 입력 항목은 컬렉션에 정한 값 타입과 키 타입에 맞는 형식으로 바뀝니다.

리스트 명령

명령설명입력 항목출력 변수
첫번째에 값 추가리스트의 첫 번째 위치(인덱스 0)에 값을 추가합니다.값
마지막에 값 추가리스트의 마지막에 값을 추가합니다.값
지정 위치에 값 추가지정한 위치에 값을 추가합니다.위치, 값
크기 변경리스트의 크기를 바꿉니다. 최대 크기를 정한 컬렉션에서는 최대 크기를 넘길 수 없습니다.크기
첫번째 값 삭제첫 번째 값을 삭제합니다.
마지막 값 삭제마지막 값을 삭제합니다.
지정 위치의 값 삭제지정한 위치의 값을 삭제합니다.위치
모두 삭제모든 값을 삭제합니다.
첫번째 값 구하기첫 번째 값을 읽습니다.값
마지막 값 구하기마지막 값을 읽습니다.값
지정 위치의 값 구하기지정한 위치의 값을 읽습니다.위치값
값 찾기값을 찾아 위치를 반환합니다. 없으면 -1 을 반환합니다.값값의 위치(숫자)
지정 위치의 값 변경지정한 위치의 값을 바꿉니다.위치, 값
리스트의 크기리스트에 담긴 값의 개수를 읽습니다.리스트의 크기(숫자)
빈 리스트 여부리스트가 비어 있으면 true 를 반환합니다.빈 리스트 여부(디지털)
오름차순 정렬값을 오름차순으로 정렬합니다.
내림차순 정렬값을 내림차순으로 정렬합니다.
역순 정렬현재 순서를 뒤집습니다.

위치는 0부터 시작하는 인덱스(0~4294967295)이고, 크기의 기본값은 10입니다. 값 입력과 출력 변수 값은 컬렉션의 값 타입을 따릅니다.

맵 명령

명령설명입력 항목출력 변수
추가키와 값의 쌍을 추가합니다.키 (Key), 값 (Value)
변경키에 연결된 값을 바꿉니다.키 (Key), 값 (Value)
삭제키와 값의 쌍을 삭제합니다.키 (Key)
값 구하기키에 연결된 값을 읽습니다.키 (Key)값 (Value)
찾기키가 있는지 확인합니다.키 (Key)키 (Key) 존재 여부(디지털)
모두 삭제모든 키와 값을 삭제합니다.
맵의 크기맵에 담긴 쌍의 개수를 읽습니다.맵의 크기(숫자)
빈 맵 여부맵이 비어 있으면 true 를 반환합니다.빈 맵 여부(디지털)

키 (Key) 입력은 컬렉션의 키 타입을, 값 (Value) 입력과 출력 변수는 값 타입을 따릅니다.

데이터베이스

데이터베이스의 데이터를 조회, 삽입, 수정, 삭제합니다. SQL 데이터베이스(MySQL, PostgreSQL, SQLite, ODBC)와 Firebase 실시간 데이터베이스를 사용할 수 있으며, 연결은 설정 > 데이터베이스 에서 등록합니다(6부). Firebase 준비 방법은 부록 B를 참고합니다.

데이터베이스

사용할 데이터베이스를 선택합니다. 선택한 데이터베이스의 타입에 따라 아래의 SQL 항목 또는 Firebase 항목이 표시됩니다.

SQL 데이터베이스

명령
  • 로그인(기본값): 데이터베이스에 로그인합니다.
  • 쿼리실행: SQL 쿼리를 실행하여 데이터를 조회, 삽입, 수정, 삭제합니다.
  • 로그아웃: 데이터베이스에서 로그아웃합니다.
쿼리

실행할 SQL 쿼리를 입력합니다(예: SELECT * FROM users WHERE id = 1). 변수 값은 블록 편집기의 표현식으로 조합할 수 있습니다. 명령이 쿼리실행일 때만 표시됩니다.

응답

쿼리의 응답을 저장할 텍스트 타입 변수를 선택합니다. 명령이 쿼리실행일 때만 표시됩니다.

Firebase 데이터베이스

명령
  • 읽기(기본값): 경로의 데이터를 읽어 변수에 저장합니다.
  • 쓰기: 경로에 데이터를 씁니다.
  • 삭제: 경로의 데이터를 삭제합니다.
경로

데이터베이스 안의 노드(키) 경로를 입력합니다(예: /users/123/status). 루트는 / 이며 파일 경로가 아닙니다.

값

읽기에서는 읽은 데이터를 저장할 변수를 선택하며 모든 타입의 변수를 선택할 수 있습니다. 쓰기에서는 쓸 데이터를 값의 타입에 맞는 형식으로 입력합니다. 명령이 삭제이면 표시되지 않습니다.

값의 타입

쓸 데이터의 타입을 디지털(기본값), 숫자, 텍스트, 날짜, 시간, 시간길이, 바이트배열, 색상 중에서 선택합니다. 명령이 쓰기일 때만 표시됩니다.

통계 계산

지정한 숫자 변수의 최소, 최대, 평균 등 통계값을 계산합니다. 예를 들어 온도 센서의 측정값을 통계로 지정하면 최고, 최저, 평균 온도를 바로 구할 수 있습니다. 통계와 대상 변수는 설정 > 통계 에서 등록합니다.

알아두기 전체 데이터를 메모리에 저장하지 않고, 계속 들어오는 데이터에 대한 통계값(평균, 분산 등)을 실시간으로 갱신하는 스트리밍 통계입니다.
통계

사용할 통계를 선택합니다.

명령

  • 계산(기본값): 실시간으로 통계를 계산합니다.
  • 초기화: 계산된 값을 모두 초기화합니다.

출력 변수

다음 열 개 항목에 각각 숫자 타입 변수를 선택합니다. 필요한 항목만 지정해도 됩니다. 명령이 계산일 때만 표시됩니다.

항목값
계산횟수통계에 반영된 데이터의 개수
최소값최소값
최대값최대값
평균값산술 평균
합계합계
중앙값 (median)중앙값
범위 (range)최대값과 최소값의 차이
분산 (variance)분산
표준편차 (모집단)모집단 표준편차
표준편차 (unbiased)불편 표준편차(표본 표준편차)

데이터 로깅

지정한 데이터 로깅 채널에 현재 변수 값을 한 건 기록합니다. 동작이 실행되는 시점에 채널의 변수 값이 한 줄 추가되므로, 채널의 자동 로깅과 별개로 이벤트가 발생한 시점에만 기록하는 트리거 기반 기록에 사용합니다. 채널은 설정 > 데이터 로깅 에서 만듭니다(6부).

데이터 로깅 채널

기록할 데이터 로깅 채널을 선택합니다.

미디어 재생

오디오와 비디오를 재생합니다. mp3, mp4 등 대부분의 형식의 파일과 웹 스트리밍을 지원하며, 재생 가능한 형식은 VLC 지원 형식을 참고합니다. 미디어 플레이어는 설정 > 미디어 플레이어 에서 등록하며, 비디오 출력에는 컨트롤러의 데스크톱 세션이 필요합니다(부록 B). 재생 오류는 부록 A를 참고합니다.

미디어 플레이어

사용할 미디어 플레이어를 선택합니다.

명령

  • 재생(기본값): 파일 또는 스트리밍을 재생합니다.
  • 일시 정지: 재생을 일시 정지합니다.
  • 다시 재생: 일시 정지한 미디어를 이어서 재생합니다.
  • 정지: 재생을 정지합니다.
  • 볼륨 조절: 볼륨을 조절합니다.
  • 속도 조절: 재생 속도를 조절합니다.
  • 재생 위치 이동: 재생 위치를 이동합니다.
  • 현재 상태 읽기: 현재 상태를 변수로 읽어옵니다.

항목

미디어 타입

파일(기본값)은 프로젝트에 업로드한 파일을, 스트리밍은 URL 의 미디어를 재생합니다. 명령이 재생일 때만 표시됩니다.

미디어 파일

재생할 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. 기본값으로 샘플 오디오(sample.mp3)가 지정되어 있습니다. 명령이 재생이고 미디어 타입이 파일일 때만 표시됩니다.

스트리밍 URL

재생할 스트리밍 미디어의 URL 을 입력합니다(예: https://example.com/video.mp4, rtsp://192.168.0.10:554/stream). 스킴을 생략하면 http:// 가 자동으로 붙습니다. 기본값으로 샘플 영상 주소가 들어 있습니다. 명령이 재생이고 미디어 타입이 스트리밍일 때만 표시됩니다.

재생 종료 대기

재생이 끝날 때까지 동작을 진행 중 상태로 둘지 선택합니다. 기본값은 켜짐입니다. 명령이 재생일 때만 표시됩니다(4부 재생 종료 대기).

볼륨 (%)

볼륨을 0~100% 로 입력합니다. 기본값은 50입니다. 명령이 볼륨 조절일 때만 표시됩니다.

재생 속도

0.25x, 0.5x, 0.75x, 1.0x(기본값), 1.25x, 1.5x, 2.0x, 3.0x, 4.0x 중에서 선택하거나 직접 입력을 선택하고 속도 입력 (배속)에 0.01~100 배속을 입력합니다. 명령이 속도 조절일 때만 표시됩니다.

재생 위치

이동할 재생 위치(시간길이)를 입력합니다. 명령이 재생 위치 이동일 때만 표시됩니다.

상태

현재 상태를 저장할 숫자 타입 변수를 선택합니다. 값은 0 초기 상태, 1 재생 중, 2 일시 정지, 3 정지, 4 재생 완료, 5 에러입니다. 명령이 현재 상태 읽기일 때만 표시됩니다.

이미지 보기

컨트롤러에 연결된 디스플레이에 이미지를 표시합니다. 프로젝트에 업로드한 파일과 웹 이미지를 표시할 수 있으며, 이미지 뷰어는 설정 > 이미지 뷰어 에서 등록합니다. 화면 출력에는 컨트롤러의 데스크톱 세션이 필요합니다(부록 B).

이미지 뷰어

사용할 이미지 뷰어를 선택합니다.

명령

  • 보기(기본값): 이미지를 표시합니다.
  • 닫기: 표시된 이미지를 닫습니다.

항목

이미지 타입

파일(기본값)은 프로젝트에 업로드한 이미지를, 웹은 URL 의 이미지를 표시합니다. 명령이 보기일 때만 표시됩니다.

이미지 파일

표시할 이미지를 프로젝트에 업로드한 파일 중에서 선택합니다. 기본값으로 샘플 이미지(sample.jpg)가 지정되어 있습니다. 명령이 보기이고 이미지 타입이 파일일 때만 표시됩니다.

웹 URL

표시할 이미지의 URL 을 입력합니다(예: https://example.com/image.jpg). http:// 는 생략해도 됩니다. 명령이 보기이고 이미지 타입이 웹일 때만 표시됩니다.

전자 악기 연주

여러 악기의 소리와 효과음을 연주하거나 MIDI 파일을 재생합니다. 전자 악기는 소프트웨어로 구현된 신디사이저이며 음원으로 사운드 폰트(sf2, sf3) 파일을 사용합니다. 악기는 설정 > 전자 악기 에서 등록하고, 사운드 폰트에서 뱅크와 프리셋 번호를 확인하는 방법은 부록 B를 참고합니다.

전자 악기

사용할 전자 악기를 선택합니다.

명령

  • 악기 선택(기본값): 채널에서 연주할 악기를 뱅크와 프리셋 번호로 지정합니다.
  • 음 재생: 음을 연주합니다. 같은 채널에서 이미 연주 중인 음은 정지됩니다.
  • 음 정지: 연주 중인 음을 정지합니다. 음이 이미 끝났다면 실행하지 않아도 됩니다.
  • MIDI 재생: MIDI 파일을 재생합니다.
  • MIDI 일시정지: MIDI 재생을 일시 정지합니다.
  • MIDI 다시 재생: 일시 정지한 MIDI 를 이어서 재생합니다.
  • MIDI 정지: MIDI 재생을 정지합니다.
  • MIDI 위치 이동: MIDI 재생 위치를 이동합니다.
  • MIDI 현재 상태 읽기: MIDI 의 현재 상태를 변수로 읽어옵니다.
  • 볼륨 조절: 출력 볼륨을 조절합니다.

항목

채널

연주할 채널을 0~15 에서 입력합니다. 채널은 MIDI 이벤트를 보내는 경로이며 채널마다 다른 악기를 지정할 수 있으므로 최대 16개 악기를 동시에 연주할 수 있습니다. 명령이 음 재생, 음 정지, 악기 선택일 때만 표시됩니다.

뱅크, 프리셋

뱅크는 사운드 폰트에서 여러 악기 소리를 묶은 그룹이고, 프리셋은 뱅크 안의 악기 하나입니다. 사용할 악기의 뱅크 번호와 프리셋 번호를 0~255 에서 입력합니다. 명령이 악기 선택일 때만 표시됩니다.

음표 직접 입력

켜면 음표를 MIDI 노트 번호로 직접 입력하고, 끄면(기본값) 목록에서 음표를 선택합니다. 명령이 음 재생 또는 음 정지일 때만 표시됩니다.

음표

연주할 음표를 C-1(0)부터 G9(127)까지의 목록에서 선택합니다. 기본값은 C4(60)입니다. 음표 직접 입력이 꺼져 있을 때 표시됩니다.

음표 (MIDI note number)

연주할 음표를 MIDI 노트 번호 0~127 로 입력합니다. 기본값은 60(C4)입니다. 음표 직접 입력이 켜져 있을 때 표시됩니다. 옥타브와 음이름에 따른 노트 번호는 다음과 같습니다.

옥타브CC#DD#EFF#GG#AA#B
-101234567891011
0121314151617181920212223
1242526272829303132333435
2363738394041424344454647
3484950515253545556575859
4606162636465666768697071
5727374757677787980818283
6848586878889909192939495
796979899100101102103104105106107
8108109110111112113114115116117118119
9120121122123124125126127
세기 (Velocity, %)

건반을 누르는 세기에 해당하는 MIDI 벨로시티를 0~100% 로 입력합니다. 기본값은 100입니다. 명령이 음 재생일 때만 표시됩니다.

MIDI 파일

재생할 MIDI 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. 기본값으로 샘플 MIDI(sample.mid)가 지정되어 있습니다. 명령이 MIDI 재생일 때만 표시됩니다.

재생 종료 대기

MIDI 재생이 끝날 때까지 동작을 진행 중 상태로 둘지 선택합니다. 기본값은 켜짐입니다. 명령이 MIDI 재생일 때만 표시됩니다.

위치 (%)

이동할 MIDI 재생 위치를 0~100% 로 입력합니다. MIDI 파일을 한 번 이상 재생한 뒤에만 위치를 이동할 수 있습니다. 명령이 MIDI 위치 이동일 때만 표시됩니다.

볼륨 (%)

출력 볼륨을 0~100% 로 입력합니다. 기본값은 50입니다. 명령이 볼륨 조절일 때만 표시됩니다.

상태

MIDI 의 현재 상태를 저장할 숫자 타입 변수를 선택합니다. 값은 0 초기 상태, 1 재생 중, 2 일시 정지, 3 정지, 4 재생 완료입니다. 명령이 MIDI 현재 상태 읽기일 때만 표시됩니다.

카메라

카메라의 촬영과 스트리밍을 시작하거나 정지하고, 현재 화면을 파일로 저장합니다. 카메라는 설정 > 카메라 에서 등록합니다(6부). 비디오 AI 분석은 이 동작으로 카메라를 시작해야 시작됩니다(4부).

카메라

제어할 카메라를 선택합니다.

명령

  • 시작(기본값): 영상 촬영과 스트리밍을 시작합니다.
  • 정지: 영상 촬영과 스트리밍을 정지합니다.
  • 캡쳐: 현재 화면을 이미지 파일로 저장합니다.
  • 현재 상태 읽기: 카메라의 상태 코드와 상태 메시지를 변수로 읽어옵니다.

항목

저장 경로

캡처한 이미지를 저장할 파일 경로를 입력하거나 파일 브라우저에서 선택합니다. 기본값은 /tmp/capture.jpg 입니다. 명령이 캡쳐일 때만 표시됩니다.

관심 영역 (ROI)

캡처할 영역을 카메라 설정에 정의한 관심 영역 중에서 선택합니다. 비워 두면 전체 화면을 캡처합니다. 명령이 캡쳐일 때만 표시됩니다.

출력 변수

  • 상태 코드: 상태 코드를 저장할 숫자 타입 변수입니다. 값은 -2 초기화 안됨, -1 오류 발생, 0 대기 중, 1 실행 중입니다.
  • 상태 메시지: 상태 메시지를 저장할 텍스트 타입 변수입니다.

두 항목은 명령이 현재 상태 읽기일 때만 표시됩니다.

오디오 분석

FFT(고속 푸리에 변환)로 오디오의 세기와 주파수 분포를 실시간으로 분석합니다. 오디오 분석기와 소스(마이크 또는 스피커)는 설정 > 오디오 분석기 에서 등록합니다.

오디오 분석기

사용할 오디오 분석기를 선택합니다.

명령

  • 분석 시작(기본값): 오디오 분석을 시작합니다.
  • 분석 중지: 오디오 분석을 중지합니다.
  • 분석 추가: 분석기에 분석을 추가합니다. 한 분석기에 여러 분석을 추가할 수 있습니다.
  • 모두 삭제: 분석기의 모든 분석을 삭제합니다.
주의 분석은 분석 추가로 등록한 뒤 분석 시작 명령을 실행해야 값이 갱신됩니다. 시작을 빠뜨리면 출력 변수가 계속 빈 값으로 남습니다.

항목

다음 항목은 모두 명령이 분석 추가일 때만 표시됩니다.

데이터 타입
  • 전체 평균 세기(기본값): 모든 채널 신호의 평균(RMS)으로 전체 소리의 크기를 나타냅니다.
  • 채널별 평균 세기: 지정한 채널 신호의 평균(RMS)으로 채널별 소리의 크기를 나타냅니다.
  • 주파수별 세기: 지정한 채널에서 특정 주파수의 세기를 구합니다.
  • 최대 세기 주파수: 지정한 채널에서 세기가 가장 큰 주파수와 그 세기를 구합니다.
  • 센트로이드 주파수: 지정한 채널에서 에너지가 집중된 중심 주파수를 구합니다. 소리의 밝기를 나타내며, 높을수록 밝고 날카로운 소리, 낮을수록 어둡고 둔탁한 소리입니다.
채널

분석할 채널의 인덱스를 0~31 에서 입력합니다. 채널 구성은 오디오 소스에 따라 다르며 일반적인 번호는 다음과 같습니다. 데이터 타입이 전체 평균 세기이면 표시되지 않습니다.

  • 모노: 0
  • 스테레오: 0 왼쪽, 1 오른쪽
  • 5.1 채널: 0 앞 왼쪽, 1 앞 오른쪽, 2 중앙, 3 서브우퍼, 4 뒤 왼쪽, 5 뒤 오른쪽
주파수 (Hz)

분석할 주파수를 0~50000Hz 에서 입력합니다. 기본값은 1000이며, 사람이 들을 수 있는 범위는 대략 20~20000Hz 입니다. 데이터 타입이 주파수별 세기일 때만 표시됩니다.

출력 변수

모두 숫자 타입 변수를 선택합니다.

  • 세기 (dBFS): 세기를 저장합니다. dBFS 는 디지털 오디오의 최대 신호 레벨(0dB)을 기준으로 한 상대값이므로 음수로 표시되며 0에 가까울수록 큰 소리입니다. 데이터 타입이 전체 평균 세기, 채널별 평균 세기, 주파수별 세기일 때 표시됩니다.
  • 최대 세기 주파수 (Hz), 최대 세기 (dBFS): 세기가 가장 큰 주파수와 그 세기를 저장합니다. 데이터 타입이 최대 세기 주파수일 때 표시됩니다.
  • 센트로이드 주파수 (Hz): 센트로이드 주파수를 저장합니다. 데이터 타입이 센트로이드 주파수일 때 표시됩니다.

오디오 녹음

마이크로 입력되는 소리를 녹음하여 파일로 저장합니다. mp3, ogg, flac, wav 형식을 지원하며, 녹음기는 설정 > 오디오 녹음기 에서 등록합니다.

오디오 녹음기

사용할 오디오 녹음기를 선택합니다.

명령

  • 녹음 시작(기본값): 녹음을 시작합니다.
  • 녹음 정지: 녹음을 정지합니다.

항목

다음 항목은 모두 명령이 녹음 시작일 때만 표시됩니다.

파일 형식
  • mp3(기본값): 손실 압축 형식으로 음질과 파일 크기의 균형이 좋습니다.
  • ogg: 오픈소스 압축 형식으로 음질이 높습니다.
  • flac: 무손실 압축 형식으로 CD 수준의 음질을 가집니다.
  • wav: 비압축 원음 형식으로 파일 크기가 큽니다.
비트 레이트 (kbps)

64, 96, 128, 192(기본값), 256, 320 kbps 중에서 선택합니다. 값이 클수록 음질은 좋아지고 파일 크기는 커지며, 일반적으로 128 kbps 이상이면 양호한 음질입니다.

파일 경로

녹음 파일을 저장할 경로를 입력하거나 파일 브라우저에서 선택합니다(예: C:\Users\me\file, /home/me/file). 슬래시와 역슬래시를 모두 쓸 수 있으며 앞뒤 공백과 감싸는 따옴표는 자동으로 제거됩니다.

오디오 변조

원본 오디오 파일의 템포, 피치, 재생 속도를 바꾸어 새 파일로 저장하고, 필요하면 바로 재생합니다. 변환기는 설정 > 오디오 변조 에서 등록합니다. 이 동작에는 명령 항목이 없습니다.

오디오 변조

사용할 오디오 변조를 선택합니다.

원본 파일

변조할 원본 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. WAV 형식만 사용할 수 있으며, 기본값으로 샘플 파일(sample.wav)이 지정되어 있습니다.

원본 타입

원본 오디오가 음성(기본값)인지 음악인지 선택합니다. 원본에 맞는 타입을 선택해야 변조 품질이 높아집니다.

템포 증가/감소 (%)

템포(박자)를 -95~5000% 범위에서 바꿉니다. 0은 원본 속도이고 양수는 빠르게, 음수는 느리게 합니다(예: 100 은 2배 빠르게, -50 은 절반 속도). 피치는 유지됩니다.

피치 증가/감소 (semi-tone)

피치(음의 높이)를 -60~60 반음 범위에서 바꿉니다. 반음은 피아노에서 흰 건반과 바로 옆 검은 건반 사이의 음 높이 차이입니다.

속도 증가/감소 (%)

재생 속도를 -95~5000% 범위에서 바꿉니다. 템포와 달리 피치도 함께 바뀌며, LP 레코드의 회전 속도를 바꾸는 것과 같습니다(예: 100 은 2배 빠르게 재생하면서 1옥타브 높아짐).

출력 파일 경로

변조된 WAV 파일을 저장할 경로를 입력하거나 파일 브라우저에서 선택합니다.

자동 재생

변조가 끝난 오디오를 바로 재생할지 선택합니다. 기본값은 켜짐입니다.

재생 종료 대기

재생이 끝날 때까지 동작을 진행 중 상태로 둘지 선택합니다. 기본값은 켜짐이며, 자동 재생을 켠 경우에만 표시됩니다.

LLM AI 질의

LLM(거대 언어 모델) 제공자에 질의 텍스트와 첨부 파일을 보내고 응답을 변수에 저장합니다. 제공자와 모델은 설정 > LLM AI 에서 등록하며(6부), API 키 준비는 부록 B를 참고합니다.

LLM AI

사용할 LLM AI 설정을 선택합니다.

질의 텍스트

LLM 에 보낼 질의 텍스트(프롬프트)를 입력합니다. 직접 입력하거나 블록 편집기로 변수 값을 포함한 동적 프롬프트를 만들 수 있습니다.

첨부 파일

질의와 함께 보낼 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. 이미지(JPEG, PNG, WebP)는 모든 제공자가 지원하고 PDF 는 OpenAI 와 Anthropic 만 지원합니다. 첨부하지 않아도 됩니다.

출력 변수

  • 응답 변수: 응답 텍스트를 저장할 텍스트 타입 변수입니다.
  • 성공 여부: 호출에 성공하면 true, 실패하면 false 를 저장할 디지털 타입 변수입니다.

텍스트 음성 변환 (TTS)

텍스트를 음성으로 변환하여 재생합니다. 변환 서비스의 타입(On Device, Google Cloud, OpenAI, ElevenLabs)은 설정 > 텍스트 음성 변환 에서 등록할 때 정하며(6부), 타입에 따라 음성을 지정하는 항목이 달라집니다. 온라인 서비스의 API 키와 ElevenLabs 의 Voice ID 를 얻는 방법은 부록 B를 참고합니다.

텍스트 음성 변환

사용할 텍스트 음성 변환을 선택합니다.

명령

  • 재생(기본값): 텍스트를 음성으로 변환하여 재생합니다.
  • 정지: 재생 중인 음성을 정지합니다.

항목

음성 ID

타입이 On Device이면 모델의 음성 ID(Speaker ID)를 숫자로 입력합니다. ID 는 모델마다 정의되며 0부터 시작하고, 유효하지 않은 값을 입력하면 첫 번째 음성이 선택됩니다. 모델별 음성 ID 는 sherpa-onnx 모델 목록에서 확인합니다. 타입이 ElevenLabs이면 사용할 음성의 Voice ID 를 입력하며, 명령이 재생일 때만 표시됩니다.

음성 이름

타입이 Google Cloud이면 음성 이름을 입력합니다. 기본값은 en-US-Standard-C 이며, 음성 목록은 Google Cloud 문서에서 확인합니다. 타입이 OpenAI이면 alloy(기본값), echo, fable, onyx, nova, shimmer 중에서 선택하며, 음성의 특징은 OpenAI 문서에서 확인합니다. 두 경우 모두 명령이 재생일 때만 표시됩니다.

출력 텍스트

음성으로 변환할 텍스트를 입력합니다. 명령이 재생일 때만 표시됩니다.

재생 종료 대기

음성 재생이 끝날 때까지 동작을 진행 중 상태로 둘지 선택합니다. 기본값은 켜짐입니다. 명령이 재생일 때만 표시됩니다.

재생 속도

0.25x, 0.5x, 0.75x, 1.0x(기본값), 1.25x, 1.5x, 2.0x, 3.0x, 4.0x 중에서 선택하거나 직접 입력을 선택하고 속도 입력 (배속)에 0.1~10 배속을 입력합니다. 명령이 재생일 때 표시되며, 타입이 ElevenLabs이면 표시되지 않습니다.

음성 텍스트 변환 (STT)

사람의 음성을 실시간으로 텍스트로 변환합니다. VAD(음성 활동 감지)로 음성 구간을 자동으로 감지하며, 변환 서비스와 감지 임계값은 설정 > 음성 텍스트 변환 에서 등록합니다(6부).

음성 텍스트 변환

사용할 음성 텍스트 변환을 선택합니다.

명령

  • 듣기(기본값): 음성 인식을 시작합니다. 음성이 들릴 때까지 대기하다가 음성 구간만 감지하여 텍스트로 변환합니다.
  • 중지: 진행 중인 음성 인식을 중지합니다.
  • 현재 상태 읽기: 현재 상태를 변수로 읽어옵니다.

출력 변수

  • 변환 텍스트: 변환된 텍스트를 저장할 텍스트 타입 변수입니다. 명령이 듣기일 때만 표시됩니다.
  • 현재 상태: 상태를 저장할 숫자 타입 변수입니다. 값은 0 초기 상태, 1 듣는 중, 2 변환 중, 3 변환 완료, 4 에러입니다. 명령이 현재 상태 읽기일 때만 표시됩니다.

텔레그램 메시지

텔레그램 봇으로 사용자와 메시지 또는 파일을 주고받습니다. 봇은 설정 > 텔레그램 봇 에서 등록하며, 봇 토큰과 Chat ID 를 얻는 방법은 부록 B를 참고합니다.

텔레그램 봇

사용할 텔레그램 봇을 선택합니다.

명령

  • 메시지 보내기(기본값): 상대에게 메시지를 보냅니다.
  • 파일 보내기: 상대에게 파일을 보냅니다.
  • 메시지 받기: 상대가 봇에 보낸 메시지를 받습니다.

항목

Chat ID

메시지를 보낼 상대(사용자, 그룹, 채널)의 Chat ID 를 입력합니다. Chat ID 는 123456789 와 같은 숫자입니다. 명령이 메시지 보내기 또는 파일 보내기일 때만 표시됩니다.

보낼 메시지

보낼 메시지를 입력합니다. 명령이 메시지 보내기일 때만 표시됩니다.

보낼 파일, 보낼 파일 제목

보낼 파일을 프로젝트에 업로드한 파일 중에서 선택하고, 필요하면 파일과 함께 표시할 제목을 입력합니다. 제목은 비워 두어도 됩니다. 명령이 파일 보내기일 때만 표시됩니다.

출력 변수

  • 받기 완료: 새 메시지를 받으면 true, 그렇지 않으면 false 가 되는 디지털 타입 변수입니다.
  • 받은 메시지: 받은 메시지를 저장할 텍스트 타입 변수입니다.

두 항목은 명령이 메시지 받기일 때만 표시됩니다.

이메일 보내기

SMTP 클라이언트로 이메일을 보냅니다. 텍스트 또는 HTML 본문을 작성하고 파일을 첨부할 수 있으며, 네이버, 구글 등 SMTP 를 지원하는 메일 서버를 사용합니다. 클라이언트는 설정 > 이메일 클라이언트 에서 등록합니다(6부). 이 동작에는 명령 항목이 없습니다.

이메일 클라이언트

사용할 이메일 클라이언트를 선택합니다.

수신자, 참조 (cc), 숨은 참조 (bcc)

받는 사람의 주소를 입력합니다. 여러 주소는 콤마(,), 세미콜론(;) 또는 줄바꿈으로 구분하며(예: a@x.com, b@y.com) 주소 앞뒤의 공백은 자동으로 제거됩니다. 수신자는 필수이고 참조와 숨은 참조는 비워 두어도 됩니다.

제목

이메일의 제목을 입력합니다.

본문 타입

본문을 텍스트(기본값) 또는 HTML 형식으로 보낼지 선택합니다.

본문

보낼 본문을 입력합니다. 본문 타입이 HTML 이면 HTML 코드를 입력합니다.

첨부 파일

첨부할 파일의 컨트롤러 로컬 경로를 입력합니다. 여러 파일은 콤마로 구분합니다.

푸시 알림

사용자의 모바일 앱으로 푸시 알림을 보냅니다. 제목과 메시지를 자유롭게 정할 수 있으며, 변수 값을 포함한 동적 메시지도 만들 수 있습니다. 이 동작에는 리소스 선택과 명령 항목이 없습니다.

제목

알림의 제목을 입력합니다. 비워 두면 기본 제목이 사용됩니다.

메시지

알림의 메시지를 입력합니다. 직접 입력하거나 블록 편집기로 변수 값을 포함한 동적 메시지를 만들 수 있습니다.

첨부 파일

알림에 첨부할 파일을 프로젝트에 업로드한 파일 중에서 선택합니다. 첨부하지 않아도 됩니다.

Zigbee장치 제어

설정에 등록한 Zigbee 장치의 센서 값을 읽거나 장치를 제어합니다. 조명 밝기 조절, 스위치 켜기와 끄기, 온습도 값 읽기 등 장치가 노출하는 모든 속성에 접근할 수 있습니다. 장치 페어링과 등록은 설정 > Zigbee 장치 에서 수행합니다(6부).

Zigbee 장치

통신할 장치를 선택합니다.

명령

  • 읽기(기본값): 장치의 센서 값을 읽어 변수에 저장합니다.
  • 쓰기: 장치에 값을 보내 제어합니다.
속성 매핑

선택한 장치가 지원하는 속성 목록이 표에 표시됩니다. 읽기에서는 체크한 속성의 값을 지정한 변수에 저장하고, 쓰기에서는 체크한 속성에 값을 보냅니다. 속성 목록은 장치의 Exposes 정보에서 자동으로 만들어지므로 장치 모델에 따라 다릅니다.

Home Assistant 연동

설정에 등록한 Home Assistant 서버와 연동합니다. Home Assistant 엔티티의 상태를 읽거나 제어하고, Grablo 변수를 Home Assistant 의 새 엔티티로 노출할 수 있습니다. 서버 연결은 설정 > Home Assistant 에서 등록합니다(6부).

HA 서버

통신할 Home Assistant 서버를 선택합니다.

명령

  • 읽기(기본값): 엔티티의 상태와 속성 값을 읽어 변수에 저장합니다.
  • 쓰기: 엔티티에 값을 보내 제어합니다(예: 조명 켜기, 스위치 끄기, 온도 설정).
  • 변수 노출: Grablo 변수를 Home Assistant 에 새 엔티티(sensor 또는 binary_sensor)로 노출합니다.

항목

HA 엔티티

읽거나 제어할 엔티티를 선택합니다. 서버에 연결되면 등록된 엔티티가 도메인별(조명, 스위치, 센서 등)로 걸러져 표시되며, 엔티티 검색과 현재 상태 미리보기를 지원합니다. 명령이 읽기 또는 쓰기일 때만 표시됩니다.

속성 매핑

선택한 엔티티의 상태(state)와 속성(attributes)에서 자동으로 만들어진 속성 목록이 표에 표시됩니다. 읽기에서는 체크한 속성 값을 변수에 저장하고, 쓰기에서는 체크한 속성에 값을 보냅니다. 명령이 읽기 또는 쓰기일 때만 표시됩니다.

노출 항목

Home Assistant 에 노출할 변수 목록을 표로 관리합니다. 명령이 변수 노출일 때만 표시되며, 항목마다 다음을 설정합니다.

  • 변수: 노출할 Grablo 변수입니다. 디지털 변수는 binary_sensor 로, 그 밖의 변수는 sensor 로 노출됩니다.
  • 단위: 값의 단위입니다(예: °C, %, W, kWh).
  • 장치 분류: Home Assistant UI 에서 아이콘과 표현 방식을 결정합니다. 디지털 변수는 문, 움직임, 연기 등 28종, 그 밖의 변수는 온도, 습도, 전력 등 60종 중에서 선택하며 없음을 선택할 수도 있습니다.

MQTT 통신

MQTT 브로커에 메시지를 발행하거나 토픽을 구독하여 메시지를 받습니다. MQTT 는 저전력, 저대역폭 환경에 최적화된 경량 메시지 프로토콜로 IoT 에서 널리 쓰입니다. 브로커 연결(호스트, 포트, 인증, TLS)은 설정 > MQTT 클라이언트 에서 등록합니다(6부).

MQTT 클라이언트

사용할 MQTT 클라이언트를 선택합니다.

명령

  • 발행 (Publish)(기본값): 토픽에 메시지를 보냅니다.
  • 구독 (Subscribe): 토픽을 구독하고 도착한 메시지를 요청합니다. 이미 구독 중인 토픽이면 메시지만 요청합니다.

항목

토픽

발행 또는 구독할 토픽을 입력합니다(예: home/sensor/temperature). 토픽은 메시지가 전달되는 경로이며 계층은 슬래시(/)로 구분합니다.

QoS

메시지의 서비스 품질 단계를 선택합니다. 기본값은 QoS 1이며, 숫자가 클수록 신뢰성이 높아지지만 네트워크 자원을 더 사용합니다.

  • QoS 0: 메시지를 보낸 뒤 상대의 응답을 확인하지 않습니다. 메시지가 전달되지 않을 수 있습니다.
  • QoS 1: 상대의 응답이 올 때까지 메시지를 다시 보냅니다. 메시지가 중복 전달될 수 있습니다.
  • QoS 2: 4단계 핸드셰이크로 정확히 한 번의 전달을 보장합니다.
메시지

발행할 메시지를 입력합니다. 명령이 발행 (Publish)일 때만 표시됩니다.

메시지 보존

켜면 마지막으로 보낸 메시지를 브로커에 저장하여 새로 연결한 구독자가 즉시 받을 수 있게 합니다. 기본값은 꺼짐입니다. 명령이 발행 (Publish)일 때만 표시됩니다.

최대 대기시간

메시지 수신을 기다릴 시간(시간길이)을 입력합니다. 기본값은 1초이며 이 시간을 넘기면 받은 메시지가 없는 것으로 처리합니다. 명령이 구독 (Subscribe)일 때만 표시됩니다.

출력 변수

  • 수신 완료: 새 메시지를 받는 순간 true, 그렇지 않으면 false 가 되는 디지털 타입 변수입니다.
  • 수신 토픽: 받은 메시지의 토픽을 저장할 텍스트 타입 변수입니다.
  • 수신 메시지: 받은 메시지를 저장할 텍스트 타입 변수입니다.

세 항목은 명령이 구독 (Subscribe)일 때만 표시됩니다.

모드버스 통신

Modbus 프로토콜로 PLC, 센서 등 산업용 장비와 데이터를 주고받습니다. Modbus 는 1979년에 자동화 장치 간 통신을 위해 개발된 산업용 프로토콜로, 단순하고 안정적이어서 여러 산업 분야에서 널리 쓰입니다. 모드버스 항목(RTU Master, RTU Slave, TCP Master, TCP Slave)은 설정 > 모드버스 에서 등록합니다(6부).

모드버스

사용할 모드버스 항목을 선택합니다. 아래 항목은 선택한 항목이 RTU Master 또는 TCP Master일 때 표시됩니다. Slave 는 별도의 설정 항목이 없으며, 동작이 실행될 때마다 Master 의 요청을 처리합니다.

Master 항목

Unit ID

통신할 Slave 의 Unit ID 를 1~247 에서 입력합니다. 기본값은 1입니다.

응답 타임아웃

요청에 대한 Slave 의 응답을 기다릴 시간(시간길이)을 입력합니다. 기본값은 3초이며 이 시간을 넘기면 Slave 와의 연결이 끊어진 것으로 처리합니다.

Function Code

요청의 기능 코드를 선택합니다. 기본값은 FC1 입니다.

Function Code설명표시되는 항목
Read Coils (FC1)여러 디지털 출력(코일) 상태 읽기Read Offset, Read Length, Read Mapping(비트)
Read Discrete Inputs (FC2)여러 디지털 입력 상태 읽기Read Offset, Read Length, Read Mapping(비트)
Read Holding Registers (FC3)여러 Holding Register 읽기Read Offset, Read Length, Read Mapping(레지스터)
Read Input Registers (FC4)여러 Input Register 읽기Read Offset, Read Length, Read Mapping(레지스터)
Write Single Coil (FC5)디지털 출력(코일) 하나 쓰기Write Offset, Write Length, Write Mapping(비트)
Write Single Register (FC6)레지스터 하나 쓰기Write Offset, Write Length, Write Mapping(레지스터)
Write Multiple Coils (FC15)여러 디지털 출력 상태 쓰기Write Offset, Write Length, Write Mapping(비트)
Write Multiple Registers (FC16)여러 레지스터 쓰기Write Offset, Write Length, Write Mapping(레지스터)
Read/Write Multiple Registers (FC23)여러 레지스터 읽기와 쓰기를 한 번에 수행Read 와 Write 의 Offset, Length, Mapping(레지스터) 모두
Read Offset, Read Length

읽을 Slave 메모리 영역의 시작 주소(0~65535, 기본값 0)와 읽을 개수(1~256, 기본값 8)를 입력합니다. Function Code가 FC1, FC2, FC3, FC4, FC23 일 때만 표시됩니다.

Read Mapping

읽은 값을 저장할 변수를 표에서 지정합니다. 표의 행 수는 Read Length 값에 따라 정해지며, FC1 과 FC2 는 비트(디지털) 표, FC3, FC4, FC23 은 레지스터 표가 표시됩니다.

Write Offset, Write Length

쓸 Slave 메모리 영역의 시작 주소(0~65535, 기본값 0)와 쓸 개수(1~256, 기본값 8)를 입력합니다. Function Code가 FC5, FC6, FC15, FC16, FC23 일 때만 표시됩니다.

Write Mapping

쓸 값을 담은 변수를 표에서 지정합니다. 표의 행 수는 Write Length 값에 따라 정해지며, FC5 와 FC15 는 비트(디지털) 표, FC6, FC16, FC23 은 레지스터 표가 표시됩니다.

OPC UA 통신

OPC UA 서버의 노드를 읽거나 씁니다. OPC UA 는 통신 방식이 다른 산업용 장비의 데이터를 표준화된 방식으로 교환하는 산업용 표준 프로토콜로, PLC 기반 시스템 통합, 스마트 팩토리, 빌딩 자동화, 에너지 관리 등에 쓰입니다. 서버 연결은 설정 > OPC UA 클라이언트 에서 등록합니다(6부).

OPC UA 클라이언트

사용할 OPC UA 클라이언트를 선택합니다.

명령

  • 읽기(기본값): 서버의 노드에서 값을 읽습니다.
  • 쓰기: 서버의 노드에 값을 씁니다.

항목

노드 ID

읽거나 쓸 노드의 ID 를 OPC UA 표준 NodeId 형식으로 입력합니다. 네임스페이스 번호와 식별자를 세미콜론으로 구분하며, 문자열 식별자는 s, 숫자 식별자는 i 로 표기합니다(예: ns=2;s=Temperature, ns=3;i=1001).

읽은 값

읽은 값을 저장할 변수를 선택합니다. 모든 타입의 변수를 선택할 수 있습니다. 명령이 읽기일 때만 표시됩니다.

값의 타입, 쓸 값

쓸 값의 타입을 디지털, 숫자(기본값), 텍스트, 바이트 배열 중에서 선택하고 쓸 값에 그 타입의 값을 입력합니다. 명령이 쓰기일 때만 표시됩니다.

HTTP 통신

HTTP 로 웹 서버나 REST API 에 요청을 보내고 응답을 받습니다. 이 동작에는 리소스 선택과 명령 항목이 없으며, 요청 헤더를 입력하는 항목은 제공되지 않습니다. 날씨 API 를 호출하는 사용 예는 부록 B를 참고합니다.

URL

요청을 보낼 URL 을 입력합니다(예: https://api.example.com/data 또는 api.example.com/data). http:// 를 생략하면 자동으로 붙습니다.

연결 타임아웃

서버 연결을 기다릴 시간(시간길이)을 입력합니다. 기본값은 5초이며 이 시간을 넘기면 연결에 실패한 것으로 처리합니다.

메서드

HTTP 요청 메서드를 선택합니다. 기본값은 GET 입니다.

메서드용도
GET데이터를 조회합니다.
POST데이터를 보내 새 자원을 만듭니다.
PUT자원 전체를 수정하거나 만듭니다.
PATCH자원의 일부를 수정합니다.
DELETE자원을 삭제합니다.
HEAD본문 없이 메타 정보만 요청합니다.
CONNECT서버와의 터널을 만듭니다.
OPTIONS서버가 지원하는 메서드를 확인합니다.
TRACE요청 경로를 추적합니다.
컨텐츠 타입

요청 본문의 형식(MIME 타입)을 선택합니다. 기본값은 text/plain 이며 application/json, application/x-www-form-urlencoded, multipart/form-data 등 29종 중에서 선택합니다. 메서드가 POST, PUT, PATCH, CONNECT, OPTIONS 일 때만 표시됩니다.

컨텐츠 타입 전체 목록

text/plain, text/html, text/css, text/javascript, text/xml, application/json, application/xml, application/xhtml+xml, application/pdf, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/zip, application/octet-stream, image/jpeg, image/png, image/gif, image/svg+xml, audio/mpeg, audio/wav, video/mp4, video/quicktime, application/x-mpegurl, multipart/form-data, multipart/mixed, application/x-www-form-urlencoded, application/javascript, application/font-woff, application/ld+json

요청 내용 (Body)

요청 본문을 입력합니다. 메서드가 POST, PUT, PATCH, CONNECT, OPTIONS 일 때만 표시됩니다.

출력 변수

  • 응답 코드: 서버의 응답 코드(예: 200, 404)를 저장할 숫자 타입 변수입니다.
  • 응답 내용 (Body): 서버의 응답 본문을 저장할 텍스트 타입 변수입니다. JSON 응답은 블록 편집기의 JSON 블록으로 값을 꺼냅니다(8부).

사용자 정의 통신

사용자가 직접 정의한 프레임으로 외부 기기와 통신합니다. 시리얼, TCP, UDP, 웹소켓, 블루투스, 공유 메모리 연결을 사용할 수 있으며, 연결은 설정 > 사용자 정의 통신 에서 등록합니다(6부).

사용자 정의 통신

사용할 연결을 선택합니다.

명령

  • 보내기(기본값): 프레임에 구성한 데이터를 보냅니다.
  • 받기: 데이터를 받아 프레임에 따라 해석합니다.
수신 완료

새 데이터를 받는 순간 true, 그렇지 않으면 false 가 되는 디지털 타입 변수를 선택합니다. 명령이 받기일 때만 표시됩니다.

프레임

보내거나 받을 데이터 프레임을 항목의 나열로 구성합니다. 표에 항목을 추가하여 구성하며, 프레임은 다음과 같이 동작합니다.

  • 보낼 때: 항목 순서대로 데이터를 구성합니다. 상수, 변수, 무결성 검사 항목을 포함할 수 있고, 변수는 보내는 시점의 값이 사용되며, 무결성 검사 항목은 계산 결과가 프레임에 포함됩니다.
  • 받을 때: 받은 데이터를 프레임과 비교하여 일치하는지 확인합니다. 변수 항목은 받은 데이터를 해석하여 변수에 저장하고, 무결성 검사 항목은 받은 데이터의 계산 결과가 일치하는지 확인합니다.

프레임 항목

이름

항목의 이름을 입력합니다. 임의의 이름을 쓸 수 있습니다.

타입
  • 디지털(기본값): true 또는 false 상수입니다.
  • 숫자: 숫자 상수입니다. 숫자 형식으로 바이트 크기와 정수, 실수 여부를 지정합니다.
  • 텍스트: 텍스트 상수입니다.
  • 바이트배열: 바이트 배열 상수입니다.
  • 변수: 변수의 값을 보내거나 받은 값을 변수에 저장합니다. 디지털, 숫자, 텍스트, 바이트배열 타입 변수만 선택할 수 있습니다.
  • 무결성 검사: 지정한 범위의 데이터로 검사값을 계산하여 프레임에 넣거나 받은 검사값과 대조합니다.
값

상수 값을 입력합니다. 타입이 디지털, 숫자, 텍스트, 바이트배열일 때만 표시됩니다.

변수

보내거나 받을 변수를 선택합니다. 타입이 변수일 때만 표시됩니다.

숫자 형식

숫자를 바이트로 바꾸는 형식을 1바이트 정수(기본값), 1바이트 정수 (부호 없음), 2바이트 정수, 2바이트 정수 (부호 없음), 4바이트 정수, 4바이트 정수 (부호 없음), 4바이트 실수, 8바이트 실수 중에서 선택합니다. 타입이 숫자이거나, 변수이면서 숫자 타입 변수를 선택했을 때만 표시됩니다.

바이트 크기 모름

받을 데이터의 바이트 크기를 미리 알 수 없을 때 켭니다. 프레임에 크기를 모르는 항목은 하나만 둘 수 있습니다. 명령이 받기이고 타입이 변수이면서 텍스트 또는 바이트배열 타입 변수를 선택했을 때만 표시됩니다.

바이트 크기

받을 데이터의 바이트 크기를 1~65535 에서 입력합니다. 이 크기만큼 해석하여 변수에 저장합니다. 바이트 크기 모름이 꺼진 텍스트 또는 바이트배열 변수 항목에서만 표시됩니다.

바이트 역순

보내거나 받을 데이터의 바이트 순서를 뒤집습니다. 상대 기기와 바이트 순서(엔디언) 처리가 다를 때 켭니다. 상수 또는 변수의 타입이 숫자, 텍스트, 바이트배열일 때만 표시됩니다.

검사 방법

무결성 검사의 계산 방법을 선택합니다. 시작 데이터부터 종료 데이터까지의 항목이 계산 대상입니다. 타입이 무결성 검사일 때만 표시됩니다.

검사 방법계산
BYTE SUM모든 바이트를 더한 합계
WORD SUM워드(16비트) 단위로 더한 합계
BYTE XOR모든 바이트를 XOR 로 누적
7BIT SUM각 바이트의 상위 1비트를 제외한 7비트를 더한 합계
7BIT XOR각 바이트의 상위 1비트를 제외한 7비트를 XOR 로 누적
7BIT SUM (0x20 이상)값이 0x20(공백) 이상인 바이트만 7비트로 더한 합계
BYTE SUM (2의 보수)모든 바이트의 합계를 2의 보수로 변환
BYTE SUM (1의 보수)모든 바이트의 합계를 1의 보수(비트 반전)로 변환
CRC16 STANDARD표준 다항식의 16비트 CRC
CRC16 CCITTCCITT 다항식(0x1021)의 16비트 CRC
CRC16 MODBUSModbus 다항식(0x8005)의 16비트 CRC
시작 데이터, 종료 데이터

무결성 검사를 계산할 범위의 첫 항목과 마지막 항목을 프레임 항목 중에서 선택합니다. 타입이 무결성 검사일 때만 표시됩니다.

ASCII로 변환

켜면 계산한 검사값을 16진수 문자열로 바꿔 넣습니다(예: 0x9C 는 문자열 「9C」). 타입이 무결성 검사일 때만 표시됩니다.

PID 제어

PID 피드백 제어를 계산합니다. PID 는 비례(Proportional), 적분(Integral), 미분(Derivative)의 약자로, 세 요소를 결합하여 목표값과 측정값의 오차를 최소화합니다. 제어기와 제어 방향(정방향, 역방향)은 설정 > PID 제어 에서 등록합니다(6부).

PID 제어

사용할 PID 제어를 선택합니다.

명령

  • 계산(기본값): PID 계산을 한 번 수행합니다. 이 명령은 일정한 주기로 반복 실행해야 합니다.
  • 정지: PID 계산을 정지합니다.

항목

다음 항목은 모두 명령이 계산일 때만 표시됩니다.

비례 이득 (Kp), 적분 이득 (Ki), 미분 이득 (Kd)

세 이득 값을 입력합니다. 기본값은 모두 0입니다.

목표 값 (SP)

시스템이 도달해야 하는 목표값(Set Point)을 입력합니다(예: 온도 제어의 설정 온도).

입력 값 (PV)

측정값(Process Variable)을 읽어 올 숫자 타입 변수를 선택합니다(예: 온도 제어의 측정 온도).

출력 값 (CV)

계산 결과인 제어값(Control Variable)을 저장할 숫자 타입 변수를 선택합니다. 시스템이 목표값에 도달하도록 조절해야 하는 값입니다(예: 온도 제어의 보일러 밸브 열림 정도).

사용자 동작

블록 코딩으로 실행할 내용을 직접 작성합니다. 블록 편집기의 사용법과 블록 분류는 8부, 블록 하나하나의 의미는 부록 E를 참고합니다.

동작

블록 편집을 클릭하여 블록 편집기를 열고 실행할 동작을 작성합니다. 블록의 반환값은 없으며 자유롭게 작성할 수 있습니다.