Règles
Chaque règle d'interaction doit correspondre avant que Broker exécute ses directives. Les règles utilisent l'ancre d'interaction par défaut, mais peuvent également spécifier une ancre de remplacement relative ou absolue.
Pour les interactions non block, UIX Broker réessaye une ancre de remplacement de règle manquante toutes les 50 ms pendant deux secondes maximum. Ceci est utile pour les interfaces, telles que les boîtes de dialogue, qui se montent après le déclenchement de leur événement initiateur.
Règles des éléments hôtes
Les règles de chaîne compacte utilisent le chemin d'accès de l'élément hôte UIX correspondant à l'ancre d'interaction ou à une ancre de remplacement.
Les sélecteurs Tag, class, id, attribute et property sont pris en charge.
Les règles compactes correspondent à l'ancre d'interaction, permettant des définitions de règles concises sur une seule ligne.
La liste de règles ci-dessous correspond au moment où l'interaction s'ancre :
- est
ha-button.action-button[data-action]; - a une propriété d'objet
config.entityqui est égale àlight.example; - a une propriété d'objet
controllerqui est présente maisundefined; et - n'a pas la propriété d'objet
uixBrokerGuard.
rules:
- "ha-button.action-button[data-action]"
- "{.config.entity=light.example}"
- "{.controller=undefined}"
- "{!.uixBrokerGuard}"Utilisez le formulaire développé lorsqu'une règle doit inspecter un élément d'ancrage différent. Sa configuration anchor sélectionne l'élément à tester et son match applique le chemin d'accès à l'élément hôte UIX correspondant à cet élément sélectionné. Une règle anchor est relative à l'ancre d'interaction ; préfixez-le avec & pour un chemin select_tree racine absolue du document. Le formulaire select_tree étendu est également disponible et est toujours absolu par rapport à la racine du document.
rules:
# Relative rule anchor with a tag match
- anchor: "$ ha-dialog"
match: "ha-dialog"
# Compact absolute rule anchor with a tag match
- anchor: "&home-assistant $$ ha-automation-sidebar"
match: "ha-automation-sidebar"
# Long absolute rule anchor with a host-element object property match
- anchor:
select_tree: "home-assistant $$ ha-automation-sidebar"
match: "{._yamlMode=false}"TIP
Les ancres de règle utilisent la même syntaxe d'arbre de sélection que les ancres de directive et sont réessayées pendant qu'une interaction non-block est en cours d'exécution.
TIP
Correspondance de propriété d'objet d'élément hôte {.property=undefined} correspond uniquement lorsque la propriété existe et que sa valeur est undefined. {!.property} correspond uniquement lorsque la propriété est absente.
Règles typées
Les règles typées ont une clé type. Les types pris en charge sont browserid, user, user_is_admin, hash, search, captured et panel.
Identité du navigateur
La règle browserid correspond à un identifiant de navigateur Browser Mod. Utilisez la clé id, browser_id ou value pour l'identité de navigateur attendue.
rules:
- type: browserid
id: kitchen-tabletUtilisateur de Home Assistant
INFO
Règles d'utilisation de Home Assistant disponibles dans la version 8.3.0-beta.1
Utilisez type: user pour faire correspondre l'utilisateur Home Assistant connecté par son nom d’affichage (hass.user.name) ou identifiant d’utilisateur stable (hass.user.id). Maison Les noms d'utilisateur de l'assistant ne sont pas disponibles dans l'objet utilisateur frontal et ne sont pas soutenu par cette règle ; utilisez un nom d’affichage ou un identifiant. match et value utilisent le mêmes syntaxe et opérateurs de correspondance que règles de données capturées, y compris les caractères génériques, les expressions régulières et la composition booléenne. Réglez soit match ou value.
rules:
# Matches a user named Darryn or whose id is Darryn.
- type: user
match: Darryn
# Prefer the stable id when it is known.
- type: user
match: 9f1362c9e0a24d918c66d4fdcf12b001Pour un correspondant positif, le nom ou l'identifiant peuvent correspondre. Un matcher annulé, y compris not ou !=, doit exclure les deux champs. Par exemple, cela correspond chaque utilisateur sauf l'utilisateur nommé wall-panel (ou avec cet identifiant) :
rules:
- type: user
match:
not: wall-panelUtilisez type: user_is_admin pour correspondre au statut d'administrateur de l'utilisateur actuel. Sans matcher, cela signifie « est un administrateur » ; réglez match ou value sur false pour utilisateurs non-administrateurs. Il prend en charge les mêmes objets de correspondance avancés.
Utilisateur administrateur :
rules:
- tapez : user_is_admin
Utilisateur non-administrateur dont le nom ou l'identifiant commence par wall- :
rules:
- tapez : utilisateur
match: wall-*
- tapez : user_is_admin
match: false
Fragment d'URL du navigateur
Utilisez type: hash pour faire correspondre le fragment d'URL du navigateur. La valeur est la partie après #, donc aucun path n'est requis. match et value utilisent la même syntaxe et les mêmes opérateurs de correspondance que les règles de données capturées.
rules:
- type: hash
match: settingsCette règle empêche l'exécution des directives de l'interaction à moins que l'URL actuelle ne se termine par #settings.
Paramètres de recherche du navigateur
Utilisez type: search pour faire correspondre un paramètre de recherche d'URL nommé. Définissez path sur le nom du paramètre. match et value utilisent la même syntaxe et les mêmes opérateurs de correspondance que les règles de données capturées.
rules:
- type: search
path: entity_id
match: "light.kitchen*"Cette règle empêche l'exécution des directives de l'interaction à moins que l'URL n'ait un paramètre ?entity_id= correspondant. Utilisez exists: false pour effectuer une correspondance lorsque le paramètre nommé est absent.
Règles relatives aux données capturées
Utilisez type: captured pour faire correspondre les données collectées à partir de l'événement initiateur. path est un chemin de chaînage facultatif séparé par des points relatif aux données capturées ; ne le démarrez pas avec @captured. Les index de tableau peuvent utiliser la notation par points (items.0) ou par parenthèses (items[0]). Utilisez des touches entre crochets lorsqu'une propriété contient des signes de ponctuation, par exemple settings['icon-color'].
Pour les interactions avec le navigateur et les raccourcis, les données capturées commencent au niveau detail de l'événement DOM. Pour les interactions avec le serveur, les données d'événement Home Assistant se trouvent sous data. Les index de tableau sont pris en charge.
rules:
- type: captured
path: data.new_state.state
match:
operator: ">="
value: 20Les valeurs de correspondance simples prennent en charge les valeurs exactes, les caractères génériques, les expressions régulières et les comparaisons numériques :
rules:
- type: captured
path: button
match: "save*"
- type: captured
path: room
match: "/^kitchen/i"
- type: captured
path: count
match: ">= 20"Correspondance avancée
Un objet matcher prend en charge les compositions operator, value (ou match), ignore_case, exists et les compositions imbriquées and, or et not.
Les opérateurs pris en charge sont >, <, =, <=, >=, ==, !=, contains, starts_with, ends_with et is_undefined.
rules:
- type: captured
path: button
match:
or:
- "save*"
- "/^submit$/i"
- type: captured
path: count
match:
and:
- "> 0"
- "<= 10"
- type: captured
path: data.value
match:
operator: is_undefined
exists: trueis_undefined avec exists: true distingue une propriété actuelle dont la valeur est undefined d'un chemin manquant. Utilisez exists: false pour faire correspondre explicitement un chemin manquant.
Formulaire compact de données capturées
Pour les configurations compactes, mappez un ou plusieurs chemins capturés directement dans une règle d'objet. Chaque entrée doit correspondre. Le préfixe @captured est conservé uniquement sous cette forme compacte.
rules:
- "@captured.user.role": admin
"@captured.enabled": trueRègles du panel
Utilisez type: panel pour faire correspondre l'objet du panneau UIX actuel. UIX Broker obtient cet objet de manière asynchrone ; il contient les mêmes champs panel disponibles pour modèles, tels que fullUrlPath, panelUrlPath, viewUrlPath et panelComponentName.
path (ou son alias property) est un chemin de chaînage facultatif séparé par des points par rapport à cet objet panneau. match et value utilisent exactement la même syntaxe et les mêmes opérateurs de correspondance que les règles de données capturées, y compris les caractères génériques, les expressions régulières, les comparaisons numériques, exists et la composition and/or/not.
rules:
- type: panel
path: fullUrlPath
match: "lovelace/kitchen*"
- type: panel
path: fullUrlPath
match:
operator: contains
value: automation/edit
- type: panel
path: panelComponentName
match:
operator: "="
value: lovelaceWARNING
L’état du panneau est asynchrone. Une interaction utilisant une règle de panneau ne peut pas utiliser une directive block, car le blocage d'un événement doit se terminer dans la pile d'appels synchrones de l'événement. UIX Broker ignore ces interactions et enregistre un avertissement.
