スクリプト エディタで自動化スクリプトを作成する

スクリプト エディタを使用すると、Google Home for web または Google Home アプリで高度な家族のルーティンを作成するための独自の自動化を記述できます。スクリプトによる自動化を記述するには、YAML スクリプト言語、スクリプトの構成方法、スクリプトを構成するコンポーネントの使用方法について、いくつかの基本的な知識が必要です。

スクリプト エディタは現在、パブリック プレビューとして提供されています。スクリプト エディタには、パブリック プレビューに登録した後、Google Home for web、または Google Home モバイルアプリからアクセスできます。

スクリプト エディタで自動化を作成する方法について詳しくは、以下のリンク先をご覧ください。

スクリプトによる自動化の記述に関するその他の演習スクリプトの例

Codelab にアクセス
重要: これらのルーティンが実行されるタイミングは、家のメンバー全員が確認できます。ルーティンは便利さのみを目的にしています。安全性やセキュリティを重視すべき用途では使用しないでください。開始または停止に失敗した場合にけがや危害につながる可能性があるルーティンは作成しないでください。ルーティンが正しく機能するには、良好なインターネット環境、Wi-Fi のほか、ルーティンの実行に必要なデバイスを製造しているサードパーティおよび Google が提供するサービスへのアクセスが必要です。ルーティンは機能しないこともあり、ルーティンが正しく実行されなかったことによって損害や損失が生じても、Google は一切の責任を負いません。

YAML スクリプト言語の基本

スクリプト エディタでは、柔軟性の高いスクリプト言語の YAML を使用して、命令を 1 行ずつ入力し、デバイスで自動化したいアクションと実行するタイミングを指定できます。この命令は、Key-Value ペアの形式で記述します。

Key-Value ペア

YAML は、一連の Key-Value ペアとして記述します。

name: TV on lights off

この例では、キー nameTV on lights off です。

キーは基本的に、使用する要素のキーワードです。各キーは一意にする必要がありますが、キーの順序は重要ではありません。Key-Value ペアは 1 行に 1 つずつ記述します。

キーに関連付けるには、いくつかのデータ型を使用できます。

データ型

プリミティブ

プリミティブ データ型には、スクリプト エディタでサポートされているすべての基本的なデータ型が含まれています。

基本の形式 値のタイプ
Bool
  • true
  • false
Number 整数または 10 進数
String

書式なしテキスト

