Publication de valeur “simple”

Pour produire et publier un StateObject dans votre Constellation vous devez invoquer la méthode “pushStateObject” en spécifiant au minimum le nom du StateObject et sa valeur :

Vous pouvez aussi spécifier “type” de votre StateObject :

Notez que pour les types simples (int,bool, long, float et double) le type est spécifié implicitement. Par exemple, pour publier un StateObject dont la valeur est un chiffre :

Vous pouvez aussi spécifier le “lifetime” de votre StateObject, c’est à dire sa durée de vie (en seconde) avant qu’il soit considéré comme “expiré”. Par exemple si votre valeur de T° (variable ‘temp’) est considérée comme valide que 60 secondes, on écrira :

En ouvrant le “StateObject Explorer” de la Console Constellation vous retrouverez votre StateObject :

image

Si le StateObject n’est pas mis à jour dans les 60 secondes il sera marqué comme expiré.

Publication de valeur “complexe”

Avec un “string format”

Vous pouvez publier des StateObject avec un objet complexe en utilisant la fonction “stringFormat” pour formater votre valeur en JSON. Par exemple pour publier un StateObject nommé “Lux” étant un objet contenant 3 propriétés, on pourrait écrire :

Avec un JsonObject

Vous pouvez également faire la même chose en créant un JsonObject de la façon suivante :

Sur l’explorateur de StateObjects de la Console :

image

Définir la durée de vie de votre StateObject

Comme pour une valeur simple, vous pouvez également spécifier un “type” et le “lifetime” de votre StateObject. Par exemple :

Ou en utilisant le JsonObject “myStateObject” créé ci-dessus :

Dans les deux cas nous avons publié un StateObject nommé “DemoLux” de type “MyLuxData” avec une durée de vie de 20 secondes contenant comme valeur un objet avec trois propriétés (Lux, Broadband et IR).

image

Décrire ses types complexes

Lorsque vous utilisez des types personnalisés (ici “MyLuxData”) il vivement recommandé de les décrire dans le “Package Descriptor”.

Pour ce faire, au démarrage, invoquez la méthode “addStateObjectType” pour chaque type à déclarer puis appelez la méthode “declarePackageDescriptor” pour envoyer le “Package Descriptor” dans la Constellation.

Dans notre exemple nous écrirons :

Vous remarquerez que le type “MyLuxData” est surligné vous permettant d’afficher le descriptif de votre StateObject :

image

Ajout de metadatas

Pour finir vous pouvez également ajouter des méta-données sur vos StateObjects.

Par exemple ajoutons l’ID de la puce ESP (ChipID) et le timestamp (millis) dans les méta-données de notre StateObject :

image

Note : dans ce dernier exemple vous remarquerez que nous avons défini la taille du buffer JSON (BUFFER_SIZE) à “JSON_OBJECT_SIZE(6)”, c’est à dire 6 propriétés et non 3 comme dans les exemples précédents de façon à tenir compte des propriétés JSON rajoutées par les metadatas (l’objet “Metadatas” lui même et ses deux propriétés “ChipId” et “Timestamp”). Pour plus d’info, consultez la documentation d’ArduinJson et plus particulièrement l’article concernant la gestion de la mémoire.

Produire des StateObjects depuis un Arduino/ESP
Editer la page sur GitHub
Étiqueté avec :                

Démarrez la discussion sur le forum Constellation