Ошибки и исключения

В этом документе перечислены официально поддерживаемые ошибки и исключения для устройств «умного дома». Пожалуйста, используйте эти коды ошибок и исключений в ответе на намерение или в уведомлениях , если вы их реализовали, чтобы Google Assistant оповещал конечных пользователей о проблемах, связанных с данной командой или состоянием устройства. Если ответ содержит неправильное форматирование или errorCode , Google Assistant выдает пользователям общее сообщение об ошибке, например, «Извините, устройство сейчас недоступно».

Ошибки

Вы должны вернуть код ошибки, когда проблема приводит к сбою запроса на выполнение или запрос. Например, если дверной замок заклинило и его невозможно запереть или разблокировать, пользователю должна быть возвращена ошибка об этом состоянии.

Коды ошибок могут быть прикреплены на уровне устройства или на глобальном уровне. Например, если у пользователя много ламп от одного поставщика, и они управляются концентратором, когда пользователь просит выключить все его лампы, поставщик может вернуть ошибку на уровне устройства, если один из них отключен, или ошибку на глобальном уровне, если весь концентратор отключен и ни один из них не может управляться. Если все устройства отключены, нет никакой разницы между использованием ошибок на глобальном уровне или на уровне устройства.

В итоге:

  • Ошибка глобального уровня: все устройства в ответе имеют одну и ту же ошибку
  • Ошибка локального уровня: неоднозначная реакция со случаями ошибок и успехов

Ошибки глобального уровня

Следующий фрагмент 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"
  }
}

Ошибки на уровне устройства

ЗАПРОС ответ

Следующий фрагмент JSON показывает, как возвращаются ошибки на уровне устройства в ответе QUERY.

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

ВЫПОЛНИТЬ ответ

