Google Home Developer Center へようこそ。スマートホーム アクションの開発方法を学習できます。注: アクションの構築は、引き続き Actions Console で行います。

エラーと例外

このドキュメントでは、スマートホーム デバイスの公式にサポートされているエラーと例外を示します。このようなエラーや例外コードは、インテント レスポンス内、または実装済みの場合は通知内を使用することで、特定のコマンドやデバイスの状態に関連する問題をエンドユーザーに通知できます。レスポンスに不適切な形式や errorCode が含まれている場合、Google アシスタントは「デバイスは現在利用できません」のような一般的なエラー メッセージを表示します。

エラー

問題により実行リクエストまたはクエリ リクエストが失敗した場合は、エラーコードが返されます。たとえば、ドアのロックが妨害されていて、ロックまたはロック解除できない場合は、この状態に関するエラーをユーザーに返す必要があります。

エラーコードは、デバイスレベルまたはグローバル レベルでアタッチできます。たとえば、ユーザーが 1 つのプロバイダの多くのライトを持っていて、ハブによって制御されている場合、ユーザーがすべてのライトをオフにすると、プロバイダはデバイスレベルのエラー(1 つのライトがオフラインの場合)またはグローバル レベルのエラー(ハブ全体がオフラインでライトを制御できない場合)を返すことがあります。すべてのデバイスがオフラインの場合は、グローバル レベルのエラーとデバイスレベルのエラーを使用して違いはありません。デバイスがオフラインの場合、deviceOffline エラーコードを返しても、reportState{"online": false} 状態を報告する必要があります。

概要は次のとおりです。

  • グローバル レベルのエラー: レスポンスのすべてのデバイスで同じエラーが表示されます。
  • ローカルレベルのエラー: エラーと成功のケースが混在するレスポンス

グローバル レベルのエラー

次の JSON スニペットは、QUERY または EXECUTE のレスポンスでグローバル レベルのエラーを返す方法を示しています。

ハブによるグローバル レベルのエラー deviceOffline の例は、オフラインです。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

ハブによる inSoftwareUpdate のグローバル レベルのエラーの例を次に示します。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

デバイスレベルのエラー

QUERY レスポンス

次の JSON スニペットは、QUERY レスポンスでデバイスレベルのエラーを返す方法を示しています。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

EXECUTE response

次の JSON スニペットは、EXECUTE レスポンスでデバイスレベルのエラーを返す方法を示しています。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "device-id-2"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      }
    ]
  }
}

エラーがある通知

パーソナル通知

次の JSON スニペットは、事前通知でデバイスレベルのエラーを報告する方法を示しています。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      }
    }
  }
}

フォローアップの回答

次の JSON スニペットは、フォローアップ レスポンスでデバイスレベルのエラーを報告する方法を示しています。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "PLACEHOLDER"
            }
          }
        }
      }
    }
  }
}

エラーリスト

