4단계 명세(PHASE-4-INTEGRATION, v1.0.0)는 청소 로봇을 스마트 홈 생태계, 로봇군(fleet) 관리 시스템, 클라우드 서비스, 서드파티 애플리케이션과 통합하는 방법을 정의한다. 1~3단계가 로봇 한 대와의 대화 방식을 정했다면, 4단계는 로봇을 더 큰 시스템의 일부로 만드는 방법을 다룬다.
| 통합 영역 | 명세가 다루는 대상 |
|---|---|
| 스마트 홈 플랫폼 | Amazon Alexa, Google Assistant, Apple HomeKit, Samsung SmartThings |
| 로봇군 관리 | 다중 로봇 협조, 구역 할당, 부하 분산 |
| 클라우드 서비스 | AWS IoT Core, Google Cloud IoT, Azure IoT Hub |
| 서드파티 통합 | IFTTT, Zapier, Home Assistant |
| 분석·보고 | 지표 수집, 기간별 보고서 |
Alexa 연동은 스마트 홈(SMART_HOME) 범주의 스킬로 구성한다. 스킬 매니페스트는 로캘별 이름과 설명, 스마트 홈 API 엔드포인트를 지정한다. 명세가 제시하는 지원 지시어(directive)는 다음과 같다.
기기 유형은 VACUUM이며, 명세가 지정하는 트레잇은 다음 다섯 가지다.
{
"traits": [
"action.devices.traits.OnOff",
"action.devices.traits.FanSpeed",
"action.devices.traits.Dock",
"action.devices.traits.EnergyStorage",
"action.devices.traits.Locator"
]
}
Dock 트레잇은 도크 복귀(POST /robot/dock), EnergyStorage는 배터리 상태, Locator는 로봇 위치 알림(소리 등)에 대응한다.
HomeKit 액세서리 프로토콜(HAP)에는 청소 로봇 전용 서비스 유형이 없으므로, 명세는 로봇을 Fan 범주의 액세서리로 노출한다.
| HAP 서비스·특성 | 로봇 기능 |
|---|---|
| Fan 서비스 – On | 읽기: 청소 여부, 쓰기: 청소 시작·정지 |
| Fan 서비스 – Rotation Speed | 읽기: 현재 흡입력, 쓰기: 흡입력 설정 |
| Battery 서비스 – Battery Level | 배터리 잔량 |
| Occupancy Sensor 서비스 | 청소 상태 표시 |
SmartThings에서는 Robot Vacuum, Battery, Actuator, Sensor 기능(capability)을 가진 기기로 정의한다.
metadata {
definition (name: "WIA Cleaning Robot", namespace: "wia", author: "WIA") {
capability "Robot Vacuum"
capability "Battery"
capability "Actuator"
capability "Sensor"
}
}
Matter/Thread 매핑은 3단계 명세에 정의되어 있다(제6장 6.8절). 로봇 청소기의 Matter 기기 유형 번호는 0x0074이며, 명세 문서에 적힌 0x0073은 세탁기(Laundry Washer)의 번호를 잘못 적은 것이다. 클러스터는 명세의 비공식 명칭이 아니라 RVC Run Mode, RVC Clean Mode, RVC Operational State, Power Source를 기준으로 구현한다.
| 메서드·경로 | 기능 |
|---|---|
POST /fleet/robots | 로봇을 로봇군에 등록 |
GET /fleet/robots | 전체 로봇 목록 |
PUT /fleet/robots/{id}/assign | 로봇에 구역 할당 |
POST /fleet/schedule | 로봇군 청소 일정 등록 |
GET /fleet/status | 로봇군 전체 상태 |
{
"fleetId": "UUID",
"zones": [
{
"zoneId": "UUID",
"name": "Building A - Floor 1",
"assignedRobots": ["robot_id1", "robot_id2"],
"schedule": { "frequency": "daily", "time": "02:00" },
"priority": 1-10
}
]
}
명세는 부하 분산 알고리즘의 단계를 다음과 같이 제시한다.
명세는 구체적인 계산식을 정하지 않으므로, 각 단계를 어떻게 구현할지는 로봇군 관리 시스템의 몫이다.
AWS에서는 기기 섀도(Device Shadow)로 로봇 상태를 동기화한다. 로봇이 보고한 상태(reported)와 사용자가 원하는 상태(desired)를 나누어 저장하며, 토픽은 $aws/things/{robot_id}/shadow/update와 $aws/things/{robot_id}/shadow/get을 사용한다.
{
"state": {
"reported": { "battery": 75, "cleaning": true, "position": {"x": 2.5, "y": 3.1} },
"desired": { "mode": "auto", "powerLevel": 80 }
}
}
명세는 레지스트리 wia-cleaning-robots, 기기 ID ROB-2025-XXXX, Pub/Sub 토픽 robot-telemetry의 구성 예시를 제시한다. 다만 Google Cloud IoT Core 서비스는 2023년 8월 종료되었으므로, 새로 구축할 때는 MQTT 브로커와 Cloud Pub/Sub를 직접 연결하는 방식 등 대안을 검토해야 한다.
Azure에서는 연결 문자열(HostName, DeviceId, SharedAccessKey)로 접속하고, 기기 트윈(Device Twin)의 desired·reported 속성으로 청소 일정과 마지막 청소 시각 등을 동기화한다. 태그에는 건물이나 층 같은 위치 정보를 둔다.
| 트리거 | 액션 |
|---|---|
| 청소 시작, 청소 완료, 배터리 부족, 끼임 감지, 정비 필요 | 청소 시작, 도크 복귀, 청소 모드 설정 |
명세의 예시 애플릿은 "Google Calendar에서 '집 청소' 일정이 시작되면 로봇 청소를 시작한다"이다.
명세는 청소 완료 시 Slack 알림, Google Sheets에 청소 세션 기록, 주간 청소 보고서 이메일 발송을 예로 든다.
vacuum:
- platform: wia_robot
host: 192.168.1.100
token: !secret robot_token
name: Cleaning Robot
연동 후에는 vacuum.start, vacuum.stop, vacuum.return_to_base, vacuum.set_fan_speed, vacuum.send_command 서비스로 로봇을 제어한다. 위 설정에서 wia_robot은 명세가 제시하는 통합 이름으로, Home Assistant에 기본 포함된 통합이 아니므로 해당 통합 구성 요소를 별도로 설치해야 한다.
명세는 수집할 지표로 청소 빈도, 커버리지 효율, 배터리 건강도 추이, 오류율, 사용자 참여도를 든다. 기간별 보고서는 다음 엔드포인트로 받는다.
GET /analytics/report?start=YYYY-MM-DD&end=YYYY-MM-DD
Response:
{
"period": { "start": "2025-01-01", "end": "2025-01-31" },
"summary": { "totalCleanings": 62, "totalAreaCleaned": 1240.5,
"avgDuration": 1800, "batteryHealthChange": -2 },
"charts": { "cleaningFrequency": ["data"], "areaTrend": ["data"], "batteryTrend": ["data"] }
}
보고서의 원자료는 1단계의 CleaningSession과 RobotState이므로, 제조사가 다른 로봇이 섞여 있어도 같은 방식으로 집계할 수 있다.
명세는 공식 SDK 대상 언어로 TypeScript/JavaScript, Python, Java, C#, Go, Rust 여섯 가지를 제시하고, 패키지 이름을 wia-rob-011로 정한다. 이 책을 쓰는 시점에 공개 패키지 저장소(npm, PyPI 등)에 배포된 패키지는 없으며, 이용할 수 있는 것은 WIA 공개 저장소의 TypeScript SDK 골격이다(제3장 3.9절, 제5장 5.10절 참조).
4단계 명세는 필수 적합성 시험으로 API 엔드포인트 적합성, 데이터 형식 유효성, 보안 감사, 상호운용성 시험, 성능 벤치마크 다섯 가지를 들고, 인증 절차를 신청 → 자동화 테스트(2~3일) → 수동 검토(1주) → 통합 테스트(1주) → 인증 부여의 다섯 단계로 정한다. 실무 준비는 제8장에서 다룬다.
VACUUM 기기와 다섯 가지 트레잇, HomeKit은 Fan 액세서리, SmartThings는 Robot Vacuum 기능으로 연동한다/fleet/robots, /fleet/schedule, /fleet/status 등으로 구성된다reported와 desired는 어떻게 다른가?