Следующий фрагмент 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 : Я могу установить <устройства> только на <период времени>
  • actionNotAvailable : Извините, сейчас я не могу этого сделать.
  • actionUnavailableWhileRunning : <устройства> в данный момент работают, поэтому я не могу внести никаких изменений.
  • alreadyArmed : <устройство(а)> уже <вооружено>.
  • alreadyAtMax : <устройство(а)> уже установлено на максимальную температуру.
  • alreadyAtMin : <устройство(а)> уже установлено на минимальную температуру.
  • alreadyClosed : <устройство(а)> уже закрыто.
  • alreadyDisarmed : <устройство(а)> уже <снято с охраны>.
  • alreadyDocked : <устройство(а)> уже <пристыковано>.
  • alreadyInState : <устройство(а)> <уже находится> в этом состоянии.
  • alreadyLocked : <устройство(а)> уже заблокировано.
  • alreadyOff : <устройство(а)> уже выключено.
  • alreadyOn : <устройство(а)> уже включено.
  • alreadyOpen : <устройство(а)> уже открыто.
  • alreadyPaused : <устройство(а)> уже приостановлено.
  • alreadyStarted : <устройство(а)> уже запущено.
  • alreadyStopped : <устройство(а)> уже остановлено.
  • alreadyUnlocked : <устройство(а)> уже разблокировано.
  • ambiguousZoneName : Извините, <device(s)> не может определить, какую зону вы имеете в виду. Убедитесь, что ваши зоны имеют уникальные имена, и попробуйте еще раз.
  • amountAboveLimit : Это больше, чем может поддерживать <устройство(а)>.
  • appLaunchFailed : Извините, не удалось запустить <имя приложения> на <устройствах>.
  • armFailure : <устройства> не удалось включить.
  • armLevelNeeded : Я не уверен, какой уровень установить для <устройства(ов)>. Попробуйте сказать "Установить <устройства(ов)> на <низкий уровень безопасности>" или "Установить <устройства(а)> на <высокий уровень безопасности>"
  • authFailure : Кажется, я не могу связаться с <device(s)>. Попробуйте проверить приложение, чтобы убедиться, что ваше <device/devices> полностью настроено.
  • bagFull : <устройство(а)> <имеет/имеют> <полный мешок/полные мешки>. Пожалуйста, опорожните <его/их> и попробуйте еще раз.
  • belowMinimumLightEffectsDuration : Это меньше минимальной продолжительности в 5 минут. Попробуйте еще раз.
  • belowMinimumTimerDuration : Я не могу установить <device(s)> на такое короткое время. Попробуйте еще раз.
  • binFull : <устройство(а)> <имеет/имеют> <полный контейнер/полные контейнеры>.
  • cancelArmingRestricted : Извините, мне не удалось отменить постановку на охрану <устройства(ов)>.
  • cancelTooLate : Извините, слишком поздно отменять. Используйте вместо этого <device(s)> или приложение.
  • channelSwitchFailed : Извините, не удалось переключиться на канал <имя канала>. Попробуйте еще раз позже.
  • chargeerIssue : Извините, похоже, что <устройство(а)> <имеет/имеют> <проблему с зарядным устройством/проблемы с зарядным устройством>.
  • commandInsertFailed : Невозможно обработать команды для <устройств(а)>.
  • deadBattery : <устройство(а)> <имеет/имеют> <разряженную батарею/разряженные батареи>.
  • degreesOutOfRange : Запрошенные градусы выходят за пределы диапазона для <устройств(а)>.
  • deviceAlertNeedsAssistance : <устройство(а)> <имеет/имеют> активное оповещение и <нуждаются(ются)> в вашей помощи.
  • deviceAtExtremeTemperature : <устройство(а)> <находится(ются)> при <экстремальной температуре/экстремальных температурах>.
  • deviceBusy : Извините, похоже, <устройство(а)> уже что-то делает прямо сейчас.
  • deviceCharging : Извините, похоже, <устройства> не могут этого сделать, поскольку (ha_shared.ItsTheyre size=$item.devices.total_device_count) заряжаются.
  • deviceClogged : Извините, похоже, <устройство(а)> засорено.
  • deviceCurrentlyDispensing : <устройство(а)> уже что-то выдает прямо сейчас.
  • deviceDoorOpen : Дверь открыта на <устройстве(ах)>. Закройте ее и попробуйте еще раз.
  • deviceHandleClosed : Дескриптор закрыт на <device(s)>. Откройте его и попробуйте еще раз.
  • deviceJammingDetected : <устройство(а)> <заклинило(и)>.
  • deviceLidOpen : Крышка открыта на <устройстве(ах)>. Закройте ее и повторите попытку.
  • deviceNeedsRepair : <device(s)> <need(s)> для ремонта. Обратитесь к местному сервисному дилеру.
  • deviceNotDocked : Извините, похоже, <устройства> <не/не> пристыкованы. Пожалуйста, пристыкуйте <их/его> и попробуйте еще раз.
  • deviceNotFound : <устройство(а)> <недоступно>. Попробуйте настроить <его/их> еще раз.
  • deviceNotMounted : Извините, похоже, <устройства> не могут этого сделать, поскольку <они> не смонтированы.
  • deviceNotReady : <устройство(а)> <не готово/не готовы>.
  • deviceStuck : <устройство(а)> <застряло/застряли> и нуждается в вашей помощи.
  • deviceTampered : <устройство(а)> было <подвергнуто/подвергнуто> несанкционированному вмешательству.
  • deviceThermalShutdown : Извините, похоже, <устройство(а)> отключилось из-за экстремальных температур.
  • directResponseOnlyUnreachable : <устройство(а)> <не/не> поддерживает удаленное управление.
  • disarmFailure : <устройство(а)> не удалось отключить.
  • discretOnlyOpenClose : Извините, <устройства> можно открыть или закрыть только полностью.
  • dispenseAmountAboveLimit : <устройство(а)> не может выдать такую ​​большую сумму.
  • dispenseAmountBelowLimit : <устройство(а)> не может выдать такую ​​маленькую сумму.
  • dispenseAmountRemainingExceeded : <устройства> не имеют достаточного количества <предметов выдачи> для этого.
  • dispenseFractionalAmountNotSupported : <устройство(а)> не может выдавать дробные части <предмета выдачи>.
  • dispenseFractionalUnitNotSupported : <устройство(а)> не поддерживает дробные части этой единицы для <элемента выдачи>.
  • dispenseUnitNotSupported : <устройство(а)> не поддерживает эту единицу для <элемента выдачи>.
  • doorClosedTooLong : Прошло некоторое время с тех пор, как дверь на <device(s)> была открыта. Пожалуйста, откройте дверь, убедитесь, что внутри что-то есть, и попробуйте еще раз.
  • emergencyHeatOn : <устройства> <находятся> в режиме аварийного обогрева, поэтому <их> придется отрегулировать вручную.
  • faultyBattery : <устройство(а)> <имеет/имеют> <неисправную батарею/неисправные батареи>.
  • floorUnreachable : <device(s)> не может достичь этой комнаты. Пожалуйста, переместите <it/them> на нужный этаж и попробуйте еще раз.
  • functionNotSupported : На самом деле, <устройство(а)> <не поддерживает/не поддерживает> эту функциональность.
  • genericDispenseNotSupported : Мне нужно знать, что вы хотите выдать. Попробуйте еще раз с названием товара.
  • hardError : Извините, что-то пошло не так, и я не могу управлять вашим домашним устройством.
  • hardError : Извините, что-то пошло не так, и я не могу управлять вашим домашним устройством.
  • inAutoMode : <устройства> в настоящее время установлены в автоматический режим. Чтобы изменить температуру, вам нужно переключить <их> в другой режим.
  • inAwayMode : <устройства> <в настоящее время установлены в режим отсутствия. Чтобы управлять термостатом, вам нужно вручную переключить его в режим «дом» с помощью приложения Nest на телефоне, планшете или компьютере.
  • inDryMode : <device(s)> <в настоящее время установлен в режим сушки. Чтобы изменить температуру, вам нужно переключить <it/them> в другой режим.
  • inEcoMode : <устройство(а)> в настоящее время <настроено> на эко-режим. Чтобы изменить температуру, вам нужно переключить <его/их> в другой режим.
  • inFanOnlyMode : <устройства> в настоящее время установлены в режим «только вентилятор». Чтобы изменить температуру, вам нужно переключить <их> в другой режим.
  • inHeatOrCool : <устройство(а)> <не находится/не находятся> в режиме нагрева/охлаждения.
  • inHumidifierMode : <устройства> в настоящее время установлены в режим увлажнителя. Чтобы изменить температуру, вам нужно переключить <их> в другой режим.
  • inOffMode : <устройство(а)> <в данный момент выключено>. Чтобы изменить температуру, вам нужно переключить <его/их> в другой режим.
  • inPurifierMode : <device(s)> <в настоящее время установлен в режим очистителя. Чтобы изменить температуру, вам нужно переключить <it/them> в другой режим.
  • inSleepMode : <устройство(а)> <находится/находятся> в спящем режиме. Повторите попытку позже.
  • inSoftwareUpdate : <устройство(а)> в настоящее время находится в состоянии обновления программного обеспечения.
  • lockFailure : <устройство(а)> не удалось заблокировать.
  • lockedState : <устройство(а)> в данный момент заблокировано.
  • lockedToRange : эта температура находится за пределами заблокированного диапазона на <устройствах>.
  • lowBattery : <устройство(а)> <имеет/имеют> низкий уровень заряда батареи.
  • maxSettingReached : <устройство(а)> уже установлено на максимальное значение.
  • maxSpeedReached : <устройство(а)> уже установлено на максимальную скорость.
  • minSettingReached : <устройство(а)> уже установлено на минимальное значение.
  • minSpeedReached : <устройство(а)> уже установлено на минимальную скорость.
  • monitoringServiceConnectionLost : <устройство(а)> <потеряло(ли)> соединение со службой мониторинга.
  • needsAttachment : Извините, похоже, <device(s)> <is/are> не хватает необходимого вложения. Замените его и попробуйте еще раз.
  • needsBin : Извините, похоже, <device(s)> <is/are> отсутствует bin. Пожалуйста, замените его и попробуйте еще раз.
  • needsPads : <устройство(а)> <нужно(ы)> новые планшеты.
  • needsSoftwareUpdate : <устройство(а)> <нужно(ы)> обновление программного обеспечения.
  • needsWater : <устройство(а)> <потребность(и)> вода.
  • networkProfileNotRecognized : Извините, я не распознаю «<сетевой профиль>» на <устройствах>.
  • networkSpeedTestInProgress : Я уже тестирую <сеть> <скорость/скорости>>.
  • noAvailableApp : Извините, похоже, <имя приложения> недоступно.
  • noAvailableChannel : Извините, похоже, канал <название канала> недоступен.
  • noChannelSubscription : Извините, в данный момент вы не подписаны на канал <название канала>.
  • noTimerExists : Извините, похоже, на <устройствах> не установлены таймеры.
  • notSupported : Извините, этот режим недоступен для <устройств(а)>.
  • obstructionDetected : <устройство(а)> обнаружило препятствие.
  • offline , deviceOffline : Извините, похоже, <устройство(а)> в данный момент недоступно.
  • onRequiresMode : Укажите, какой режим вы хотите включить.
  • passphraseIncorrect : Извините, похоже, этот PIN-код неверный.
  • percentOutOfRange : Извините, я не могу установить <устройство(а)> на <процент>.
  • pinIncorrect : (парольная фразаIncorrect)
  • rainDetected : Я не открывал <устройства>, потому что был обнаружен дождь.
  • rangeTooClose : Они слишком близки для диапазона Heat-Cool для <device(s)>. Выберите температуры, которые находятся дальше друг от друга.
  • relinkRequired : Извините, похоже, что-то пошло не так с вашим аккаунтом. Используйте Google Home или Assistant App для повторной привязки <device(s)>.
  • remoteSetDisabled :
    • Необязательный параметр errorCodeReason
    • currentlyArmed - Извините, поскольку охрана уже включена, вам необходимо использовать <устройство(а)> или приложение, чтобы внести какие-либо изменения.
    • remoteUnlockNotAllowed - Извините, я не могу разблокировать <устройство(а)> удаленно.
    • remoteControlOff - Это действие в настоящее время отключено. Включите удаленное управление на <устройствах(ах)> и повторите попытку.
    • childSafetyModeActiveэто действие отключено для <устройств(а)>, пока активен режим безопасности детей.
  • RoomsOnDifferentFloors : <устройства> не могут связаться с этими комнатами, поскольку они находятся на разных этажах.
  • safetyShutOff : <устройство(а)> <находится(ются)> в режиме безопасного отключения, поэтому <его/их> придется отрегулировать вручную.
  • sceneCannotBeApplied : Извините, <устройства> не могут быть применены.
  • securityRestriction : <устройство(а)> <имеет/имеют> ограничение безопасности.
  • softwareUpdateNotAvailable : К сожалению, для <устройств(а)> нет доступных обновлений программного обеспечения.
  • startRequiresTime : Для этого вам нужно будет сообщить мне, как долго вы хотите запускать <устройство(а)>.
  • stillCoolingDown : <устройство(а)> все еще остывает.
  • stillWarmingUp : <устройство(а)> все еще прогревается.
  • streamUnavailable : Извините, похоже, поток в настоящее время недоступен с <устройств(а)>.
  • streamUnplayable : Извините, в данный момент я не могу воспроизвести поток с <устройства(ов)>.
  • tankEmpty : <устройство(а)> <имеет/имеют> <пустой бак/пустые баки>. Пожалуйста, заполните <его/их> и попробуйте еще раз.
  • targetAlreadyReached : Извините, похоже, это уже текущая температура.
  • timerValueOutOfRange : <устройство(а)> не может быть установлено на такой промежуток времени.
  • tooManyFailedAttempts : Извините, слишком много неудачных попыток. Пожалуйста, перейдите в приложение вашего устройства, чтобы завершить это действие.
  • transientError : Извините, что-то пошло не так при управлении <device(s)>. Попробуйте еще раз.
  • turnOff , deviceTurnedOff : <устройство(а)> <выключено/выключены> прямо сейчас.
  • unableToLocateDevice : Мне не удалось найти <устройство(а)>.
  • unknownFoodPreset : <устройство(а)> не поддерживает эту предустановку еды.
  • unlockFailure : <устройство(а)> не удалось разблокировать.
  • unpausableState : <устройство(а)> в данный момент не может быть приостановлено.
  • пользовательОтменено : ок
  • valueOutOfRange : <устройство(а)> не может быть установлено на эту температуру.

