Interroger des StateObjects à un instant T

Pour récupérer un ou plusieurs StateObject (à un instant T), vous pouvez utiliser la méthode “requestStateObjects” :

Utilisez le wildcard “” pour ne pas appliquer de filtre. Le symbole “” est aussi accessible via la constante “WILDCARD”.

Par exemple :

Autre exemple, vous souhaitez afficher dans les logs Constellation, la consommation CPU de toutes vos machines Windows (vous avez au préalable déployé le package “HWMonitor” sur toutes vos sentinelles Windows) depuis votre Arduino :

S’abonner aux mises à jours des StateObjects en temps réel

Vous pouvez également vous abonnez aux mises à jour des StateObjects pour être notifié en temps réel de la modification des StateObjects.

En utilisant un callback global

Vous pouvez déclarer une fonction callback qui sera appelée à chaque mise à jour de StateObjects pour lesquels vous vous êtes abonné en invoquant la méthode setStateObjectUpdateCallback. Notez qu’il ne peut y avoir qu’une seule méthode callback enregistrée.

Ensuite vous abonnez aux différents StateObjects que vous souhaitez “suivre” avec la méthode “subscribeToStateObjects”.

Par exemple, pour être notifié en temps réel de la consommation CPU des différentes sentinelles Windows, on écrira :

Nous avons ici défini notre fonction callback dans une expression lambda mais vous pouvez aussi bien “extraire” cette fonction callback dans une fonction distincte.

Enfin dans la boucle principale (loop), vous devez invoquer la méthode “constellation.loop()” aussi souvent que possible afin que la libraire puisse dispatcher les SO dans votre méthode callback :

En utilisant des StateObjectLinks

Avec la méthode “subscribeToStateObjects” présentée ci-dessous vous avez une fonction callback qui recevra tous les StateObjects pour lesquels vous êtes abonné. Vous devez donc “dispatcher” vous même les différents StateObjects que vous recevrez.

Pour simplifier les choses, la libraire Arduino propose comme en .NET ou en Python, la notion de StateObjectLink : il s’agit de “lier” un abonnement à des StateObjects à une fonction de votre code.

Pour reprendre l’exemple du suivi des CPU en temps réel, nous pourrions écrire :

Vous pouvez enregistrer autant de StateObjectLink que vous le désirez. Là encore nous utilisé une expression lambda mais vous pouvez aussi bien “extraire” cette fonction callback dans une fonction distincte.

N’oubliez pas non plus d’appeler la méthode constellation.loop()” aussi souvent que possible dans la boucle principale de votre programme.

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

Démarrez la discussion sur le forum Constellation