以下のエラーにより、デバイスに関連付けられた TTS が生成されます。

  • aboveMaximumLightEffectsDuration : これは最長時間(1 時間)を超えています。もう一度お試しください。
  • aboveMaximumTimerDuration : <device> を設定できる期間は <time_period> まで
  • actionNotAvailable : 現在その操作は行えません。
  • actionUnavailableWithRunning : <デバイス> <is/are> が現在実行中であるため、変更できません。
  • yetArmed : <デバイス> はすでに監視中です。
  • すでに AtMax です : <device>> <is/are> はすでに最高温度に設定されています。
  • alreadyAtMin : <デバイス> <is/are> はすでに最低温度に設定されています。
  • AlreadyClosed : <device> は <is/are> です。
  • yetDisarmed : <device> は監視解除されています。
  • yetDocked : <device>> はすでに固定されています。
  • AlreadyInState : <device(s)> <is/are> はすでにこの状態です。
  • すでにロックされています : <device>> <is/are> はすでにロックされています。
  • がすでにオフになっています : <デバイス> はすでにオフになっています。
  • すでにオン : <デバイス> はすでにオンです。
  • OpenOpen : <device> は <is/are> をすでに開いています。
  • すでに一時停止されています : <デバイス> すでに一時停止しています。
  • すでに開始されています : <デバイス> はすでに開始されています。
  • すでに停止しています : <デバイス> <is/are> はすでに停止しています。
  • SIM フリー : <device> はすでにロック解除されています。
  • ambiguousZoneName : <device(s)> でどのゾーンに該当するか特定できません。固有の名前をその場所に設定していることを確認してから、もう一度試してください。
  • amountAboveLimit : <デバイス> がサポートできる値を超えています。
  • appLaunchFailed : <デバイス> で <アプリ名> を起動できませんでした。
  • armFailure : <device(s)> を監視状態にできませんでした。
  • armLevelNeeded : <デバイス> に設定するレベルがわかりません。「<デバイス> を <セキュリティを低下> に設定して」または「<デバイス> を <高セキュリティ> に設定」と言ってみてください。
  • authFailure : <デバイス> にアクセスできないようです。アプリで <デバイス / デバイス> がセットアップされていることを確認してみてください。
  • bagFull : <デバイス> <保有/保有> <バッグ/満杯>>。<it/them> を空にしてからもう一度お試しください。
  • UnderMinimumLightEffectsDuration : 最小再生時間(5 分)を下回っています。もう一度お試しください。
  • UnderMinimumTimerDuration : この間、<device> を設定できません。もう一度お試しください。
  • binFull : <device> が <bin または full ビン> を持っています。
  • cancelArmingRestricted : 申し訳ございませんが、<デバイス> のキャンセルをキャンセルできませんでした。
  • cancelTooLate : キャンセルが間に合いませんでした。代わりに <デバイス> またはアプリを使用してください。
  • channelSwitchFailed : チャネル <channel name> に切り替えることができませんでした。しばらくしてからもう一度お試しください。
  • 充電器の問題 : <すみません> <デバイス > <充電器 / 充電器の問題> が<あります>。
  • CommandInsertFailed : <device>(s) のコマンドを処理できません。
  • deadBattery : <デバイス> <バッテリー残量/バッテリー切れ> <保有/搭載> >
  • temperatureOutOfRange : リクエストされた度数が <デバイス> の範囲外です。
  • deviceAlertNeedsAssistance : <デバイス> にアクティブなアラートがあり、<ニーズ> の支援が <必要> である。
  • deviceAtExtremeTemperature : <デバイス> <極限温度> <is/are> で
  • deviceBusy : <デバイス> が、すでになんらかの操作をしているようです。
  • deviceCharging : <デバイス> は充電できないようです(ha_shared.Itstheyre size=$item.devices.total_device_count)
  • deviceClogged : すみません、<device> が詰まっているようです。
  • deviceCurrentlyDispensing : <device(s)> が現在給餌中です。
  • deviceDoorOpen : <デバイス> のドアが開いています。閉じてからもう一度お試しください。
  • deviceHandleClosed : <デバイス> でハンドルが閉じています。開いてからもう一度お試しください。
  • deviceJammingDetected : <デバイス> が故障しています。
  • deviceLidOpen : <デバイス> でカバーが開いています。閉じてからもう一度お試しください。
  • deviceNeedsRepair : <デバイス> <修理が必要>。近くの販売業者に問い合わせてください。
  • deviceNotDocked : すみません、<デバイス> が <ホルダーがない> ようです。<it/them> をドッキングしてから、もう一度お試しください。
  • deviceNotFound : <device> は使用できません。もう一度 <it/them> を設定してみることをおすすめします。
  • deviceNotMounted : <デバイス> が <it/are> マウントされていないため、<device> はその操作を行えません。
  • deviceNotReady : <デバイス> の準備ができていません。
  • deviceStuck : <デバイス> が <is/all> から先に進まなくなり、サポートが必要です。
  • deviceTampered : <デバイス> が<> / すでに改ざんされている。
  • deviceThermalShutdown : すみません、気温が高すぎるか <デバイス> がシャットダウンしたようです。
  • directResponseOnlyUnreachable : <device(s)> がリモート コントロールを <not/don't> サポートしない。
  • disarmFailure : <device(s)> を監視解除できませんでした。
  • disreteOnlyOpenClose : <デバイス> は、開閉のみが可能です。
  • dispenseAmountAboveLimit : <device(s)> はあまり多く給餌できません。
  • dispenseAmountBelowLimit : <device(s)> はこのような少量の給餌はできません。
  • dispenseAmountRemainingExceeded : <device>(s)> に十分な <dispense item>がありません。
  • dispenseFractionalAmountNotSupported : <device> は <dispense item> の分数を取得できません。
  • dispenseFractionalUnitNotSupported : <device> は <dispense item> のその単位の一部をサポートしていません。
  • dispenseUnitNotSupported : <device(s)> は <dispense item> の単位をサポートしていません。
  • doorClosedTooLong : <デバイス> のドアが開けられてからしばらく経っています。ドアを開けて中にものが入っていることを確認してから、もう一度試してください。
  • 緊急ヒートオン : <デバイス> が緊急ヒートモードになっているため、手動で調整する必要があります。
  • failyBattery : <デバイス> <バッテリー/バッテリー> <> / バッテリーが不良 >
  • 広告枠にアクセスできない : <デバイス> に部屋を追加できません。<it/them> を適切な階に移動して、もう一度お試しください。
  • functionNotSupported : 不正解です。<デバイス> はその機能をサポートしていません。
  • GenericDispenseNotSupported : 何を提供したいか知りたいです。アイテムの名前を使ってもう一度お試しください。
  • hardError : エラーが発生したため、スマートホーム デバイスを操作できません。
  • hardError : エラーが発生したため、スマートホーム デバイスを操作できません。
  • inAutoMode : <device> が現在自動モードに設定されています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inAwayMode : <device> が現在、外出モードに設定されています。サーモスタットを操作するには、スマートフォン、タブレット、またはパソコンの Nest アプリを使用して、手動で在宅モードに切り替える必要があります。
  • inDryMode : <デバイス> <is/are> は現在、ドライモードに設定されています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inEcoMode : <デバイス> <is/are> は現在、エコモードに設定されています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inFanOnlyMode : <device> が現在ファン専用モードになっています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inHeatOrCool : <デバイス> が暖房 / 冷房モードになっていない。
  • inHumidifierMode : <デバイス> <is/are> は現在加湿モードになっています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inOffMode : <デバイス> <is/are> は現在オフになっています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inPurifierMode : <デバイス> <is/are> が現在、空気清浄モードに設定されています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inSleepMode : <device> がスリープモードの場合 <is/are>。しばらくしてからもう一度お試しください。
  • inSoftwareUpdate : <デバイス> が現在ソフトウェア アップデート中である。
  • lockFailure : <device> をロックできませんでした。
  • lockState : <デバイス> <is/are> が現在ロックされています。
  • LockToRange : その温度が <デバイス> のロック範囲外になっています。
  • LowBattery : <デバイス> のバッテリー残量が <あり / > です。
  • maxSettingReached : <デバイス> <is/are> はすでに最も高い設定になっています。
  • maxSpeedReached : <デバイス> <is/are> はすでに最高速度に設定されています。
  • minSettingReached : <デバイス> <is/are> はすでに最も低い設定になっています。
  • minSpeedReached : <デバイス> <is/are> はすでに最低速度に設定されています。
  • monitoringServiceConnectionLost : <device> が Monitoring サービスとの接続を <has/have> しました。
  • needAttachment : 申し訳ありません。<device> が必要な添付ファイルがないようです。取り付けてから、もう一度試してください。
  • needBin : すみません、<device> がゴミ箱にありません。取り付けてから、もう一度試してください。
  • needPads : <device(s)> <need(s)> の新しいパッド。
  • needSoftwareUpdate : <デバイス> <ニーズ> のソフトウェア アップデート。
  • needWater : <デバイス> <ニーズ> 水
  • networkProfileNotRecognized : 申し訳ございませんが、<デバイス> で <ネットワーク プロファイル> を認識できません。
  • networkSpeedTestInProgress : <network> <speed/speeds>> をテスト中です。
  • noAvailableApp : <アプリ名> は使用できないようです。
  • noAvailableChannel : すみません、チャンネル <channel name> が利用できないようです。
  • noChannelSubscription : 現在、<channel name> チャンネルに登録していません。
  • noTimerExists : <device> にタイマーが設定されていません。
  • notSupported : そのモードは <デバイス> では使用できません。
  • obstructionDetected : <device(s)> が障害物を検出しました。
  • オフライン , deviceOffline : 申し訳ありませんが、現時点では <デバイス> はご利用いただけません。
  • onRequiresMode : 有効にするモードを指定してください。
  • パスフレーズが正しくない : PIN が正しくないようです。
  • percentOutOfRange : <device> を <percent> に設定することはできません。
  • pincorrect : (passphrasecorrect)
  • 雨検出 : 雨が検出されたため、<device> を開けませんでした。
  • rangeTooClose : <デバイス> の暖房・冷房範囲が近すぎます。遠い温度を選択してください。
  • relinkRequired : お使いのアカウントでエラーが発生しました。Google Home アプリまたはアシスタント アプリを使用して、<デバイス> を再リンクしてください。
  • remoteSetDisabled :
    • オプション パラメータ errorCodeReason
    • currentlyArmed - すでにセキュリティシステムにより監視中です。変更は <device> かアプリから行ってください。
    • remoteUnlockNotAllowed - リモートで <デバイス> のロックを解除できません。
    • remoteControlOff - その操作は現在無効です。<デバイス> でリモコンを有効にしてから、もう一度お試しください。
    • childSafetyModeActive - お子様の安全モードが有効になっている場合、<デバイス> に対してその操作は無効になります。
  • roomOnDifferentFloors : <device> は別の階にいるため、それらの部屋にアクセスできません。
  • SafetyShutOff : <デバイス> が安全遮断モードになっているので、手動で調整する必要があります。
  • sceneCannotBeApplied : 申し訳ありませんが、<device> を適用できません。
  • securityRestriction : <device> にセキュリティ制限が <あり/あります>。
  • softwareUpdateNotAvailable : <デバイス> で利用できるソフトウェア アップデートはありません。
  • startRequiresTime : これを行うには、<device> の実行期間を指定してください。
  • coolCoolingDown : <device> が引き続き冷却されます。
  • tillWarmingUp : <デバイス> がウォームアップ中です。
  • streamUnavailable : 現在、<デバイス> からストリームを利用できないようです。
  • streamUnplayable : 現在、<device> からのストリームを再生できません。
  • tankEmpty : <デバイス> <保有するタンク> / 空のタンク>。<it/them> に入力し、もう一度お試しください。
  • targetAlreadyReached :
  • timeValueOutOfRange : <device>(s)> に指定した期間は設定できません。
  • manyManyFailedAttempts : 試行回数が上限を超えました。デバイスのアプリでこの操作を完了してください。
  • transientError : すみません、<device> の操作中にエラーが発生しました。もう一度お試しください。
  • offOff , deviceTurnedOff : <device(s)> <is/are> は現在オフになっています。
  • notToLocateDevice : <デバイス> が見つかりませんでした。
  • UnknownFoodPreset : <device(s)> は食品のプリセットをサポートしていません。
  • UnlockFailure : <device(s)> をロック解除できませんでした。
  • unpausableState : <device(s)> を一時停止できません。
  • userCancelled : OK
  • valueOutOfRange : <device(s)> をその温度に設定することはできません。

