기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Hub SDK 클라이언트
Hub SDK 클라이언트 라이브러리는 관리형 통합 Hub SDK와 동일한 허브에서 실행되는 자체 프로토콜 스택 간의 인터페이스 역할을 합니다. 프로토콜 스택과 Device Hub SDK 구성 요소의 상호 작용을 용이하게 하기 위해 퍼블릭 APIs 세트를 노출합니다. 사용 사례에는 사용자 지정 플러그인 제어, 사용자 지정 플러그인 프로비저너 및 로컬 컨트롤러가 포함됩니다.
주제
관리형 통합 Hub SDK 가져오기
Hub SDK 클라이언트는 관리형 통합 SDK와 함께 제공됩니다. 허브 SDK에 액세스하려면 관리형 통합 콘솔
Hub SDK 툴킷 정보
다운로드 후 애플리케이션에서 사용할 수 있는 모든 퍼블릭 헤더 파일과 .so 파일이 포함된 IotMI-DeviceSDK-Toolkit 폴더가 표시됩니다. 또한 관리형 통합 팀은 데모main.cpp용 예제와 직접 실행할 수 bin/ 있는 데모 애플리케이션 바이너리를 제공합니다. 필요에 따라 이를 애플리케이션의 시작점으로 사용할 수 있습니다.
Hub SDK 클라이언트를 사용하여 사용자 지정 애플리케이션 생성
다음 단계에 따라 사용자 지정 애플리케이션을 생성합니다.
-
애플리케이션에 헤더 파일(.h)과 공유 객체 파일(.so)을 포함합니다.
애플리케이션에 퍼블릭 헤더 파일(.h)과 공유 객체 파일(.so)을 포함해야 합니다. .so 파일의 경우 lib 폴더에 배치할 수 있습니다. 최종 레이아웃은 다음과 유사합니다.
├── include │ ├── iotmi_device_sdk_client │ │ └── iotmi_device_sdk_client_common_types.h │ ├── iotmi_device_sdk_client.h │ └── iotshd_status.h ├── lib │ ├── libiotmi_devicesdk_client_module.so │ └── libiotmi_log_c.so -
기본 애플리케이션에서 Hub SDK 클라이언트를 생성합니다.
기본 애플리케이션에서 요청을 처리하는 데 사용하기 전에 먼저 Hub SDK 클라이언트를 초기화해야 합니다. 를 사용하여 클라이언트를 구성할 수 있습니다
clientId.클라이언트가 있으면 관리형 통합 디바이스 SDK에 연결할 수 있습니다.
다음은 Hub SDK 클라이언트를 생성하고 연결하는 방법의 예입니다.
#include <cstdlib> #include <string> #include "iotshd_status.h" #include "iotmi_device_sdk_client.h" auto client = std::make_unique<DeviceSDKClient>(your_own_clientId); iotmi_statusCode_t status = client->connect();참고
your_own_clientId는 사용자 가이드 설정의 start-device-discovery 또는 간단한 설정 프로비저닝 흐름의 create-managed-thing에 지정한 것과 동일해야 합니다.
다음 단계를 수행하여 게시하고 구독합니다.
연결이 설정되면 이제 관리형 통합 Hub SDK에서 들어오는 태스크를 구독할 수 있습니다. 수신 작업은 제어 작업 또는 프로비저닝 작업일 수 있습니다. 또한 수신된 작업에 대한 자체 콜백 함수와 자체 추적을 위한 사용자 지정 컨텍스트를 정의해야 합니다.
// subscribe to provisioning tasks iotmi_statusCode_t status = client->iotmi_provision_subscribe_to_tasks( example_subscriber_callback, custom_context); // subscribe to control tasks iotmi_statusCode_t status = client->iotmi_control_subscribe_to_tasks( example_subscriber_callback, custom_context);연결이 설정되면 이제 애플리케이션의 요청을 관리형 통합 Hub SDK에 게시할 수 있습니다. 비즈니스 목적에 따라 페이로드가 다른 고유한 작업 메시지 유형을 정의할 수 있습니다. 요청에는 구독 흐름과 마찬가지로 제어 요청과 프로비저닝 요청이 모두 포함될 수 있습니다. 마지막으로에 주소를 할당
rspPayload하여 관리형 통합 Hub SDK에서 동기화된 방식으로 응답을 받을 수 있습니다.// publish control request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_CONTROL_EVENT, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_control_publish_request(&api_payload); // publish provision request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_DEVICE_ONBOARDED, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_provision_publish_request(&api_payload);
자체를 빌드
CMakeLists.txt하고 거기에서 애플리케이션을 빌드합니다. 최종 출력은 다음과 같은 실행 가능한 바이너리일 수 있습니다.MyFirstApplication
사용자 지정 애플리케이션 실행
사용자 지정 애플리케이션을 실행하기 전에 다음 단계를 완료하여 허브를 설정하고 관리형 통합 Hub SDK를 시작합니다.
-
의 온보딩 지침을 따릅니다허브를 관리형 통합에 온보딩.
-
에 설명된 설치 프로세스를 완료합니다관리형 통합 Hub SDK 설치 및 검증.
사전 조건이 충족되면 사용자 지정 애플리케이션을 실행할 수 있습니다. 예:
./MyFirstApplication
중요
자체 애플리케이션을 시작하려면에 나열된 시작 스크립트를 스크립트스크립트를 사용하여 Hub SDK 배포로 수동으로 업데이트해야 합니다. 주문이 중요하므로 주문을 변경하지 마세요.
다음을 업데이트합니다. 변경 사항
./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &
아래로 변경합니다.
./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &
데이터 타입
이 섹션에서는 사용자 지정 프로토콜 플러그인에 사용되는 데이터 유형을 정의합니다.
- iotmi_client_request_t
-
관리형 통합 구성 요소에 게시할 요청을 나타냅니다.
- messageType
-
메시지 유형(CommonTypes::C2MIMessageType). 다음 목록은 유효한 값을 보여줍니다.
-
C2MI_DEVICE_ONBOARDED: 관련 페이로드가 있는 디바이스 온보딩 메시지를 나타냅니다. -
C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: 사전 연결된 디바이스에 대한 프로비저닝 해제 작업 완료 알림을 나타냅니다. -
C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: 활성화된 디바이스에 대한 프로비저닝 해제 작업 완료 알림을 나타냅니다. -
C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: 프로비저닝 해제 작업 완료 응답을 나타냅니다. -
C2MI_CONTROL_EVENT: 잠재적인 디바이스 상태 변경이 있는 제어 이벤트를 나타냅니다. -
C2MI_CONTROL_SEND_COMMAND: 로컬 컨트롤러의 제어 명령을 나타냅니다. -
C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: 로컬 컨트롤러의 제어 디바이스 상태 쿼리를 나타냅니다.
-
- reqPayload
-
요청 페이로드, 일반적으로 JSON 형식 문자열입니다.
- rspPayload
-
관리형 통합 구성 요소로 채워지는 응답 페이로드입니다.
- iotmi_클라이언트_이벤트_t
-
관리형 통합 구성 요소에서 수신된 이벤트를 나타냅니다.
- event_id
-
이벤트의 고유 식별자입니다.
- length
-
이벤트 데이터의 길이입니다.
- data
-
를 포함하여 이벤트 데이터에 대한 포인터입니다
messageType. 다음 목록은 가능한 값을 보여줍니다.-
C2MI_PROVISION_UGS_TASK: UGS 흐름에 대한 프로비저닝 작업을 나타냅니다. -
C2MI_PROVISION_SS_TASK: SimpleSetup 흐름에 대한 프로비저닝 작업을 나타냅니다. -
C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: 사전 연결된 디바이스에 대한 프로비저닝 해제 작업을 나타냅니다. -
C2MI_DE_PROVISION_ACTIVATED_TASK: 활성화된 디바이스에 대한 프로비저닝 해제 작업을 나타냅니다. -
C2MI_DEVICE_ONBOARDED_RESPONSE: 디바이스 온보딩 응답을 나타냅니다. -
C2MI_CONTROL_TASK: 제어 작업을 나타냅니다. -
C2MI_CONTROL_EVENT_NOTIFICATION: 로컬 컨트롤러에 대한 제어 이벤트 알림을 나타냅니다.
-
- ctx
-
이벤트와 연결된 사용자 지정 컨텍스트입니다.