Sauvegarde des réglages des modules Yoctopuce

Sauvegarde des réglages des modules Yoctopuce

Nous avons récemment réalisé, lors d'une discussion de support avec un client, que la préservation à long terme des réglages sur les modules Yoctopuce n'était pas détaillée dans la documentation et méritait quelques explications. Voici donc un petit complément...




Sauvegarde des réglages dans la mémoire flash

On distingue deux types de réglages dans les modules Yoctopuce. Il y a d'une part les valeurs courantes, qui forment en quelque sorte l'état transitoire du module, comme la position d'un relais ou le courant de sortie d'un émetteur 4-20mA, qui ne doivent pas être sauvegardées sur le long terme. Il y a d'autre part les paramètres de configuration, comme le nom logique d'un module ou l'unité de mesure d'un capteur, pour lesquels il est souhaitable que le module puisse garder une valeur persistante.

Il est donc possible de sauvegarder les paramètres de configuration dans la mémoire flash du module, pour être restaurés automatiquement à la mise sous tension ou en cas de redémarrage du module, sans intervention externe.

Il y a néanmoins une petite subtilité. Lorsque l'on change un de ces paramètres de configuration, l'effet est immédiat, mais la sauvegarde dans la mémoire flash n'est pas automatique et instantanée: elle n'est faite que quand l'utilisateur choisit explicitement de sauver les modifications. Cela correspond au comportement de la page configuration des modules dans l'interface Web de VirtualHub: les réglages sont appliqués directement mais ne sont sauvegardés dans la mémoire flash qu'au moment où le bouton "Save" est pressé. Si l'utilisateur change d'avis et presse sur le bouton "Cancel", c'est l'inverse qui se produit: les derniers réglages qui avaient été sauvés dans la mémoire flash sont rechargés, et les modifications non sauvées sont annulées.

Les réglages ne sont sauvegardés qu'au moment où l'on clique sur Save
Les réglages ne sont sauvegardés qu'au moment où l'on clique sur Save


Si aucun des deux boutons n'est pressé, et que l'utilisateur ferme juste le navigateur, les réglages resteront tels quels, mais seront perdus au prochain redémarrage du module.

La librairie de programmation fonctionne selon le même principe: les commandes de configurations doivent être terminées par l'appel à la méthode module.saveToFlash() pour sauver les réglages dans la mémoire flash do module. Il suffit d'un seul appel à cette méthode tout à la fin de la configuration. Si l'on veut implémenter une interface utilisateur similaire à celle de VirtualHub avec une fonction Cancel, on peut utiliser la méthode module.revertFromFlash() pour implémenter l'annulation.

Le comportement de la librairie en ligne de commande, que vous pouvez utiliser dans vos shell scripts est identique. Vous pouvez effectuer une série de modifications de configuration et terminer avec un appel à saveToFlash:

YHumidity METEOMK1-2AE9F.humidity set_unit "g/m3"
YTemperature METEOMK1-2AE9F.temperature set_unit "°C"
YModule METEOMK1-2AE9F.module saveToFlash


Il existe toutefois un raccourci utile pour faire un saveToFlash directement après l'application d'un réglage unique, l'option -s:

YHumidity -s METEOMK1-2AE9F.humidity set_unit "g/m3"



Si vous avez un doute sur le fait qu'un réglage soit ou non un paramètre de configuration sauvegardé dans la mémoire flash, vous pouvez vous en assurer grâce au fait que la documentation des fonctions de configuration mentionne systématiquement: N'oubliez pas d'appeler la méthode saveToFlash() du module si le réglage doit être préservé.

Mise en garde

Si vous avez besoin de modifier très souvent un paramètre de configuration susceptible d'être sauvegardé dans la mémoire flash (par exemple la fréquence dans le générateur de signaux Yocto-PWM-Tx), n'appelez pas inutilement saveToFlash à chaque changement, pour ne pas user la mémoire flash en vain. En effet, ce type de mémoire a une durée de vie limitée à quelques dizaines de milliers de cycles. Ne sauvez donc les paramètres en mémoire flash que si vous voulez vraiment qu'ils soient préservés au redémarrage du module.

Sauvegarde des paramètres dans un fichier

La librairie Yoctopuce et l'outil VirtualHub offrent une manière différente de sauvegarder tous les réglages, hors du module, sous forme d'un fichier JSON, pour les recharger ultérieurement. Cela permet de faire un backup des réglages, ou de transférer les réglages d'un module à un autre. Si le module est doté d'un système de fichiers, les fichiers stockés sur le modules sont inclus dans l'export JSON, sous forme de chaînes hexadécimales.

Dans l'interface Web de VirtualHub, le bouton Export settings permet de télécharger ce fichier JSON pour un module, afin de le sauver sur un disque de la machine où tourne le navigateur.

Les boutons pour exporter et réimporter les réglages
Les boutons pour exporter et réimporter les réglages


La librairie de programmation offre une fonction identique retournant un buffer en mémoire avec le contenu du même fichier JSON: la méthode module.get_allSettings().

Si vous utilisez la librairie en ligne de commande, vous pouvez utiliser la même fonction pour obtenir un fichier JSON correspondant. Nous avons fourni des instructions plus détaillées de cette utilisation dans un précédent article.

Les réglages JSON peuvent être ultérieurement réappliqués au même module ou à un module similaire, à l'aide de la méthode set_allSettingsAndFiles() ou de la méthode set_allSettings(). Notez que comme le fichier JSON contient non seulement les paramètres de configuration mais aussi les valeurs courantes d'état du module, celles-ci seront aussi restaurées par cette méthode. Par exemple, si un relais était actif lors de la création du fichier JSON, il sera commuté à l'état actif lors de la restauration de ce fichier JSON.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.