Met de scripteditor kun je je eigen automatiseringen schrijven om geavanceerde routines voor het huishouden te maken met Google Home voor het web of in de Google Home-app. Als je gescripte automatiseringen wilt schrijven, moet je wat meer weten over een aantal basisprincipes van de YAML-scripttaal, hoe je je script structureert en hoe je de componenten van je script gebruikt.
De scripteditor is op dit moment beschikbaar als Openbare preview. Je hebt toegang tot de scripteditor met Google Home voor het web of in de mobiele Google Home-app nadat je je hebt aangemeld voor Openbare preview.
Meer informatie over hoe je automatiseringen maakt met de scripteditor:- Geavanceerde smarthome-automatiseringen maken met de scripteditor
- Ondersteunde starters, voorwaarden en acties
- Ons codelab voor een stapsgewijs voorbeeld van hoe je je eerste script maakt
- Oefeningen voor het schrijven van een gescripte automatisering en voorbeeldscripts
Basisbeginselen van de YAML-scripttaal
De scripteditor gebruikt YAML, een flexibele scripttaal waarmee je regel voor regel instructies kunt invoeren voor wat je apparaten moeten doen en wanneer dit moet gebeuren. Deze instructies worden geschreven in de vorm van sleutel/waarde-paren.
Sleutel/waarde-paren
YAML wordt geschreven als een reeks sleutel/waarde-paren:
name: TV on lights off
In dit voorbeeld geldt: de sleutel = name
en de waarde = TV on lights off
.
De sleutel is feitelijk het zoekwoord voor een element dat je wilt gebruiken. Elke sleutel moet uniek zijn, maar de volgorde van je sleutels is niet belangrijk. Elk sleutel/waarde-paar begint op een nieuwe regel.
De waarde die aan een sleutel is gekoppeld, kan de vorm van verschillende gegevenstypen hebben.
Gegevenstypen
Primitieven
Het primitieve gegevenstype omvat alle basisgegevenstypen die door de scripteditor worden ondersteund.
Vormen van primitieven | Typen waarden |
---|---|
Bool |
|
Cijfer | Geheel getal of decimaal getal |
Tekenreeks |
Platte tekst Tekenreekswaarden hebben alleen aanhalingstekens nodig als ze beginnen met |
Datum |
Maand en dag. De notatie is MM-DD of MM/DD.
|
Tijd |
De tijd kan worden gebruikt in AM/PM-indeling of 24-uursnotatie. Seconden zijn optioneel. Je kunt ook de tijd relatief tot de zon gebruiken. Je kunt bijvoorbeeld de zoekwoorden
|
Datum en tijd |
Jaar, maand, dag en tijdstip van de dag. Voeg een spatie toe tussen de datum en het tijdstip. De datumnotatie is JJJJ-MM-DD of JJJJ/MM/DD. De tijdnotatie is hetzelfde als de tijd hierboven. Tijdzones worden niet ondersteund.
|
Weekdag |
|
Duur |
Een bepaalde periode.
|
Hex-kleurwaarde |
Een hexadecimale code van 6 cijfers die een kleur vertegenwoordigt. Het getal wordt niet voorafgegaan door #.
|
Temperatuur |
Temperatuurgegevens. Voeg altijd C of F toe om Celsius of Fahrenheit aan te geven.
|
Kleurtemperatuur |
De kleurtemperatuur in Kelvin.
|
Structuren: geneste sleutel/waarde-paren
Het structuur-gegevenstype is een 'blok' of gegevensstructuur met meerdere sleutel/waarde-paren. Deze sleutel/waarde-paren zijn genest onder een enkele bovenliggende sleutel. Elk niveau van nesten is ingesprongen met hetzelfde aantal spaties of tabs om de hiërarchie aan te geven.
actions: device: Light B - Living room state: on
In dit voorbeeld geldt: de bovenliggende sleutel = actions
. De waarde voor actions
is 2 geneste sleutel/waarde-paren:
- Paar 1: onderliggende sleutel =
device
; waarde =Light B - Living room
- Paar 2: onderliggende sleutel =
state
; waarde =on
Lijsten: sleutels met meerdere waarden
Als je meerdere waarden aan één sleutel wilt toevoegen, maak je een lijst met een koppelteken voor elk lijstitem. Een lijst kan gestructureerde of primitieve gegevenstypewaarden gebruiken, maar niet beide.
weekdays: - MONDAY - THURSDAY
In het voorbeeld geldt dat de sleutel = weekdays
en de waarde = een lijst die Monday
en Thursday
heeft.
Geavanceerde structuren: gecombineerde geneste paren en lijsten
- type: time.schedule at: 10:00 am weekdays: - MONDAY - THURSDAY - type: time.schedule at: SUNSET weekdays: - MONDAY - THURSDAY
In dit voorbeeld geldt: de bovenliggende sleutel = starters
. De waarde van deze bovenliggende sleutel = een lijst waarbij elk lijstitem meerdere sleutel/waarde-paren heeft.
Voor sommige typen sleutels moeten de waarden een specifieke indeling hebben, terwijl andere sleutels de kenmerken overnemen van de mogelijkheden van een apparaat. Meer informatie over hoe specifieke starters, voorwaarden en acties gestructureerd zijn.
Syntaxis van de YAML-taal
Gebruik deze opmaakconcepten als je gescripte routines schrijft:
Concept | Voorbeeld |
---|---|
Dubbele punt YAML gebruikt een dubbele punt |
state: on |
Inspringing Inspringing geeft de structuur en hiërarchie aan en definieert geneste sleutelparen. In het voorbeeld geldt dat de bovenliggende sleutel = |
|
Koppelteken Een koppelteken gevolgd door een spatie definieert een lijstitem. |
|
Opmerkingen Gebruik het hekje # om opmerkingen of notities aan het script toe te voegen. Opmerkingen worden genegeerd door de automatiseringsengine en hebben geen invloed op je automatisering. |
# This is a comment. It will be ignored. |
De scripteditor-template
Als je een nieuwe automatisering maakt, bevat de scripteditor een lege template om je script te schrijven. Hierbij wordt de volgende structuur gebruikt:
metadata |
bevat de naam van je automatisering en een beschrijving |
automations |
definieert het gedrag van je automatisering |
starters |
definieert de triggers die je automatisering starten |
condition |
definieert beperkingen voor wanneer je automatisering moet worden uitgevoerd (optioneel) |
actions |
definieert de acties die plaatsvinden in je automatisering |
De template is onderverdeeld in 2 hoofdblokken: metadata en automations. Automatiseringen zijn weer onderverdeeld in gedeelten voor starters, voorwaarden en acties.
Blokken voor metadata en automatiseringen
De scripteditor-template heeft 2 bovenliggende sleutels of blokken op het hoogste niveau: metadata
en automations
.
Het blok metadata
omvat de naam en beschrijving van je automatisering. Dit wordt alleen gebruikt om je automatisering te identificeren.
metadata: name: TV time description: When TV is on, turn on lights
Het blok automations
vormt de kern van je automatiseringsscript. Hier definieer je het gedrag van je automatisering met starters, voorwaarden en acties.
automations: starters: # e.g. Motion detected condition: # e.g. Between 2 times actions: # e.g. Turn on lights
Voor meer inzicht in het gebruik van de scripteditor ga je naar ons codelab, check je de voorbeeldscripts of neem je meer informatie over de indeling van afzonderlijke starters, voorwaarden en acties door in het Google Home-ontwikkelaarscentrum.
Automatisch aanvullen
Met behulp van de scripteditor kun je je script schrijven door in de volgende situaties suggesties voor automatisch aanvullen aan te bieden op basis van beschikbare starters, voorwaarden en acties:
- Als je de cursor op een plaats met geldige opties houdt. Bijvoorbeeld na
- type:
.- Terwijl je code met geldige suggesties typt. De lijst met suggesties wordt gefilterd terwijl je typt.
Je kunt automatisch aanvullen handmatig starten met de sneltoets Ctrl + spatiebalk.
Druk op Enter om een suggestie in de lijst te selecteren. Automatisch aanvullen vult extra velden in op basis van de structuur die je selecteert.
Tip: Je kunt automatisch aanvullen gebruiken om na te gaan welke apparaatstatussen of -opdrachten beschikbaar zijn voor je apparaat en welke apparaten beschikbaar zijn voor een bepaalde apparaatstatus of -opdracht.
Als je wilt weten welke apparaatstatussen of -opdrachten beschikbaar zijn voor je apparaat, voer je terwijl je je script schrijft eerst de sleutel device:
in en dan de sleutel type:
. Met de functie voor automatisch aanvullen krijg je een lijst met statussen of opdrachten die beschikbaar zijn voor dat apparaat.
Voorbeeld
starters: - device: LED lights - Living Room - type:
Als je wilt weten welke apparaten beschikbaar zijn voor een bepaalde apparaatstatus of opdracht, voer je eerst de sleutel type:
en daarna de sleutel device:
in. De functie voor automatisch aanvullen toont een lijst met beschikbare apparaten in je huis die deze status of opdracht ondersteunen.
Voorbeeld
starters: - type: device.state.OnOff - device:
Starters, voorwaarden en acties
Automatiseringen bestaan uit apparaatstarters, voorwaarden en acties. Met deze componenten bepaal je het gedrag van je automatisering.
Sommige starters, voorwaarden en acties vereisen een specifiek type sleutel/waarde-paar om de automatiseringslogica af te ronden en je script te laten weten wat je wilt evalueren. De waarde moet een geschikt gegevenstype zijn. De status on
van een lamp kan bijvoorbeeld true
of false
zijn. Als je de automatisering wilt starten als de lamp aanstaat, gebruik je het volgende:
state: on is: true
Hieronder vind je meer informatie over de verschillende starters, voorwaarden en acties die beschikbaar zijn. Ga naar het Google Home-ontwikkelaarscentrum voor een volledige lijst met starters, voorwaarden en acties.
Starters
In het gedeelte Starters van je script voer je in wat ervoor zorgt dat je script wordt uitgevoerd. Starters zijn gebaseerd op wat je apparaat kan doen of op kenmerken die kunnen worden gewijzigd, zoals apparaatstatussen, het tijdstip en apparaatgebeurtenissen. Je kunt bijvoorbeeld een lamp met de statussen OnOff
, Brightness
en ColorSetting
gebruiken. Als je meerdere starters wilt opnemen, neem je elke starter op met de sleutel ' - type:
'. Je script moet aan ten minste één startervoorwaarde voldoen om te worden uitgevoerd.
Neem de volledige lijst met ondersteunde starters door.
Typen starters
Assistent-starters
assistant.command
-starter om een script te starten als een apparaat met de Assistent een Assistent-opdracht hoort die met 'Hey Google' begint.starters: - type: assistant.command.OkGoogle eventData: query is: party time
Starters voor apparaatgebeurtenissen
Gebruik een device.event
-starter om je script te laten starten als er een specifieke gebeurtenis plaatsvindt, bijvoorbeeld als iemand aanbelt of als een sensor iets waarneemt. Opmerking: Niet alle gebeurtenissen worden ondersteund.
starters: - type: device.event.DoorbellPress device: Doorbell - Front door
starters: - type: device.event.PersonDetection device: Camera - Backyard
Voorbeeld: Je automatisering start als je camera beweging waarneemt.
Opmerking:
- Voor cameragebeurtenissen moet je een compatibele Nest-camera of -deurbel of een compatibel Nest-scherm hebben en gebeurtenisdetectie instellen.
- Voor sommige cameragebeurtenissen heb je een Nest Aware-abonnement nodig of moet een camera op de netvoeding worden aangesloten. De geluidsdetectie werkt bijvoorbeeld alleen op de Nest Cam (outdoor of indoor, batterij) als deze op netvoeding is aangesloten.
- Je kunt starters onderdrukken op basis van apparaatgebeurtenissen en apparaatstatussen voor een bepaalde periode.
Starters voor apparaatstatus
device.state
-starter om de automatisering te starten op basis van de status van een apparaat. Statussen zijn kenmerken van een apparaat, bijvoorbeeld als de temperatuur van je thermostaat een bepaalde temperatuur bereikt, als een lamp aan- of uitgaat of als een ondersteunde sensor een bepaalde drempelwaarde bereikt.
device.state
. Als je bijvoorbeeld wilt checken of een apparaat aanstaat, gebruik je device.state.OnOff
.device.state
wilt gebruiken, begin je met 3 sleutels: type
, device
en state
, gevolgd door ten minste 1 sleutel/waarde-paar voor vergelijking.Sleutel | Waarde | Voorbeeld |
type |
De starter voor apparaatstatus, die begint met device.state |
device.state.ArmDisarm |
device |
De naam zoals getoond in de Google Home-app met de naam van de ruimte: Device name - Room name |
Alarm - Front Door |
state |
Het veld of de statusgegevens van de starter die je wilt checken. Zoek in het Google Home-ontwikkelaarscentrum de starter die je wilt gebruiken om Ondersteunde velden of Statusgegevens te vinden. |
isArmed |
Je kunt de volgende sleutel/waarde-paren gebruiken met de device.state-starter:
Vergelijkingssleutels | Ondersteunde waardetypen | Voorbeeld |
---|---|---|
is |
Tekenreeks | Getal | Bool | Dynamisch | is: on |
isNot |
Tekenreeks | Getal | Bool | Dynamisch | isNot: cast |
greaterThan |
Tekenreeks | Getal | Bool | Dynamisch | greaterThan: 1 |
lessThan lessThanOrEqualTo |
Tekenreeks | Getal | Bool | Dynamisch | lessThan: 10 |
suppressFor |
Duur | suppressFor: 1hour |
Voorbeeld: Je automatisering start als het tv-volume tussen 1 en 10 ligt.
starters: - type: device.state.Volume device: TV - Living room state: currentVolume greaterThan: 1 lessThan: 10
Starters voor huisstatus
home.state
om je script te laten starten op basis van of je thuis of afwezig bent. Dat kan worden waargenomen met aanwezigheidsdetectie.starters: - type: home.state.HomePresence state: homePresenceMode is: HOME
Starters voor tijdstip
time
-starter om je automatisering te starten op basis van specifieke dagen en tijdstippen. Je kunt de volgende sleutel/waarde-paren gebruiken met de time-starter:Starters onderdrukken
Gebruik de sleutel voor vergelijking suppressFor
om je automatisering te laten weten dat een starter gedurende een bepaalde periode moet worden genegeerd. Als de camera bijvoorbeeld iemand waarneemt, aankondigen dat er iemand voor de deur staat en de volgende 10 minuten geen nieuwe aankondiging doen, ook niet als de camera nog steeds iemand waarneemt.
Voorbeeld: Als iemand 's ochtends voor het eerst door mijn gang loopt, open dan al mijn jaloezieën en onderdruk deze starter de komende 20 uur.
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
Voorwaarden
and
, or
en not
worden gecombineerd om complexere voorwaardecontroles uit te drukken.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
In dit voorbeeld is er één time-voorwaarde en één device.state
-voorwaarde. Dit script wordt uitgevoerd als het op maandag en dinsdag tussen zonsondergang en zonsopkomst is, of als het tv-volume tussen 1 en 10 ligt.
Je kunt de volgende voorwaardetypen gebruiken:
Voorwaarde-operators
AND-voorwaarde
Als je de voorwaarde and
gebruikt, wordt je script alleen uitgevoerd als aan alle onderliggende voorwaarden is voldaan.
Voorbeeld: Je automatisering start als de tv aanstaat EN als de tijd na 18:00 uur is.
condition: type: and conditions: - type: device.state.OnOff device: TV - Living Room state: on is: true - type: time.between after: 6:00 pm
OR-voorwaarde
Als je de voorwaarde or
gebruikt, wordt je script uitgevoerd als een van de onderliggende voorwaarden zich voordoet.
Voorbeeld: Je automatisering start als de tv aanstaat OF als de tijd na 18:00 uur is.
condition: type: or conditions: - type: device.state.OnOff device: TV - Living Room state: on is: true - type: time.between after: 6:00 pm
NOT-voorwaarde
Als je de voorwaarde not
gebruikt, kan je script niet worden uitgevoerd als de onderliggende voorwaarde plaatsvindt.
Voorbeeld: Je automatisering start als de tijd niet tussen 18:00 en 20:00 uur is.
condition: type: not condition: type: time.between after: 6:00pm before: 8:00pm
Voorwaarden voor apparaatstatus
device.state
-voorwaarde om te beperken wanneer je script kan worden uitgevoerd op basis van de status van een apparaat op het moment dat het script wordt gestart. Device.state
-voorwaarden zijn vergelijkbaar met device.state
-starters, maar geven niet aan wanneer je script moet worden gestart. In plaats daarvan beperken ze de situaties waarin het script kan worden uitgevoerd.device.state
. Als je bijvoorbeeld wilt checken of een apparaat aanstaat, gebruik je device.state.OnOff
.device.state
-voorwaarde wilt gebruiken, begin je met 3 sleutels: type
, device
en state
, gevolgd door ten minste 1 sleutel/waarde-paar voor vergelijking.Sleutel | Waarde | Voorbeeld |
---|---|---|
type |
De voorwaarde voor apparaatstatus, te beginnen met device.state |
device.state.OnOff |
device |
De naam zoals getoond in de Google Home-app met de naam van de ruimte: Device name - Room name |
Chromecast - Living Room |
state |
De starterstatus die je wilt checken. Zoek in het Google Home-ontwikkelaarscentrum de voorwaarde voor de apparaatstatus die je wilt gebruiken. |
state: on |
Tip: Als je wilt weten welke apparaatstatussen beschikbaar zijn voor je apparaat, voer je eerst de sleutel 'device:
' en daarna de sleutel 'type:
' in je script in. Automatisch aanvullen toont een lijst met statussen die beschikbaar zijn voor dat apparaat.
Je kunt de volgende sleutel/waarde-paren voor vergelijking gebruiken met de device.state
-voorwaarde:
Vergelijkingssleutels | Ondersteunde waardetypen | Voorbeeld |
---|---|---|
is |
Tekenreeks | Getal | Bool | Dynamisch | is: on |
isNot |
Tekenreeks | Getal | Bool | Dynamisch | isNot: cast |
greaterThan |
Tekenreeks | Getal | Bool | Dynamisch | greaterThan: 1 |
lessThan lessThanOrEqualTo |
Tekenreeks | Getal | Bool | Dynamisch | lessThan: 10 |
Voorbeeld: Je automatisering start als de thermostaat een luchtvochtigheid van meer dan 55% waarneemt.
condition: type: device.state.TemperatureSetting device: My Thermostat - Living Room state: thermostatHumidityAmbient greaterThan: 55
Voorwaarden voor huisstatus
home.state.HomePresence
-voorwaarde om te beperken wanneer je script mag worden uitgevoerd op basis van of iemand thuis of afwezig is.home.state.HomePresence
-voorwaarde maakt, zorg je dat je aanwezigheidsdetectie instelt in de Google Home-app en dat aanwezigheidsdetectie werkt zoals verwacht. Je kunt de aanwezigheid in huis bepalen aan de hand van de locatie van de telefoons in je huishouden, sensoren in sommige Nest-apparaten of door handmatig tussen Thuis en Afwezig te wisselen in de Google Home-app.Meer informatie over aanwezigheidsdetectie en Thuis- en Afwezig-routines:
home.state.HomePresence
-voorwaarde:Vergelijkingssleutels | Ondersteunde waardetypen | Voorbeeld |
---|---|---|
is |
Tekenreeks ('HOME' of 'AWAY') | is: away |
isNot |
Tekenreeks ('HOME' of 'AWAY') | isNot: HOME |
for |
Duur | for: 30min |
suppressFor |
Duur | suppressFor: 1hour |
Voorbeeld: De voorwaarde home.state.HomePresence
start de automatisering als je aanwezigheid is ingesteld op HOME.
condition: type: home.state.HomePresence state: homePresenceMode is: HOME
Voorwaarden voor tijdstip
time.between
-voorwaarde om te beperken wanneer je script mag worden uitgevoerd. Je kunt de volgende sleutel/waarde-paren voor vergelijking met de time.between
-voorwaarde gebruiken:Acties
In het gedeelte met acties van je script geef je aan wat je apparaten moeten doen. Als je meerdere acties wilt opnemen, vermeld je elke actie, te beginnen met de sleutel - type:
. Je script moet ten minste één actie hebben voordat het kan worden uitgevoerd. De meeste acties beginnen met device.command
.
Je kunt de volgende actietypen gebruiken:
Assistent-acties
Gebruik de actie assistant.command
met je speakers of schermen om de Assistent acties te laten uitvoeren zoals 'Doe alle lampen uit' of 'Geef me het weerbericht'.
Via Assistent-opdrachten kun je apparaten per ruimte of voor je hele huis bedienen zonder specifieke apparaatnamen te gebruiken. Zo bespaar je tijd, omdat je deze opdracht ook automatisch kunt gebruiken met toekomstige apparaten die aan de Home-app worden toegevoegd. Voor Assistent-opdrachten heb je een geschikte speaker of een geschikt scherm nodig om de actie uit te voeren.
actions: - type: assistant.command.OkGoogle okGoogle: Turn on living room lights devices: My Speaker - Room Name
actions: - type: assistant.command.OkGoogle okGoogle: Turn off all lights devices: My Speaker - Room Name
actions: - type: assistant.command.Broadcast devices: - My Speaker 1 - Room Name - My Speaker 2 - Room Name message: It’s dinner time.
Met Assistent-acties kun je ook aangepaste acties uitvoeren, zoals:
- 'Speel Hello van Adele via YouTube Music af op de speaker in de slaapkamer.'
- 'Speel grappige kattenvideo's via YouTube af op het scherm in de woonkamer.'
- 'Wat voor weer wordt het morgen?'
- 'Vertel eens een grap.'
- 'Toon de camera op de oprit op het scherm in het thuiskantoor.'
Apparaatacties
device.command
om een apparaat te bedienen of aan te passen. Elke actieopdracht heeft een eigen reeks kenmerken en structuur. Je kunt opdrachten aan je script toevoegen door de opdrachtactie voor een apparaat na device.command
toe te voegen. Als je bijvoorbeeld een apparaat wilt aanzetten, gebruik je device.command.OnOff
. De actie device.command
moet de volgende gegevens hebben:Sleutel | Waarde | Voorbeeld |
---|---|---|
type |
De apparaatactie, te beginnen met device.command |
device.command.OpenClose |
devices |
Naam van het apparaat zoals getoond in de Google Home-app met de naam van de ruimte: Device name - Room name. Als je meerdere apparaten wilt toevoegen, maak je een lijst. | Blinds - Bedroom |
Tip: Als je wilt weten welke acties of opdrachten beschikbaar zijn voor je apparaat, voer je eerst de sleutel 'device:' in en daarna de sleutel 'type:'. Automatisch aanvullen toont dan een lijst met acties die voor dat apparaat beschikbaar zijn.
Veel device.command
-acties hebben extra sleutels die de vereiste invoer voor de opdracht specificeren. De actie device.command.ThermostatTemperatureSetpoint
vereist bijvoorbeeld een sleutel/waarde-paar thermostatTemperatureSetpoint
om de thermostaat te laten weten op welke nieuwe temperatuur deze moet worden ingesteld.
Als je meer informatie wilt over hoe je opdrachten gebruikt, zoek je naar de betreffende actie in het Google Home-ontwikkelaarscentrum en volg je de structuur voor de actie die je wilt gebruiken.
Voorbeeld: Zet de tv in je woonkamer aan.
actions: type: device.command.OnOff devices: TV - Living room on: true
Voorbeeld: Zet een lamp aan en zet deze na 5 minuten weer uit.
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
Meldingsacties
Gebruik de actie home.command.Notification
om je script meldingen te laten sturen naar de mobiele apparaten van leden van het huis. Je kunt bijvoorbeeld meldingen krijgen als huishoudelijke apparaten die zijn aangesloten op smartstekkers worden uitgezet of offline gaan.
actions: - type: home.command.Notification members: - Alex - [email protected] - Kim - [email protected] title: It’s movie time! body: Join me in the living room
Tijdacties
time.delay
om je script een bepaalde tijd te laten wachten tussen 2 acties in je lijst in plaats van alle acties tegelijk uit te voeren. Je kunt meerdere vertragingen aan je script toevoegen. Je kunt het script bijvoorbeeld tussen elke actie 10 seconden laten wachten.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
Hulpbronnen
Oefenen met een script schrijven
Voordat we aan de slag kunnen, maken we een eenvoudige maar populaire automatisering: 'Turn off the lights when the TV turns on'.
- Open home.google.com/automations en log in op je account.
- Klik op Nieuwe toevoegen
.
- Vul de metadata-informatie in. In dit script geldt dat de name =
TV on lights off
en de description =Turn off lights when TV turns on
. Zorg dat je het script correct opmaakt.metadata: name: TV on lights off description: Turn off lights when TV turns on.
- Als je starters wilt toevoegen, maak je een nieuwe regel, laat je deze 2 spaties inspringen of druk je één keer op Tab en voer je
starters:
in. Spring op de volgende regel weer in en voer- type:
in.Tip:- Als je een nieuwe regel wilt maken, druk je op Shift
Enter.
- Als je meerdere starters wilt opnemen, moet elke starter beginnen met een koppelteken en een spatie.
- Als je een nieuwe regel wilt maken, druk je op Shift
metadata: name: TV on lights off description: Turn off lights when TV turns on automations: starters: - type:Opmerking: De scripteditor helpt je met de structuur door suggesties voor automatisch aanvullen te leveren op basis van beschikbare starters. Als je wilt kiezen uit de suggesties, gebruik je de pijltoetsen op je toetsenbord om er een te selecteren en druk je op Enter om de suggestie in te voegen.
- Voeg de starter
device.state
toe. Als je device.state-starter wilt gebruiken, gebruik je 3 sleutels:type,
,device
enstate
, gevolgd door ten minste één sleutel/waarde-paar voor vergelijking. De scripteditor helpt je met de structuur door suggesties voor automatisch aanvullen te leveren op basis van beschikbare starters, voorwaarden en acties. In dit script geldt het volgende:- Type =
device.state.OnOff
. Dit is de status van het apparaat die wordt geëvalueerd om onze automatisering te starten. - Device =
Chromecast - Living Room
. Dit is de naam van ons apparaat zoals getoond in de Google Home-app. - State =
on
. 'On' is de ondersteunde veld- of de statusinformatie voor de OnOff-status van het apparaat. - Het sleutel/waarde-paar voor vergelijking =
is: true
. De waarde voor deze vergelijkingssleutel is een primitief gegevenstype. Het script wordt uitgevoerd als de tv aanstaat.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
Laten we ter vergelijking een vergelijkbaar script met een andere starter checken. In het onderstaande script wordt de automatisering gestart als het volume tussen 1 en 10 ligt in plaats van wanneer de tv aangaat. Voor deze wijziging hebben we de status
OnOff
vervangen doorVolume
en is de bijbehorende status voor het nieuwe kenmerk gewijzigd incurrentVolume
. We hebben ook de sleutel/waarde-paren voor vergelijking gewijzigd in 2 geneste paren die een bereik aangeven:greaterThan: 1
enlessThan: 10
. Hier volgt een volledig overzicht van starters die je kunt gebruiken.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
- Type =
- Klik op Opslaan om je script op elk gewenst moment op te slaan. Als je een script opslaat, wordt je script automatisch door de scripteditor gevalideerd en op fouten gecheckt. Een ongeldig script kan niet worden uitgevoerd.
- Voeg nu een actie aan je script toe. Als je acties wilt toevoegen, maak je een nieuwe regel, laat je deze 2 spaties inspringen of druk je één keer op Tab en voer je
actions:
in. Spring de volgende regel weer in en voer- type
in.Tip:- Als je een nieuwe regel wilt maken, druk je op Shift
Enter.
- Als je meer acties wilt toevoegen, begin je elke actie met een koppelteken en een spatie.
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:
- Als je een nieuwe regel wilt maken, druk je op Shift
- We gebruiken de actie
device.command
om de lampen uit te doen. We voegen de volgende informatie toe om de device.command-actie te kunnen gebruiken:- Type =
device.command.OnOff
. Dit is de naam van de opdracht of actie.Opmerking: Opdrachten kunnen meerdere geneste opdrachten hebben onder je apparaten, waarbij elke opdracht een eigen status heeft. - Devices = een lijst met
Floor Lamp - Living Room
enOverhead Light - Living Room
. Dit zijn de namen van onze lampen, zoals ze worden getoond in de Google Home-app. Als je meerdere lampen wilt toevoegen, vermeld je elk apparaat op een afzonderlijke regel die steeds met een koppelteken begint. - De gewenste status van de opdracht =
on: false
. Deze regel vertelt ons dat onze lampen uit moeten.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
- Type =
- Klik op Opslaan om het script op te slaan. Als er geen fouten zijn, wordt je script automatisch geactiveerd: als de tv aangaat, gaan de lampen uit. Als je nog niet klaar bent om je script te laten uitvoeren, kun je het script onderbreken door Activeren uit te zetten.
Voor extra oefening raden we je aan iets aan je script te wijzigen om andere starters, gegevenstypen, meerdere acties of een extra voorwaarde zoals time.between
te gebruiken. Ook kun je de voorbeeldscripts en het codelab checken voor meer informatie. Ga naar het Google Home-ontwikkelaarscentrum voor gedetailleerde informatie over starters, acties en voorwaarden.
Hulp bij gescripte automatiseringen
- Ga naar de Community voor Google Home-automatisering voor hulp met scripts en om te ontdekken waar anderen aan werken.
- Scripts moeten geldige code gebruiken, anders werken de automatiseringen niet. Als het script een fout bevat, verschijnt er een bericht. Krijg meer informatie over fouten en waarschuwingen in de scripteditor.
- Als je de code wilt valideren, klik of tik je op Valideren in de scripteditor of probeer je je script op te slaan. Dit zijn een paar veelvoorkomende fouten:
- Zorg dat je de juiste apparaatnaam gebruikt met de indeling Device name - Room name. Als je het niet zeker weet, check je de naam van je apparaat in de Google Home-app.
- Zorg dat je apparaat de functie ondersteunt die je wilt laten uitvoeren. Je kunt ook automatisch aanvullen gebruiken om beschikbare opties te zoeken.
- Zorg dat je een actie in het script opneemt. Acties zijn vereist om een automatisering uit te voeren.
- Als het script wordt opgeslagen maar de automatisering niet werkt zoals verwacht, check je handmatig of elke component in je script werkt. Als je bijvoorbeeld een script hebt geschreven om een lamp aan te doen en de helderheid bij zonsondergang te wijzigen, kun je deze taken uitvoeren met een Assistent-opdracht om na te gaan of elke afzonderlijke functie werkt. Je kunt ook het volgende checken:
- Je apparaat is toegevoegd of gekoppeld in de Google Home-app.
- Je apparaat is verbonden en online.
- De apparaatnaam, starters, voorwaarden en acties zijn correct geschreven.
Opmerking: Fabrikanten kunnen apparaatkenmerken wijzigen als ze updates uitvoeren. Dit kan ertoe leiden dat scripts niet meer werken. Je kunt automatisch aanvullen gebruiken om de betreffende scripts te updaten. - Je script heeft de juiste inspringing en opmaak.
- Met Google Home voor het web heb je toegang tot automatiseringslogboeken
onder je script om de geschiedenis van je automatisering te checken en mogelijke problemen op te sporen. Meer informatie over de typen berichten die je in de automatiseringslogboeken ziet
- Gebruik de experimentele functie voor generatieve AI van de scripteditor om de gewenste automatisering te beschrijven. Er wordt dan een concept gemaakt van een script dat je kunt checken en bewerken.
- Meer informatie over de basisbeginselen van routines en hoe je problemen met routines oplost.
- Meer informatie over hoe je gescripte automatiseringen maakt en bewerkt.