Онлайн и офлайн отчетность о состоянии

Если устройство находится в автономном режиме, вы должны сообщить об этом для отчета о состоянии в течение пяти минут поведения устройства. И наоборот, когда устройство возвращается в состояние онлайн, вы должны сообщить для Report State в течение пяти минут поведения устройства. Всякий раз, когда устройство возвращается в сеть, партнер должен сообщать все текущие состояния устройства с помощью reportStateAndNotification API. Этот пример показывает, что тип устройства light находится в сети, и сообщает все текущие состояния устройства.
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

Исключения

Вы должны возвращать исключение, когда есть проблема или оповещение, связанное с командой. Команда может быть выполнена успешно или неудачно.

Если команда выполнена успешно (статус = «SUCCESS»), сообщите об исключениях с помощью свойства StatusReport (для устройств, отличных от целевого), или вернув соответствующий exceptionCode (для целевого устройства).

Например, если экран ворса сушилки заполнен, пользователь все равно может запустить сушилку, но вы можете предупредить его об этом состоянии. Аналогично, когда у устройства низкий заряд батареи, который не пуст, вы все равно можете выполнить команду, но должны сообщить ему, что батарея устройства разряжена.

Если команда не выполнена из-за исключений, статус должен быть «ИСКЛЮЧЕНИЯ», а исключения должны быть сообщены с помощью свойства 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"
      }
    }]
  }
}

