Gescripte automatiseringen schrijven met de scripteditor

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: Codelab bezoeken
Belangrijk: Alle leden van het huishouden kunnen checken wanneer deze routines worden uitgevoerd. Routines zijn alleen bedoeld voor gebruiksgemak en niet voor veiligheids- of beveiligingskritieke toepassingen. Maak geen routines die letsel of schade kunnen veroorzaken als ze niet kunnen worden gestart of gestopt. Routines kunnen afhankelijk zijn van een werkende internet- en wifi-verbinding en van de beschikbaarheid van de services van Google en de externe fabrikanten van de apparaten die voor de routines worden gebruikt. Routines werken misschien niet altijd en Google is niet verantwoordelijk voor eventuele schade of verliezen als gevolg van mislukte routines.

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
  • true
  • false
Cijfer Geheel getal of decimaal getal
Tekenreeks

Platte tekst

Tekenreekswaarden hebben alleen aanhalingstekens nodig als ze beginnen met [, {, ", ' of #, of als de tekenreeks een dubbele punt heeft gevolgd door 1 of 2 spaties. De aanhalingstekens moeten overeenkomen. Gebruik bijvoorbeeld " " of ‘ ‘, niet " ‘.

Datum

Maand en dag. De notatie is MM-DD of MM/DD.

  • 09/01
  • 09-01
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 sunrise en sunset gebruiken, gevolgd door een duur.

  • 12:30 am
  • 13:00:01
  • sunrise / sunset
  • sunset+30min / sunset-1hour
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.

  • 2022/01/01 14:00
  • 2022-12-31 sunrise+30min
Weekdag
  • MON of MONDAY
  • TUE of TUESDAY
  • WED of WEDNESDAY
  • THU of THURSDAY
  • FRI of FRIDAY
  • SAT of SATURDAY
  • SUN of SUNDAY
Duur

Een bepaalde periode.

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

Hex-kleurwaarde

Een hexadecimale code van 6 cijfers die een kleur vertegenwoordigt. Het getal wordt niet voorafgegaan door #.

  • FFFFFF
  • B5D2A1
  • DFA100
Temperatuur

Temperatuurgegevens. Voeg altijd C of F toe om Celsius of Fahrenheit aan te geven.

  • 20.5C
  • 90F
Kleurtemperatuur

De kleurtemperatuur in Kelvin.

  • 5000K

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

Voor complexere automatiseringen kan de waarde een lijst zijn met meerdere geneste sleutel/waarde-paren.
starters:
- 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 : gevolgd door een spatie om een sleutel te scheiden van de waarde.

state: on

Inspringing

Inspringing geeft de structuur en hiërarchie aan en definieert geneste sleutelparen.

In het voorbeeld geldt dat de bovenliggende sleutel = metadata. De sleutels name en description zijn onderliggende sleutels die zijn genest onder de metadata van de bovenliggende sleutel. De geneste sleutels hebben elk een inspringing van 2 spaties of 1 tab om de structuur aan te geven.

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

Koppelteken

Een koppelteken gevolgd door een spatie definieert een lijstitem.
weekdays:
- MONDAY
- THURSDAY

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

Gebruik een assistant.command-starter om een script te starten als een apparaat met de Assistent een Assistent-opdracht hoort die met 'Hey Google' begint.
Opmerking: Als een automatisering wordt gestart met een spraakopdracht en er een Assistent-actie in het script staat, vindt de Assistent-actie plaats op het apparaat dat de spraakopdracht hoort, ook als er in je script een ander apparaat is ingevoerd.
Voorbeeld: Je automatisering start als iemand zegt: 'Hey Google, party time'.
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.

Voorbeeld: Je automatisering start als iemand op de deurbel drukt.
starters:
- type: device.event.DoorbellPress
  device: Doorbell - Front door
Voorbeeld: Je automatisering start als je camera een persoon waarneemt.
starters:
- type: device.event.PersonDetection
  device: Camera - Backyard 

Voorbeeld: Je automatisering start als je camera beweging waarneemt.

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

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

Gebruik een 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.
Opmerking: Je kunt starters onderdrukken op basis van apparaatgebeurtenissen en apparaatstatussen voor een bepaalde periode.
Voeg de status van een starter voor de apparaatstatus toe na device.state. Als je bijvoorbeeld wilt checken of een apparaat aanstaat, gebruik je device.state.OnOff.
Als je de starter 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
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 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
greaterThanOrEqualTo
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

Gebruik de starter home.state om je script te laten starten op basis van of je thuis of afwezig bent. Dat kan worden waargenomen met aanwezigheidsdetectie.
Voorbeeld: Je automatisering start als je thuis bent.
starters:
- type: home.state.HomePresence
  state: homePresenceMode
  is: HOME

Starters voor tijdstip

Gebruik een 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:
Vergelijkingssleutels Ondersteunde waardetypen Voorbeeld
before Tijd before: sunset
after Tijd after: 7:00 am
weekdays Weekdag weekdays: MON

Voorbeeld: Je automatisering start op maandag en dinsdag, 30 minuten na zonsopkomst.

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

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

Voorwaarden zijn optionele beperkingen voor wanneer je automatiseringen moeten worden uitgevoerd. Als je voorwaarden toevoegt, wordt je script alleen uitgevoerd als aan de voorwaarden wordt voldaan. Veel starters kunnen ook als voorwaarden worden gebruikt en kunnen met de logische operatoren 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

Gebruik een 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.
Voeg de status van een voorwaarde voor apparaatstatus toe na device.state. Als je bijvoorbeeld wilt checken of een apparaat aanstaat, gebruik je device.state.OnOff.
Als je 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
greaterThanOrEqualTo
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

Gebruik een home.state.HomePresence-voorwaarde om te beperken wanneer je script mag worden uitgevoerd op basis van of iemand thuis of afwezig is.
Opmerking: Voordat je een script met de 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:

Je kunt de volgende sleutel/waarde-paren voor vergelijking gebruiken met de 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

Gebruik de 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:
Vergelijkingssleutels Ondersteunde waardetypen Voorbeeld
before Tijd before: sunset
after Tijd after: 7:00 am
weekdays Weekdag weekdays: MON

Voorbeeld: Je automatisering start alleen in het weekend vóór 10:00 uur.

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

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.

Opmerking: Als een automatisering wordt gestart met een spraakopdracht en er een Assistent-actie in het script staat, vindt de Assistent-actie plaats op het apparaat dat de spraakopdracht hoort, ook als er in je script een ander apparaat is ingevoerd.
Voorbeeld: Gebruik 'Turn on living room lights' om alle lampen in de woonkamer aan te doen.
actions:
- type: assistant.command.OkGoogle
  okGoogle: Turn on living room lights
  devices: My Speaker - Room Name 
Voorbeeld: Gebruik 'Turn off all lights' om alle lampen in je huis uit te doen.
actions:
- type: assistant.command.OkGoogle
  okGoogle: Turn off all lights
  devices: My Speaker - Room Name 
Voorbeeld: Je kunt je speakers of schermen een mededeling laten doen.
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.'
Opmerking: Assistent-acties waarvoor Voice Match of persoonlijke resultaten moeten worden aangezet, werken niet met automatiseringen voor huishoudens die zijn gemaakt met de scripteditor.

Apparaatacties

Gebruik de actie 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

Gebruik de actie 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.
Voorbeeld: Zet je lampen aan en na een vertraging van 30 seconden weer uit.
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'.

Opmerking: Als je geen streamingapparaat, smartlampen of vergelijkbare apparaten hebt, kun je nog steeds het scriptproces volgen, maar wordt je script niet uitgevoerd.
  1. Open home.google.com/automations en log in op je account.
  2. Klik op Nieuwe toevoegen .
  3. 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.
  4. 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.
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.
  1. Voeg de starter device.state toe. Als je device.state-starter wilt gebruiken, gebruik je 3 sleutels: type,, device en state, 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 door Volume en is de bijbehorende status voor het nieuwe kenmerk gewijzigd in currentVolume. We hebben ook de sleutel/waarde-paren voor vergelijking gewijzigd in 2 geneste paren die een bereik aangeven: greaterThan: 1 en lessThan: 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
  2. 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.
  3. 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:
  4. 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 en Overhead 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
  5. 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.

Was dit nuttig?

Hoe kunnen we dit verbeteren?
Zoeken
Zoekopdracht wissen
Zoekfunctie sluiten
Hoofdmenu
16138933606488372436
true
Zoeken in het Helpcentrum
true
true
true
true
true
1633396
false
false
false
false