기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
허브 제어
허브 제어는 관리형 통합 End device SDK의 확장으로, Hub SDK의 MQTTProxy 구성 요소와 인터페이스할 수 있습니다. 허브 제어를 사용하면 엔드 디바이스 SDK를 사용하여 코드를 구현하고 Managed Integrations 클라우드를 통해 허브를 별도의 디바이스로 제어할 수 있습니다. 허브 제어 SDK는 Hub SDK에 로 레이블이 지정된 별도의 패키지로 제공됩니다iot-managed-integrations-hub-control-x.x.x.
사전 조건
허브 제어를 설정하려면 다음이 필요합니다.
-
Hub SDK 버전 0.4.0 이상에 온보딩된 허브입니다.
-
에서 최신 버전의 End Device SDK를 다운로드합니다 AWS Management Console.
-
허브에서 실행되는 MQTT 프록시 구성 요소, 버전 0.5.0 이상.
엔드 디바이스 SDK 구성 요소
End 디바이스 SDK에서 다음 구성 요소를 사용합니다.
-
데이터 모델의 코드 생성기
-
데이터 모델 핸들러
Hub SDK에는 이미 온보딩 프로세스와 클라우드에 대한 연결이 있으므로 다음 구성 요소가 필요하지 않습니다.
-
프로비저닝 담당자
-
PKCS 인터페이스
-
작업 핸들러
-
MQTT 에이전트
엔드 디바이스 SDK와 통합
데이터 모델용 코드 생성기의 지침에 따라 하위 수준 C 코드를 생성합니다.
엔드 디바이스 SDK 통합의 지침에 따라 다음을 수행합니다.
-
빌드 환경 설정
Amazon Linux 2023/x86_64에서 개발 호스트로 코드를 빌드합니다. 필요한 빌드 종속성을 설치합니다.
dnf install make gcc gcc-c++ cmake -
하드웨어 콜백 함수 개발
하드웨어 콜백 함수를 구현하기 전에 API의 작동 방식을 이해합니다. 이 예제에서는 On/Off 클러스터 및 OnOff 속성을 사용하여 디바이스 함수를 제어합니다. API 세부 정보는 섹션을 참조하세요하위 수준 C-Function APIs.
struct DeviceState { struct iotmiDev_Agent *agent; struct iotmiDev_Endpoint *endpointLight; /* This simulates the HW state of OnOff */ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff(bool *value, void *user) { struct DeviceState *state = (struct DeviceState *)(user); *value = state->hwState; return iotmiDev_DMStatusOk; } -
엔드포인트 및 후크 하드웨어 콜백 함수 설정
함수를 구현한 후 엔드포인트를 생성하고 콜백을 등록합니다. 다음 작업을 완료합니다.
-
디바이스 에이전트 생성
-
지원하려는 각 클러스터 구조체의 콜백 함수 포인트 채우기
-
엔드포인트 설정 및 지원되는 클러스터 등록
struct DeviceState { struct iotmiDev_Agent * agent; struct iotmiDev_Endpoint *endpoint1; /* OnOff cluster states*/ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff( bool * value, void * user ) { struct DeviceState * state = ( struct DeviceState * ) ( user ); *value = state->hwState; printf( "%s(): state->hwState: %d\n", __func__, state->hwState ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetOnTime( uint16_t * value, void * user ) { *value = 0; printf( "%s(): OnTime is %u\n", __func__, *value ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetStartUpOnOff( iotmiDev_OnOff_StartUpOnOffEnum * value, void * user ) { *value = iotmiDev_OnOff_StartUpOnOffEnum_Off; printf( "%s(): StartUpOnOff is %d\n", __func__, *value ); return iotmiDev_DMStatusOk; } void setupOnOff( struct DeviceState *state ) { struct iotmiDev_clusterOnOff clusterOnOff = { .getOnOff = exampleGetOnOff, .getOnTime = exampleGetOnTime, .getStartUpOnOff = exampleGetStartUpOnOff, }; iotmiDev_OnOffRegisterCluster( state->endpoint1, &clusterOnOff, ( void * ) state); } /* Here is the sample setting up an endpoint 1 with OnOff cluster. Note all error handling code is omitted. */ void setupAgent(struct DeviceState *state) { struct iotmiDev_Agent_Config config = { .thingId = IOTMI_DEVICE_MANAGED_THING_ID, .clientId = IOTMI_DEVICE_CLIENT_ID, }; iotmiDev_Agent_InitDefaultConfig(&config); /* Create a device agent before calling other SDK APIs */ state->agent = iotmiDev_Agent_new(&config); /* Create endpoint#1 */ state->endpoint1 = iotmiDev_Agent_addEndpoint( state->agent, 1, "Data Model Handler Test Device", (const char*[]){ "Camera" }, 1 ); setupOnOff(state); } -
-
예: 허브 제어 구축
허브 제어는 Hub SDK 패키지의 일부로 제공됩니다. 허브 제어 하위 패키지에는 레이블이 지정되어 iot-managed-integrations-hub-control-x.x.x 있으며 수정되지 않은 디바이스 SDK와 다른 라이브러리가 포함되어 있습니다.
-
코드 생성 파일을
example폴더로 이동합니다.cp codegen/out/* example/dm -
허브 제어를 빌드하려면 다음 명령을 실행합니다.
cd <hub-control-root-folder>mkdir buildcd buildcmake -DBUILD_EXAMPLE_WITH_MQTT_PROXY=ON -DIOTMI_USE_MANAGED_INTEGRATIONS_DEVICE_LOG=ON ..cmake -build . -
HubOnboarding및MQTTProxy구성 요소가 실행 중인 상태에서 허브의MQTTProxy구성 요소를 사용하여 예제를 실행합니다../examples/iotmi_device_sample_camera/iotmi_device_sample_camera
데이터 모델은 섹션을 참조관리형 통합 데이터 모델하세요. 의 5단계End Device SDK 시작하기에 따라 엔드포인트를 설정하고 최종 사용자와 iot-managed-integrations 통신을 관리합니다.
지원되는 예제
다음 예제가 빌드 및 테스트되었습니다.
-
iotmi_device_dm_air_purifier_demo
-
iotmi_device_basic_diagnostics
-
iotmi_device_dm_camera_demo
지원하는 플랫폼
다음 표에는 허브 제어에 지원되는 플랫폼이 나와 있습니다.
| 아키텍처 | 운영 체제 | GCC 버전 | Binutils 버전 |
|---|---|---|---|
|
X86_64 |
Linux |
10.5.0 |
2.37 |
|
aarch64 |
Linux |
10.5.0 |
2.37 |