Неблокируемое исключение (SUCCESS) о другом устройстве с использованием StatusReport

Этот пример для включения системы безопасности: Хорошо, включаю систему безопасности. Переднее окно открыто.

{
  "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 : <устройство(а)> <имеет/имеют> <полный мешок/полные мешки>. Пожалуйста, опорожните <его/их> и попробуйте еще раз.
  • binFull : <устройство(а)> <имеет/имеют> <полный контейнер/полные контейнеры>.
  • carbonMonoxideDetected : В <название дома> обнаружен угарный газ.
  • deviceAtExtremeTemperature : <устройство(а)> <находится(ются)> при <экстремальной температуре/экстремальных температурах>.
  • deviceJammingDetected : <устройство(а)> <заклинило(и)>.
  • deviceMoved : <устройство(а)> <было/были> перемещено.
  • deviceOpen : <устройство(а)> <открыто>.
  • deviceTampered : <устройство(а)> было <подвергнуто/подвергнуто> несанкционированному вмешательству.
  • deviceUnplugged : <устройство(а)> <отключено/отсоединены>.
  • floorUnreachable : <device(s)> не может достичь этой комнаты. Пожалуйста, переместите <it/them> на нужный этаж и попробуйте еще раз.
  • hardwareFailure : <устройство(а)> <имеет/имеют> проблему с оборудованием.
  • inSoftwareUpdate : <устройство(а)> в настоящее время находится в состоянии обновления программного обеспечения.
  • isBypassed : <устройства> в настоящее время обойдены.
  • lowBattery : <устройство(а)> <имеет/имеют> низкий уровень заряда батареи.
  • motionDetected : <устройство(а)> <обнаружено(ы)> движение.
  • needsPads : <устройство(а)> <нужно(ы)> новые планшеты.
  • needsSoftwareUpdate : <устройство(а)> <нужно(ы)> обновление программного обеспечения.
  • needsWater : <устройство(а)> <потребность(и)> вода.
  • networkJammingDetected : подключение к домашней сети <устройствам> работает неправильно.
  • noIssuesReported : <устройства> не сообщили об ошибках.
  • RoomsOnDifferentFloors : <устройства> не могут связаться с этими комнатами, поскольку они находятся на разных этажах.
  • runCycleFinished : <устройство(а)> <завершило(ли) работу>.
  • securityRestriction : <устройство(а)> <имеет/имеют> ограничение безопасности.
  • smokeDetected : В <название дома> обнаружен дым.
  • tankEmpty : <устройство(а)> <имеет/имеют> <пустой бак/пустые баки>. Пожалуйста, заполните <его/их> и попробуйте еще раз.
  • usingCellularBackup : <устройство(а)> <использует(ют)> сотовую связь.
  • waterLeakDetected : <устройство(а)> <обнаружено(ы)> утечка воды.