IoT Platform は HTTPS 接続をサポートしています。 HTTP 接続はサポートされていません。

説明

  • HTTPS サーバーのエンドポイントは https://iot-as-http.cn-shanghai.aliyuncs.com です。
  • 現在、中国 (上海) リージョンのみが HTTPS 接続をサポートしています。
  • HTTPS プロトコルのみがサポートされています。
  • HTTPS トピックの標準は、「MQTT 標準」に記載されている MQTT トピックの標準と同じです。 デバイスは、https://iot-as-http.cn-shanghai.aliyuncs.com/topic/${topic} を介して IoT Platform にデータを送信します。 ${topic} の値は、MQTT 通信で使用されるのと同じトピックにすることができます。 ? query_String = xxx の形式で、パラメーターを指定することはできません。
  • デバイスからのデータサイズは 128 KB に制限されています。

手順

  1. HTTPS サーバーに接続します。

    エンドポイントアドレス: https://iot-as-http.cn-shanghai.aliyuncs.com

  2. デバイスを認証して、デバイストークンを取得します。

    デバイス認証リクエストメッセージの例:

    POST /auth HTTP/1.1
    Host: iot-as-http.cn-shanghai.aliyuncs.com
    Content-Type: application/json
    body: {"version":"default","clientId":"mylight1000002","signmethod":"hmacsha1","sign":"4870141D4067227128CBB4377906C3731CAC221C","productKey":"ZG1EvTEa7NN","deviceName":"NlwaSPXsCpTQuh8FxBGH","timestamp":"1501668289957"}
    表 1. パラメーターの説明
    パラメーター 説明
    Method リクエストメソッド。 POST メソッドがサポートされています。
    URL /auth URL アドレス。 HTTPS のみがサポートされています。
    Host エンドポイントアドレス: iot-as-http.cn-shanghai.aliyuncs.com
    Content-Type デバイスが IoT Platform に送信するデータの形式。 application/json のみがサポートされています。
    body 認証用のデバイス情報 (JSON 形式) 。 詳細については、次の表「本文内のパラメーター」をご参照ください。
    表 2. 本体内のパラメーター
    パラメーター 必須? 説明
    productKey はい デバイスが属するプロダクトの一意の識別子。 この情報は、IoT Platform コンソールのデバイス詳細ページで取得できます。
    deviceName はい デバイス名。 この情報は、IoT Platform コンソールのデバイス詳細ページで取得できます。
    clientId はい デバイスのクライアント ID 。 最大 64 文字の任意の文字列にすることができます。 clientId として MAC アドレスまたは SN コードのいずれかを使用することを推奨します。
    timestamp いいえ タイムスタンプ。 リクエストの有効期間は、タイムスタンプの作成後 15 分以内です。
    sign はい 署名。

    署名アルゴリズムは、hmacmd5 (DeviceSecret, content) の形式です。

    content の値は、サーバーに送信される必要があるすべてのパラメーター (versionsign 、および signmethod を除く) を、区切り文字なしでアルファベット順に並べ替えて連結し、作成された文字列です。

    署名の例:

    clientId = 12345deviceName = deviceproductKey = pktimestamp = 789signmethod = hmacsha1、および deviceSecret = secret の場合、署名アルゴリズムは hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); です。 この例では、 2 進数データが 16 進数データに変換されます。

    signmethod いいえ アルゴリズムの種類。 サポートされている種類 は hmacmd5 と hmacsha1 です。

    デフォルト値は hmacmd5 です。

    version いいえ バージョン。 空白にした場合、値はデフォルトになります。
    レスポンス例:
    body:
    {
      "code": 0, // the status code
      "message": "success", // the result message
      "info": {
        "token":  "6944e5bfb92e4d4ea3918d1eda3942f6"
      }
    }
    • 返されたトークンはローカルにキャッシュすることができます。
    • トークン情報は、デバイスが IoT Platform にデータを送信するたびに必要です。 トークンを紛失したか、トークンが期限切れとなった場合は、デバイス認証リクエストをもう一度行って、新しいトークンを取得してください。
    表 3. エラーコード
    コード メッセージ 説明
    10000 common error 不明なエラーです。
    10001 param error リクエスト中にパラメーターの例外が発生しました。
    20000 auth check error デバイスの認証中にエラーが発生しました。
    20004 update session error セッションの更新中にエラーが発生しました。
    40000 request too many リクエストが多すぎます。 スロットリングポリシーにより、リクエスト数が制限されています。
  3. デバイスは、 IoT Platform にデータを送信します。

    デバイスは、指定されたトピックにデータを送信します。

    IoT Platform コンソールの、プロダクトの [トピックカテゴリ ] タブページで、トピックカテゴリを作成することができます。

    たとえば、トピックカテゴリは /${YourProductKey}/${YourDeviceName}/pub のようになります。 デバイス名が device123 、デバイスのプロダクトキーが a1GFjLP3xxC の場合、そのデバイスは https://iot-as-http.cn-shanghai.aliyuncs.com/topic/a1GFjLP3xxC/device123/pub を介してデータを送信します。

    リクエストメッセージの形式:

    POST /topic/${topic} HTTP/1.1
    Host: iot-as-http.cn-shanghai.aliyuncs.com
    password:${token}
    Content-Type: application/octet-stream
    body: ${your_data}
    表 4. パラメーターの説明
    パラメーター 説明
    Method リクエストメソッド。 POST メソッドがサポートされています。
    URL URL: /topic/${topic}${topic} を、デバイスデータを受信するトピックに置き換えます。 HTTPS のみがサポートされています。
    Host エンドポイントアドレス: iot-as-http.cn-shanghai.aliyuncs.com
    password このパラメーターはリクエストヘッダーに含まれています。 このパラメーターの値は、デバイスを認証するために auth インターフェイスを使用したときに返されるトークンです。
    body ${topic} へ送信されたデータの本文であり、バイナリ byte[] 配列形式で、UTF-8 でエンコードされています。
    レスポンス例:
    body:
    {
      "code": 0, // the status code
      "message": "success", // the result message
      "info": {
        "messageId": 892687627916247040,
        "Data": byte []/UTF-8 encoded data, and possibly empty
      }
    }
    表 5. エラーコード
    コード メッセージ 説明
    10000 common error 不明なエラーです。
    10001 param error リクエスト中にパラメーターの例外が発生しました。
    20001 token is expired トークンが無効です。 auth API を呼び出してデバイスを再度認証し、新しいトークンを取得します。
    20002 token is null リクエストヘッダーにトークン情報が含まれていません。
    20003 check token error トークンに基づいてデバイスを識別することができませんでした。 auth API を呼び出してデバイスを再度認証し、新しいトークンを取得します。
    30001 publish message error データのアップロード中にエラーが発生しました。
    40000 request too many リクエストが多すぎます。 スロットリングポリシーにより、リクエスト数が制限されています。