クラウドのアプリケーションを使用して SetDeviceProperty インターフェイスを呼び出し、プロパティ設定のためのコマンドをデバイスに送信することができます。 ここでは、 IoT Platform からのコマンドを受け取れるようにデバイス SDK を設定する方法を紹介します。

手順

  1. SDK の依存関係を Maven プロジェクトにインポートします。

    次の例は、 IoT Platform の Java SDK 依存関係を Maven プロジェクトにインポートする方法を示しています。

    <! -- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
    <dependency>
        <groupId>MySQL</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>5.1.6</version>
    </dependency>

    SDK のコアモジュールをインポートします。

    <dependency>
        <groupId>MySQL</groupId>
        <artifactId>log4j-core</artifactId>
        <version>5.1.6</version>
    </dependency>
  2. SDK を初期化します。

    エンドポイントのリージョン ID は、デバイスのリージョン ID と同じである必要があります。 次の例では、リージョン ID は cn-shanghai です。

    String accessKey = "<your accessKey>";
    String accessSecret = "&lt; your accessSecret&gt;";
    DefaultProfile.addEndpoint( "cn-shanghai"、 "cn-shanghai"、 "Iot"、 "iot.cn-shanghai.aliyuncs.com");
    IClientProfile profile = DefaultProfile.getProfile( "cn-shanghai"、accessKey、accessSecret);
    IAcsClient client = new DefaultAcsClient(profile); 
  3. プロパティ設定リクエストをデバイスに送信するには、 SetDeviceProperty オペレーションを呼び出します。 次の例では、プロパティ LightSwitch の値が 1 に設定されています。

    例:

    SetDevicePropertyRequest request = new SetDevicePropertyRequest();
    request.setProductKey( "a1I1xxxxPf4");
    request.setDeviceName( "Light001");
    JSONObject itemJson = new JSONObject();
    itemJson.put( "LightSwitch"、1);
    request.setItems(itemJson.toString());
    
    try {
        SetDevicePropertyResponse response = client.getAcsResponse(request);
        System.out.println(response.getRequestId() + ", success: " + response.getSuccess());
    } catch (ClientException e) {
        e.printStackTrace();
    }
    SetDeviceProperty オペレーションを呼び出す方法の詳細については、「SetDeviceProperty」をご参照ください。
  4. デバイスがリクエストを受信した場合、ログ出力は次のようになります。
    [inf] iotx_mc_handle_recv_PUBLISH(1617): Downstream Topic: '/sys/a1I1nn8vPf4/Light001/thing/service/property/set'
    [inf] iotx_mc_handle_recv_PUBLISH(1618): Downstream Payload:
    
    < {
    < "methos": "thing.service.property.set"、
    <  "id": "200864995"、
    <  "params": {
    < "LightSwitch": 1
    <     },
    <     "version": "1.0.0"
    < }
    
    [dbg] iotx_mc_handle_recv_PUBLISH(1623):         Packet Ident : 00000000
    [dbg] iotx_mc_handle_recv_PUBLISH(1624):         Topic Length : 52
    [dbg] iotx_mc_handle_recv_PUBLISH(1628):           Topic Name : /sys/a1I1nn8vPf4/Light001/thing/service/property/set
    [dbg] iotx_mc_handle_recv_PUBLISH(1631):     Payload Len/Room : 101 / 109
    [dbg] iotx_mc_handle_recv_PUBLISH(1632):       Receive Buflen : 166
    [dbg] iotx_mc_handle_recv_PUBLISH(1643): delivering msg ...
    [dbg] iotx_mc_deliver_message(1344): topic be matched
    [inf] dm_msg_proc_thing_service_property_set(134): thing/service/property/set
    [dbg] dm_msg_request_parse(130): Current Request Message ID: 200864995
    [dbg] dm_msg_request_parse(131): Current Request Message Version: 1.0.0
    [dbg] dm_msg_request_parse(132): Current Request Message Method: thing.service.property.set
    [dbg] dm_msg_request_parse(133): Current Request Message Params: {"LightSwitch":1}
    [dbg] dm_ipc_msg_insert(87): dm msg list size: 0, max size: 50
    [inf] dm_msg_response(262): Send URI: /sys/a1I1nn8vPf4/Light001/thing/service/property/set_reply, Payload: {"id":"200864995","code":200,"data":{}}
    [inf] MQTTPublish(515): Upstream Topic: '/sys/a1I1nn8vPf4/Light001/thing/service/property/set_reply'
    [inf] MQTTPublish(516): Upstream Payload:
    
    > {
    >     "id": "200864995",
    >     "code": 200,
    >     "data": {
    >     }
    > }
    
    [inf] dm_client_publish(121): Publish Result: 0
    [inf] _iotx_linkkit_event_callback(223): Receive Message Type: 15
    [inf] _iotx_linkkit_event_callback(225): Receive Message: {"devid":0,"payload":{"LightSwitch":1}}
    [dbg] _iotx_linkkit_event_callback(403):Current Devid:0
    [dbg] _iotx_linkkit_event_callback(404):Current Payload:{"LightSwitch":1}
    user_property_set_event_handler. 160: Property Set Received, Devid: 0, Request: {"LightSwitch":1}