명령과 제어
MX On Cloud RPC(Remote Procedure Call, 원격 프로시저 호출)는 서버 측 RPC로 플랫폼에서 장치로 명령을 보냅니다. 플랫폼이 장치에 지시를 보내고, 필요하면 장치의 응답을 기다릴 수 있습니다.
서버 측 RPC
섹션 제목: “서버 측 RPC”플랫폼이 장치에 명령을 보냅니다. 예를 들어 릴레이를 켜고, 설정값을 바꾸고, 재부팅을 일으킵니다. 명령은 대시보드 위젯에서 보내거나 REST API로 바로 보낼 수 있습니다.
단방향과 양방향
섹션 제목: “단방향과 양방향”| 단방향 | 양방향 | |
|---|---|---|
| 장치 응답 | 기대하지 않음 | 시간 제한 안에 필요 |
| 사용 사례 | 보내고 끝나는 명령(LED 켜기) | 확인이나 결과가 필요한 명령 |
| REST 응답 | MX On Cloud가 장치에 명령을 보내면 200 OK. 장치가 명령을 처리했는지, 성공했는지는 알 수 없음 | 장치의 응답 페이로드 |
경량 RPC와 영구 RPC
섹션 제목: “경량 RPC와 영구 RPC”경량 RPC는 수명이 짧고 메모리에만 있습니다. 명령을 보낼 때 장치가 오프라인이면 명령은 사라집니다. 늘 연결된 장치를 실시간으로 제어할 때 알맞습니다.
영구 RPC는 설정할 수 있는 TTL과 함께 데이터베이스에 저장됩니다. 장치가 오프라인이면 명령은 장치가 다시 연결될 때까지 기다립니다. 연결이 간헐적이거나 절전 모드를 쓰는 장치에 알맞습니다.
요청 필드
섹션 제목: “요청 필드”| 필드 | 필수 | 설명 |
|---|---|---|
method | 예 | 명령 이름(예: setTemperature) |
params | 예 | JSON 매개변수. 없으면 {}를 씁니다. |
timeout | 아니요 | 전달을 기다릴 밀리초(기본값: 10 000, 최소: 5 000) |
expirationTime | 아니요 | 에포크 밀리초 타임스탬프. timeout보다 우선합니다 |
persistent | 아니요 | true이면 DB에 저장해 장치가 오프라인이어도 남습니다(기본값: false) |
retries | 아니요 | 시간 초과 때 영구 RPC를 다시 시도할 횟수 |
additionalInfo | 아니요 | 영구 RPC 기록에 붙는 메타데이터 |
영구 RPC 상태
섹션 제목: “영구 RPC 상태”영구 명령은 상태 기계를 따라 움직입니다. 상태가 바뀔 때마다 영구 RPC 상태가 갱신되므로 명령 진행을 추적할 수 있습니다.
| 상태 | 의미 |
|---|---|
QUEUED | 저장됨. 전달 대기 중 |
SENT | 플랫폼이 장치로 보냄 |
DELIVERED | 장치가 수신 확인함(단방향의 마지막 상태) |
SUCCESSFUL | 장치가 응답함(양방향의 마지막 상태) |
TIMEOUT | 전달 시간 초과. 재시도 횟수가 남았으면 다시 시도 |
EXPIRED | 전달 전에 TTL이 지남 |
FAILED | 재시도를 모두 씀 |
대시보드에서 명령 보내기
섹션 제목: “대시보드에서 명령 보내기”명령 버튼, 스위치, 값 조절 같은 컨트롤 위젯은 내부적으로 같은 REST API로 서버 측 RPC 명령을 보냅니다. 메서드 이름과 매개변수는 위젯 설정에서 바로 정하며, 코드는 필요 없습니다.
설정 참고
섹션 제목: “설정 참고”| 환경 변수 | 기본값 | 설명 |
|---|---|---|
ACTORS_RPC_MAX_RETRIES | 5 | 영구 RPC의 최대 전달 재시도 횟수 |
ACTORS_RPC_SUBMIT_STRATEGY_TYPE | BURST | RPC 전송 전략: BURST, SEQUENTIAL_ON_ACK_FROM_DEVICE, SEQUENTIAL_ON_RESPONSE_FROM_DEVICE 중 하나 |
MQTT_TIMEOUT | 10000 | MQTT 전달 시간 제한(ms) |
COAP_TIMEOUT | 10000 | CoAP 전달 시간 제한(ms) |
LWM2M_TIMEOUT | 120000 | LwM2M 전달 시간 제한(ms) |
SQL_TTL_RPC_ENABLED | true | 만료된 영구 RPC를 자동으로 정리할지 |
SQL_RPC_TTL_CHECKING_INTERVAL | 7200000 | 만료된 RPC를 정리하는 주기(ms) |