例外

コマンドに関連する問題やアラートがある場合は、例外を返す必要があります。このコマンドは成功または失敗する場合があります。

コマンドが成功した場合(ステータス = 「SUCCESS」)、StatusReport トレイト(ターゲット以外のデバイスの場合)を使用して、または適切な exceptionCode(ターゲット デバイスの場合)を返すことにより、例外を報告します。

たとえば、乾燥機のふきだしが満杯の場合もユーザーは乾燥機を起動できますが、この状態を警告することもできます。同様に、デバイスのバッテリー残量が少ない場合でも、コマンドを実行できますが、デバイスのバッテリー残量が少なくなることをユーザーに知らせる必要があります。

例外が原因でコマンドが失敗した場合は、ステータスが [EXCEPTIONS] である必要があります。例外は StatusReport トレイトを使用して報告する必要があります。

ターゲット デバイスに関する非ブロッキング例外(SUCCESS)

以下は、ドアをロックする例です。

玄関のロックのバッテリー残量が少なくなっています。玄関のロック。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

StatusReport を使用した別のデバイスに関する非ブロッキング例外(SUCCESS)

これは、セキュリティ システムでの監視の例です。はい、セキュリティ システムでの監視を有効にします。正面の窓が開いています。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isArmed": true,
        "currentArmLevel": "L2",
        "currentStatusReport": [{
          "blocking": false,
          "deviceTarget": "sensor_id1",
          "priority": 0,
          "statusCode": "deviceOpen"
        }]
      }
    }]
  }
}

