スクリプト エディタを使用すると、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
です。
キーは基本的に、使用する要素のキーワードです。各キーは一意にする必要がありますが、キーの順序は重要ではありません。Key-Value ペアは 1 行に 1 つずつ記述します。
キーに関連付ける値には、いくつかのデータ型を使用できます。
データ型
プリミティブ データ型には、スクリプト エディタでサポートされているすべての基本的なデータ型が含まれています。
基本の形式 |
値のタイプ |
Bool |
|
Number |
整数または 10 進数 |
String |
書式なしテキスト
文字列値を引用符で囲う必要があるのは、文字列値が [ 、{ 、" 、' 、 または # で始まる場合、もしくは文字列値に含まれるコロンの後に 1 つか 2 つスペースが挿入されている場合のみです。引用符のペアは一致している必要があります。たとえば、" " や ‘ ‘ は使用できますが、" ‘ は使用できません。
|
Date |
月と日。形式は MM-DD または MM/DD です。
|
Time |
AM / PM の形式または 24 時間形式のいずれかを使用できます。秒は省略可能です。日の出または日没の時刻を基準にすることもできます。たとえば、キーワード sunrise と sunset を使用し、その後に期間を指定します。
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 進数コード。先頭に「#」は付けません。
|
Temperature |
温度データ。摂氏または華氏を表すために、必ず C または F を追加します。
|
ColorTemperature |
色温度(ケルビン単位)。
|
構造データ型は、複数の Key-Value ペアを含む 1 つの「ブロック」、つまりデータ構造です。これらの Key-Value ペアは 1 つの親キーの下にネストされ、各ネストレベルは階層を示す同じ数のスペースまたはタブでインデントされます。
actions:
device: Light B - Living room
state: on
この例では、親キーは actions
です。actions
の値は、ネストされた 2 つの Key-Value ペアです。
- ペア 1: 子キーは
device
、値は Light B - Living room
- ペア 2: 子キーは
state
、値は on
1 つのキーに複数の値を含めるには、リストを作成し、各リスト項目の前にハイフンを付けます。リストでは、構造データ型またはプリミティブ データ型のいずれかの値を使用できますが、両方を同時に使用することはできません。
weekdays:
- MONDAY
- THURSDAY
この例では、キーは weekdays
、値は Monday
と Thursday
から成るリストです。
高度な構造: ネストされたペアとリストの組み合わせ
より複雑な自動化を記述する場合は、複数のネストされた 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 です。name と description の各キーは、親キーである 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 はさらに、starters、conditions、actions のセクションに分かれています。
metadata ブロックと automations ブロック
スクリプト エディタ テンプレートには、metadata
と automations
の 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 2 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
のどちらかです。照明が点灯している状態のときに自動化を開始するには、次のように記述します。
利用できる開始条件、条件、アクションの詳細を以下で説明します。開始条件、条件、アクションの一覧については、Google Home Developer Center をご覧ください。
スクリプトの starters セクションでは、スクリプトを実行する条件を指定します。開始条件は、デバイスの動作や変化する属性(デバイスの状態、時刻、デバイス イベントなど)に基づいています。たとえば、電球を使用する場合、OnOff
、Brightness
、ColorSetting
の状態があります。複数の開始条件を指定するには、各開始条件をキー「 - 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
開始条件を使用するには、まず type
、device
、state
の 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 ペアを使用できます。
例: テレビの音量が 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
条件は、自動化を実行するタイミングに関する任意の制限です。条件を指定した場合、スクリプトは条件が満たされた場合にのみ実行されます。開始条件の多くは条件としても使用でき、論理演算子の and
、or
、not
と組み合わせてより複雑な条件チェックを表現することも可能です。
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
条件を使用するには、まず type
、device
、state
の 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 ペアを使用できます。
例: エアコンで 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 セクションには、デバイスで自動化したいアクションを記述します。複数のアクションを含めるには、各アクションをキー「- 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 のかわいらしい猫の動画をリビングのディスプレイで再生して」
- 「明日の天気は?」
- 「面白いこと言って」
- 「ホームオフィスのディスプレイで私道のカメラを見せて」
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
リソース
スクリプトの記述演習
まず、「テレビの電源がオンになったときに照明をオフにする」という非常にシンプルで一般的な自動化を作成します。
注: ストリーミング デバイス、スマートライト、対応するデバイスをお持ちでない場合でも、スクリプトの記述プロセスを理解するためにこの演習をご利用いただけます(ただし、最後にスクリプトは実行されません)。
- home.google.com/automations を開き、アカウントにログインします。
- [新たに追加
] をクリックします。
- メタデータ情報を入力します。このスクリプトでは、名前は
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.
- 開始条件を追加するには、新しい行を作成し、2 つのスペースまたは 1 つのタブでインデントし、「
starters:
」と入力します。次の行で、もう一度インデントして、「- type:
」と入力します。
ヒント:
- 新しい行を作成するには、Shift
Enter キーを押します。
- 複数の開始条件を指定するには、各開始条件の先頭にハイフンとスペースを入力する必要があります。
metadata:
name: TV on lights off
description: Turn off lights when TV turns on
automations:
starters:
- type:
注: スクリプト エディタでは、使用可能な開始条件に基づいて予測入力候補が表示されるため、構造に合わせて簡単に入力できます。候補から選択するには、キーボードの矢印キーを使用して選択し、Enter キーを押すと、挿入されます。
device.state
開始条件を追加します。なお、device.state 開始条件を使用するには、type
、device
、state
の 3 つのキーが必要です。その後に、少なくとも 1 つの比較用 Key-Value ペアを記述します。スクリプト エディタでは、使用可能な開始条件、条件、アクションに基づいて予測入力候補が表示されるため、構造に合わせて簡単に入力できます。このスクリプトでは次のように入力します。
- [保存] をクリックすると、いつでもスクリプトを保存できます。スクリプトを保存すると、スクリプトの検証とエラーのチェックが自動的に行われます。無効なスクリプトは実行できません。
- 次に、スクリプトにアクションを追加します。アクションを追加するには、新しい行を作成し、2 つのスペースまたは 1 つのタブでインデントし、「
actions:
」と入力します。次の行で、もう一度インデントして、「- type:
」と入力します。
ヒント:
- 新しい行を作成するには、Shift
Enter キーを押します。
- 他のアクションを追加するには、各アクションの先頭にハイフンとスペースを入力する必要があります。
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
アクションを使用します。device.command アクションを使用するために、次の情報を追加します。
- type =
device.command.OnOff
。これは、コマンドまたはアクションの名前です。
注: デバイスの下に複数のコマンドをネストして、コマンドごとに固有の状態を指定できます。
- devices =
Floor Lamp - Living Room
と Overhead 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
- [保存] をクリックして、スクリプトを保存します。エラーがなければ、スクリプトは自動的に有効になり、テレビの電源をオンにすると常に照明が消えるようになります。まだスクリプトを実行する準備ができていない場合は、[有効にする] をオフにしてスクリプトを一時停止します。
スクリプト作成をさらに練習するには、開始条件、データ型、複数のアクションを変更したり、time.between
などの条件を追加したりしてみましょう。スクリプト例や Codelab を見て、さらに詳しく学ぶこともできます。開始条件、アクション、条件について詳しくは、Google Home Developer Center をご覧ください。
スクリプトによる自動化に関するヘルプ
- Google Home Automation コミュニティでは、スクリプトに関するヘルプを探したり、他のユーザーの取り組みから学んだりできます。
- 自動化を機能させるには、スクリプトで有効なコードを使用する必要があります。エラーが存在する場合は、メッセージが表示されます。詳しくは、スクリプト エディタのエラーと警告についての説明をご覧ください。
- コードを検証するには、スクリプト エディタで [検証] をクリックまたはタップするか、スクリプトを保存してみます。よくあるエラーをいくつかご紹介します。
- 「デバイス名 - 部屋の名前」の形式で正しいデバイス名を使用していることを確認します。正しい名前がわからない場合は、Google Home アプリでデバイスの名前を確認してください。
- 実行させたい機能がデバイスでサポートされていることを確認します。予測入力を使用して、使用可能なオプションを見つけることもできます。
- アクションが含まれていることを確認します。自動化を実行するにはアクションが必要です。
- スクリプトを保存しても自動化が期待どおりに動作しない場合は、スクリプト内の各コンポーネントが機能していることを手動で確認します。たとえば、日没時にライトを点灯して明るさを変更するスクリプトを記述した場合は、アシスタント コマンドを使ってこれらのタスクを行ってみて、個々の機能が動作することを確認します。以下も確認してください。
- Google Home アプリでデバイスが追加またはリンクされている。
- デバイスが接続され、オンラインになっている。
- デバイス名、開始条件、条件、アクションが正しく記述されている。
注: メーカーによるアップデートの実施時にデバイス トレイトが変更されることがあり、これによりスクリプトが機能しなくなる可能性があります。影響を受けたスクリプトを更新する際は、予測入力機能を使用すると便利です。
- スクリプトのインデントと形式が適切である。
- Google Home for web では、スクリプトの下にある自動化ログ
にアクセスして、自動化の履歴を表示し、潜在的な問題を特定することもできます。詳しくは、自動化ログに表示されるメッセージの種類に関する記事をご覧ください。
- 自動化を作成する際はスクリプト エディタの試験運用中の生成 AI 機能をお試しください。スクリプトの下書きが作成され、確認、編集できるようになります。
- ルーティンの基本とトラブルシューティング方法について、詳細をご確認ください。
- スクリプトによる自動化を作成、編集する方法について、詳細をご確認ください。