Cette semaine, nous allons encore parler de nos librairies de programmation, pour annoncer une bonne nouvelle: Nous avons ajouté une optimisation qui réduit le temps d’exécution d'environ 40% et diminue la quantité de données transférées par deux.
Au fil des années, nous avons proposé des modules de plus en plus compliqués et avec de plus en plus de fonctionnalités. Même pour les modules que nous proposions déjà en 2011, nous avons régulièrement ajouté des fonctionnalités. Cependant, un effet de bord de ces nombreuses fonctionnalités est que les informations à transférer par USB ou HTTP sont aussi plus nombreuses.
Prenons par exemple le Yocto-Temperature, lorsque qu'il est sorti en 2011, il fallait transférer 464 bytes pour rafraîchir tous les attributs du module. Six ans plus tard, avec le dernier firmware sur ce même Yocto-Temperature, il faut transférer 756 bytes pour charger tous les attributs. Cette différence est due aux différentes fonctionnalités qui ont été ajoutées au fil des années: le datalogger, la gestion des différentes unités de mesures, la possibilité d'ajouter une calibration, les callbacks périodiques, etc...
Cette augmentation de données à transférer ne pose généralement pas de problème car les protocoles de transmission (USB et HTTP) sont suffisamment rapides pour que les appels à la librairie Yoctopuce ne durent que quelques dizaines de millisecondes. De plus, les librairies Yoctopuce possèdent des caches internes qui évitent de transférer inutilement des données.
Nous avons cependant décidé de modifier le protocole de transfert des données pour réduire la quantité de données transférées.
Nouveau protocole
Ce nouveau protocole permet de réduire la quantité de données transférées d'un facteur 2 à 4 en fonction des modules. Ce gain est identique que la connexion avec le module soit USB, HTTP ou WebSocket. Malheureusement, pour des raison techniques, le mode HTTP callback ne supporte pas cette optimisation.
Ce gain permet de réduire en moyenne le temps de transfert de "seulement" 40% car la latence de l'OS pour établir la liaison entre le module Yoctopuce et la librairie reste identique.
Voici quelques mesures faites sur différents modules.
Module | Ancien protocole | Nouveau protocole | Gain |
---|---|---|---|
Yocto-MaxiPowerRelay | 1320 octets | 377 octets | 3.5 |
Yocto-PowerRelay | 481 octets | 133 octets | 3.6 |
Yocto-Temperature | 756 octets | 195 octets | 3.8 |
Yocto-HubEth | 4430 octets | 1820 octets | 2.4 |
Comment utiliser ce protocole
A l'heure actuelle, ce nouveau protocole est disponible pour les librairies suivantes : Command line, Android, C++, C#, Java et Python. Les librairies VisualBasic .Net, EcmaScript et PHP devraient bientôt profiter de la même amélioration.
Tous les modules vendus depuis 2015 sont compatibles
Pour utiliser ce nouveau protocole, il suffit de mettre à jour votre librairie Yoctopuce. Il n'y a aucune modification à faire à votre code, la nouvelle librairie va automatiquement utiliser ce nouveau protocole si le module est compatible.
Pour les modules, c'est encore plus simple: Il y a toutes les chances que votre module soit déjà compatible. En effet, tous les firmwares publiés depuis 2015 supportent déjà ce protocole. Par conséquent si vous avez achetez votre module ou que vous avez mis à jour son firmware dans les deux dernières années votre module est déjà compatible.
Comme à notre habitude, nous avons maintenu la compatibilité ascendante, c'est-à-dire que quelque soit la version de votre module ou de votre librairie, votre programme fonctionnera correctement. Si la libraire et les modules sont compatibles, le nouveau protocole est automatiquement utilisé.