FR 3047820 A1 20170818 FR 1651233 A 20160216 1 SYSTEME D'EXPLOITATION POUR UN CAPTEUR D'UN RESEAU DE CAPTEURS ET CAPTEUR ASSOCIE La présente invention a pour domaine celui des systèmes d'exploitation dédiés aux capteurs qui constitue les noeuds d'un réseau de capteurs. L'Internet des objets, ou Web des objets, est une extension de l'Internet actuel visant à l'échange d'informations et de données entre l'Internet et des dispositifs présents dans l'environnement physique. Parmi les dispositifs dont la connexion à l'Internet présenterait un intérêt industriel, il y a les réseaux de capteurs, comportant une pluralité de capteurs, par exemple entre quelques dizaines et quelques centaines de capteurs, placés dans l'environnement pour l'acquisition de mesures. Il peut par exemple s'agir d'un réseau de capteurs disséminés sur une exploitation agricole, afin de collecter un ensemble de mesures géo-localisées pertinentes pour la conduite de l'exploitation : température, humidité et pH du sol, humidité de l'air, vitesse du vent, indice UV, etc. Un tel capteur est intelligent au sens où il comporte un moyen de stockage, tel qu'une mémoire, un moyen de calcul, tel qu'un processeur, une interface d'entrée/sortie pour la connexion à un ou plusieurs senseurs, et une interface réseau pour la connexion, au moyen par exemple d'une liaison sans fil du type Wi-Fi, IEEE 802.15.4, NB-loT (« Narrow Band Internet of Things ») ou encore 3G/4G, aux autres noeuds du réseau et à l'Internet. En particulier, la mémoire du capteur comporte des instructions de programmes d'ordinateurs propres à être exécutées par le processeur. De plus, un tel capteur est autonome au sens où il embarque des moyens de fourniture de puissance électrique, tels qu'une batterie, permettant le fonctionnement du capteur. Cependant, un tel dispositif connecté ne comporte qu'une capacité de calcul et de stockage d'informations limitée, permettant essentiellement d'acquérir des mesures, d'effectuer un traitement simple sur ces mesures brutes, et de transmettre les mesures traitées à destination d'une station de base connectée à l'Internet. De plus, chaque réseau de capteurs est mis en oeuvre dans un but particulier. Chaque capteur d'un réseau est donc développé spécifiquement pour l'utilisation envisagée. Enfin, les capteurs d'un réseau sont appelés à être disséminés dans l'environnement. Il est impératif qu'ils ne requièrent qu'une faible maintenance. Ils doivent donc présenter une autonomie et une fiabilité accrues. 3047820 2 Il y a donc besoin de munir ces capteurs d'un système d'exploitation pour virtualiser la couche matérielle d'un capteur générique et par conséquent pouvoir développer des applications logicielles indépendantes du matériel utilisé, notamment pour réduire les coûts de développement. 5 La demande internationale WO 2013/032660 décrit un système d'exploitation composé d'une pluralité de systèmes d'exploitation élémentaires et d'un système d'exploitation maître. Chaque système d'exploitation élémentaire, exécuté par un processeur associé de la plateforme d'exécution, comporte un noyau mettant en oeuvre un protocole de communication TCP/IP. 10 Le système d'exploitation maitre est propre à décomposer une tâche provenant d'une application logicielle en une pluralité de processus élémentaires et à allouer l'exécution de chaque processus élémentaire à l'un des systèmes d'exploitation élémentaires. Ce système d'exploitation permet notamment un gain en énergie en mettant en 15 veille un processeur dont le système d'exploitation élémentaire n'est pas appelé à exécuter un processus. Cependant, un tel système d'exploitation nécessite une taille mémoire trop importante, aussi bien en termes de stockage d'instructions que d'espace mémoire nécessaire au cours de son exécution, pour pouvoir équiper un capteur communicant. 20 L'invention a donc pour but de répondre à ces besoins. L'invention a pour objet un système d'exploitation pour un capteur d'un réseau de capteurs, caractérisé en ce que le système d'exploitation est configuré de manière à comporter, en plus d'une pluralité de fonctionnalités système génériques de virtualisation des ressources matérielles du capteur, comportant en particulier des fonctionnalités de 25 radiocommunication et des fonctionnalités de routage, une pluralité de fonctionnalités applicatives, chaque fonctionnalité étant définie par un acteur logiciel, chaque acteur logiciel étant constitué par un automate à états finis, l'exécution des différents acteurs étant définie dans une séquence d'ordonnancement prédéterminée déterminant l'ordre temporel d'appel de chaque acteur au cours d'un cycle d'exécution. 30 Ce système d'exploitation permet de développer des applications logicielles embarquées sur un capteur générique afin de le configurer en vue d'une utilisation particulière. Il permet également une optimisation de la consommation énergétique du capteur hôte. 35 De par sa structure, il peut être facilement doté de services permettant de fiabiliser le fonctionnement du capteur. 3047820 3 Suivant des modes particuliers de réalisation, le système d'exploitation comporte une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : - le système d'exploitation comporte un acteur logique surveillé et un acteur logique 5 de surveillance de l'acteur logique surveillé, l'acteur logique surveillé suivant, au cours de son fonctionnement nominal, une suite d'états déterminée, de sorte que tout écart à ladite suite d'états est indicative d'un dysfonctionnement de l'acteur logique surveillé et conduit à une transition de l'acteur de surveillance vers un état de reconfiguration de l'acteur logique surveillé. 10 la transition dans l'état de reconfiguration de l'acteur logique de surveillance conduit à la mise en oeuvre d'une action correspondant à une stratégie de correction du dysfonctionnement affectant l'acteur logique surveillé. au moins un acteur logique surveillé est redondé par un acteur logique équivalent, la stratégie de correction consistant à exécuter l'acteur logique équivalent à la place de 15 l'acteur logique surveillé. le capteur comportant au moins deux coeurs, un coeur principal et un coeur secondaire, l'exécution des fonctionnalités système et applicatives est répartie entre les différents coeurs selon une répartition prédéfinie. le système d'exploitation comporte une fonctionnalité système de gestion 20 d'énergie exécutée sur le coeur principal et propre à éteindre un coeur secondaire lorsque ce dernier est inactif et à allumer un coeur secondaire pour qu'il exécute une fonctionnalité. - chaque acteur logique est défini par un tableau d'états comportant une pluralité de lignes, chaque ligne comportant un état initial de l'acteur, un message initial, une action 25 réalisée par l'acteur lorsqu'il reçoit le message initial, un état final vers lequel bascule l'acteur une fois l'action réalisée, et un message final lorsque l'acteur bascule dans l'état final, le code binaire de l'action étant destiné à être chargé dans un moyen de mémorisation du capteur en vue de son exécution par un moyen de calcul du capteur. - le système d'exploitation comportant une table des états courants permettant de 30 stocker l'état courant de chaque acteur logique exécuté sur le capteur. L'invention a également pour objet un capteur communicant intégrant le système d'exploitation présenté ci-dessus. L'invention et ses avantages seront mieux compris à la lecture de la description détaillée qui va suivre d'un mode de réalisation particulier, donné uniquement à titre 35 d'exemple non limitatif, cette description étant faite en se référant aux dessins annexés sur lesquels : 3047820 4 La figure 1 est une représentation schématique d'un capteur générique selon l'invention ; La figure 2 est une représentation schématique d'un mode de réalisation de la couche matérielle du capteur de la figure 1 ; 5 La figure 3 est une représentation schématique du système d'exploitation selon l'invention propre à être exécuté sur le capteur de la figure 1; La figure 4 représente un premier acteur logiciel du système d'exploitation de la figure 3 ; La figure 5 représente un second acteur logiciel du système d'exploitation de la 10 figure 3, assurant une surveillance du premier acteur logiciel de la figure 4 ; En se référant à la figure 1, un capteur 1 constitue chacun des noeuds d'un réseau de capteurs. Le capteur 1 comporte une couche matérielle 10 générique et une couche logicielle 100. 15 En se référant à la figure 2, la couche matérielle 10 comporte un moyen de calcul, de préférence constitué de plusieurs coeurs. Par exemple, la couche matérielle comporte deux coeurs, un premier coeur 20 constitué par un nano contrôleur 4 bits et un second coeur 30 constitué par un microcontrôleur AVR 8 bits. De préférence encore, l'architecture de la couche matérielle 10 est dite multicoeur ON/OFF asymétrique, c'est-à-dire que le 20 second coeur 30 est complètement éteint (OFF) par le premier coeur 20 après avoir exécuté le processus pour lequel il a été allumé (ON). Le premier coeur 20 reste en revanche en permanence allumé, même s'il peut être placé dans un mode « veille » afin de limiter sa consommation énergétique. Le coeur 20 est dit coeur principal et le ou chaque autre coeur, tel que le coeur 30, est dit coeur secondaire. 25 La couche matérielle 10 comporte un moyen de stockage, comportant au moins une mémoire. De préférence, comme cela est représenté sur la figure 2, le capteur 1 comporte une première mémoire 22, associée au premier coeur 20, et une seconde mémoire 32, associée au second coeur 30. La couche matérielle 10 comporte une interface d'entrée/sortie 40 comportant une 30 pluralité de ports physiques, référencés 42, 44 et 46 sur la figure 2. Chaque port est connecté à un senseur, 52, 54 et 56 respectivement, qui peuvent être de nature différente. En variante, plusieurs senseurs sont connectés à un même port physique, par exemple un port du type USB. La couche matérielle 10 comporte un module de communication, de préférence 35 sans-fil, tel qu'une carte de radiocommunication 60, de préférence du type Wi-Fi ou IEEE 802.15.4, ou NB-loT ou 3G/4G. 3047820 5 La couche matérielle 10 comporte un bus physique de communication 70 reliant les différents composants entre eux de manière à permettre l'échange physique de données. La couche matérielle 10 comporte une source de puissance électrique, permettant 5 de rendre le capteur 1 autonome. Il s'agit par exemple d'une batterie 80 constituée d'une ou plusieurs piles. En variante, la batterie est constituée d'un ou plusieurs accumulateurs et est associée à un module de récupération d'énergie (fonction aussi dénommée « energy harvesting module » en anglais). La couche matérielle 10 comporte également des moyens d'interruption 10 commandés 82 pour alimenter ou cesser d'alimenter tel ou tel composant de la couche matérielle. En variante, chaque composant de la couche matérielle est redondé physiquement par la présence d'un composant identique, propre à se substituer au composant considéré en cas de défaillance. Le bus 70 est alors commun aux composants redondés 15 et redondants. Le moyen de calcul est propre à exécuter les instructions de programmes d'ordinateur mémorisées dans le moyen de stockage. En particulier, chaque coeur 20, 30 est propre à exécuter les instructions de programmes d'ordinateurs mémorisées dans la mémoire 22, 32 qui lui est associée. 20 En se référant à la figure 3, la couche logicielle 100 comporte un système d'exploitation 101 configuré pour fournir une ou plusieurs applications logicielles permettant de configurer le capteur 1 sur lequel ledit système d'exploitation 101 est exécuté. Le système d'exploitation 101 comporte une couche système 110 et une couche 25 applicative 120. La notion de couche n'est qu'illustrative puisque le système d'exploitation 101 une fois configuré par la spécification d'une ou plusieurs application(s) logicielle(s), comporte un ensemble de fonctionnalités de même niveau d'exécution. Selon l'invention, chaque fonctionnalité est définie comme une machine à états 30 finis, dénommée acteur logique dans le présent document. Chaque acteur logique est défini par un ensemble fini d'états possibles et par les transitions autorisées d'un état initial vers un état final parmi les états possibles. Plus précisément, un acteur logique est entièrement défini par la donnée d'un tableau d'états comportant une pluralité de lignes, chaque ligne comportant un état initial 35 de l'acteur, un message initial, une action réalisée par l'acteur lorsqu'il est placé dans l'état initial et qu'il reçoit le message initial, un état final vers lequel bascule l'acteur une 3047820 6 fois l'action réalisée, et un message final généré par l'acteur une fois basculé dans l'état final. Les tableaux d'états peuvent être agrégés entre eux pour former un seul tableau général commun sauvegardé dans un fichier de configuration du système d'exploitation 101. Sur la figure 3, un tel tableau général est référencé par le chiffre 115. 5 Un message (aussi dénommé « flag » en anglais) est une indication de l'état courant d'un acteur. Ainsi, le message initial correspond au fait qu'un premier acteur a été placé dans un état donné, ce qui a pour effet de déclencher l'action d'un second acteur et la transition de ce second acteur d'un état initial vers un état final. Le message final émis par ce second acteur est alors l'état final dans lequel il vient de basculer. En variante, un 10 message est une condition sur un ensemble d'états courants d'acteurs. La couche système 110 regroupe une pluralité de fonctionnalités système, présentent dans le système d'exploitation générique, avant sa configuration. Ces fonctionnalités système permettent la gestion des composants matériels du capteur 1 (mémoire, processeur, interface entrée/sortie connectées à des périphériques...), comme 15 le ferait un noyau (« kernel » en anglais). Parmi ces fonctionnalités système, on retrouve une fonctionnalité de communication 112, une fonctionnalité de routage 114, des fonctionnalités de virtualisation des ports physiques de l'interface d'entrée/sortie 40, référencées 116 sur la figure 3, et avantageusement une fonctionnalité de gestion d'énergie 113. 20 La couche applicative 120 regroupe l'ensemble des fonctionnalités applicatives développées pour particulariser le capteur 1. Une application logicielle complexe est ainsi décomposée en une ou plusieurs fonctionnalités applicatives élémentaires. Ainsi par exemple une application 122 est composée de deux fonctionnalités spécifiques 124 et 126, en plus de la possibilité d'utiliser des fonctionnalités système par 25 exemple d'entrée/sortie. Sur la figure 3, on a également représenté une application surveillée comportant une seule fonctionnalité applicative ou agent logique S et une application de surveillance de l'application surveillée comportant une seule fonctionnalité applicative ou agent logique R, ainsi qu'une application de temporisation comportant une seule fonctionnalité applicative ou agent logique T. 30 La couche applicative 120 permet ainsi à un opérateur de configurer le système d'exploitation 101 pour qu'il présente, en plus des fonctionnalités système, une pluralité de fonctionnalités applicatives définies en relation avec l'utilisation envisagée du capteur 1 embarquant le système d'exploitation une fois configuré. Un outil de configuration est spécialement prévu pour offrir à un opérateur une 35 interface homme/machine permettant une configuration aisée du système d'exploitation 101. 3047820 7 La figure 4 représente un exemple d'une fonctionnalité applicative S d'acquisition d'une mesure, par exemple une mesure de température. Lorsqu'il est exécuté, l'acteur logique S se trouve d'abord dans un état d'initialisation S INIT. 5 Puis, une fois initialisé, il bascule dans l'état SO. Dans l'état SO, l'acteur S attend la fin d'une durée d'échantillonnage définie par un acteur de temporisation T. L'acteur de temporisation T est un acteur à deux états. Dans un état 0, il vérifie à chaque cycle d'exécution la valeur d'un compteur par rapport à une valeur maximale (de 10 préférence cette valeur est propre à chaque état d'un acteur). Si la valeur du compteur est inférieure à une valeur maximale, la valeur du compteur est incrémentée d'une unité ; si la valeur du compteur est égale à la valeur maximale l'acteur T bascule dans l'état 1. Dans l'état T=1, le compteur est réinitialisé à zéro et l'acteur T bascule à nouveau dans l'état T=0. 15 L'acteur S dans l'état SO initialise un compteur de l'acteur de temporisation T (qui est alors placé dans l'état T=0). L'acteur S attend de recevoir un message indiquant que l'acteur de temporisation T est dans l'état 1 pour lire, sur un port virtuel déterminé qui correspond à un port physique de l'interface d'entrée/sortie 40, un signal de température généré par le capteur connecté à ce port physique. L'acteur S bascule ensuite dans l'état 20 51. Dans l'état 51, l'acteur S initialise un compteur de l'acteur T (qui est alors placé dans l'état T=0). L'acteur S attend que l'acteur T bascule dans l'état T=1, pour convertir le signal de température lu en une valeur de température. L'acteur S bascule ensuite dans l'état S2. 25 Dans l'état S2, l'acteur S transmet la mesure de température à l'acteur système de communication 112 en vue de l'émission de cette mesure de température vers la station de base, via le réseau de capteurs et l'internet. En même temps, il initialise un compteur de l'acteur de temporisation T pour fixer la durée d'attente (« timeout ») de l'acquittement de l'émission par l'acteur système de communication 112. Dans le cas où le compteur est 30 échu et l'acteur S n'a pas reçu l'acquittement attendu, il retransmet à nouveau la même mesure. Une fois la mesure transmise et l'acquittement correspondant reçu, l'acteur S bascule à nouveau dans l'état SO pour l'acquisition de la prochaine mesure. Dans un autre exemple, la mesure de la température ainsi acquise est transmise à un acteur système de contrôle d'un ventilateur équipant le capteur pour en refroidir les 35 composants, en particulier les coeurs. Cet acteur système génère un signal en fermeture 3047820 8 d'un interrupteur des moyens d'interruption commandés placé entre la source de puissance électrique et le ventilateur, dès que la mesure dépasse un seuil prédéfini. Une fois défini, le tableau d'états d'un acteur logique est stocké dans les moyens de mémorisation associé au coeur principal. Les états de tous les acteurs logiques 5 applicatifs sont avantageusement définis dans un tableau général commun, pour faciliter le développement et la mise au point de cette application. Les code binaire d'un acteur est chargé dans la mémoire associée au coeur sur lequel il doit être exécuté. Les codes binaires des acteurs système sont de préférence chargés dans la mémoire associée au coeur principal, tandis que le code binaire de 10 chaque acteur applicatif est chargé dans la mémoire d'un coeur parmi le coeur principal et les coeurs secondaires. Le code binaire d'un automate à états est réduit. Le système d'exploitation configuré présente donc une empreinte mémoire faible. La répartition des acteurs par coeur s'effectue lors de la configuration du capteur 1 15 par l'opérateur au moyen de l'interface homme/machine de configuration mis à sa disposition. Les acteurs systèmes et applicatifs sont notamment répartis sur les différents coeurs selon les contraintes d'exécution d'une application. Dans le cas simple, tous les acteurs sont exécutés par un seul coeur (système à faible coût sans contrainte de 20 robustesse). Cependant, les acteurs d'une application ou du système d'exploitation peuvent être répartis sur plusieurs coeurs d'une façon appropriée, d'une part pour minimiser la consommation d'énergie et d'autre part pour pallier les pannes en cas de dysfonctionnement. Une application peut faire un appel à une fonctionnalité système, afin de requérir 25 l'exécution de la fonctionnalité système correspondante. Par exemple, la transmission d'une donnée vers la carte de communication en vue de sa transmission sur le réseau constitue un exemple d'une telle fonction système appelée par une application. Le système d'exploitation met à disposition une librairie d'acteurs système. Les fonctionnalités systèmes correspondantes permettent de simplifier la programmation des 30 actions réalisables par un acteur applicatif. L'homme du métier constatera que les acteurs applicatifs et les acteurs système sont fortement couplés (« Tighly cross layering ») et ont les mêmes droits lors de leur exécution (un acteur application a le même privilège qu'un acteur système). C'est la raison pour laquelle on peut dire que la couche applicative 110 est dans le système 35 d'exploitation 101. Il n'y a notamment pas de de changement de contexte lors du passage entre l'exécution d'un acteur système et celle d'un acteur applicatif. 3047820 9 Contrairement à un noyau classique de l'état de la technique, le système d'exploitation 101 ne comporte pas de service d'ordonnancement pour orchestrer l'exécution des acteurs logiques, système ou applicatifs. Lors du développement d'une application et par conséquent de la configuration du système d'exploitation générique, 5 l'opérateur planifie l'ordre d'exécution des acteurs selon une séquence d'ordonnancement 117 sauvegardée dans un fichier de configuration du système d'exploitation. A chaque cycle d'exécution, les acteurs logiques sont appelés successivement selon la séquence d'ordonnancement. L'exécution de la séquence d'ordonnancement s'appuie sur une table qui 10 comporte, pour chaque acteur en cours d'exécution, l'état courant dans lequel il se trouve. Cette table des états courants est stockée dans la mémoire du coeur principal 20. Elle est représentée schématiquement sur la figure 3 et porte la référence 119. Lors de l'appel d'un acteur, la table des états courants est consultée pour savoir si les conditions définies par le message initial associé à l'état courant de l'acteur considéré 15 sont vérifiées. Dans l'affirmative, l'action associé à l'état courant de l'acteur est réalisée et une transition permet de basculer l'acteur considéré dans l'état final. Ce dernier bascule dans un nouvel état et l'indique par un message final adapté, c'est-à-dire par la mise à jour de son état courant dans la table des états courants. Si un message initial est élaboré à partir des états de deux autres acteurs, il 20 convient de décomposer ce message initial en une expression logique comportant par exemple un opérateur « ET » propre à agréger les deux états pour élaborer le message initial de l'acteur considéré. Avantageusement, un acteur système de gestion d'énergie 113 scrute les états des acteurs exécutés sur un même coeur secondaire 30. Lorsque tous ces acteurs se 25 trouvent dans un état de repos ou de fin d'exécution, l'acteur 113 éteint le coeur secondaire correspondant, par exemple en commandant de manière adaptée les moyens d'interruption commandés 82. Avantageusement, l'acteur système de gestion d'énergie 113 scrute les états des acteurs exécutés sur le coeur principal 20. Lorsque tous ces acteurs se trouvent dans un 30 état de repos ou de fin d'exécution, l'acteur 113 met en veille le coeur principal c'est-à-dire le capteur. Ces actions permettent de limiter la consommation énergétique du capteur et donc d'augmenter sa durée de vie dans le cas où il est équipé d'une batterie non rechargeable. De manière générale, l'exécution nominale d'un acteur logique s'effectue selon 35 une suite d'états prédéfinie. 3047820 10 En conséquence, tout écart par rapport à cette suite d'états prédéfinie est indicatif d'un dysfonctionnement. La surveillance de la suite d'états suivie par un acteur logique lors de son exécution permet donc d'identifier la survenue d'un dysfonctionnement et de mettre en oeuvre une action corrective adaptée pour maintenir la fonctionnalité 5 correspondante. Pour cela, il est prévu d'associer, par exemple à chaque acteur logique, système ou applicatif, un acteur logique de surveillance. En variante, et selon les contraintes, un unique acteur logique de surveillance peut être mis en place et surveiller le fonctionnement de tous les acteurs, y compris les acteurs systèmes d'une façon 10 transparente. Sur la figure 5 est ainsi représenté un acteur de surveillance R de l'acteur logique S de la figure 4. A chaque cycle, l'acteur de surveillance R est exécuté à la suite de l'exécution de l'acteur surveillé S. 15 L'acteur de surveillance R est initialisé lors de l'initialisation S INIT de l'acteur S. Après une phase d'initialisation R INIT qui suit l'initialisation de l'acteur S, l'acteur de surveillance R est placé dans l'état RO. Dans le cycle d'exécution au cours duquel l'acteur de temporisation T bascule de l'état T=0 à l'état T=1, l'acteur surveillé S réalise l'action de l'état SO et bascule de l'état 20 SO vers l'état S1. Puis, l'acteur R, dans l'état RO, est appelé : constatant, d'après la table des états courants, que l'acteur T est dans l'état T=1 et que l'acteur S est dans l'état S=S1, l'acteur de surveillance R bascule alors dans l'état R1. En revanche, si l'acteur T est dans l'état T=1 et que l'acteur S est dans un autre état que l'état S1, SI=S1, l'acteur de surveillance R bascule dans l'état de reconfiguration 25 de l'acteur surveillé, RESET_S. Au cycle d'exécution suivant, l'acteur T étant dans l'état T=1, la valeur du compteur est réinitialisée et l'acteur T bascule dans l'état 0. Si l'acteur R se trouve dans l'état RESET S, l'action associée est réalisée comme cela sera présenté ci-dessous. Puis, dans le cycle au cours duquel l'acteur de temporisation T bascule à nouveau 30 de l'état T=0 à l'état T=1, l'acteur surveillé S réalise l'action de l'état S1 et bascule vers l'état S2. Puis, l'acteur R, dans l'état R1, est appelé : constatant, d'après la table des états courants, que l'acteur T est dans l'état T=1 et que l'acteur S est dans l'état S2 , S=S2, l'acteur de surveillance R bascule dans l'état R2. En revanche, si l'acteur T est dans l'état T=1 et que l'acteur S est dans un autre 35 état que l'état S2, S!=52, l'acteur de surveillance R bascule dans l'état de reconfiguration de l'acteur surveillé, RESET_S. 3047820 11 Au cycle d'exécution suivant, l'acteur T étant dans l'état T=1, la valeur du compteur est réinitialisée et l'acteur T bascule dans l'état 0. Si l'acteur R se trouve dans l'état RESET S, l'action associée est réalisée comme cela sera présenté ci-dessous. Dans le cycle au cours duquel l'acteur de temporisation T bascule à nouveau de 5 l'état T=0 à l'état T=1, l'acteur surveillé S réalise l'action de l'état S2 et bascule vers l'état SO. Puis, l'acteur R, dans l'état R2, est appelé : constatant, d'après la table des états courants, que l'acteur T est dans l'état T=1 et que l'acteur S est dans l'état SO, S=SO, l'acteur de surveillance R bascule dans l'état RO. En revanche, si l'acteur T est dans l'état T=1 et que l'acteur S est dans un autre 10 état que l'état SO, S!=SO, l'acteur de surveillance R bascule dans l'état de reconfiguration de l'acteur surveillé, RESET_S. Au cycle d'exécution suivant, l'acteur T étant dans l'état T=1, la valeur du compteur est réinitialisée et l'acteur T bascule dans l'état 0. Si l'acteur R se trouve dans l'état RESET S, l'action associée est réalisée comme cela sera présenté ci-dessous. 15 On constate que l'acteur de surveillance R bascule dans l'état RESET S, lorsque l'acteur surveillé S ne peut réaliser correctement l'action associée à son état courant. Ceci est a priori causé par un dysfonctionnement. Dans cet exemple, la détection de pannes est similaire aux mécanismes dits « chien de garde » ou de « battement de coeur ». Une fois une panne détectée, il est possible d'y répondre par l'action associée à 20 l'état RESET_S de l'acteur de surveillance R. Cette action de reconfiguration est définie par l'opérateur lors de la configuration du système d'exploitation 101. Il peut par exemple s'agir de mettre en oeuvre une stratégie prédéfinie pour permettre au capteur 1 de disposer à nouveau de la fonctionnalité associée à l'acteur surveillé défectueux. Par exemple, dans une stratégie de redondance des acteurs 25 logiques, l'acteur de surveillance R lance l'exécution d'un acteur logiciel équivalent à l'acteur surveillé S défaillant, de préférence sur un autre coeur du capteur. L'acteur de surveillance R est avantageusement exécuté sur le coeur principal 20 tandis que l'acteur surveillé S, par exemple l'acteur d'acquisition d'une mesure, est exécuté sur un coeur secondaire 30. 30 Ainsi, le système d'exploitation configurable selon l'invention permet de développer et de piloter un capteur robuste et sûr. Il permet en effet de détecter des erreurs transitoires et permanentes en se fondant sur une suite nominale d'états pour chacun des acteurs logiques utilisés pour chaque fonctionnalité du capteur. La redondance des composants et l'utilisation d'acteurs équivalents autorisent une correction 35 des erreurs détectées. Le capteur exécutant le système d'exploitation est par conséquent robuste. 3047820 12 Il est à noter que le fait qu'un acteur défaillant puisse être remplacé par un acteur équivalent, aussi dénommé redondance temporelle ou redondance à froid, permet d'éviter d'avoir à mettre en oeuvre des mécanismes de redondance à chaud, où plusieurs acteurs similaires sont exécutés simultanément et un mécanisme de vote vérifie que les sorties de 5 ces différents acteurs sont cohérentes entre elles. Une telle redondance à chaud ne correspond pas aux objectifs de limitation de l'empreinte mémoire et d'économie d'énergie. Le capteur sur lequel est exécuté le système d'exploitation est appelé à constituer un noeud d'un réseau de communication ad hoc. Pour l'acheminement d'un paquet de 10 données depuis un noeud source vers un noeud destinataire (par exemple connecté à l'Internet), le paquet de données est transmis d'un noeud à un noeud voisin, chaque noeud intermédiaire agissant en relais du paquet de données. Pour savoir vers quel noeud voisin un paquet doit être émis pour qu'il atteigne un noeud destinataire, le noeud considéré doit mettre en oeuvre un service de routage 15 approprié. Un tel service de routage est fondé sur la connaissance, par le noeud considéré, de la topologie du réseau. Cette connaissance est résumée dans une table de routage mémorisée dans la mémoire du noeud capteur. De nombreuses manières de procéder au routage sont connues. Dans le système 20 d'exploitation selon l'invention, la fonctionnalité de routage se fonde sur la position relative des capteurs du réseau. Il exploite la puissance du signal reçu par les capteurs voisins (« RSSI » selon l'acronyme anglais « Received Signal Strength Indication »), telle que mesurée par le module de radiocommunication équipant la carte 60. L'adresse d'un capteur est par exemple codée sur 11 bits. On peut augmenter le 25 nombre de bits pour augmenter la précision de l'adresse et donc la connaissance de la position du capteur sans changer le principe de fonctionnement de ce routage. Les différents champs d'une adresse sont : 4 bits pour un identifiant de région ; 4 bits pour un nombre de sauts ; et 3 bits pour un identifiant de capteur. Les positions des capteurs sont indiquées dans un plan horizontal. Un capteur est 30 choisi comme capteur coordinateur et constitue l'origine du plan. En outre, au moins trois capteurs de référence sont mis en place avant tous les autres capteurs. Les capteurs de référence en combinaison avec le capteur coordinateur permettent de définir des directions dans le plan et d'y délimiter des secteurs angulaires géographiques. Les capteurs du réseau ad hoc fixe sont déployés à partir du capteur coordinateur, 35 un par un, vers l'extérieur. Lors de déploiement tous les capteurs sont actifs. L'adresse d'un capteur est alors déterminée au moment du déploiement de ce capteur. 3047820 13 L'identifiant de région indique le secteur angulaire géographique où se trouve un capteur. Ainsi, avec quatre bits on peut identifier seize secteurs dans le plan. Le nombre de sauts indique la distance (en nombre de sauts) qui sépare le capteur considéré du capteur coordinateur. 5 L'identifiant de capteur est assigné par le capteur coordinateur pour assurer l'unicité de l'adresse d'un capteur dans un secteur. Etant codé sur trois bits, chaque secteur peut ainsi contenir huit capteurs. Par rapport à une fonctionnalité de routage fondée sur la position géographique du capteur, par exemple en utilisant sa position déterminée au moyen d'une constellation de 10 satellites, tel que le système GPS par exemple, la présente fonctionnalité de routage est moins précise mais peut fonctionner à la fois en intérieur et en extérieur, sans surcoût énergétique. Par rapport à un service de routage du type RPL (« Routing Protocol for Low power and Lossy Networks »), qui est standard de l'IETF, la présente fonctionnalité de routage est plus flexible et consomme moins d'énergie et est appropriée pour les réseaux 15 de capteurs. La position géographique du capteur est alors utilisée comme adresse du capteur sur le réseau. Ce concept permet de minimiser la taille des paquets de données et de connaître l'origine d'une donnée, c'est-à-dire quel capteur est à l'origine de l'acquisition de cette donnée. Il est à noter que, la technique de routage classique nécessite l'adresse du 20 capteur sur le réseau ainsi que sa position géographique. Ceci entraîne une augmentation de la taille des paquets de données et par conséquent de la taille de la mémoire de chaque capteur afin de stocker une table de routage de taille adaptée. En outre, cette fonctionnalité de routage étant composée d'acteurs système, son fonctionnement peut être facilement surveillé par un ou plusieurs acteurs de surveillance 25 associés. Les pannes de communication sans fil peuvent ainsi être surveillées et éventuellement des stratégies peuvent être prévues pour y remédier. REVENDICATIONS1.- Système d'exploitation (101) pour un capteur (1) d'un réseau de capteurs, caractérisé en ce que le système d'exploitation est configuré de manière à comporter, en plus d'une pluralité de fonctionnalités système génériques de virtualisation des ressources matérielles du capteur, comportant en particulier des fonctionnalités de radiocommunication (112) et des fonctionnalités de routage (114), une pluralité de fonctionnalités applicatives (122), chaque fonctionnalité étant définie par un acteur logiciel (124, 126), chaque acteur logiciel étant constitué par un automate à états finis, l'exécution des différents acteurs étant définie dans une séquence d'ordonnancement prédéterminée déterminant l'ordre temporel d'appel de chaque acteur au cours d'un cycle d'exécution. 2.- Système d'exploitation (101) selon la revendication 1, comportant un acteur logique surveillé (S) et un acteur logique de surveillance (R) de l'acteur logique surveillé, l'acteur logique surveillé suivant, au cours de son fonctionnement nominal, une suite d'états déterminée, de sorte que tout écart à ladite suite d'états est indicative d'un dysfonctionnement de l'acteur logique surveillé et conduit à une transition de l'acteur de surveillance vers un état de reconfiguration (RESET_S) de l'acteur logique surveillé. 3.- Système d'exploitation (101) selon la revendication 2, dans lequel la transition dans l'état de reconfiguration (RESET_S) de l'acteur logique de surveillance (R) conduit à la mise en oeuvre d'une action correspondant à une stratégie de correction du dysfonctionnement affectant l'acteur logique surveillé (S). 4.- Système d'exploitation (101) selon la revendication 3, dans lequel au moins un acteur logique surveillé (S) est redondé par un acteur logique équivalent, la stratégie de correction consistant à exécuter l'acteur logique équivalent à la place de l'acteur logique surveillé. 5.- Système d'exploitation (101) selon l'une quelconque des revendications 1 à 4, dans lequel, le capteur comportant au moins deux coeurs (20, 30), un coeur principal et un coeur secondaire, l'exécution des fonctionnalités système et applicatives est répartie entre les différents coeurs selon une répartition prédéfinie. 6.- Système d'exploitation (101) selon la revendication 5, dans lequel le système d'exploitation comporte une fonctionnalité système de gestion d'énergie (113) exécutée 3047820 15 sur le coeur principal (20) et propre à éteindre un coeur secondaire (30) lorsque ce dernier est inactif et à allumer un coeur secondaire pour qu'il exécute une fonctionnalité. 7.- Système d'exploitation (101) selon l'une quelconque des revendications 1 à 6, 5 dans lequel chaque acteur logique est défini par un tableau d'états comportant une pluralité de lignes, chaque ligne comportant un état initial de l'acteur, un message initial, une action réalisée par l'acteur lorsqu'il reçoit le message initial, un état final vers lequel bascule l'acteur une fois l'action réalisée, et un message final lorsque l'acteur bascule dans l'état final, le code binaire de l'action étant destiné à être chargé dans un moyen de 10 mémorisation du capteur en vue de son exécution par un moyen de calcul du capteur. 8.- Système d'exploitation (101) selon l'une quelconque des revendications 1 à 7, comportant une table des états courants permettant de stocker l'état courant de chaque acteur logique exécuté sur le capteur. 9.- Capteur (1) comportant une couche matérielle et une couche logicielle, caractérisé en ce que la couche logicielle (100) comporte un système d'exploitation (101) selon l'une quelconque des revendications 1 à 8. 15 20