このドキュメントでは、スマートホーム デバイスの公式にサポートされているエラーと例外を示します。このようなエラーや例外コードは、インテント レスポンス内、または実装済みの場合は通知内を使用することで、特定のコマンドやデバイスの状態に関連する問題をエンドユーザーに通知できます。レスポンスに不適切な形式や 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 : <デバイス> <水漏れ>。