初期登録

Thing Interaction Framework の機能を利用するには、Thing を Framework に登録して、必要に応じてモバイルアプリ(より正確にはアプリ利用者)と紐付ける必要があります。この操作を 初期登録 と呼びます。

概要 で説明されているように, 初期登録はモバイルアプリ経由で行うことも、Thing より直接行うこともできます。

なお、Thing オーナーとアクセストークンの概要についてはそれぞれ Thing オーナーアクセストークン をご覧ください。

オーナーによる初期登録

Thing の識別子として vendorThingID と thingID が利用可能です(詳しくは こちら をご参照ください)

vendorThingID を使う場合

Thing のオーナーが vendorThingID を使って初期登録を行う例を以下に挙げます。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/vnd.kii.OnboardingWithVendorThingIDByOwner+json" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/onboardings" \
  -d '{
    "vendorThingID": "{VENDOR_THING_ID}",
    "thingPassword": "{THING_PASSWORD}",
    "thingType": "{THING_TYPE}",
    "thingProperties": {
      "{PROPERTY_NAME}": "{PROPERTY_VALUE}"
    },
    "owner": "user:{USER_ID}",
    "dataGroupingInterval": "15_MINUTES"
  }'

Thing オーナーとしてユーザーを設定する場合は、このユーザーのアクセストークンを使用してください。Thing オーナーとしてグループを設定する場合は、このグループのメンバーのアクセストークンを使用してください。

リクエストのボディには以下の情報を指定します。

フィールド 必須項目か? 説明
vendorThingID ベンダーが定義した Thing の ID です。詳細は こちら をご覧ください。アプリケーション内で一意であれば、200 文字までの英数字、ハイフン、アンダースコアおよびピリオドが利用可能です。なお、このフィールド値は後で変更できません。
thingPassword Thing のパスワードです。Thing Interaction Framework 上に登録された Thing の領域をセキュアにするため、Thing ごとに異なるパスワードを設定するのが基本です。初回登録時に設定したパスワードが有効になります。二回目以降の初期登録では、初回に登録したパスワードを設定します。一旦設定したパスワードは変更できません。
owner Thing オーナーの ID。ユーザー ID かグループ ID のいずれかが指定可能。ユーザー ID の場合は user:、グループ ID の場合は group: をプレフィックスとしてつけてください。
thingType Thing のタイプです。100 文字までの英数字、ハイフン、アンダースコアおよびピリオドが利用可能です。
thingProperties Thing の属性です。既定フィールドと任意フィールドのいずれも設定可能です。フィールドの詳細は Thing の登録 をご覧ください。
dataGroupingInterval ステート履歴を保存する場合、履歴をグループ化する間隔を指定します。指定のない場合はステート履歴は保存されません。指定可能な値は 1_MINUTE、15_MINUTES、30_MINUTES、1_HOUR、12_HOURS のいずれかです。詳しくは こちら をご参照ください。

指定した vendorThingID を持つ Thing が存在しない場合、指定した情報を元に新たな Thing が Thing Interaction Framework に登録されます。すでに存在する場合は、指定した情報は無視されます(指定情報による更新などは行われません)。

なお、Thing の存在有無にかかわらず、オーナー登録は常に行われます。

初期登録が成功すると、Thing Interaction Framework は以下のような 200 応答を返します。

HTTP/1.1 200 OK
Content-Type: application/json
{
  "thingID":"{THING_ID}",
  "accessToken":"{THING_ACCESS_TOKEN}",
  "mqttEndpoint":{
    "installationID":"{INSTALLATION_ID}",
    "host":"{BROKER_HOST}",
    "mqttTopic","{MQTT_TOPIC}",
    "userName":"{USERNAME}",
    "password":"{PASSWORD}",
    "portSSL":{PORT_SSL},
    "portTCP":{PORT_TCP},
    "portWS" : {PORT_WS},
    "portWSS" : {PORT_WSS},
    "ttl":{MQTT_TTL}
  }
}

レスポンスには thingID と Thing のアクセストークンが含まれます。また MQTT コネクション確立に必要な MQTT エンドポイント情報も含まれます(詳細は こちら をご覧ください)。

thingID を使う場合

Thing のオーナーが thingID を使って初期登録を行う例を以下に挙げます。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/vnd.kii.OnboardingWithThingIDByOwner+json" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/onboardings" \
  -d '{
    "thingID": "{THING_ID}",
    "thingPassword": "{THING_PASSWORD}",
    "owner": "user:{USER_ID}"
  }'

リクエストもレスポンスも、以下の点を除き基本的には vendorThingID を使う場合 と同様です。

  • 指定した thingID を持つ Thing がすでに存在する必要があります。
  • 対象となる Thing はすでに存在するため、"thingType" や "thingProperties" フィールドの指定は不要です。指定した場合は無視されます。
  • Content-Type は "application/vnd.kii.OnboardingWithThingIDByOwner+json" を指定します。

Thing による初期登録

Thing の識別子として vendorThingID と thingID が利用可能です(詳しくは こちら をご参照ください)

vendorThingID を使う場合

Thing 自身が vendorThingID を使って初期登録を行う例を以下に挙げます。

curl -v -X POST \
  -H "Authorization: Basic {BASE64_ENCODED_APPID_AND_APPKEY}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/vnd.kii.OnboardingWithVendorThingIDByThing+json" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/onboardings" \
  -d '{
    "vendorThingID": "{VENDOR_THING_ID}",
    "thingPassword": "{THING_PASSWORD}",
    "thingType": "{THING_TYPE}",
    "thingProperties": {
      "{PROPERTY_NAME}": "{PROPERTY_VALUE}"
    }
  }'

リクエストもレスポンスも、以下の点を除き基本的には vendorThingID を使う場合 と同様です。

  • Basic 認証 を使用します。{BASE64_ENCODED_APPID_AND_APPKEY} には AppID と任意の値をコロン(:) で連結した文字列を Base64 エンコードしたものを入れてください。Thing のトークンを使用することもできます。
  • Content-Type は "application/vnd.kii.OnboardingWithVendorThingIDByThing+json" を指定します。
  • "owner" フィールドは指定しないでください。

thingID を使う場合

Thing 自身が thingID を使って初期登録を行う例を以下に挙げます。

curl -v -X POST \
  -H "Authorization: Basic {BASE64_ENCODED_APPID_AND_APPKEY}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/vnd.kii.OnboardingWithThingIDByThing+json" \
  "https://api-jp.kii.com/thing-if/apps/{APP_ID}/onboardings" \
  -d '{
    "thingID": "{THING_ID}",
    "thingPassword": "{THING_PASSWORD}"
  }'

リクエストもレスポンスも、以下の点を除き基本的には vendorThingID を使う場合 と同様です。

  • Basic 認証 を使用します。{BASE64_ENCODED_APPID_AND_APPKEY} には AppID と任意の値をコロン(:) で連結した文字列を Base64 エンコードしたものを入れてください。Thing のトークンを使用することもできます。
  • 指定した thingID を持つ Thing がすでに存在する必要があります。
  • 対象となる Thing はすでに存在するため、"thingType" や "thingProperties" フィールドの指定は不要です。指定した場合は無視されます。
  • Content-Type は "application/vnd.kii.OnboardingWithThingIDByThing+json" を指定します。
  • "owner" フィールドは指定しないでください。