Connecteur Overmind
- Nicht definierter Typ
Overmind est un connecteur du Hub qui fournit des données virtuelles pour les tests et les démonstrations. Il permet de simuler une consigne, un compteur, un état, une date ou une position géographique, sans équipement physique.
Il gère deux familles de variables :
Defined: la valeur est définie à l’enregistrement, puis modifiée par une écriture provenant d’une session, d’une application ou d’un autre connecteur.Evolving: la valeur évolue automatiquement à un intervalle choisi. Les abonnés reçoivent les changements de valeur, de qualité et de date source.
La définition est portée par l’URL du handle. Name est obligatoire et constitue sa référence primaire. Une troisième forme, Overmind://Metronome, permet de déclarer les métronomes qui synchronisent les variables évolutives.
In diesem Artikel
1. Définir et retrouver un handle
1.1 Structure du chemin
Le path d’un handle est une URL. Son préfixe, ou protocole, est Overmind://. Pour définir une variable, il est suivi de Defined ou d’Evolving, puis d’un point d’interrogation introduisant ses paramètres.
Chaque paramètre est une association Clé=Valeur. Le caractère & sépare les paramètres, comme dans la partie query d’une URL.
Compteur de 0 à 100, incrémenté de 1 toutes les 5 secondes, puis ramené à 0 :
Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
1.2 Name : identité et remplacement
Name identifie un handle dans une instance d’Overmind. Les espaces en début et fin du nom sont retirés et la comparaison ne tient pas compte de la casse. Ainsi Counter et counter désignent la même variable.
Enregistrer une définition avec un nom déjà présent remplace l’ancienne définition et réinitialise la valeur, même si le chemin fourni est identique. Les abonnements existants à ce nom continuent de recevoir ses changements. Une définition invalide est refusée avant de remplacer la variable existante.
Un nom absent, vide ou composé seulement d’espaces provoque une erreur explicite. Une référence à un nom inconnu échoue également ; elle ne crée pas de variable.
1.3 Lire et s’abonner par le nom
Après avoir enregistré la définition, utiliser uniquement son nom pour lire sa valeur ou s’abonner à ses changements :
Overmind://Name=Increment0To100Every5s
Ce chemin court ne réinitialise pas le handle. Il accepte uniquement le paramètre Name. Pour changer la définition, enregistrer à nouveau un chemin Defined ou Evolving portant le même nom.
1.4 Écrire dans un handle Defined
Créer une consigne modifiable :
Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
Envoyer ensuite la valeur 25 à Overmind://Name=MutableInteger20 par l’opération d’écriture du Hub. Le nom reste identique, la valeur devient 25 et la date de modification est actualisée.
Une écriture incompatible avec le type est refusée sans changer la valeur ni sa date. Les écritures sur un handle Evolving sont refusées.
2. Types de valeurs
Le paramètre Type indique la nature de la valeur simulée. Il détermine comment Overmind interprète la valeur reçue, quelles valeurs sont acceptées et quels calculs sont possibles lors d’une évolution ou d’une écriture.
Par exemple, Type=Integer interprète 10 comme un nombre entier auquel on peut ajouter un pas. Type=String conserve 10 comme du texte. Type=DateTime permet de faire avancer une date d’une durée donnée.
Les handles Defined et Evolving utilisent les mêmes types. Une déclaration Metronome possède directement une période Span et n’utilise pas le paramètre Type.
| Type | Valeur manipulée |
|---|---|
Boolean |
Booléen true ou false. |
Integer |
Entier signé de -2147483648 à 2147483647. |
SmallInteger |
Octet non signé de 0 à 255. |
Single |
Nombre décimal, stocké en double précision dans Overmind. |
DateTime |
Date et heure publiées en UTC. |
GISVector |
Position géographique. |
String |
Texte. |
Unknow, Any, Url, Guid |
Traités comme du texte ; une URL ou un Guid n’est pas validé comme tel. |
Color, Image, Array |
Types non pris en charge : la définition est refusée. |
Sans Type, Overmind utilise Unknow. Une valeur telle que 123 reste donc du texte si aucun type numérique n’est indiqué.
3. Handles Defined
Un handle Defined représente une valeur que l’on fixe puis que l’on peut modifier depuis l’extérieur, par une écriture du Hub. Il convient par exemple à une consigne, à un état forcé ou à une valeur stable de démonstration. Il n’évolue pas automatiquement.
On peut associer plusieurs clés à Defined dans son URL : le nom identifie la variable, le type précise sa nature et les autres paramètres permettent de choisir sa valeur initiale, sa qualité ou sa date source. Les clés disponibles sont les suivantes.
| Paramètre | Rôle et valeur par défaut |
|---|---|
Name |
Nom obligatoire, identité du handle. |
Context |
Texte descriptif facultatif, sans effet sur l’identité. |
Type |
Type de valeur ; Unknow par défaut. |
InitialValue |
Valeur initiale, convertie selon Type. |
Status |
Qualité initiale ; Good par défaut. |
LastModificationDate |
Date source initiale ; date courante UTC par défaut. |
Context est une information descriptive facultative. Il ne sépare pas les identités : deux définitions ayant le même Name et des contextes différents désignent le même handle.
Sans InitialValue, les nombres valent 0, le booléen vaut false, le texte est vide, la date vaut le 1er janvier de l’an 1 UTC et la position GIS vaut (0,0).
LastModificationDate décrit la date de la valeur, pas sa fréquence d’évolution. Une écriture réussie actualise cette date. Une consigne peut donc porter une qualité Unreachable et une date ancienne dès son enregistrement pour simuler une donnée indisponible ou périmée.
4. Handles Evolving
Un handle Evolving représente une variable qui change automatiquement au fil du temps. Il peut simuler un compteur, une mesure aléatoire, une suite d’états, une date qui avance ou un déplacement géographique. Les abonnés sont informés de ses évolutions.
Les clés associées à Evolving dans l’URL permettent de choisir le type de valeur, son départ, son arrivée, la manière de la faire évoluer et la durée entre deux changements. Step agit sur le changement de valeur ; Interval règle le temps entre les changements.
| Paramètre | Rôle et valeur par défaut |
|---|---|
Name |
Nom obligatoire, identité du handle. |
Context |
Texte descriptif facultatif. |
Type |
Type de valeur ; Unknow par défaut. |
InitialValue |
Point de départ ou entrée initiale de l’Aggregate. |
EndValue |
Borne d’arrivée, date absolue ou durée selon le type. |
Step |
Pas d’évolution, durée, saut dans une liste ou nombre de transitions GIS. |
Interval |
Durée positive entre deux évolutions ; 30 secondes par défaut. |
Behavior |
Increment par défaut ; Decrement ou Random au choix. Pour un texte sans Aggregate explicite, le défaut est Random (voir Listes et textes). |
Aggregate |
Liste des valeurs à parcourir, séparées par des virgules. |
Metronome |
Nom d’un métronome existant ; facultatif. |
Statuses |
Liste des qualités possibles, séparées par des tirets ; Good par défaut. |
LastModificationTimeSpan |
Durée à soustraire à la date source ; zéro par défaut. |
EndValue est le seul paramètre de borne d’arrivée accepté.
4.1 Behavior et bouclage
Increment ajoute Step ; Decrement le retranche. Pour les nombres et les dates, InitialValue est le point de départ et EndValue la borne dans le sens choisi. Après dépassement de cette borne, la valeur revient au point de départ. La borne est atteinte si le pas tombe exactement dessus.
Avec InitialValue=0, EndValue=100 et Step=1, la séquence est 0, 1, 2, jusqu’à 100, puis 0. Avec InitialValue=3, EndValue=0 et Behavior=Decrement, elle est 3, 2, 1, 0, puis 3.
Random choisit une valeur dans les bornes ou dans une liste de valeurs (voir plus loin la notion d’Aggregate). Step n’est pas utilisé pour le tirage aléatoire. Si ce paramètre est fourni, sa valeur doit néanmoins être valide.
Sans Behavior, le comportement est Increment. Le cas particulier des textes est expliqué dans la section Listes et textes.
4.2 Valeurs par défaut et Step
| Type sans Aggregate | Départ par défaut | Borne d’arrivée par défaut | Step par défaut |
|---|---|---|---|
Integer |
Minimum du type ; maximum en Decrement. | Maximum du type ; minimum en Decrement. | 1. |
SmallInteger |
0. | 255 ; 0 en Decrement. | 1. |
Single |
0. | Maximum du type ; minimum en Decrement. | 0.1. |
DateTime |
1er janvier de l’an 1 UTC. | Date maximale ; date minimale en Decrement. | 30 secondes. |
Boolean |
false. | Alternance ou tirage aléatoire. | Non utilisé. |
String et types assimilés |
Première entrée de la liste. | Liste de textes. | 1 entrée. |
GISVector |
Longitude 0, latitude 0. | Point d’arrivée historique : longitude 5.877286, latitude 47.858437 (voir GISVector). | Trajet effectué en un déplacement. |
Choisir des bornes explicites pour une simulation lisible. Step doit être positif : entier pour Integer, SmallInteger, les listes et les transitions GIS ; décimal pour Single ; durée pour DateTime.
Pour un Boolean sans Aggregate, Step n’est pas utilisé : le booléen est inversé à chaque échéance avec Increment ou Decrement. Avec Random, il est tiré au hasard et peut conserver la même valeur. Lorsqu’une liste de booléens est fournie par Aggregate, on parcourt cette liste selon les règles décrites ci-dessous.
4.3 Listes (Aggregate) et textes
Aggregate=A,B,C fournit les valeurs autorisées. Increment avance dans la liste, Decrement recule et Random choisit une entrée. Le parcours est cyclique ; Step compte les entrées à sauter, avec 1 par défaut.
La première entrée est utilisée au départ, même avec Decrement. InitialValue permet de choisir une autre entrée et doit alors appartenir à la liste. EndValue n’intervient pas lorsque l’Aggregate est présent. Toutes les entrées sont converties dans le type demandé.
Dans un handle Evolving, un texte évolue toujours en choisissant une entrée d’une liste. Cela concerne String et les types assimilés au texte : Any, Unknow, Url et Guid.
Cette liste peut avoir trois origines :
- Un
Aggregateexplicite : les valeurs fournies constituent la liste. SansBehavior, elles sont parcourues dans l’ordre avecIncrement. - Des textes définis par
InitialValueetEndValue: ils forment une liste de deux entrées. Si une extrémité est omise, elle est prise dans la liste intégrée. - Aucun de ces paramètres : Overmind utilise sa liste de messages intégrée.
Dans les deux derniers cas, sans Aggregate explicite, le Behavior par défaut est Random. On peut choisir Behavior=Increment pour parcourir les textes dans l’ordre. Un texte Defined, lui, reste une valeur fixe et n’utilise aucune liste.
4.4 DateTime
Pour un DateTime, InitialValue est la date de départ. EndValue peut être une date d’arrivée absolue ou une durée calculée à partir du départ.
Step est la durée d’avancement de la date simulée. Interval est le temps réel entre deux évolutions : Step=30&Interval=1 fait avancer la date de 30 secondes chaque seconde réelle.
Date d’arrivée absolue : partir de 10 h UTC, avancer de 30 secondes chaque seconde réelle et reboucler après 10 h 01 UTC.
Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
Date d’arrivée relative : parcourir une minute à partir de 10 h UTC, en avançant de 500 ms chaque seconde réelle.
Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
Durée relative en Decrement : partir de 10 h 01 UTC, soustraire 30 secondes à chaque seconde réelle, jusqu’à une minute avant le départ, puis recommencer.
Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
Date aléatoire : choisir chaque seconde réelle une date dans la minute suivant 10 h UTC. Step n’est pas utilisé.
Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
4.5 GISVector
Une position individuelle utilise l’ordre longitude,latitude : InitialValue=2,48. Les valeurs publiées utilisent le format longitude;latitude, par exemple 2;48.
Pour un GIS, EndValue est un point d’arrivée, pas une valeur maximale. Les coordonnées 5.877286,47.858437 proviennent d’un point fixé dans le code historique du connecteur ; elles ne représentent aucune limite géographique. Préciser InitialValue et EndValue permet de choisir son propre trajet.
Sans Aggregate, une transition est le déplacement de la position courante vers la position suivante. Step indique en combien de déplacements de même longueur le trajet du départ à l’arrivée est découpé. Une transition est effectuée à chaque Interval.
Avec un départ (2,48), une arrivée (4,50), Step=2 et Interval=1, le résultat est :
| Temps écoulé | Position publiée | Déplacement |
|---|---|---|
| 0 seconde | 2;48 |
Point de départ. |
| 1 seconde | 3;49 |
Première transition : moitié du trajet. |
| 2 secondes | 4;50 |
Deuxième transition : arrivée. |
| 3 secondes | 2;48 |
Retour au départ pour recommencer le trajet. |
Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
Inverser InitialValue et EndValue inverse le trajet. Avec Random, un point est tiré au hasard sur le segment ; Step n’est pas utilisé.
L’Aggregate GIS conserve son format historique : chaque paire est écrite dans l’ordre latitude,longitude, avec sa virgule encodée. Ainsi Aggregate=48%2C2,49%2C3,50%2C4 correspond aux positions publiées 2;48, 3;49 et 4;50.
5. Synchroniser les évolutions avec un métronome
5.1 Déclarer un métronome avec un handle
Un métronome définit une cadence commune à plusieurs variables. Il se déclare lui aussi avec une URL, avant d’appliquer les variables qui vont l’utiliser.
Métronome dont les battements sont espacés de 250 ms :
Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
| Clé | Rôle |
|---|---|
Name |
Nom obligatoire du métronome. |
Span |
Durée obligatoire et strictement positive entre deux battements. Elle accepte des secondes, y compris fractionnaires, ou une durée formatée. |
Le handle fournit sa période comme valeur, par exemple 00:00:00.2500000. Il est lisible avec la référence par nom décrite au début du document. Ce n’est pas un compteur de battements et il n’accepte pas d’écriture directe ; pour changer la période, enregistrer une nouvelle définition Metronome.
Redéclarer le même nom met à jour Span sans redémarrer la phase commune. Si la nouvelle période est incompatible avec un intervalle de variable actif ou sauvegardé, la déclaration échoue explicitement et la période précédente reste appliquée.
Les noms suivent la même règle d’unicité que les autres handles. Un métronome encore utilisé ne peut pas être remplacé par une variable Defined ou Evolving.
5.2 Interval reste une durée
Le métronome est facultatif. Sans Metronome, chaque handle évolue selon son intervalle depuis son initialisation. Les fractions de seconde sont acceptées : Interval=0.29 demande une évolution toutes les 290 ms.
Avec Metronome, le handle conserve son intervalle et rejoint une origine temporelle commune. Deux handles ayant le même métronome et le même intervalle évoluent aux mêmes échéances, même s’ils ont été enregistrés à des moments différents.
Un métronome possède un nom Name et une période Span strictement positive. L’intervalle du handle doit être un multiple entier positif de cette période. Ce sont toujours des durées : Interval=1 signifie une seconde, pas un battement.
| Span du métronome | Interval du handle | Résultat |
|---|---|---|
| 250 ms | 1 seconde | Évolution tous les 4 battements. |
| 250 ms | 500 ms | Évolution tous les 2 battements. |
| 250 ms | 750 ms | Évolution tous les 3 battements. |
| 250 ms | 290 ms | Refus : le rapport n’est pas entier. |
| 10 ms | 290 ms | Évolution tous les 29 battements. |
Sans Interval, la durée de 30 secondes reste appliquée et doit elle aussi être un multiple de Span. Un métronome absent de la configuration, un nom vide ou un intervalle incompatible produit une erreur explicite.
5.3 Échéances communes
Sur un métronome de 250 ms, des handles d’intervalles 500 ms et 750 ms ont une échéance commune toutes les 1,5 seconde. Un handle ajouté plus tard rejoint la prochaine échéance correspondant à son intervalle.
Les notifications sont émises successivement, avec la date de l’échéance commune. La cadence n’est pas une garantie temps réel. En cas de retard du moteur, une seule évolution est appliquée pour la dernière échéance atteinte, sans rejouer tous les battements manqués. La reconnexion crée une nouvelle origine temporelle commune.
5.4 Préparer les métronomes des exemples
Le catalogue utilise Demo250ms, déclaré ci-dessus, et Demo10ms, dont les battements sont espacés de 10 ms :
Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
Appliquer ces deux URLs avant les sept exemples synchronisés. Elles figurent en tête du tableau PreloadPaths fourni à la fin du document. Il n’est plus nécessaire de préparer un fichier de base pour ces exemples.
Lorsqu’un même lot d’enregistrement contient une déclaration de métronome et ses variables, Overmind traite d’abord la déclaration unique de ce métronome. Si plusieurs définitions partagent un même nom dans le lot, leur ordre reste celui de la demande pour conserver la règle du dernier enregistrement.
Une déclaration par handle prend effet en mémoire, comme celle d’une variable. La réappliquer après une reconnexion si elle n’a pas été sauvegardée dans la base. L’administration Overmind permet aussi de créer, modifier et sauvegarder les métronomes.
6. Qualité, date source et erreurs
La qualité indique l’état simulé de la donnée ; elle est distincte du statut de connexion d’Overmind.
| Qualité | Situation représentée |
|---|---|
Good |
Donnée valide. |
Unreachable |
Donnée inaccessible. |
SpecificError |
Erreur spécifique. |
Unhandled |
Handle non pris en charge. |
UnpluggedConnector |
Connecteur déconnecté. |
NoConnectorFound |
Aucun connecteur trouvé. |
Pour Defined, utiliser Status. Pour Evolving, utiliser Statuses=Good-Unreachable-SpecificError : une qualité est choisie dans cette liste à chaque évolution. Un libellé de qualité inconnu est converti en SpecificError.
LastModificationDate fixe la date initiale d’un handle Defined. LastModificationTimeSpan recule la date source d’un Evolving sans modifier son intervalle : une valeur mise à jour toutes les secondes peut être présentée avec cinq minutes de retard.
Le Hub et ConnectorTester conservent la qualité et la date source initiales. Ainsi une définition demandant Unreachable et une date fixe doit afficher ces mêmes informations dès l’enregistrement, puis lors d’une lecture par nom.
Un échec d’enregistrement fournit un motif explicite et un log de niveau Error, associé au connecteur, au chemin et à la cause. Cela couvre notamment un Name absent, un type non pris en charge, une valeur mal formée, un intervalle nul, un métronome inconnu ou une écriture interdite.
Une simulation qui échoue pendant une évolution publie SpecificError. Les autres handles continuent de fonctionner.
7. Formats et caractères réservés des URL
Les noms des paramètres, des types et des comportements sont insensibles à la casse. Les paramètres inconnus, répétés ou inapplicables à la famille du handle sont refusés.
Le path étant une URL, certains caractères y ont un rôle réservé. Par exemple, ? introduit les paramètres et & les sépare. Lorsqu’un de ces caractères fait partie d’une valeur, il faut l’encoder pour qu’il reste dans cette valeur. Les espaces, les accents et le signe + doivent aussi être encodés dans les valeurs des paramètres.
| Caractère | Encodage dans une valeur |
|---|---|
| Espace | %20 |
| Esperluette & | %26 |
| Signe + | %2B |
| Signe = | %3D |
| Point d’interrogation ? | %3F |
| Dièse # | %23 |
| Pourcentage % | %25 |
| Virgule dans une paire GIS d’un Aggregate | %2C |
Les nombres utilisent le point décimal : 21.5, 0.25. Les booléens utilisent true ou false, pas 0 ou 1.
Les dates peuvent être écrites en ISO 8601, par exemple 2026-09-08T10:00:00Z. Une date sans fuseau est interprétée en UTC ; les dates publiées sont normalisées en UTC. Dans un décalage horaire positif, encoder le signe + : 2026-09-08T12:00:00%2B02:00.
Les durées acceptent un nombre de secondes, éventuellement fractionnaire, ou le format [jours.]hh:mm:ss[.fractions]. Par exemple, 0.29 et 00:00:00.290 représentent 290 ms ; 1.02:03:04 représente 1 jour, 2 heures, 3 minutes et 4 secondes.
8. Installation et conservation des données
Le connecteur se distribue sous la forme de GraphicStream.Immersive.Hub.Connectors.Overmind.dll. En dehors du runtime .NET 10, sa dépendance applicative est GraphicStream.Immersive.Hub.Abstractions.dll, fournie par l’hôte.
Pour ConnectorTester, copier la DLL Overmind dans le dossier Connectors situé à côté de l’exécutable, puis relancer le tester. Il doit proposer un seul connecteur Overmind. Le type de configuration est GraphicStream.Immersive.Hub.Connectors.Overmind.ConnectorSession.
La base Overmind/database.json conserve les chemins du catalogue, les variables de l’administration et les définitions des métronomes. Les métronomes sont chargés à la connexion. Les chemins sauvegardés ne deviennent pas automatiquement des handles actifs ; ils doivent être enregistrés par un consommateur.
Une déconnexion arrête les évolutions et vide le registre des handles actifs. Au redémarrage, enregistrer à nouveau les variables et les métronomes qui n’ont pas été sauvegardés. La base n’est pas une sauvegarde automatique de la dernière valeur de chaque handle.
Un JSON de base mal formé ou des métronomes invalides empêchent la connexion et produisent une erreur. La suppression d’un chemin du catalogue accepte son nom, sa référence courte ou sa définition ; elle retire les entrées du même nom et sauvegarde la base.
Pour adapter les anciens chemins, ajouter Name à toutes les définitions et donner des noms distincts aux variables qui étaient auparavant différenciées uniquement par Context.
9. Exemples de handles
9.1 Métronomes
Métronome de 250 ms pour synchroniser les variables.
Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
Métronome de 10 ms pour les intervalles multiples de 10 ms.
Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
9.2 Valeurs définies
Entier modifiable, initialisé à 20.
Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
Booléen modifiable, initialisé à false.
Overmind://Defined?Name=MutableBooleanFalse&Type=Boolean&InitialValue=false
Octet modifiable, initialisé à 128.
Overmind://Defined?Name=MutableByte128&Type=SmallInteger&InitialValue=128
Décimal modifiable, initialisé à 21,5.
Overmind://Defined?Name=MutableDecimal21Point5&Type=Single&InitialValue=21.5
Texte contenant des accents, des espaces, & et +.
Overmind://Defined?Name=TextWithReservedCharacters&Type=String&InitialValue=%C3%89tage%201%20%26%20accueil%20%2B%20caf%C3%A9
Date fixée au 8 septembre 2026 à 10 h UTC.
Overmind://Defined?Name=FixedUtcDate&Type=DateTime&InitialValue=2026-09-08T10:00:00Z
Date à 12 h en UTC+2, publiée à 10 h UTC.
Overmind://Defined?Name=DateWithTimeZone&Type=DateTime&InitialValue=2026-09-08T12:00:00%2B02:00
Position fixe : longitude 2, latitude 48.
Overmind://Defined?Name=FixedGisPosition&Type=GISVector&InitialValue=2,48
Texte libre de type Any.
Overmind://Defined?Name=FreeText&Type=Any&InitialValue=texte%20libre
Adresse URL conservée comme texte.
Overmind://Defined?Name=UrlAsText&Type=Url&InitialValue=https:%2F%2Fexample.com%2Fstatus%3Fzone%3DA%26mode%3Dlive
Identifiant Guid conservé comme texte.
Overmind://Defined?Name=GuidAsText&Type=Guid&InitialValue=11111111-2222-3333-4444-555555555555
Texte sans conversion, de type Unknow.
Overmind://Defined?Name=UnknownTypeAsText&Type=Unknow&InitialValue=valeur%20sans%20conversion
Valeur 123 conservée comme texte lorsque Type est omis.
Overmind://Defined?Name=OmittedTypeAsText&InitialValue=123
Entier initialisé à 0 par défaut.
Overmind://Defined?Name=DefaultIntegerZero&Type=Integer
Octet initialisé à 0 par défaut.
Overmind://Defined?Name=DefaultByteZero&Type=SmallInteger
Décimal initialisé à 0 par défaut.
Overmind://Defined?Name=DefaultDecimalZero&Type=Single
Booléen initialisé à false par défaut.
Overmind://Defined?Name=DefaultBooleanFalse&Type=Boolean
Texte vide par défaut.
Overmind://Defined?Name=DefaultEmptyText&Type=String
Date initialisée au 1er janvier de l’an 1 UTC.
Overmind://Defined?Name=DefaultMinimumDate&Type=DateTime
Position initialisée à longitude 0, latitude 0.
Overmind://Defined?Name=DefaultGisOrigin&Type=GISVector
Valeur 42 avec la qualité Good.
Overmind://Defined?Name=GoodQualityValue&Type=Integer&InitialValue=42&Status=Good
Valeur 42 avec la qualité Unreachable.
Overmind://Defined?Name=UnreachableQualityValue&Type=Integer&InitialValue=42&Status=Unreachable
Valeur 42 avec la qualité SpecificError.
Overmind://Defined?Name=SpecificErrorQualityValue&Type=Integer&InitialValue=42&Status=SpecificError
Valeur 42 avec la qualité Unhandled.
Overmind://Defined?Name=UnhandledQualityValue&Type=Integer&InitialValue=42&Status=Unhandled
Valeur 42 avec la qualité UnpluggedConnector.
Overmind://Defined?Name=UnpluggedConnectorQualityValue&Type=Integer&InitialValue=42&Status=UnpluggedConnector
Valeur 42 avec la qualité NoConnectorFound.
Overmind://Defined?Name=NoConnectorFoundQualityValue&Type=Integer&InitialValue=42&Status=NoConnectorFound
Valeur 42 datée du 1er janvier 2026 à 8 h UTC.
Overmind://Defined?Name=FixedSourceDate&Type=Integer&InitialValue=42&LastModificationDate=2026-01-01T08:00:00Z
Qualité inconnue convertie en SpecificError.
Overmind://Defined?Name=UnknownQualityBecomesSpecificError&Type=Integer&InitialValue=42&Status=ErreurSimulee
Variable nommée « Room A & floor 1 », avec un contexte descriptif.
Overmind://Defined?Name=Room%20A%20%26%20floor%201&Type=Integer&InitialValue=20&Context=B%C3%A2timent%20A%2F%C3%89tage%201
9.3 Valeurs évolutives autonomes
Compteur de 0 à 100, +1 toutes les 5 s, puis retour à 0.
Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
Compte à rebours de 3 à 0 toutes les secondes, puis retour à 3.
Overmind://Evolving?Name=Countdown3To0Every1s&Type=Integer&InitialValue=3&EndValue=0&Step=1&Interval=1&Behavior=Decrement
Entier aléatoire de 1 à 6 toutes les secondes.
Overmind://Evolving?Name=RandomInteger1To6Every1s&Type=Integer&InitialValue=1&EndValue=6&Interval=1&Behavior=Random
Alternance entre 2147483646 et 2147483647 toutes les secondes.
Overmind://Evolving?Name=IntegerMaximumEvery1s&Type=Integer&InitialValue=2147483646&EndValue=2147483647&Interval=1
Octet de 0 à 255, +85 toutes les secondes.
Overmind://Evolving?Name=IncrementByte0To255Every1s&Type=SmallInteger&InitialValue=0&EndValue=255&Step=85&Interval=1&Behavior=Increment
Octet de 255 à 0, -85 toutes les secondes.
Overmind://Evolving?Name=DecrementByte255To0Every1s&Type=SmallInteger&InitialValue=255&EndValue=0&Step=85&Interval=1&Behavior=Decrement
Octet aléatoire de 0 à 255 toutes les secondes.
Overmind://Evolving?Name=RandomByteEvery1s&Type=SmallInteger&InitialValue=0&EndValue=255&Interval=1&Behavior=Random
Décimal de 0 à 1, +0,25 toutes les secondes.
Overmind://Evolving?Name=IncrementDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Step=0.25&Interval=1&Behavior=Increment
Décimal de 1 à 0, -0,25 toutes les secondes.
Overmind://Evolving?Name=DecrementDecimal1To0Every1s&Type=Single&InitialValue=1&EndValue=0&Step=0.25&Interval=1&Behavior=Decrement
Décimal aléatoire entre 0 et 1 toutes les secondes.
Overmind://Evolving?Name=RandomDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Interval=1&Behavior=Random
Booléen inversé toutes les secondes avec Increment.
Overmind://Evolving?Name=ToggleBooleanIncrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Increment
Booléen inversé toutes les secondes avec Decrement.
Overmind://Evolving?Name=ToggleBooleanDecrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Decrement
Booléen choisi au hasard toutes les secondes.
Overmind://Evolving?Name=RandomBooleanEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Random
Message de la liste intégrée choisi au hasard toutes les 2 s.
Overmind://Evolving?Name=RandomBuiltInTextEvery2s&Type=String&Interval=2
Messages de la liste intégrée parcourus dans l’ordre toutes les 2 s.
Overmind://Evolving?Name=OrderedBuiltInTextEvery2s&Type=String&Interval=2&Behavior=Increment
Alternance entre Arrêt et Marche toutes les 2 s.
Overmind://Evolving?Name=ToggleStoppedRunningEvery2s&Type=String&InitialValue=Arr%C3%AAt&EndValue=Marche&Interval=2&Behavior=Increment
Choix entre Libre et Occupé toutes les 2 s.
Overmind://Evolving?Name=RandomFreeOccupiedEvery2s&Type=String&InitialValue=Libre&EndValue=Occup%C3%A9&Interval=2
Cycle Accueil, Préparation, Exécution, Terminé toutes les 2 s.
Overmind://Evolving?Name=OrderedWorkflowEvery2s&Type=String&Aggregate=Accueil,Pr%C3%A9paration,Ex%C3%A9cution,Termin%C3%A9&Interval=2
Cycle A, C, B avec Decrement toutes les 2 s.
Overmind://Evolving?Name=ReverseTextListEvery2s&Type=String&Aggregate=A,B,C&Behavior=Decrement&Interval=2
État Libre, Occupé ou Maintenance choisi toutes les 2 s.
Overmind://Evolving?Name=RandomStateListEvery2s&Type=String&Aggregate=Libre,Occup%C3%A9,Maintenance&Behavior=Random&Interval=2
Liste A, B, C, D parcourue depuis B par sauts de 2 toutes les secondes.
Overmind://Evolving?Name=SkipTwoFromBEvery1s&Type=String&Aggregate=A,B,C,D&InitialValue=B&Step=2&Interval=1
Cycle des paliers 0, 10, 50, 100 toutes les 2 s.
Overmind://Evolving?Name=IntegerLevelsEvery2s&Type=Integer&Aggregate=0,10,50,100&Interval=2
Cycle des octets 0, 128, 255 toutes les 2 s.
Overmind://Evolving?Name=ByteLevelsEvery2s&Type=SmallInteger&Aggregate=0,128,255&Interval=2
Cycle des décimaux 18,5, 20,25 et 23,75 toutes les 2 s.
Overmind://Evolving?Name=DecimalLevelsEvery2s&Type=Single&Aggregate=18.5,20.25,23.75&Interval=2
Cycle false, false, true toutes les 2 s.
Overmind://Evolving?Name=BooleanSequenceEvery2s&Type=Boolean&Aggregate=false,false,true&Interval=2
Cycle entre trois dates UTC toutes les 2 s.
Overmind://Evolving?Name=DateSequenceEvery2s&Type=DateTime&Aggregate=2026-09-08T08:00:00Z,2026-09-08T12:00:00Z,2026-09-08T18:00:00Z&Interval=2
Cycle des textes A, B, C de type Any toutes les 2 s.
Overmind://Evolving?Name=AnyTextListEvery2s&Type=Any&Aggregate=A,B,C&Interval=2
Cycle des textes x, y, z de type Unknow toutes les 2 s.
Overmind://Evolving?Name=UnknownTextListEvery2s&Type=Unknow&Aggregate=x,y,z&Interval=2
Alternance entre deux URL toutes les 2 s.
Overmind://Evolving?Name=UrlListEvery2s&Type=Url&Aggregate=https:%2F%2Fexample.com%2Fa,https:%2F%2Fexample.com%2Fb&Interval=2
Alternance entre deux identifiants Guid toutes les 2 s.
Overmind://Evolving?Name=GuidListEvery2s&Type=Guid&Aggregate=11111111-2222-3333-4444-555555555555,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&Interval=2
Date de 10 h à 10 h 01, avancée de 30 s chaque seconde.
Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
Date avancée de 500 ms chaque seconde, sur une plage d’une minute.
Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
Date de 10 h 01 à 10 h, reculée de 30 s chaque seconde.
Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
Date tirée au hasard dans une plage d’une minute, chaque seconde.
Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
Trajet de (2,48) à (4,50) en deux transitions, une par seconde.
Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
Trajet de (4,50) à (2,48) en deux transitions, une par seconde.
Overmind://Evolving?Name=ReverseGisTripEvery1s&Type=GISVector&InitialValue=4,50&EndValue=2,48&Step=2&Interval=1
Point choisi sur le segment (2,48)-(4,50) chaque seconde.
Overmind://Evolving?Name=RandomGisPointEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Interval=1&Behavior=Random
Parcours de trois positions dans l’ordre, une par seconde.
Overmind://Evolving?Name=OrderedGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Increment
Parcours de trois positions en sens inverse, une par seconde.
Overmind://Evolving?Name=ReverseGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Decrement
Position choisie parmi trois points chaque seconde.
Overmind://Evolving?Name=RandomGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Random
Compteur de 0 à 10, +1 toutes les 290 ms.
Overmind://Evolving?Name=CounterEvery290ms&Type=Integer&InitialValue=0&EndValue=10&Interval=0.29
Compteur de 0 à 10, +1 toutes les 90 s.
Overmind://Evolving?Name=CounterEvery90s&Type=Integer&InitialValue=0&EndValue=10&Interval=00:01:30
Compteur de 0 à 10, +1 tous les 1 jour, 2 h, 3 min et 4 s.
Overmind://Evolving?Name=CounterEvery1d2h3m4s&Type=Integer&InitialValue=0&EndValue=10&Interval=1.02:03:04
Compteur de 0 à 10 toutes les 250 ms, avec notation scientifique.
Overmind://Evolving?Name=CounterEvery250msScientific&Type=Integer&InitialValue=0&EndValue=10&Interval=2.5e-1
Compteur de 0 à 10 toutes les 30 s, intervalle omis.
Overmind://Evolving?Name=CounterDefault30s&Type=Integer&InitialValue=0&EndValue=10
Compteur de 0 à 2, +1 toutes les secondes, avec EndValue.
Overmind://Evolving?Name=Counter0To2Every1s&Type=Integer&InitialValue=0&EndValue=2&Interval=1
Compteur avec qualité Good, Unreachable ou SpecificError tirée chaque seconde.
Overmind://Evolving?Name=RandomQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Good-Unreachable-SpecificError
Compteur évoluant chaque seconde avec la qualité Unreachable.
Overmind://Evolving?Name=UnreachableCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Unreachable
Compteur évoluant chaque seconde avec une qualité inconnue convertie en SpecificError.
Overmind://Evolving?Name=UnknownQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=ErreurSimulee
Compteur mis à jour chaque seconde, avec une date source reculée de 5 min.
Overmind://Evolving?Name=CounterWith5MinuteOldDate&Type=Integer&InitialValue=0&EndValue=10&Interval=1&LastModificationTimeSpan=00:05:00&Context=D%C3%A9monstration%2FRetard
9.4 Valeurs synchronisées par un métronome
Compteur synchronisé toutes les secondes sur Demo250ms.
Overmind://Evolving?Name=SynchronizedCounterEvery1s&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:01&Metronome=Demo250ms
Booléen synchronisé avec le compteur précédent, toutes les secondes.
Overmind://Evolving?Name=SynchronizedBooleanEvery1s&Type=Boolean&Interval=1&Metronome=Demo250ms
Compteur évoluant tous les 2 battements de Demo250ms, soit 500 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery500ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.5&Metronome=Demo250ms
Compteur évoluant tous les 3 battements de Demo250ms, soit 750 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery750ms&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:00.750&Metronome=Demo250ms
Compteur évoluant tous les 29 battements de Demo10ms, soit 290 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery290ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.29&Metronome=Demo10ms
Compteur synchronisé sur Demo250ms toutes les 30 s, intervalle omis.
Overmind://Evolving?Name=SynchronizedCounterDefault30s&Type=Integer&InitialValue=0&EndValue=100&Metronome=Demo250ms
Compteur synchronisé chaque seconde, avec une date source reculée de 2 s.
Overmind://Evolving?Name=SynchronizedCounterWith2sOldDate&Type=Integer&InitialValue=0&EndValue=100&Interval=1&Metronome=Demo250ms&LastModificationTimeSpan=2
10. Charger tous les exemples dans ConnectorTester
Le tableau JSON ci-dessous contient 88 URLs : les deux métronomes, puis les 86 variables des exemples. Leurs noms sont identiques à ceux utilisés dans ce document.
- Fermer ConnectorTester, puis ouvrir
appsettings.jsonà côté de son exécutable. - Intégrer ces chemins dans
HubSettings.PreloadPaths, en conservant les connecteurs, propriétés et chemins déjà configurés. Ne pas créer une seconde sectionHubSettingssi elle existe déjà. - Relancer le tester et activer Overmind.
- Appliquer les deux premières lignes,
Demo250msetDemo10ms, avec le bouton « Appliquer le Handle au Hub ». - Appliquer les variables à tester. Les exemples synchronisés disposent alors de leurs métronomes.
Dans ConnectorTester, PreloadPaths affiche les chemins au lancement. La connexion du connecteur et l’application des handles restent manuelles. Après une reconnexion, réappliquer les métronomes puis les variables. Aucun fichier de base supplémentaire n’est nécessaire pour ce catalogue.
{
"HubSettings": {
"PreloadPaths": [
"Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms",
"Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms",
"Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20",
"Overmind://Defined?Name=MutableBooleanFalse&Type=Boolean&InitialValue=false",
"Overmind://Defined?Name=MutableByte128&Type=SmallInteger&InitialValue=128",
"Overmind://Defined?Name=MutableDecimal21Point5&Type=Single&InitialValue=21.5",
"Overmind://Defined?Name=TextWithReservedCharacters&Type=String&InitialValue=%C3%89tage%201%20%26%20accueil%20%2B%20caf%C3%A9",
"Overmind://Defined?Name=FixedUtcDate&Type=DateTime&InitialValue=2026-09-08T10:00:00Z",
"Overmind://Defined?Name=DateWithTimeZone&Type=DateTime&InitialValue=2026-09-08T12:00:00%2B02:00",
"Overmind://Defined?Name=FixedGisPosition&Type=GISVector&InitialValue=2,48",
"Overmind://Defined?Name=FreeText&Type=Any&InitialValue=texte%20libre",
"Overmind://Defined?Name=UrlAsText&Type=Url&InitialValue=https:%2F%2Fexample.com%2Fstatus%3Fzone%3DA%26mode%3Dlive",
"Overmind://Defined?Name=GuidAsText&Type=Guid&InitialValue=11111111-2222-3333-4444-555555555555",
"Overmind://Defined?Name=UnknownTypeAsText&Type=Unknow&InitialValue=valeur%20sans%20conversion",
"Overmind://Defined?Name=OmittedTypeAsText&InitialValue=123",
"Overmind://Defined?Name=DefaultIntegerZero&Type=Integer",
"Overmind://Defined?Name=DefaultByteZero&Type=SmallInteger",
"Overmind://Defined?Name=DefaultDecimalZero&Type=Single",
"Overmind://Defined?Name=DefaultBooleanFalse&Type=Boolean",
"Overmind://Defined?Name=DefaultEmptyText&Type=String",
"Overmind://Defined?Name=DefaultMinimumDate&Type=DateTime",
"Overmind://Defined?Name=DefaultGisOrigin&Type=GISVector",
"Overmind://Defined?Name=GoodQualityValue&Type=Integer&InitialValue=42&Status=Good",
"Overmind://Defined?Name=UnreachableQualityValue&Type=Integer&InitialValue=42&Status=Unreachable",
"Overmind://Defined?Name=SpecificErrorQualityValue&Type=Integer&InitialValue=42&Status=SpecificError",
"Overmind://Defined?Name=UnhandledQualityValue&Type=Integer&InitialValue=42&Status=Unhandled",
"Overmind://Defined?Name=UnpluggedConnectorQualityValue&Type=Integer&InitialValue=42&Status=UnpluggedConnector",
"Overmind://Defined?Name=NoConnectorFoundQualityValue&Type=Integer&InitialValue=42&Status=NoConnectorFound",
"Overmind://Defined?Name=FixedSourceDate&Type=Integer&InitialValue=42&LastModificationDate=2026-01-01T08:00:00Z",
"Overmind://Defined?Name=UnknownQualityBecomesSpecificError&Type=Integer&InitialValue=42&Status=ErreurSimulee",
"Overmind://Defined?Name=Room%20A%20%26%20floor%201&Type=Integer&InitialValue=20&Context=B%C3%A2timent%20A%2F%C3%89tage%201",
"Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment",
"Overmind://Evolving?Name=Countdown3To0Every1s&Type=Integer&InitialValue=3&EndValue=0&Step=1&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomInteger1To6Every1s&Type=Integer&InitialValue=1&EndValue=6&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=IntegerMaximumEvery1s&Type=Integer&InitialValue=2147483646&EndValue=2147483647&Interval=1",
"Overmind://Evolving?Name=IncrementByte0To255Every1s&Type=SmallInteger&InitialValue=0&EndValue=255&Step=85&Interval=1&Behavior=Increment",
"Overmind://Evolving?Name=DecrementByte255To0Every1s&Type=SmallInteger&InitialValue=255&EndValue=0&Step=85&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomByteEvery1s&Type=SmallInteger&InitialValue=0&EndValue=255&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=IncrementDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Step=0.25&Interval=1&Behavior=Increment",
"Overmind://Evolving?Name=DecrementDecimal1To0Every1s&Type=Single&InitialValue=1&EndValue=0&Step=0.25&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=ToggleBooleanIncrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Increment",
"Overmind://Evolving?Name=ToggleBooleanDecrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomBooleanEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=RandomBuiltInTextEvery2s&Type=String&Interval=2",
"Overmind://Evolving?Name=OrderedBuiltInTextEvery2s&Type=String&Interval=2&Behavior=Increment",
"Overmind://Evolving?Name=ToggleStoppedRunningEvery2s&Type=String&InitialValue=Arr%C3%AAt&EndValue=Marche&Interval=2&Behavior=Increment",
"Overmind://Evolving?Name=RandomFreeOccupiedEvery2s&Type=String&InitialValue=Libre&EndValue=Occup%C3%A9&Interval=2",
"Overmind://Evolving?Name=OrderedWorkflowEvery2s&Type=String&Aggregate=Accueil,Pr%C3%A9paration,Ex%C3%A9cution,Termin%C3%A9&Interval=2",
"Overmind://Evolving?Name=ReverseTextListEvery2s&Type=String&Aggregate=A,B,C&Behavior=Decrement&Interval=2",
"Overmind://Evolving?Name=RandomStateListEvery2s&Type=String&Aggregate=Libre,Occup%C3%A9,Maintenance&Behavior=Random&Interval=2",
"Overmind://Evolving?Name=SkipTwoFromBEvery1s&Type=String&Aggregate=A,B,C,D&InitialValue=B&Step=2&Interval=1",
"Overmind://Evolving?Name=IntegerLevelsEvery2s&Type=Integer&Aggregate=0,10,50,100&Interval=2",
"Overmind://Evolving?Name=ByteLevelsEvery2s&Type=SmallInteger&Aggregate=0,128,255&Interval=2",
"Overmind://Evolving?Name=DecimalLevelsEvery2s&Type=Single&Aggregate=18.5,20.25,23.75&Interval=2",
"Overmind://Evolving?Name=BooleanSequenceEvery2s&Type=Boolean&Aggregate=false,false,true&Interval=2",
"Overmind://Evolving?Name=DateSequenceEvery2s&Type=DateTime&Aggregate=2026-09-08T08:00:00Z,2026-09-08T12:00:00Z,2026-09-08T18:00:00Z&Interval=2",
"Overmind://Evolving?Name=AnyTextListEvery2s&Type=Any&Aggregate=A,B,C&Interval=2",
"Overmind://Evolving?Name=UnknownTextListEvery2s&Type=Unknow&Aggregate=x,y,z&Interval=2",
"Overmind://Evolving?Name=UrlListEvery2s&Type=Url&Aggregate=https:%2F%2Fexample.com%2Fa,https:%2F%2Fexample.com%2Fb&Interval=2",
"Overmind://Evolving?Name=GuidListEvery2s&Type=Guid&Aggregate=11111111-2222-3333-4444-555555555555,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&Interval=2",
"Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1",
"Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1",
"Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1",
"Overmind://Evolving?Name=ReverseGisTripEvery1s&Type=GISVector&InitialValue=4,50&EndValue=2,48&Step=2&Interval=1",
"Overmind://Evolving?Name=RandomGisPointEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=OrderedGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Increment",
"Overmind://Evolving?Name=ReverseGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Decrement",
"Overmind://Evolving?Name=RandomGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Random",
"Overmind://Evolving?Name=CounterEvery290ms&Type=Integer&InitialValue=0&EndValue=10&Interval=0.29",
"Overmind://Evolving?Name=CounterEvery90s&Type=Integer&InitialValue=0&EndValue=10&Interval=00:01:30",
"Overmind://Evolving?Name=CounterEvery1d2h3m4s&Type=Integer&InitialValue=0&EndValue=10&Interval=1.02:03:04",
"Overmind://Evolving?Name=CounterEvery250msScientific&Type=Integer&InitialValue=0&EndValue=10&Interval=2.5e-1",
"Overmind://Evolving?Name=CounterDefault30s&Type=Integer&InitialValue=0&EndValue=10",
"Overmind://Evolving?Name=Counter0To2Every1s&Type=Integer&InitialValue=0&EndValue=2&Interval=1",
"Overmind://Evolving?Name=RandomQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Good-Unreachable-SpecificError",
"Overmind://Evolving?Name=UnreachableCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Unreachable",
"Overmind://Evolving?Name=UnknownQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=ErreurSimulee",
"Overmind://Evolving?Name=CounterWith5MinuteOldDate&Type=Integer&InitialValue=0&EndValue=10&Interval=1&LastModificationTimeSpan=00:05:00&Context=D%C3%A9monstration%2FRetard",
"Overmind://Evolving?Name=SynchronizedCounterEvery1s&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:01&Metronome=Demo250ms",
"Overmind://Evolving?Name=SynchronizedBooleanEvery1s&Type=Boolean&Interval=1&Metronome=Demo250ms",
"Overmind://Evolving?Name=SynchronizedCounterEvery500ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.5&Metronome=Demo250ms",
"Overmind://Evolving?Name=SynchronizedCounterEvery750ms&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:00.750&Metronome=Demo250ms",
"Overmind://Evolving?Name=SynchronizedCounterEvery290ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.29&Metronome=Demo10ms",
"Overmind://Evolving?Name=SynchronizedCounterDefault30s&Type=Integer&InitialValue=0&EndValue=100&Metronome=Demo250ms",
"Overmind://Evolving?Name=SynchronizedCounterWith2sOldDate&Type=Integer&InitialValue=0&EndValue=100&Interval=1&Metronome=Demo250ms&LastModificationTimeSpan=2"
]
}
}