Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Schéma pour les définitions des capacités
Une capacité est documentée à l'aide d'un document JSON déclaratif qui fournit un contrat clair sur la manière dont la capacité doit fonctionner au sein du système.
Pour une capacité, les éléments obligatoires sont$id
, name
extrinsicId
, extrinsicVersion
et au moins un élément dans au moins l'une des sections suivantes :
properties
actions
events
Les éléments facultatifs d'une fonctionnalité sont $ref
title
description
,version
, $defs
etextrinsicProperties
. Pour une fonctionnalité, vous $ref
devez vous référer àaws.capability
.
Les sections suivantes détaillent le schéma utilisé pour les définitions des capacités.
$id (obligatoire)
L'élément $id identifie la définition du schéma. Il doit suivre cette structure :
Commencez par le préfixe
/schema-versions/
URIInclure le type de
capability
schémaUtiliser une barre oblique (
/
) comme séparateur de chemin d'URIIncluez l'identité du schéma, avec des fragments séparés par des points (
.
)Utilisez le
@
caractère pour séparer l'ID et la version du schémaTerminez par la version semver, en utilisant des points (
.
) pour séparer les fragments de version
L'identité du schéma doit commencer par un espace de noms racine de 3 à 12 caractères, suivi d'un sous-espace et d'un nom facultatifs.
La version semver inclut une version MAJEURE (jusqu'à 3 chiffres), une version MINEURE (jusqu'à 3 chiffres) et une version PATCH optionnelle (jusqu'à 4 chiffres).
Note
Vous ne pouvez pas utiliser les espaces de noms aws
réservés ou matter
Exemple $id
/schema-version/capability/aws.Recording@1.0
$ref
L'$ref
élément fait référence à une capacité existante au sein du système. Il suit les mêmes contraintes que l'$id
élément.
Note
Une définition de type ou une capacité doit exister avec la valeur fournie dans le $ref
fichier.
Exemple $ref
/schema-version/definition/aws.capability@1.0
nom (obligatoire)
L'élément name est une chaîne représentant le nom de l'entité dans le document de schéma. Il contient souvent des abréviations et doit respecter les règles suivantes :
Ne contiennent que des caractères alphanumériques, des points (.), des barres obliques (/), des tirets (-) et des espaces
-
Commencez par une lettre
64 caractères maximum
L'élément name est utilisé dans l'interface utilisateur et la documentation de la console Amazon Web Services.
Exemples de noms
Door Lock On/Off Wi-Fi Network Management PM2.5 Concentration Measurement RTCSessionController Energy EVSE
title
L'élément de titre est une chaîne descriptive de l'entité représentée par le document de schéma. Il peut contenir n'importe quel caractère et est utilisé dans la documentation. La longueur maximale du titre d'une fonctionnalité est de 256 caractères.
Exemples de titres
Real-time Communication (RTC) Session Controller Energy EVSE Capability
description
L'description
élément fournit une explication détaillée de l'entité représentée par le document de schéma. Il peut contenir n'importe quel caractère et est utilisé dans la documentation. La longueur maximale d'une description de capacité est de 2 048 caractères
Exemple Description de l'exemple
Electric Vehicle Supply Equipment (EVSE) is equipment used to charge an Electric Vehicle (EV) or Plug-In Hybrid Electric Vehicle. This capability provides an interface to the functionality of Electric Vehicle Supply Equipment (EVSE) management.
version
L’élément version
est facultatif. Il s'agit d'une chaîne qui représente la version du document de schéma. Il présente les contraintes suivantes :
Utilise le format semver, avec les fragments de version suivants séparés par
.
(points).MAJOR
version, maximum de 3 chiffresMINOR
version, maximum de 3 chiffresPATCH
version (facultatif), maximum de 4 chiffres
La longueur peut être comprise entre 3 et 12 caractères.
Exemples de versions
1.0
1.12
1.4.1
Utilisation des versions de fonctionnalités
Une capacité est une entité versionnée immuable. Toute modification est censée créer une nouvelle version. Le système utilise le versionnement sémantique au format MAJOR.MINOR.PATCH, où :
La version MAJEURE augmente en cas de modifications d'API incompatibles avec les versions antérieures
La version MINOR augmente lors de l'ajout de fonctionnalités de manière rétrocompatible
La version du PATCH augmente lorsque des ajouts mineurs non impactants sont apportés à la fonctionnalité.
Les fonctionnalités dérivées des clusters Matter sont basées sur la version 1.4 et chaque version de Matter devrait être importée dans le système. Comme la version Matter consomme à la fois les niveaux MAJOR et MINOR de semver, les intégrations gérées ne peuvent utiliser que les versions PATCH.
Lorsque vous ajoutez des versions PATCH pour Matter, assurez-vous de tenir compte du fait que ce Matter utilise des révisions séquentielles. Toutes les versions de PATCH doivent être conformes à la révision documentée dans la spécification Matter et elles doivent être rétrocompatibles.
Pour résoudre les problèmes d'incompatibilité descendante, vous devez travailler avec la Connectivity Standards Alliance (CSA) pour résoudre les problèmes mentionnés dans la spécification et publier une nouvelle révision.
AWS-les fonctionnalités gérées ont été publiées avec une version initiale de1.0
. Avec ceux-ci, les trois niveaux de version peuvent être utilisés.
Version extrinsèque (obligatoire)
Il s'agit d'une chaîne représentant une version gérée en dehors du AWS IoT système. Pour les fonctionnalités de Matter, extrinsicVersion
des mappages vers revision
Il est représenté sous la forme d'une valeur entière sous forme de chaîne et sa longueur peut être comprise entre 1 et 10 chiffres numériques.
Exemples de versions
7
1567
ExtrinsiciD (obligatoire)
L'extrinsicId
élément représente un identifiant géré en dehors du système IoT d'Amazon Web Services. Pour les fonctionnalités de MatterclusterId
, elles attributeId
correspondent àcommandId
,eventId
,fieldId
, ou, selon le contexte.
Il extrinsicId
peut s'agir d'un entier décimal à chaînes (1 à 10 chiffres) ou d'un entier hexadécimal à chaînes (préfixe 0x ou 0X, suivi de 1 à 8 chiffres hexadécimaux).
Note
Pour AWS, l'ID du fournisseur (VID) est 0x1577, et pour Matter, il est égal à 0. Le système garantit que les schémas personnalisés n'utilisent pas ces schémas réservés VIDs aux fonctionnalités.
Exemples d'identifiants extrinsiciques
0018 0x001A 0x15771002
$deffs
La $defs
section est une carte des sous-schémas qui peuvent être référencés dans le document de schéma comme le permet le schéma JSON. Dans cette carte, la clé est utilisée dans les définitions de référence locales et la valeur fournit le schéma JSON.
Note
Le système impose uniquement qu'il $defs
s'agit d'une carte valide et que chaque sous-schéma est un schéma JSON valide. Aucune règle supplémentaire n'est appliquée.
Respectez les contraintes suivantes lorsque vous travaillez avec des définitions :
-
Utilisez uniquement des caractères adaptés aux URI dans les noms de définition
-
Assurez-vous que chaque valeur est un sous-schéma valide
-
Incluez un nombre quelconque de sous-schémas conformes aux limites de taille du document de schéma
Propriétés extrinsèques
L'extrinsicProperties
élément contient un ensemble de propriétés définies dans un système externe mais conservées dans le modèle de données. En ce qui concerne les fonctionnalités de Matter, il correspond à différents éléments non modélisés ou partiellement modélisés au sein d'un cluster, d'un attribut, d'une commande ou d'un événement ZCL.
Les propriétés extrinsèques doivent respecter les contraintes suivantes :
Les noms de propriété doivent être alphanumériques, sans espaces ni caractères spéciaux
Les valeurs de propriété peuvent être n'importe quelle valeur de schéma JSON
Maximum de 20 propriétés
Le système prend en charge divers extrinsicProperties
access
, notammentapiMaturity
,cli
,cliFunctionName
, et autres. Ces propriétés facilitent l'ACL pour les transformations de modèles de données AWS (et vice versa).
Note
Les propriétés extrinsèques sont prises en charge pour les éléments action
event
property
,, et struct
les champs d'une capacité, mais pas pour la capacité ou le cluster lui-même.
Propriétés
Les propriétés représentent les états de la fonctionnalité gérés par le périphérique. Chaque état est défini comme une paire clé-valeur, où la clé décrit le nom de l'état et la valeur décrit la définition de l'état.
Lorsque vous travaillez avec des propriétés, respectez les contraintes suivantes :
-
Utilisez uniquement des caractères alphanumériques dans les noms de propriétés, sans espaces ni caractères spéciaux
-
Incluez un nombre quelconque de propriétés conformes aux limites de taille du document de schéma
Utilisation des propriétés
Une propriété au sein d'une fonctionnalité est un élément fondamental qui représente un état spécifique d'un appareil alimenté par des intégrations gérées. Il représente l'état ou la configuration actuelle de l'appareil. En normalisant la façon dont ces propriétés sont définies et structurées, les systèmes domotiques garantissent que les appareils de différents fabricants peuvent communiquer efficacement, créant ainsi une expérience fluide et interopérable.
Pour une propriété de capacité, les éléments obligatoires sont extrinsicId
etvalue
. Les éléments facultatifs d'une propriété de capacité sont description
retrievable
,mutable
, reportable
etextrinsicProperties
.
Valeur
Une structure illimitée qui permet aux constructeurs de définir toutes les contraintes conformes au schéma JSON pour définir le type de données de cette propriété.
Lorsque vous définissez des valeurs, respectez les contraintes suivantes :
-
Pour les types simples, utilisez
type
et toute autre contrainte de schéma JSON native telle que oumaxLength
maximum
-
Pour les types composites
oneOf
, utilisezallOf
, ouanyOf
. Le système ne prend pas en charge lenot
mot clé -
Pour faire référence à un type global, utilisez-le
$ref
avec une référence détectable valide -
Pour la nullabilité, suivez la définition du schéma de type OpenAPI en fournissant à l'attribut nullable un indicateur booléen (
true
si null est une valeur autorisée)
Exemple :
{ "$ref": "/schema-versions/definition/matter.uint16@1.4", "nullable": true, "maximum": 4096 }
Récupérable
Un booléen décrivant si l'état est lisible ou non.
L'aspect lisibilité de l'état dépend de la mise en œuvre de la fonctionnalité par le périphérique. L'appareil décide si un état donné est lisible ou non. Cet aspect de l'état n'est pas encore pris en charge pour être signalé dans le rapport de capacité et n'est donc pas appliqué au sein du système.
Exemple : true
ou false
Mutable
Un booléen décrivant si l'état est inscriptible ou non.
L'aspect inscriptible de l'état est reporté à la mise en œuvre de la capacité par le périphérique. L'appareil décide si un état donné est inscriptible ou non. Cet aspect de l'état n'est pas encore pris en charge pour être signalé dans le rapport de capacité et n'est donc pas appliqué au sein du système.
Exemple : true
ou false
À signaler
Un booléen décrivant si l'état est signalé par le périphérique lorsqu'il y a un changement d'état.
L'aspect déclarable de l'état est reporté à la mise en œuvre de la fonctionnalité par l'appareil. L'appareil décide si un état donné est déclarable ou non. Cet aspect de l'état n'est pas encore pris en charge pour être signalé dans le rapport de capacité et n'est donc pas appliqué au sein du système.
Exemple : true
ou false
Actions
Les actions sont des opérations gérées par un schéma qui suivent un modèle de demande-réponse. Chaque action représente une opération mise en œuvre par l'appareil.
Respectez les contraintes suivantes lors de la mise en œuvre des actions :
-
N'incluez que des actions uniques dans le tableau d'actions
-
Incluez autant d'actions que vous le souhaitez, conformément aux limites de taille du document de schéma
Utilisation des actions
Une action est un moyen standardisé d'interagir avec les fonctionnalités des appareils et de les contrôler dans un système d'intégration géré. Il représente une commande ou une opération spécifique qui peut être exécutée sur un appareil, avec un format structuré pour modéliser les paramètres de demande ou de réponse nécessaires. Ces actions servent de pont entre les intentions des utilisateurs et le fonctionnement des appareils, permettant ainsi un contrôle cohérent et fiable des différents types d'appareils intelligents.
Pour une action, les éléments obligatoires sont name
etextrinsicId
. Les éléments facultatifs sont description
extrinsicProperties
, request
etresponse
.
Description
La limite de longueur maximale de la description est de 1 536 caractères.
Demande
La section de demande est facultative et peut être omise s'il n'y a aucun paramètre de demande. En cas d'omission, le système prend en charge l'envoi d'une demande sans aucune charge utile en utilisant simplement le nom de. Action
Ceci est utilisé pour des actions simples, comme allumer ou éteindre une lumière.
Les actions complexes nécessitent des paramètres supplémentaires. Par exemple, une demande de diffusion de séquences vidéo peut inclure des paramètres concernant le protocole de diffusion à utiliser ou l'opportunité d'envoyer le flux à un périphérique d'affichage spécifique.
Pour une demande d'action, l'élément obligatoire estparameters
. Les éléments facultatifs sont description
extrinsicId
, etextrinsicProperties
.
Description de la demande
La description suit le même format que celui de la section 3.5, avec une longueur maximale de 2 048 caractères.
Réponse
Dans les intégrations gérées, pour toute demande d'action envoyée via l'SendManagedThingCommandAPI, la demande atteint l'appareil et attend une réponse asynchrone. La réponse à l'action définit la structure de cette réponse.
Pour une demande d'action, l'élément obligatoire estparameters
. Les éléments facultatifs sont name
description
,extrinsicId
,extrinsicProperties
, errors
etresponseCode
.
Description de la réponse
La description suit le même format quedescription, et sa longueur maximale est de 2 048 caractères.
Nom de la réponse
Le nom suit le même format quenom (obligatoire), avec les détails supplémentaires suivants :
-
Le nom classique d'une réponse est dérivé en l'ajoutant
Response
au nom de l'action. -
Si vous souhaitez utiliser un autre nom, vous pouvez le fournir dans cet
name
élément. Si aname
est fourni dans la réponse, cette valeur est plus prioritaire que le nom conventionnel.
Erreurs
Un tableau illimité de messages uniques fournis dans la réponse, en cas d'erreur lors du traitement de la demande.
Contraintes :
-
Un élément de message est déclaré en tant qu'objet JSON avec les champs suivants :
-
code
: chaîne contenant des caractères alphanumériques et_
(traits de soulignement), d'une longueur comprise entre 1 et 64 caractères -
message
: valeur de chaîne illimitée
-
Exemple de message d'erreur
"errors": [ { "code": "AD_001", "message": "Unable to receive signal from the sensor. Please check connection with the sensor." } ]
Code de réponse
Un code entier indiquant comment la demande a été traitée. Nous recommandons que le code de l'appareil renvoie un code utilisant la spécification du code d'état de réponse du serveur HTTP afin de garantir l'uniformité au sein du système.
Contrainte : valeur entière comprise entre 100 et 599.
Paramètres de demande ou de réponse
La section des paramètres est définie comme une carte des paires de noms et de sous-schémas. Un certain nombre de paramètres peuvent être définis dans les paramètres de demande, s'ils peuvent être intégrés au document de schéma.
Les noms de paramètres ne peuvent contenir que des caractères alphanumériques. Les espaces ou tout autre caractère ne sont pas autorisés.
champ de paramètres
Les éléments obligatoires d'un parameter
sont extrinsicId
etvalue
. Les éléments facultatifs sont description
etextrinsicProperties
.
L'élément de description suit le même format quedescription, avec une longueur maximale de 1024 caractères.
extrinsicId
et extrinsicProperties
dérogations
extrinsicId
et extrinsicProperties
suivez le même format que ExtrinsiciD (obligatoire) etPropriétés extrinsèques, avec ces informations supplémentaires :
-
Si un
extrinsicId
est fourni dans la demande ou la réponse, cette valeur est plus prioritaire que la valeur fournie au niveau de l'action. Le système doit d'extrinsicId
abord utiliser request/response le niveau ; en cas d'absence, utiliser le niveau d'actionextrinsicId
-
Si
extrinsicProperties
elles sont fournies dans la demande ou la réponse, ces propriétés ont une priorité supérieure à la valeur va fournie au niveau de l'action. Le système doit prendre le niveau d'actionextrinsicProperties
et remplacer les paires clé-valeur fournies au niveau request/responseextrinsicProperties
Exemple de remplacement d'ExtrinsicID et d'ExtrinsicProperties
{ "name": "ToggleWithEffect", "extrinsicId": "0x0001", "extrinsicProperties": { "apiMaturity": "provisional", "introducedIn": "1.2" }, "request": { "extrinsicProperties": { "apiMaturity": "stable", "manufacturerCode": "XYZ" }, "parameters": { ... } }, "response": { "extrinsicProperties": { "noDefaultImplementation": true }, "parameters": { { ... } } }
Dans l'exemple ci-dessus, les valeurs effectives de la demande d'action seraient les suivantes :
# effective request "name": "ToggleWithEffect", "extrinsicId": "0x0001", "extrinsicProperties": { "apiMaturity": "stable", "introducedIn": "1.2" "manufacturerCode": "XYZ" }, "parameters": { ... } # effective response "name": "ToggleWithEffectResponse", "extrinsicId": "0x0001", "extrinsicProperties": { "apiMaturity": "provisional", "introducedIn": "1.2" "noDefaultImplementation": true }, "parameters": { ... }
Actions intégrées
Pour toutes les fonctionnalités, vous pouvez effectuer des actions personnalisées à l'aide des mots clés ReadState
etUpdateState
. Ces deux mots clés d'action agiront sur les propriétés de la fonctionnalité définies dans le modèle de données.
- ReadState
-
Envoie une commande au
managedThing
pour lire les valeurs de ses propriétés d'état.ReadState
À utiliser pour forcer la mise à jour de l'état de l'appareil. - UpdateState
-
Envoie une commande pour mettre à jour certaines propriétés.
Il peut être utile de forcer la synchronisation de l'état d'un appareil dans les scénarios suivants :
-
L'appareil est resté hors ligne pendant un certain temps et n'émettait aucun événement.
-
L'appareil vient d'être provisionné et aucun état n'est encore maintenu dans le cloud.
-
L'état de l'appareil n'est pas synchronisé avec l'état réel de l'appareil.
ReadState exemples
Vérifiez si le voyant est allumé ou éteint à l'aide de l'SendManagedThingCommandAPI :
{ "Endpoints": [ { "endpointId": "1", "capabilities": [ { "id": "aws.OnOff", "name": "On/Off", "version": "1", "actions": [ { "name": "ReadState", "parameters": { "propertiesToRead": [ "OnOff" ] } } ] } ] } ] }
Lisez toutes les propriétés d'état de la matter.OnOff
fonctionnalité :
{ "Endpoints": [ { "endpointId": "1", "capabilities": [ { "id": "aws.OnOff", "name": "On/Off", "version": "1", "actions": [ { "name": "ReadState", "parameters": { "propertiesToRead": [ "*" ] // Use the wildcard operator to read ALL state properties for a capability } } ] } ] } ] }
UpdateState exemple
Changez le OnTime
pour une lampe à l'aide de l'SendManagedThingCommandAPI :
{ "Endpoints": [ { "endpointId": "1", "capabilities": [ { "id": "matter.OnOff", "name": "On/Off", "version": "1", "actions": [ { "name": "UpdateState", "parameters": { "OnTime": 5 } } ] } ] } ] }
Événements
Les événements sont des signaux unidirectionnels gérés par un schéma mis en œuvre par le dispositif.
Implémentez les événements en fonction des contraintes suivantes :
-
Inclure uniquement les événements uniques dans le tableau des événements
-
Incluez un nombre quelconque d'événements correspondant aux limites de taille du document de schéma