설정 참조
이 문서는 /settings/ 엔드포인트가 반환하는 모든 설정을 키, 타입(type_hint 기준), 제약 조건(metadata.constraint.range 및 해당하는 경우 locked 기준)과 함께 나열합니다.
locked 설정은 런타임에 읽기 전용입니다. 구성 파일이나 Haply Hub 설정 페이지를 통해 변경할 수 있지만, 변경 사항이 적용되려면 서비스 전체를 재시작해야 합니다. 아래 표에서 이러한 설정은 boot로 표시됩니다.
구성
서비스 시작 시 설정을 재정의하는 구성 파일의 위치는 다음과 같습니다:
| 플랫폼 | 위치 |
|---|---|
| Windows | C:\ProgramData\Haply\Inverse\haply-inverse-service-config.json |
| MacOS | /Library/Application Support/Haply/Inverse/haply-inverse-service-config.json |
| Linux | /etc/haply-inverse-service/haply-inverse-service-config.json |
구성 파일은 설정 키를 재정의 값에 매핑하는 평면 JSON 객체입니다. 키는 /settings/ HTTP 라우트가 반환하는 유효한 설정 키여야 합니다(API 레퍼런스 참조). 지정하지 않은 키는 서비스 기본값을 사용합니다.
예를 들어 네트워킹 구성 재정의는 다음과 같습니다:
{
"communication/http/port": 8400,
"communication/websocket/port": 8500,
"communication/events/port": 9000,
"communication/bind_all_interfaces": true
}
타입 매핑
API가 반환하는 타입 힌트는 다음 JSON 형태에 매핑됩니다:
STRING→stringBOOL→boolINT→intFLOAT→floatARR_STRING→string[]VEC3→vec3({x, y, z}를 가진 객체)GENERIC→json(임의의 구조화된 값)
communication/…
HTTP, WebSocket 및 이벤트 스트림 서버의 네트워크 포트와 바인드 주소입니다. 대부분의 항목은 부팅 시에만 설정할 수 있습니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
communication/serial/enabled | bool | — | 시리얼 장치 통신을 활성화하거나 비활성화합니다. |
communication/bind_address | string | 부팅 시 | HTTP 및 WebSocket 서버가 바인딩하는 IP 주소입니다. |
communication/bind_all_interfaces | bool | 부팅 시 | localhost 대신 0.0.0.0에 서버를 바인딩합니다. |
communication/http/port | int | 부팅 시 | HTTP REST API 포트(기본값 10000)입니다. |
communication/websocket/port | int | 부팅 시 | 기본 v3.1 WebSocket 포트(기본값 10001)입니다. |
communication/websocket/legacy_port | int | 부팅 시 | 레거시 v3.0 WebSocket 포트(기본값 10000)입니다. |
communication/events/port | int | 부팅 시 | 이벤트 스트림 WebSocket 포트(기본값 10020)입니다. |
devices/…
devices/detection/…
시리얼 포트 스캔 정책입니다. 모든 항목은 고급 설정입니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
devices/detection/scan_period_ms | int | 범위 100–10000; 부팅 시 | 시리얼 포트 스캔 간격(ms)입니다. |
devices/detection/handshake_timeout_s | int | 범위 1–15 | 포트별 핸드셰이크 제한 시간(초)입니다. |
devices/detection/max_retries | int | 범위 1–10 | 포트당 최대 핸드셰이크 재시도 횟수입니다. |
devices/detection/failure_log_delay_s | int | 범위 1–60 | 감지 실패를 다시 기록하기 전의 지연 시간(초)입니다. |
devices/detection/block_looping_ports | bool | — | 루핑 포트가 감지되면 장치 준비 상태를 차단합니다. |
devices/detection/excluded_ports | json | — | 감지 중 건너뛸 시리얼 포트 경로입니다. |
devices/detection/additional_ports | string[] | — | 조건 없이 스캔할 추가 시리얼 포트 경로입니다. |
devices/detection/allowed_vendor_id_filter | string[] | — | 포트 열거 중 허용되는 USB 벤더 ID입니다. |
devices/detection/port_name_substring_filter | string[] | — | 일치시킬 플랫폼별 포트 이름 부분 문자열입니다. |
devices/detection/wireless_verse_grip_description_filter | string[] | — | 무선 VerseGrip 감지를 위한 포트 설명 부분 문자열입니다. |
devices/detection/inverse3x_description_filter | string[] | — | Inverse3x 감지를 위한 포트 설명 부분 문자열입니다. |
devices/detection/extra_ports (사용 중단됨) | string[] | — | 대신 devices/detection/additional_ports를 사용하십시오. 읽기와 쓰기는 표준 키로 투명하게 전달됩니다. |
devices/inverse*/…
Inverse3 계열의 모든 장치에 적용되는 전역 기본값입니다. 세션별 재정의가 우선합니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
devices/inverse*/filters/force_scale/gain | float | 범위 0.0–2.0 | 모든 장치에 적용되는 전역 힘 출력 배율입니다. |
devices/inverse*/filters/force_gate/gain | float | 범위 0.0–1.0 | 새 세션의 기본 힘 게이트 이득입니다. |
devices/inverse*/control_timeout_ms | int | 범위 50–10000 | 장치 제어 잠금을 해제하기 전의 제한 시간(ms)입니다. |
devices/inverse*/query_orientation_on_idle | bool | — | 장치가 유휴 상태일 때 펌웨어에서 본체 방향을 조회합니다. |
devices/presets
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
devices/presets | json | — | 장치 유형별 기본 장치 구성 프리셋입니다(inverse_arm_front_*, inverse_led_front_*, minverse_*, verse_grip_default, wireless_verse_grip_default, custom_verse_grip_default의 마운트 변환(mount transform), basis 등). |
devices/wireless_verse_grip/…
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
devices/wireless_verse_grip/battery/low_threshold | int | — | 배터리 잔량(%)이 이 값보다 낮아지면 배터리 부족 경고가 표시됩니다. |
devices/wireless_verse_grip/battery/critical_threshold | int | — | 배터리 잔량(%)이 이 값보다 낮아지면 배터리 위험 알림이 표시됩니다. |
devices/wireless_verse_grip/battery/reset_margin | int | — | 배터리 경고를 해제하기 전의 히스테리시스 여유값입니다. |
devices/wireless_verse_grip/filters/orientation_filter | json | 부팅 시 | 무선 VerseGrip 방향에 대한 One Euro Filter 설정입니다. |
features/…
features/calibration/…
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/calibration/hall_threshold | int | 범위 1–32 | 캘리브레이션 중 펜이 부착된 것으로 간주되는 홀 센서 수준입니다. |
features/grip_hook/…
그립 후크 자동 동작입니다. 그립을 똑바로 세워 잡고 있는 동안 커서를 고정합니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/grip_hook/enabled | bool | — | 그립을 똑바로 세워 잡았을 때 그립 후크 자동 잠금을 활성화합니다. |
features/grip_hook/use_hall | bool | — | 그립 감지에 방향 대신 홀 센서 임계값을 사용합니다. |
features/grip_hook/hall | int | 범위 1–32 | 그립 잠금을 트리거하는 홀 센서 값 임계값입니다. |
features/grip_hook/hold_duration | int | 범위 10–1000 | 트리거 후 잠금을 유지하는 시간(ms)입니다. |
features/navigation/bubble/…
버블 내비게이션 모듈의 기본값입니다. bubble 동작이 처음 활성화될 때 세션에 전달됩니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/navigation/bubble/center | vec3 | — | 버블 중심 위치의 기본값입니다. |
features/navigation/bubble/max_velocity | float | — | 속도 영역에서의 최대 내비게이션 속도(m/s)입니다. |
features/navigation/bubble/velocity_zone_width | float | — | 버블 표면 바깥쪽 속도 영역의 너비(m)입니다. |
features/navigation/bubble/reset_velocity_on_entry | bool | — | 커서가 버블에 진입하면 속도를 0으로 재설정합니다. |
features/navigation/bubble/spring_inner | float | — | 버블 중심에서의 스프링 계수(N/m)입니다. |
features/navigation/bubble/spring_surface | float | — | 버블 표면에서의 스프링 계수(N/m)입니다. |
features/navigation/bubble/spring_outer | float | — | 바깥 경계에서의 스프링 계수(N/m)입니다. |
features/navigation/bubble/damping_inner | float | — | 버블 중심에서의 감쇠 계수(Ns/m)입니다. |
features/navigation/bubble/damping_surface | float | — | 버블 표면에서의 감쇠 계수(Ns/m)입니다. |
features/navigation/bubble/damping_outer | float | — | 바깥 경계에서의 감쇠 계수(Ns/m)입니다. |
features/navigation/bubble/wall_stiffness | float | — | 바깥 경계에 있는 단단한 벽의 강성(N/m)입니다. |
features/navigation/bubble/bump_width | float | — | 버블 표면 촉각 범프의 너비(m)입니다. |
features/navigation/bubble/bump_stiffness | float | — | 버블 표면 촉각 범프의 강성(N/m)입니다. |
features/safe_trajectory/…
엔드 이펙터 움직임에 대한 속도 제한기입니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/safe_trajectory/enabled | bool | — | 안전 궤적 속도 제한기를 활성화합니다. |
features/safe_trajectory/max_vel | float | 범위 0.01–2.0 | 엔드 이펙터의 최대 허용 속도(m/s)입니다. |
features/screensaver/…
세션이 장치를 구동하지 않을 때 Inverse3 장치에서 재생되는 유휴 애니메이션입니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/screensaver/enabled | bool | — | Inverse3 장치의 유휴 화면보호기 애니메이션을 활성화합니다. |
features/screensaver/speed | float | 범위 0.001–0.2 | 화면보호기 애니메이션 속도입니다. |
features/screensaver/distracted_speed | float | 범위 0.001–0.2 | 사용자가 근처에 있지만 조작하지 않을 때의 애니메이션 속도입니다. |
features/sdf/…
부호 있는 거리장(Signed-distance-field) 햅틱 효과 모듈(SDF HFX)입니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/sdf/enabled | bool | — | SDF 햅틱 효과 모듈을 활성화하거나 비활성화합니다. |
features/sdf/state_output | bool | — | 기본적으로 장치 출력 페이로드에 SDF 상태를 포함합니다. |
features/sdf/max_count | int | 범위 0–128 | 활성 SDF 효과의 최대 개수입니다 (0 = 무제한). |
features/sdf/events/created | bool | — | 새 SDF 효과가 생성되면 이벤트를 발생시킵니다. |
features/sdf/events/deleted | bool | — | SDF 효과가 삭제되면 이벤트를 발생시킵니다. |
features/sdf/events/updated | bool | — | SDF 효과가 업데이트되면 이벤트를 발생시킵니다. |
features/sdf/probe_on_zero_force/enabled | bool | — | 적용된 힘이 0에 가까울 때 SDF 필드를 자동으로 프로브합니다. |
features/sdf/probe_on_zero_force/delay | float | 범위 0.001–60.0 | 힘이 0으로 떨어진 후 자동 프로브를 시작하기 전까지의 지연 시간 (s)입니다. |
features/verse_grip_pairing/…
Inverse3 및 (유선 또는 무선) Verse Grip 간의 부착/분리 추적입니다. Haply Hub 페어링 UI의 기반이 됩니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
features/verse_grip_pairing/enabled | bool | — | 페어링 / 부착-분리 추적을 활성화합니다. |
features/verse_grip_pairing/hall_threshold_vg | int | 범위 1–32 | 유선 VerseGrip의 경우 부착된 것으로 간주되는 홀 레벨입니다. |
features/verse_grip_pairing/hall_threshold_wvg | int | 범위 1–32 | 무선 VerseGrip의 경우 부착된 것으로 간주되는 홀 레벨입니다. |
features/verse_grip_pairing/detach_debounce_ms | int | 범위 0–1000 | 분리를 확정하기 전의 디바운스 구간입니다 (ms). |
features/verse_grip_pairing/heartbeat_ms | int | 범위 100–10000 | 강제 재알림 사이의 간격입니다 (ms). |
features/verse_grip_pairing/force_attached | bool | — | 홀 센서를 우회하여 부착 상태를 true로 영구 고정합니다 (하드웨어 장애 우회용). |
serialization/…
Transform 출력 형식 — WebSocket 및 HTTP JSON 페이로드에 영향을 줍니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
serialization/explicit_fields | bool | — | 직렬화된 출력에서 항등 기본값과 같은 transform 필드(예: position: {0,0,0}, rotation: {w:1,…})도 포함합니다. 클라이언트에서 모든 필드가 명시적으로 존재해야 할 때 유용합니다. 기본값: false. |
serialization/force_complete_transforms | bool | — | 방향만 출력하는 장치(Verse Grip, Wireless Verse Grip)를 포함하여 모든 transform 출력에 position, rotation, 그리고 scale을 항상 포함합니다. 이 장치들은 그렇지 않으면 rotation만 출력합니다. serialization/explicit_fields의 동작을 포함합니다. 기본값: false. |
session/…
세션 스케줄러 및 명령 파이프라인 제한입니다.
| 키 | 타입 | 제약 조건 | 설명 |
|---|---|---|---|
session/min_simulation_rate_hz | int | 범위 20–500 | 경고가 발생하기 전 허용 가능한 최소 장치 시뮬레이션 주기(Hz)입니다. |
session/commands/zoh_window_ms | int | — | Zero-order-hold 윈도우 — 이 구간 내에 수신된 프로브를 억제합니다 (ms). |
session/commands/drop_warning_threshold | int | — | 경고가 발생하기 전 윈도우 내에서 드롭된 명령의 개수입니다. |
session/commands/drop_warning_window_ms | int | — | 드롭된 명령을 집계하는 슬라이딩 윈도우 크기입니다 (ms). |
session/commands/tick_on_empty_batch | bool | — | WebSocket 배치 전체가 드롭된 경우에도 main_loop 틱을 스케줄링합니다. |