文字列値を引用符で囲う必要があるのは、文字列値が [{"'、または # で始まる場合、もしくは文字列値に含まれるコロンの後に 1 つか 2 つスペースが挿入されている場合のみです。引用符のペアは一致している必要があります。たとえば、" "‘ ‘ は使用できますが、" ‘ は使用できません。

Date

月と日。形式は MM-DD または MM/DD です。

  • 09/01
  • 09-01
Time

AM / PM の形式または 24 時間形式のいずれかを使用できます。秒は省略可能です。日の出または日没の時刻を基準にすることもできます。たとえば、キーワード sunrisesunset を使用し、その後に期間を指定します。

  • 12:30 am
  • 13:00:01
  • sunrise / sunset
  • sunset+30min / sunset-1hour
DateTime

年、月、日、時刻。

日付と時刻の間にはスペースを挿入してください。

日付の形式は、YYYY-MM-DD または YYYY/MM/DD です。時刻の形式は上記の「Time」と同じです。タイムゾーンはサポートされていません。

  • 2022/01/01 14:00
  • 2022-12-31 sunrise+30min
Weekday
  • MON または MONDAY
  • TUE または TUESDAY
  • WED または WEDNESDAY
  • THU または THURSDAY
  • FRI または FRIDAY
  • SAT または SATURDAY
  • SUN または SUNDAY
Duration

一定の期間。

  • 30min
  • 1hour
  • 20sec
  • 1hour10min20sec

ColorHex

色を表す 6 桁の 16 進数コード。先頭に「#」は付けません。

  • FFFFFF
  • B5D2A1
  • DFA100
Temperature

温度データ。摂氏または華氏を表すために、必ず C または F を追加します。

  • 20.5C
  • 90F
ColorTemperature

色温度(ケルビン単位)。

  • 5000K

構造: ネストされた Key-Value ペア

構造データ型は、複数の Key-Value ペアを含む 1 つの「ブロック」、つまりデータ構造です。これらの Key-Value ペアは 1 つの親キーの下にネストされ、各ネストレベルは階層を示す同じ数のスペースまたはタブでインデントされます。

actions: 
  device: Light B - Living room  
  state: on

この例では、親キーactions です。actionsは、ネストされた 2 つの Key-Value ペアです。

  • ペア 1: 子キーdeviceLight B - Living room
  • ペア 2: 子キーstateon

リスト: 複数の値を持つキー

1 つのキーに複数の値を含めるには、リストを作成し、各リスト項目の前にハイフンを付けます。リストでは、構造データ型またはプリミティブ データ型のいずれかの値を使用できますが、両方を同時に使用することはできません。

weekdays:
- MONDAY
- THURSDAY

この例では、キーweekdaysMondayThursday から成るリストです。

高度な構造: ネストされたペアとリストの組み合わせ

より複雑な自動化を記述する場合は、複数のネストされた Key-Value ペアを含むリストを値にします。
starters:
- type: time.schedule
  at: 10:00 am
  weekdays:
  - MONDAY
  - THURSDAY
- type: time.schedule
  at: SUNSET
  weekdays:
  - MONDAY
  - THURSDAY

この例では、親キーstarters です。この親キーの は、各リスト項目に複数の Key-Value ペアが含まれるリストです。

キーのタイプによっては、特定の形式で値を指定する必要があります。その他のキーは、デバイスの機能に基づいて特性を継承します。開始条件、条件、アクションを記述する際の構造についてご確認ください

YAML 言語の構文

ルーティンのスクリプトを記述する際は、次の形式のコンセプトを使用します。

コンセプト

コロン

YAML では、コロン(:)の後にスペースを挿入してキーと値を区切ります。

state: on

インデント

インデントは構造と階層を示し、ネストされた Key-Value ペアを定義します。

この例では、キーmetadata です。namedescription の各キーは、親キーである metadata の下にネストされた子キーです。ネストされたキーは、階層を示すため、それぞれ 2 つのスペースまたは 1 つのタブでインデントします。

metadata:
  name: TV on lights off
  description: Turn off lights when TV turns on

 

ハイフン 

ハイフンの後にスペースを挿入して、リスト項目を定義します。
weekdays:
- MONDAY
- THURSDAY

コメント

スクリプトにコメントやメモを追加する場合は、シャープ記号(#)を使用します。コメントは自動化エンジンで無視されるため、自動化には影響しません。
# This is a comment. It will be ignored.

スクリプト エディタ テンプレート

自動化を新規作成する際、スクリプト エディタには、次の構造でスクリプトを記述できる空のテンプレートが表示されます。

metadata 自動化の名前と説明を追加します
automations 自動化の動作を定義します
  starters 自動化を開始するトリガーを定義します
  condition 自動化を実行するタイミングに関する制限を定義します(省略可)
  actions 自動化で実行するアクションを定義します

テンプレートは、metadata と automations の 2 つの主要ブロックに分かれています。automations はさらに、startersconditionsactions のセクションに分かれています。

metadata ブロックと automations ブロック

スクリプト エディタ テンプレートには、metadataautomations の 2 つの最上位の親キー(ブロック)が用意されています。

metadata ブロックには、自動化の名前と説明を追加します。自動化を識別しやすくすることが目的です。

metadata:
  name: TV time
  description: When TV is on, turn on lights

automations ブロックは自動化スクリプトの中核です。ここでは、開始条件(starters)、条件(conditions)、アクション(actions)を使用して自動化の動作を定義します。

automations:
  starters:
    # e.g. Motion detected
  condition:
    # e.g. Between two times
  actions:
    # e.g. Turn on lights

スクリプト エディタの使い方について詳しくは、Codelabスクリプト例のほか、Google Home Developer Center で開始条件、条件、アクションを個別に設定する方法をご確認ください。

オートコンプリート

スクリプト エディタではスクリプトの記述をサポートするため、以下の状態のときに、利用可能な開始条件、条件、アクションに基づいてオートコンプリート候補が提示されます。

  • 有効なオプションがある場所にカーソルが置かれている(例: - type: の後)。
  • 有効な候補があるコードを入力している。入力途中で、候補リストが適宜表示されます。

Ctrl+Space キーのショートカットを使用して手動でオートコンプリートを開始できます。

Enter キーを押して、リストから候補を選択します。選択した構造に基づいてフィールドに値が自動入力されます。

ヒント: オートコンプリートを使って、お使いのデバイスで利用可能なデバイスの状態やコマンドを確認したり、特定のデバイスの状態やコマンドを利用できるデバイスを確認したりすることもできます。

お使いのデバイスで利用可能なデバイスの状態やコマンドを確認するには、スクリプトを記述する際にまずキー「device: 」を入力し、次にキー「type: 」を入力します。オートコンプリート機能により、そのデバイスで利用できる状態やコマンドのリストが表示されます。

starters:
- device: LED lights - Living Room
- type:

特定のデバイスの状態やコマンドを使用できるデバイスを確認するには、まずキー「type: 」を入力し、次にキー「device: 」を入力します。オート コンプリート機能により、指定した状態やコマンドに対応している、家の中で利用可能なデバイスのリストが表示されます。

starters:
- type: device.state.OnOff
- device:

開始条件、条件、アクション

自動化は、デバイスの開始条件、条件、アクションで構成されます。これらのコンポーネントにより、自動化の動作を定義します。

一部の開始条件、条件、アクションでは、自動化ロジックを完了し、評価の対象をスクリプトに伝えるために、特定の種類の比較用 Key-Value ペアが必要になります。この値は互換性のあるデータ型である必要があります。たとえば、照明の on の状態は true または false のどちらかです。照明が点灯している状態のときに自動化を開始するには、次のように記述します。

state: on
is: true

利用できる開始条件、条件、アクションの詳細を以下で説明します。開始条件、条件、アクションの一覧については、Google Home Developer Center をご覧ください。

開始条件(starters)

スクリプトの starters セクションでは、スクリプトを実行する条件を指定します。開始条件は、デバイスの機能、またはデバイスの状態、時刻、デバイス イベントなどの変更可能な属性に基づいています。たとえば、電球を使用する場合、OnOffBrightnessColorSetting の状態があります。複数の開始条件を指定するには、各開始条件をキー「 -type: 」で始めます。スクリプトを実行するには、少なくとも 1 つの開始条件が満たされている必要があります。

サポートされている開始条件の一覧をご確認ください。

開始条件の種類

アシスタントの開始条件

assistant.command 開始条件を使用すると、アシスタント対応デバイスが「OK Google」で始まるアシスタント コマンドを検出したときにスクリプトを開始できます。
注: 音声コマンドで自動化を開始する場合、アシスタントのアクションがスクリプトに含まれていると、音声コマンドを聞き取ったデバイス上でアシスタントのアクションが実行されます。これは、スクリプトで別のデバイスが指定されている場合も同様です。
例: 「OK Google, party time(OK Google, パーティーの時間)」と話しかけたときに自動化を開始します。
starters:
- type: assistant.command.OkGoogle
  eventData: query
  is: party time

デバイス イベントの開始条件

device.event 開始条件を使用すると、特定のイベントが発生したとき(ドアホンが鳴ったときやセンサーが何かを検出したときなど)にスクリプトを開始できます。注: 一部のイベントはサポートされていない場合があります。

: ドアホンが押されたときに自動化を開始します。
starters:
- type: device.event.DoorbellPress
  device: Doorbell - Front door
: カメラが人物を検出したときに自動化を開始します。
starters:
- type: device.event.PersonDetection
  device: Camera - Backyard 

: カメラが動きを検出したときに自動化を開始します。

starters:
- type: device.event.MotionDetection
  device: Camera - Backyard

注:

  • カメラ アクティビティを利用するには、対応する Google Nest カメラ、ドアホン、またはディスプレイと、アクティビティの検出のセットアップが必要です。
  • カメラ アクティビティによっては、Google Nest Aware の定期購入や電源直結型のカメラが必要となることがあります。たとえば、サウンド検知は、Google Nest Cam(屋内、屋外対応 / バッテリー式)では電源に接続されている場合にのみ動作します。
  • デバイスのアクティビティやデバイスの状態に基づいて、一定の期間、再度発生しないよう開始条件を止めることができます。

デバイスの状態の開始条件

device.state 開始条件を使用すると、デバイスの状態に基づいて自動化を開始できます。状態とは、サーモスタットの温度が特定の温度に達する、照明がオンまたはオフになる、サポートされているセンサーが一定のしきい値に達するなどの、デバイスの特性です。注: デバイスのアクティビティやデバイスの状態に基づいて、一定の期間、再度発生しないよう開始条件を止めることができます。
デバイスの状態の開始条件では、device.state の後に状態を追加します。たとえば、デバイスがオンになっているかどうかを確認するには、device.state.OnOff を使用します。
device.state 開始条件を使用するには、まず typedevicestate の 3 つのキーを記述し、その後に 1 つ以上の比較用 Key-Value ペアを追加します。
キー
type device.state で始まる、デバイスの状態の開始条件 device.state.ArmDisarm
device Google Home アプリに部屋の名前とともに表示されるデバイス名(Device name - Room name Alarm - Front Door
state

確認したい開始条件のフィールドまたは状態データ。

使用する開始条件を Google Home Developer Center で検索し、「サポートされるフィールド」または「状態データ」を確認します。
isArmed

ヒント: デバイスで利用できるデバイスの状態を確認するには、スクリプトでまず「device: 」キーを入力し、次に「type: 」キーを入力します。オートコンプリート機能により、そのデバイスで利用できる状態が一覧表示されます。

device.state 開始条件では、次の比較用 Key-Value ペアを使用できます。

比較用キー サポートされている値の型
is String | Number | Bool | Dynamic is: on
isNot String | Number | Bool | Dynamic isNot: cast
greaterThan
greaterThanOrEqualTo
String | Number | Bool | Dynamic greaterThan: 1
lessThan
lessThanOrEqualTo
String | Number | Bool | Dynamic lessThan: 10
suppressFor Duration suppressFor: 1hour

: テレビの音量が 1~10 の場合に自動化を開始します。

starters:
- type:  device.state.Volume
  device: TV - Living room
  state:  currentVolume
  greaterThan: 1
  lessThan: 10 

在宅状態の開始条件

home.state 開始条件を使用すると、在宅か外出中かに基づいてスクリプトを開始できます。これは在宅確認によって検出できます。
例: 在宅時に自動化を開始します。
starters:
- type: home.state.HomePresence
  state: homePresenceMode
  is: HOME

時刻の開始条件

time 開始条件を使用すると、特定の日時に基づいて自動化を開始できます。time 開始条件では、次の比較用 Key-Value ペアを使用できます。
比較用キー サポートされている値の型
before Time before: sunset
after Time after: 7:00 am
weekdays Weekday weekdays: MON

: 月曜日と火曜日、日の出の 30 分後に自動化を開始します。

starters:
- type: time.schedule
  at: sunrise+30min
  weekdays:
  - MON
  - TUE

開始条件を止める方法

比較用キー suppressFor を使用して、一定の期間、開始条件を無視するよう自動化に指示します。たとえば、カメラが人物を検出したときに、「玄関に誰かが来ました」と通知してから、次の 10 分間はカメラが人物を検出しても再度通知しないよう設定できます。

例: 朝、初めて誰かが玄関を通り抜けたときに、すべてのブラインドを開け、次の 20 時間はこの開始条件を止めます。

metadata:
  name: Open Blinds
  description: Open blinds in the morning after motion detected
automations:
  starters:
  - type: device.event.MotionDetection
    device: Camera - Hallway
    suppressFor: 20hours
  condition:
    type: time.between
    after: 5:00     
    before: 12:00   
  actions:     
  - type: device.command.OpenClose
    openPercent: 100
  devices:
  - Blinds1 - Living Room
  - Blinds2 - Family Room

条件(conditions)

条件は、自動化を実行するタイミングに関する任意の制限です。条件を指定した場合、スクリプトは条件が満たされた場合にのみ実行されます。開始条件の多くは条件としても使用でき、論理演算子の andornot と組み合わせてより複雑な条件チェックを表現することも可能です。
type: or
conditions:
- type: time.between
  before: sunrise
  after: sunset
  weekdays:
  - MON
  - TUE
- type: device.state.Volume
  device: My TV - Living Room
  state: currentVolume
  greaterThan: 1
  lessThan: 10

この例では、1 つの time 条件と 1 つの device.state 条件があります。このスクリプトは、月曜日または火曜日の日没から日の出までの間、またはテレビの音量が 1~10 の場合に実行されます。

使用できる条件のタイプは次のとおりです。

条件演算子

AND 条件

and 条件を使用すると、スクリプトはすべての子条件が満たされた場合にのみ実行されます。

: テレビの電源がオンになっていて、かつ午後 6 時以降の場合に自動化を開始します。

condition:
  type: and
  conditions:
  - type: device.state.OnOff
    device: TV - Living Room
    state: on
    is: true
  - type: time.between
    after: 6:00 pm

OR 条件

or 条件を使用すると、スクリプトは子条件のいずれかが発生した場合に実行されます。

例: テレビの電源がオンの場合、または午後 6 時以降の場合に自動化を開始します。

condition:
  type: or
  conditions:
  - type: device.state.OnOff
    device: TV - Living Room
    state: on
    is: true
  - type: time.between
    after: 6:00 pm

NOT 条件

not 条件を使用すると、スクリプトは子条件が発生した場合に実行されません。

: 時刻が午後 6 時から午後 8 時の間でなければ自動化を開始します。

condition:
  type: not
  condition:
    type: time.between
    after: 6:00pm
    before: 8:00pm

デバイスの状態の条件

device.state 条件を使用すると、スクリプト開始時のデバイスの状態に基づいて、スクリプトを実行するタイミングを制限できます。device.state 条件は device.state 開始条件と似ていますが、開始のタイミングを指定するのではなく、スクリプトを実行できる状況を制限します。
デバイスの状態の条件では、device.state の後に状態を追加します。たとえば、デバイスがオンになっているかどうかを確認するには、device.state.OnOff を使用します。
device.state 条件を使用するには、まず typedevicestate の 3 つのキーを記述し、その後に 1 つ以上の比較用 Key-Value ペアを追加します。
キー
type device.state で始まる、デバイスの状態の条件 device.state.OnOff
device Google Home アプリに部屋の名前とともに表示されるデバイス名(Device name - Room name Chromecast - Living Room
state 確認したい状態。Google Home Developer Center で、使用するデバイスの状態の条件を検索できます。 state: on

ヒント: デバイスで利用できるデバイスの状態を確認するには、スクリプトでまず「device: 」キーを入力し、次に「type: 」キーを入力します。オートコンプリート機能により、そのデバイスで利用できる状態が一覧表示されます。

device.state 条件では、次の比較用 Key-Value ペアを使用できます。

比較用キー サポートされている値の型
is String | Number | Bool | Dynamic is: on
isNot String | Number | Bool | Dynamic isNot: cast
greaterThan
greaterThanOrEqualTo
String | Number | Bool | Dynamic greaterThan: 1
lessThan
lessThanOrEqualTo
String | Number | Bool | Dynamic lessThan: 10

: エアコンで 55% を超える湿度が検出された場合に自動化を開始します。

condition:
  type: device.state.TemperatureSetting
  device: My Thermostat - Living Room
  state: thermostatHumidityAmbient
  greaterThan: 55

在宅状態の条件

home.state.HomePresence 条件を使用すると、在宅か外出中かに応じてスクリプトを実行するタイミングを制限できます。

注: home.state.HomePresence 条件を使用するスクリプトを作成する前に、Google Home アプリで在宅確認を設定し、在宅確認が問題なく動作することを確認してください。在宅状況は、家族のスマートフォンの場所、一部の Google Nest デバイスのセンサー、または Google Home アプリでの在宅と外出の手動切り替えで確認されます。

在宅確認および在宅と外出のルーティンについて詳しくは、以下の記事をご覧ください。

home.state.HomePresence 条件では、次の比較用 Key-Value ペアを使用できます。
比較用キー サポートされている値の型
is String(「HOME」または「AWAY」) is: away
isNot String(「HOME」または「AWAY」) isNot: HOME
for Duration for: 30min
suppressFor Duration suppressFor: 1hour

: 在宅の状態が「HOME」に設定されている場合に、home.state.HomePresence 条件によって自動化が開始されます。

condition:
  type: home.state.HomePresence
  state: homePresenceMode
  is: HOME

時刻の条件

time.between 条件を使用すると、スクリプトを実行するタイミングを制限できます。time.between 条件では、次の比較用 Key-Value ペアを使用できます。
比較用キー サポートされている値の型
before Time before: sunset
after Time after: 7:00 am
weekdays Weekday weekdays: MON

例: 週末の午前 10 時より前の場合にのみ、自動化を開始します。

condition:
  type: time.between
  before: 10am
  weekdays:
  - SAT
  - SUN

アクション(actions)

スクリプトの actions セクションには、デバイスで自動化したいアクションを記述します。複数のアクションを含めるには、各アクションをキー「- type: 」で始めます。スクリプトを実行するには、少なくとも 1 つのアクションが必要です。ほとんどのアクションは device.command で始まります。

使用できるアクションのタイプは次のとおりです。

アシスタントのアクション

スピーカーやディスプレイで assistant.command アクションを使用すると、「照明を全部消して」や「天気情報を教えて」などのアクションをアシスタントで実行できます。

アシスタントのコマンドを使用すると、デバイス名を具体的に指定することなく、各部屋のデバイスや家全体のデバイスを操作できます。このコマンドは Google Home アプリに今後追加されるデバイスでも自動的に使用できるため、時間の節約につながります。アシスタント コマンドでアクションを実行するには、対応するスピーカーまたはディスプレイが必要です。

注: 音声コマンドで自動化を開始する場合、アシスタントのアクションがスクリプトに含まれていると、音声コマンドを聞き取ったデバイス上でアシスタントのアクションが実行されます。これは、スクリプトで別のデバイスが指定されている場合も同様です。

: 「リビングの照明をつけて」というコマンドで、リビングの照明をすべてつけます。
actions:
- type: assistant.command.OkGoogle
  okGoogle: リビングの照明をつけて  
  devices: My Speaker - Room Name 
: 「照明を全部消して」というコマンドで、家の照明をすべて消します。
actions:
- type: assistant.command.OkGoogle
  okGoogle: 照明を全部消して  
  devices: My Speaker - Room Name 
: スピーカーやディスプレイでお知らせを読み上げてもらいます。
actions:
- type: assistant.command.Broadcast
  devices:  
  - My Speaker 1 - Room Name
  - My Speaker 2 - Room Name
  message: 夕ご飯の時間です
     

アシスタントのアクションでは、次のようなカスタム アクションを行うこともできます。

  • 「YouTube Music からアデルの Hello を寝室のスピーカーで再生して」
  • 「YouTube のかわいらしい猫の動画をリビングのディスプレイで再生して」
  • 「明日の天気は?」
  • 「面白いこと言って」
  • 「ホームオフィスのディスプレイで私道のカメラを見せて」

注: Voice Matchアカウントに基づく情報をオンにする必要があるアシスタントのアクションは、スクリプト エディタで作成した家族向けの自動化では利用できません。

デバイスのアクション

device.command アクションを使用すると、デバイスの操作や調整ができます。アクションの各コマンドには、それぞれ固有の特性と構造のセットがあります。スクリプトにコマンドを追加するには、「device.command」の後にデバイスに対するコマンド アクションを追加します。たとえば、デバイスをオンにするには device.command.OnOff を使用します。device.command アクションには次の情報を含める必要があります。
キー
type device.command で始まる、デバイスのアクション device.command.OpenClose
devices Google Home アプリに部屋の名前とともに表示されるデバイス名(Device name - Room name)。複数のデバイスを含めるには、リストを作成します。 Blinds - Bedroom

ヒント: お使いのデバイスで利用可能なアクションやコマンドを確認するには、まずキー「device:」を入力し、次にキー「type:」を入力すると、オートコンプリート機能により、そのデバイスで利用できるアクションが一覧表示されます。

device.command アクションの多くは、コマンドに必要な入力を指定する追加のキーがあります。たとえば、device.command.ThermostatTemperatureSetpoint の場合、設定したい新しい温度をエアコンに伝えるために、thermostatTemperatureSetpoint Key-Value ペアが必要です。

コマンドの使用方法について詳しくは、Google Home Developer Center で関連するアクションを検索し、使用するアクションの構造を確認してください。

例: リビングルームのテレビの電源をオンにします。

actions:
  type: device.command.OnOff
  devices: TV - Living room
  on: true

: 照明をオンにして、5 分後にオフにします。

actions:
- type: device.command.OnOff
  devices: Light A - Living Room
  on: true
- type: time.delay
  for: 5min
- type: device.command.OnOff
  devices: Light A - Living Room
  on: false

通知のアクション

home.command.Notification アクションを使用すると、スクリプトから家のメンバーのモバイル デバイスに通知が送信されます。たとえば、スマートプラグに接続されている家電がオフになったり、オフラインになったりした場合に、通知を受け取ることができます。

actions:
- type: home.command.Notification
  members:
  - Alex - cloudysanfrancisco@gmail.com
  - Kim - jeffersonloveshiking@gmail.com
  title: It’s movie time!
  body: Join me in the living room
 

時間のアクション

time.delay アクションを使用すると、リスト内のすべてのアクションを同時に実行するのではなく、2 つのアクションを一定の時間差をつけて実行するスクリプトを作成できます。スクリプトには時間差を複数追加できます。たとえば、スクリプトの各アクションを 10 秒ずつ遅らせて開始することが可能です。
例: 2 つの照明のオンとオフを、30 秒間隔を空けて実行します。
actions:
- type: device.command.OnOff
  devices: 
    - Bedside Lamp - Bedroom
    - Ceiling Light - Bedroom
  on: true
- type: time.delay
  for: 30sec
- type: device.command.OnOff
  devices: 
    - Bedside Lamp - Bedroom
    - Ceiling Light - Bedroom
  on: false

参考資料

スクリプトの記述演習

まず、「テレビの電源がオンになったときに照明をオフにする」という非常にシンプルで一般的な自動化を作成します。

注: Chromecast、スマートライト、対応するデバイスをお持ちでない場合でも、スクリプトの記述プロセスを理解するためにこの演習をご利用いただけます(ただし、最後にスクリプトは実行されません)。

  1. home.google.com/automations を開き、アカウントにログインします。
  2. [新たに追加 ] をクリックします。
  3. メタデータ情報を入力します。このスクリプトでは、名前TV on lights off説明Turn off lights when TV turns on. です。スクリプトの形式が正しいことを確認します。
    metadata:
      name: TV on lights off
      description: Turn off lights when TV turns on.
  4. 続いて、自動化を作成します。「starters:」の下に「- type: 」で始まる新しい行を作成して、開始条件を追加します。
    • 新しい行を作成するには、「starters:」以降、各行の先頭にスペースを 2 つ挿入するか、またはタブキーを 1 回押して行をインデントします(下記を参照)。
    • 複数の開始条件を指定するには、各開始条件の先頭にハイフンとスペースを入力する必要があります。
      metadata:
        name:  TV on lights off
        description:  Turn off lights when TV turns on
      automations:
        starters:
        - type:
  5. device.state 開始条件を追加します。なお、device.state 開始条件を使用するには、typedevicestate の 3 つのキーが必要です。その後に、少なくとも 1 つの比較用 Key-Value ペアを記述します。スクリプト エディタでは、使用可能な開始条件、条件、アクションに基づいてオートコンプリート候補が表示されるため、構造に合わせて簡単に入力できます。このスクリプトでは次のように設定します。
    • type = device.state.OnOff。自動化を開始するために評価される、デバイスの状態です。  
    • device = Chromecast - Living Room。これは、Google Home アプリに表示されるデバイスの名前です。
    • state = on。「on」は、デバイスの状態「OnOff」でサポートされているフィールドまたは状態データです。
    • 比較用 Key-Value ペア = is: true。この比較用キーの値はプリミティブ データ型です。このスクリプトは、テレビの電源がオンになった場合に実行されます。
      metadata:
        name: TV on lights off
        description: Turn off lights when TV turns on
      automations:
        starters:
        - type: device.state.OnOff
          device: Chromecast - Living Room
          state: on
          is: true 

      比較のために、別の開始条件を設定した同様のスクリプトを見てみましょう。以下のスクリプトでは、テレビの電源がオンになったときではなく、音量が 1~10 のときに自動化を開始します。この変更を行うため、状態 OnOffVolume に置き換えて、この新しい属性に合わせて state を currentVolume に変更しました。また、比較用 Key-Value ペアを、特定の範囲(greaterThan: 1 かつ lessThan: 10)を構成する 2 つのネストされたペアに変更しました。その他の例については、使用可能な開始条件の一覧をご覧ください。

      metadata:
        name: TV on lights off
        description: Turn off lights when TV turns on
      automations:
        starters:
        - type: device.state.Volume
          device: Chromecast - Living Room
          state: currentVolume
          greaterThan: 1
          lessThan: 10
  6. [保存] をクリックすると、いつでもスクリプトを保存できます。スクリプトを保存すると、スクリプトの検証とエラーのチェックが自動的に行われます。無効なスクリプトは実行できません。
  7. 次に、スクリプトにアクションを追加します。アクションを追加するには、「actions:」の下に「- type: 」で始まる新しい行を作成します。  新しい行を作成するには、以下のように、「actions:」以降の各行を 2 つのスペースでインデントします。
    • 他のアクションを追加するには、各アクションの先頭にハイフンとスペースを入力する必要があります。
      metadata:
        name: TV on lights off
        description: Turn off lights when TV turns on.
      automations:
        starters:
        - type: device.state.OnOff
          device: Chromecast - Living Room
          state: on
          is: true
        actions:
        - type: 
  8. 照明をオフにするには、device.command アクションを使用します。device.command アクションを使用するために、次の情報を追加します。
    • type = device.command.OnOff。これは、コマンドまたはアクションの名前です。デバイスの下に複数のコマンドをネストして、コマンドごとに固有の状態を指定できます。
    • devices = Floor Lamp - Living RoomOverhead Light - Living Room から成るリスト。これらは、Google Home アプリに表示される照明の名前です。複数の照明を指定するために、各デバイスを別々の行に記述し、それぞれ先頭にハイフンを付けました。
    • state(コマンドの目的の状態)= on: false。この行で、照明をオフにするように指示しています。
      metadata:
        name: TV on lights off
        description: Turn off lights when TV turns on.
      automations:
        starters:
        - type: device.state.OnOff
          device: Chromecast - Living Room
          state: on
          is: true
        actions:
        - type: device.command.OnOff
          devices:
          - Floor Lamp - Living Room
          - Overhead Light - Living Room 
          on: false
  9. [保存] をクリックして、スクリプトを保存します。エラーがなければ、スクリプトは自動的に有効になり、テレビの電源をオンにすると常に照明が消えるようになります。まだスクリプトを実行する準備ができていない場合は、[有効にする] をオフにしてスクリプトを一時停止します。

スクリプト作成をさらに練習するには、開始条件データ型複数のアクションを変更したり、time.between などの条件を追加したりしてみましょう。スクリプト例Codelab を見て、さらに詳しく学ぶこともできます。開始条件、アクション、条件について詳しくは、Google Home Developer Center をご覧ください。

スクリプトによる自動化に関するヘルプ

  • Google Home Automation コミュニティでは、スクリプトに関するヘルプを探したり、他のユーザーの取り組みから学んだりできます。
  • 自動化を機能させるには、スクリプトで有効なコードを使用する必要があります。エラーが存在する場合は、メッセージが表示されます。詳しくは、スクリプト エディタのエラーと警告についての説明をご覧ください。
  • コードを検証するには、スクリプト エディタで [検証] をクリックまたはタップするか、スクリプトを保存してみます。注意すべき一般的なエラーは次のとおりです。
    • 「デバイス名 - 部屋の名前」の形式で正しいデバイス名を使用していることを確認します。正しい名前がわからない場合は、Google Home アプリでデバイスの名前を確認してください。
    • 実行させたい機能がデバイスでサポートされていることを確認します。オートコンプリートを使用して、使用可能なオプションを見つけることもできます。
    • アクションが含まれていることを確認します。自動化を実行するにはアクションが必要です。
  • スクリプトを保存しても自動化が期待どおりに動作しない場合は、スクリプト内の各コンポーネントが機能していることを手動で確認します。たとえば、日没時に照明をつけて明るさを変更するスクリプトを記述した場合は、アシスタント コマンドを使ってこれらのタスクを行ってみて、個々の機能が動作することを確認します。以下も確認してください。
    • Google Home アプリでデバイスが追加またはリンクされている。
    • デバイスが接続され、オンラインになっている。
    • デバイス名、開始条件、条件、アクションが正しく記述されている。
    • スクリプトのインデントと形式が適切である。
  • Google Home for web では、スクリプトの下にある自動化ログ にアクセスして、自動化の履歴を表示し、潜在的な問題を特定することもできます。詳しくは、自動化ログに表示されるメッセージの種類に関する記事をご覧ください。
  • 自動化を作成する際はスクリプト エディタの試験運用中の生成 AI 機能をお試しください。スクリプトの下書きが作成され、確認、編集できるようになります。
  • ルーティンの基本とトラブルシューティング方法について、詳細をご確認ください。
  • スクリプトによる自動化を作成、編集する方法について、詳細をご確認ください。

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。

さらにサポートが必要な場合

問題を迅速に解決できるよう、ログインして追加のサポート オプションをご利用ください。

検索
検索をクリア
検索を終了
メインメニュー
17885973826913629627
true
ヘルプセンターを検索
true
true
true
true
true
85561
false
false