콘텐츠로 이동

명령과 제어

MX On Cloud RPC(Remote Procedure Call, 원격 프로시저 호출)는 서버 측 RPC로 플랫폼에서 장치로 명령을 보냅니다. 플랫폼이 장치에 지시를 보내고, 필요하면 장치의 응답을 기다릴 수 있습니다.

플랫폼이 장치에 명령을 보냅니다. 예를 들어 릴레이를 켜고, 설정값을 바꾸고, 재부팅을 일으킵니다. 명령은 대시보드 위젯에서 보내거나 REST API로 바로 보낼 수 있습니다.

단방향양방향
장치 응답기대하지 않음시간 제한 안에 필요
사용 사례보내고 끝나는 명령(LED 켜기)확인이나 결과가 필요한 명령
REST 응답MX On Cloud가 장치에 명령을 보내면 200 OK. 장치가 명령을 처리했는지, 성공했는지는 알 수 없음장치의 응답 페이로드

경량 RPC는 수명이 짧고 메모리에만 있습니다. 명령을 보낼 때 장치가 오프라인이면 명령은 사라집니다. 늘 연결된 장치를 실시간으로 제어할 때 알맞습니다.

영구 RPC는 설정할 수 있는 TTL과 함께 데이터베이스에 저장됩니다. 장치가 오프라인이면 명령은 장치가 다시 연결될 때까지 기다립니다. 연결이 간헐적이거나 절전 모드를 쓰는 장치에 알맞습니다.

필드필수설명
method예명령 이름(예: setTemperature)
params예JSON 매개변수. 없으면 {}를 씁니다.
timeout아니요전달을 기다릴 밀리초(기본값: 10 000, 최소: 5 000)
expirationTime아니요에포크 밀리초 타임스탬프. timeout보다 우선합니다
persistent아니요true이면 DB에 저장해 장치가 오프라인이어도 남습니다(기본값: false)
retries아니요시간 초과 때 영구 RPC를 다시 시도할 횟수
additionalInfo아니요영구 RPC 기록에 붙는 메타데이터

영구 명령은 상태 기계를 따라 움직입니다. 상태가 바뀔 때마다 영구 RPC 상태가 갱신되므로 명령 진행을 추적할 수 있습니다.

상태의미
QUEUED저장됨. 전달 대기 중
SENT플랫폼이 장치로 보냄
DELIVERED장치가 수신 확인함(단방향의 마지막 상태)
SUCCESSFUL장치가 응답함(양방향의 마지막 상태)
TIMEOUT전달 시간 초과. 재시도 횟수가 남았으면 다시 시도
EXPIRED전달 전에 TTL이 지남
FAILED재시도를 모두 씀

명령 버튼, 스위치, 값 조절 같은 컨트롤 위젯은 내부적으로 같은 REST API로 서버 측 RPC 명령을 보냅니다. 메서드 이름과 매개변수는 위젯 설정에서 바로 정하며, 코드는 필요 없습니다.

환경 변수기본값설명
ACTORS_RPC_MAX_RETRIES5영구 RPC의 최대 전달 재시도 횟수
ACTORS_RPC_SUBMIT_STRATEGY_TYPEBURSTRPC 전송 전략: BURST, SEQUENTIAL_ON_ACK_FROM_DEVICE, SEQUENTIAL_ON_RESPONSE_FROM_DEVICE 중 하나
MQTT_TIMEOUT10000MQTT 전달 시간 제한(ms)
COAP_TIMEOUT10000CoAP 전달 시간 제한(ms)
LWM2M_TIMEOUT120000LwM2M 전달 시간 제한(ms)
SQL_TTL_RPC_ENABLEDtrue만료된 영구 RPC를 자동으로 정리할지
SQL_RPC_TTL_CHECKING_INTERVAL7200000만료된 RPC를 정리하는 주기(ms)