StatusReport を使用して別のデバイスに関する例外をブロックする

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "on": true,
        "online": true,
        "status": "EXCEPTIONS",
        "currentStatusReport": [{
            "blocking": true,
            "deviceTarget": "device-id-1",
            "priority": 0,
            "statusCode": "lowBattery"
          },
          {
            "blocking": true,
            "deviceTarget": "front_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "deviceTarget": "back_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          }
        ]
      }
    }
  }
}

例外リスト

以下の例外では、デバイスに関連付けられた TTS が生成されます。

  • bagFull : <デバイス> <保有/保有> <バッグ/満杯>>。<it/them> を空にしてからもう一度お試しください。
  • binFull : <device> が <bin または full ビン> を持っています。
  • curveMonoxideDetected : <家の名前> で一酸化炭素が検出されました。
  • deviceAtExtremeTemperature : <デバイス> <極限温度> <is/are> で
  • deviceJammingDetected : <デバイス> が故障しています。
  • deviceMoved : <device> を <wes/were> に移動しました。
  • deviceOpen : <デバイス> <is/are> を開いています。
  • deviceTampered : <デバイス> が<> / すでに改ざんされている。
  • deviceUnplugged : <device> を <is/are> 電源から外しました。
  • 広告枠にアクセスできない : <デバイス> に部屋を追加できません。<it/them> を適切な階に移動して、もう一度お試しください。
  • HardwareFailure : <デバイス> のハードウェアに関する問題が<has/have>。
  • inSoftwareUpdate : <デバイス> が現在ソフトウェア アップデート中である。
  • isBypassed : <device> は現在バイパスされています<
  • LowBattery : <デバイス> のバッテリー残量が <あり / > です。
  • motionDetected : <device>> <detect(s)> モーション。
  • needPads : <device(s)> <need(s)> の新しいパッド。
  • needSoftwareUpdate : <デバイス> <ニーズ> のソフトウェア アップデート。
  • needWater : <デバイス> <ニーズ> 水
  • networkJammingDetected : <デバイス> へのホーム ネットワーク接続が正常に機能していません。
  • noIssuesReported : <device(s)> から問題の報告はありませんでした。
  • roomOnDifferentFloors : <device> は別の階にいるため、それらの部屋にアクセスできません。
  • runCycleFinish : <device> は <has/have> 実行を終了しました。
  • securityRestriction : <device> にセキュリティ制限が <あり/あります>。
  • smokeDetected : <家の名前> で煙を検出しました。
  • tankEmpty : <デバイス> <保有するタンク> / 空のタンク>。<it/them> に入力し、もう一度お試しください。
  • UsingCellularBackup : <デバイス> <is/are>(遠隔バックアップを使用)
  • waterLeakDetected : <デバイス> <水漏れ>。