Автоматизация действий с помощью приложений для Android

Автоматизации, управляемые приложением, создаются программным способом партнерским приложением с помощью Automation API.

Такие программы не будут показываться в списке Google Home app (GHA).

Информацию, которая записывается в ленту действий API Home при запуске автоматизации, управляемой приложением, можно настроить или полностью отключить. Например, если партнер предлагает брендированный сервис под названием "Арктика", реализованный с помощью автоматизации, управляемой приложением, он может указать, что при выполнении такой автоматизации в ленте действий будет упоминаться сервис "Арктика", а не название автоматизации.

Как создать автоматизацию, управляемую приложением

Чтобы создать автоматизацию, управляемую приложением, выполните следующие действия:

  1. Создайте логическую схему автоматизации.

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

    val myAutomationConfig = AppManagedAutomationConfig(
        managingAppDisplayNames = listOf(
            LocalizedText(text = "My custom SmartApp", locale = "en-US"),
            LocalizedText(text = "Mi aplicación personalizada", locale = "es-MX")
        )
    )
    
  3. Создайте экземпляр автоматизации с помощью Automation.Builder.

    1. Укажите name для автоматизации.
    2. Установите для параметра client_feature_group значение "APP_MANAGED_EXECUTION_REPORTED", если вы хотите, чтобы история выполнения автоматизации отображалась на вкладке "Действия" в GHA, или "APP_MANAGED_EXECUTION_UNREPORTED", если вы не хотите, чтобы история выполнения автоматизации отображалась.
    3. Укажите automationGraph.
    4. Необязательно. Настройте автоматизацию appManagedAutomationConfig (см. шаг 2).
  4. Наконец, вызовите build(), чтобы создать экземпляр Automation.

Ниже приведен пример всей процедуры:

import com.google.home.automation.Automation
import com.google.home.automation.SequentialNode
import com.google.home.automation.StarterNode
import com.google.home.automation.ActionNode
import com.google.home.HomeDevice
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffLightDevice
import com.google.home.matter.standard.MotionDetection
import com.google.home.matter.standard.OccupancySensorDevice

 HomeDevice mySensor = home.devices().list().first { device -> device.has(OccupancySensorDevice) }
 HomeDevice myLight = home.devices().list().first { device -> device.has(OnOffLightDevice) }

// 1. Create logic graph
val starterNode = StarterNode(
    device = mySensor,
    trait = OccupancySensing
)

val actionNode = ActionNode(
    device = myLight,
    command = OnOff.on()
)

// Bundle nodes into a sequential graph
val automationGraph = SequentialNode(
    nodes = listOf(starterNode, actionNode)
)

 // 2. Build the AppManagedAutomationConfig with the localized app names
val AppManagedAutomationConfig myAutomationConfig = AppManagedAutomationConfig(
        managingAppDisplayNames: [
          LocalizedText(text: "My Custom SmartApp", locale: "en-US"),
          LocalizedText(text: "Mi aplicación personalizada", locale: "es-MX")
        ]
    )

// 3. Build the Automation with both configuration and the graph
val myAutomation = Automation.Builder()
    .setName("Motion Activated Light")                         // a. Set the name
    .setClientFeatureGroup("APP_MANAGED_EXECUTION_UNREPORTED") // b. set the clientFeatureGroup
    .setAutomationGraph(automationGraph)                       // c. Attach the logic graph
    .setAppManagedAutomationConfig(myCustomConfig)             // d. Set the automationConfig
    .build() // 4. build the automation