원격으로 쓸 수 있는 키는 아래 허용 목록 7종 뿐이에요. 이 목록은 머신 로컬 웹의 운영자 제어가 이미 쓰는 목록과 같고, 쓰기는 CAN 쓰기 → 보드 리드백 → 확정값 응답 순서로 처리돼요.
원격으로 바꿀 수 있는 설정
키 타입 · 범위 scope 설명 shot_light_modeenum off·on_shot·always lighting 샷 조명 동작 display_brightnessint 10~100 lighting 화면 밝기 % display_auto_off_sint 0·30~3600 lighting 화면 자동 꺼짐 (0 = 끔) ambient_enabledbool lighting 앰비언트 조명 ambient_brightnessint 0~100 lighting 앰비언트 밝기 % ambient_rgbhex #RRGGBB lighting 앰비언트 색 heater_standby_typeenum off·reduce·standby_off standby 절전 대기 방식 (standby_off 도 스팀 보일러는 110 °C 하한을 유지)
읽기 · 쓰기
GET /v1/public/machines/{serial}/settings
→ 200 { "values": { "ambient_brightness": 60, … }, "epoch": 58525 }
PATCH /v1/public/machines/{serial}/settings
Authorization: Bearer <oauth2 token with settings:write:lighting>
Content-Type: application/json
{ "ambient_brightness": 50, "expected_epoch": 58525 }
→ 200 { "ok": true, "values": { "ambient_brightness": 50 }, "epoch": 58525, "read_back": true }
→ 400 { "error": "out_of_range", "key": "ambient_brightness", "range": [0, 100] }
→ 403 { "error": "not_whitelisted", "key": "boiler_setpoint_c" }
→ 409 { "error": "epoch_mismatch", "epoch": 58530 }
→ 503 { "error": "machine_offline" }
expected_epoch 는 선택이지만 권장해요. 머신 화면에서 누군가 같은 설정을 바꿨다면 409 가 돌아오고, 다시 읽은 뒤 결정하면 돼요. 응답의 values 는 보드가 다시 읽어 보고한 값이라 "썼다고 가정"하지 않아요.
안전 경계 — 앞으로도 열지 않아요
영역 상태 이유 안전 한계 (과열 래치 온도 · 최대 압력 · 연속 출수 시간 · 히스테리시스) 경로 없음 펌웨어 SSOT 에 고정, 어떤 모드·명령으로도 우회되지 않음 보일러 목표 온도 4채널 경로 없음 설정 상한이 안전 한계와 불변식으로 묶여 있음 추출 파라미터 (목표량 · 프리인퓨전 · 패들 프로파일 · 매핑 재생) 경로 없음 머신 앞 사람의 조작 영역 펌웨어 설정 전반 · OTA 트리거 · 정비 모드 경로 없음 기술자 어드민 API 의 몫 원격 추출 시작 / 정지 검토 중 계약 조건과 안전 심사(무인 출수·화상 위험) 뒤에만 결정
이 표는 정책 이에요. "미리보기라서 아직 없다"가 아니라 "앞으로도 열지 않는다"는 뜻이에요. 머신 소유자의 안전 한계는 어떤 티어·계약으로도 원격에서 바꿀 수 없어요.
Only the seven allow-listed keys below can be written remotely — the same list the machine's local operator control already uses. A write is CAN write → board read-back → confirmed value.
Key Type · range scope shot_light_modeoff · on_shot · always lighting display_brightness10–100 lighting display_auto_off_s0 · 30–3600 lighting ambient_enabledbool lighting ambient_brightness0–100 lighting ambient_rgb#RRGGBB lighting heater_standby_typeoff · reduce · standby_off standby
PATCH /v1/public/machines/{serial}/settings
{ "ambient_brightness": 50, "expected_epoch": 58525 }
→ 200 { "ok": true, "values": { "ambient_brightness": 50 }, "read_back": true }
→ 400 out_of_range · 403 not_whitelisted · 409 epoch_mismatch · 503 machine_offline
The boundary — never opened
Area Status Safety limits (overtemp latch, max pressure, continuous dispense, hysteresis) no path Boiler setpoints (4 channels) no path Extraction parameters (targets, pre-infusion, paddle profiles, replay) no path Firmware settings · OTA triggers · service mode no path Remote start / stop under review
This is policy, not a preview gap: no tier or contract changes an owner’s safety limits remotely.