Overmind-Stecker
- Nicht definierter Typ
Overmind ist ein Hub-Connector, der virtuelle Daten für Tests und Demonstrationen bereitstellt. Er ermöglicht es, einen Sollwert, Zähler, Status, Datum oder geografischen Standort ohne physische Geräte zu simulieren.
Sie verwaltet zwei Familien von Variablen:
Defined—Der Wert wird beim Save gesetzt und dann durch einen Schreib aus einer Sitzung, Anwendung oder einem anderen Connector geändert.Evolving—Der Wert ändert sich automatisch in einem gewählten Intervall. Abonnenten erhalten die Änderungen in Wert, Qualität und Herkunftsdatum.
Die Definition wird von der URL des Handles übernommen. Name ist verpflichtend und stellt seine Hauptreferenz dar. Eine dritte Form, Overmind://Metronome, ermöglicht es dir, Metronome zu deklarieren, die sich entwickelnde Variablen synchronisieren.
In diesem Artikel
1. Definiere und finde einen Handle
1.1 Wegstruktur
Der Pfad eines Handles ist eine URL. Sein Präfix oder Protokoll ist Overmind://. Um eine Variable zu definieren, folgt ihr Defined oderEvolving, und dann ein Fragezeichen, das seine Einstellungen vorstellt.
Jeder Parameter ist eine Assoziation Clé=Valeur. Die Figur & trennt die Parameter, wie im Abfrageteil einer URL.
Zähler von 0 auf 100, alle 5 Sekunden um 1 erhöht und dann auf 0 reduziert:
Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
1.2 Name: Identität und Ersatz
Name identifiziert einen Handle in einer Instanz von Overmind. Die Leerzeichen am Anfang und Ende des Namens werden entfernt, und der Vergleich ist groß- und kleinschreibungsabhängig. Daher Counter und counter bezeichnet dieselbe Variable.
Das Speichern einer Definition mit einem bereits vorhandenen Namen ersetzt die alte Definition und setzt den Wert zurück, selbst wenn der angegebene Pfad derselbe ist. Bestehende Abonnements auf diesen Namen erhalten weiterhin seine Änderungen. Eine ungültige Definition wird abgelehnt, bevor die bestehende Variable ersetzt wird.
Ein Name, der fehlt, leer ist oder nur aus Leerzeichen besteht, verursacht einen expliziten Fehler. Auch ein Verweis auf einen unbekannten Namen fehlschlägt; er erzeugt keine Variable.
1.3 Lesen und abonnieren Sie mit Namen
Nachdem Sie die Definition gespeichert haben, verwenden Sie nur ihren Namen, um ihren Wert zu lesen, oder abonnieren Sie die Änderungen:
Overmind://Name=Increment0To100Every5s
Dieser kurze Pfad setzt den Griff nicht zurück. Er akzeptiert nur das Name. Um die Definition zu ändern, speichere erneut einen Pfad Defined oder Evolving mit demselben Namen.
1.4 Schreibe in einen definierten Handle
Erstellen Sie eine bearbeitbare Richtlinie:
Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
Dann senden Sie den Wert 25 à Overmind://Name=MutableInteger20 durch die Hub-Schreiboperation. Der Name bleibt derselbe, der Wert wird 25 und das Änderungsdatum wird aktualisiert.
Ein Schreib, der mit dem Typ inkompatibel ist, wird abgelehnt, ohne den Wert oder sein Datum zu ändern. Schreibt auf einen Handle Evolving werden abgelehnt.
2. Arten von Werten
Der Parameter Type Gibt die Art des simulierten Werts an. Er bestimmt, wie Overmind den empfangenen Wert interpretiert, welche Werte akzeptiert werden und welche Berechnungen während einer Entwicklung oder eines Schreibs möglich sind.
Zum Beispiel Type=Integer Dolmetscher 10 wie eine ganze Zahl, zu der wir einen Schritt hinzufügen können. Type=String Dosen 10 Wie Text. Type=DateTime erlaubt es Ihnen, ein Datum um eine bestimmte Dauer vorzuziehen.
Griffe Defined und Evolving Verwenden Sie dieselben Typen. Eine Aussage Metronome hat direkt eine Periode Span und benutzt nicht das Type.
| Typ | Manipulierter Wert |
|---|---|
Boolean |
Boolesch true oder false. |
Integer |
Ganz hat von -2147483648 bis 2147483647 gezeichnet. |
SmallInteger |
Unsigniertes Byte von 0 bis 255. |
Single |
Dezimalzahl, in Overmind doppelt präzise gespeichert. |
DateTime |
Datum und Uhrzeit veröffentlicht in UTC. |
GISVector |
Geographische Lage. |
String |
Text. |
Unknow, Any, Url, Guid |
Als Text behandelt; wird eine URL oder Anleitung nicht als solche validiert. |
Color, Image, Array |
Nicht unterstützte Typen: Die Definition wird abgelehnt. |
Ohne Type, Overmind-Anwendungen Unknow. Ein Wert wie 123 Text bleibt übrig, wenn kein numerischer Typ angegeben ist.
3. Definierte Handles
Ein Griff Defined repräsentiert einen Wert, der fest ist und dann von außen modifiziert wird, indem man auf den Hub schreibt. Er eignet sich beispielsweise für einen Sollwert, einen erzwungenen Zustand oder einen stabilen Demonstrationswert. Er entwickelt sich nicht automatisch.
Mehrere Schlüssel können mit Defined in seiner URL: Der Name identifiziert die Variable, der Typ gibt ihre Natur an, und die anderen Parameter erlauben die Auswahl ihres Anfangswerts, ihrer Qualität oder des Quelldatums. Die verfügbaren Schlüssel sind wie folgt.
| Parameter | Rolle und Versetzung |
|---|---|
Name |
Erforderlicher Name, Benutzeridentität. |
Context |
Beschreibender Text optional, ohne Einfluss auf die Identität. |
Type |
Werttyp; Unknow Standardmäßig. |
InitialValue |
Anfangswert, umgerechnet in Type. |
Status |
Anfangsqualität; Good Standardmäßig. |
LastModificationDate |
Anfangsquellendatum; aktuelles UTC-Datum standardmäßig. |
Context ist optionale beschreibende Information. Sie trennt keine Identitäten: Zwei Definitionen haben dieselben Name und verschiedene Kontexte beziehen sich auf denselben Griff.
Ohne InitialValue, die Zahlen sind 0, die Boolesche Zahl ist falsch, der Text ist leer, das Datum ist der 1. Januar 1 UTC und die GIS-Position ist (0,0).
LastModificationDate beschreibt das Datum des Werts, nicht wie oft er sich ändert. Ein erfolgreicher Eintrag aktualisiert dieses Datum. Eine Aussage kann daher eine Qualität tragen Unreachable und ein altes Datum, sobald es aufgezeichnet ist, um unverfügbare oder veraltete Daten zu simulieren.
4. Sich entwickelnde Handles
Ein Griff Evolving stellt eine Variable dar, die sich im Laufe der Zeit automatisch ändert. Sie kann einen Zähler, eine Zufallsmessung, eine Reihe von Zuständen, ein fortschreitendes Datum oder eine geografische Verschiebung simulieren. Abonnenten werden über ihre Entwicklung informiert.
Die Schlüssel, die mit Evolving in der URL können Sie den Werttyp, seinen Ablauf, seinen Ankommen, die Entwicklung und die Dauer zwischen zwei Änderungen auswählen. Step wirkt auf die Wertänderung; Interval Reguliert die Zeit zwischen den Änderungen.
| Parameter | Rolle und Versetzung |
|---|---|
Name |
Erforderlicher Name, Benutzeridentität. |
Context |
Beschreibender Text optional. |
Type |
Werttyp; Unknow Standardmäßig. |
InitialValue |
Der Ausgangspunkt oder der erste Eintrag des Aggregate. |
EndValue |
Ankunftsmarkierung, absolutes Datum oder Dauer je nach Typ. |
Step |
Keine Entwicklung, keine Dauer, kein Sprung in einer Liste oder Anzahl von GIS-Übergängen. |
Interval |
Positive Zeit zwischen zwei Entwicklungen; standardmäßig 30 Sekunden. |
Behavior |
Increment standardmäßig; Decrement oder Random wie gewünscht. Für Text ohne explizite Aggregate ist der Standard Random (siehe Listen und Texte). |
Aggregate |
Eine kommagetrennte Liste von Werten zum Durchsuchen. |
Metronome |
Name eines bestehenden Metronoms; optional. |
Statuses |
Liste möglicher Qualitäten, getrennt durch Bindestriche; Good Standardmäßig. |
LastModificationTimeSpan |
Dauer, um vom Quelldatum abzuziehen; standardmäßig null. |
EndValue ist der einzige akzeptierte Endpunktparameter.
4.1 Verhalten und Schleifen
Increment Hinzufügungen Step ; Decrement zieht es ab. Für Zahlen und Daten, InitialValue ist der Ausgangspunkt und EndValue die Grenze in die gewählte Richtung. Nach Überschreiten dieses Limits kehrt der Wert zum Ausgangspunkt zurück. Das Limit wird erreicht, wenn der Schritt genau darauf liegt.
Mit InitialValue=0, EndValue=100 und Step=1, die Folge ist 0, 1, 2, bis 100 und dann 0. Mit InitialValue=3, EndValue=0 und Behavior=Decrement, es sind 3, 2, 1, 0, dann 3.
Random wählt einen Wert aus den Schranken oder aus einer Liste von Werten (siehe unten für den Begriff vonAggregate). Step wird nicht für das Zufällige Ziehen verwendet. Wenn dieser Parameter angegeben ist, muss sein Wert weiterhin gültig sein.
Ohne Behavior, das Verhalten ist Increment. Der Spezialfall der Texte wird im Abschnitt Listen und Texte erklärt.
4.2 Defaults und Step
| Typ ohne Aggregate | Standardabgang | Standard-Ankunftsterminal | Standardschritt |
|---|---|---|---|
Integer |
Minimum des Typs; Maximum in Reduktion. | Maximum des Typs; Minimum im Abnehmen. | 1. |
SmallInteger |
0. | 255 ; 0 in Abwertung. | 1. |
Single |
0. | Maximum des Typs; Minimum im Abnehmen. | 0.1. |
DateTime |
1. Januar, 1 UTC. | Maximales Datum; Mindestdatum in Reduktion. | 30 Sekunden. |
Boolean |
falsch. | Wechsel oder Zufallsziehung. | Nicht benutzt. |
String und ähnliche Typen |
Erster Eintrag auf der Liste. | Liste der Nachrichten. | 1 Eingang. |
GISVector |
Längengrad 0, Breitengrad 0. | Historischer Endpunkt: Längengrad 5,877286, Breite 47,858437 (siehe GISVector). | Eine Reise, die in einer Reise gemacht wurde. |
Wählen Sie selbsterklärende Terminals für eine lesbare Simulation. Step muss positiv sein: ganzzahlig für Integer, SmallInteger, Listen und GIS-Übergänge; dezimal für Single ; Dauer für DateTime.
Für eine Boolean ohne Aggregate, Step wird nicht verwendet : Das Boolean wird zu jeder Frist umgekehrt mit Increment oder Decrement. Mit Random, sie wird zufällig gezogen und kann denselben Wert behalten. Wenn eine Liste von Booleans von Aggregate bereitgestellt wird, wird die Liste gemäß den unten beschriebenen Regeln durchlaufen.
4.3 Aggregierte Listen und Texte
Aggregate=A,B,C liefert die erlaubten Werte. Increment Fortschritt in der Liste, Decrement Rückzugsorte und Random wählt einen Eingang. Der Weg ist zyklisch; Step zählt die Einträge, die übersprungen werden sollen, standardmäßig 1.
Die erste Eingabe wird anfangs verwendet, auch mit Decrement. InitialValue erlaubt es dir, einen anderen Eintrag auszuwählen, der dann zur Liste gehören muss. EndValue tritt nicht auf, wenn das Aggregate vorhanden ist. Alle Einträge werden in den angeforderten Typ umgewandelt.
In einem Griff Evolving, Ein Text entwickelt sich immer weiter, indem ein Eintrag aus einer Liste ausgewählt wird. Diese betrifft String und die in den Text aufgenommenen Typen: Any, Unknow, Url und Guid.
Diese Liste kann drei Ursprünge haben:
- A
Aggregateexplizit: Die angegebenen Werte sind die Liste. OhneBehavior, sie werden in der richtigen Reihenfolge durchsucht mitIncrement. - Texte definiert durch
InitialValueundEndValue—Sie bilden eine Liste von zwei Einträgen. Wird ein Ende weggelassen, wird es aus der eingebauten Liste entnommen. - Keines von beidem: Overmind verwendet seine eingebaute Nachrichtenliste.
In den letzten beiden Fällen, ohne explizites Aggregat, gilt die Behavior Standard ist Random. Du kannst wählen Behavior=Increment um die Texte der Reihe nach zu durchsuchen. Ein Text Defined, hingegen bleibt ein fester Wert und verwendet keine Listen.
4.4 DateTime
Für eine DateTime, InitialValue ist das Abreisedatum. EndValue kann ein absolutes Ankunftsdatum sein oder eine Dauer, die aus dem Abflug berechnet wird.
Step ist die Dauer des simulierten Datums. Interval ist die reale Zeit zwischen zwei Entwicklungen: Step=30&Interval=1 Das Datum verschiebt sich jede reale Sekunde um 30 Sekunden.
Absolutes Ankunftsdatum: beginnend um 10:00 UTC, für jede reale Sekunde 30 Sekunden vorwärts und nach 10:01 UTC zurückgehen.
Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
Relatives Ankunftsdatum: Reisen Sie eine Minute ab 10 Uhr UTC und bewegen Sie sich 500 ms für jede reale Sekunde.
Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
Relative Dauer im Abnehmen: Beginnend bei 10:01 UTC, 30 Sekunden von jeder tatsächlichen Sekunde subtrahieren, bis zu einer Minute vor Abflug, und dann wiederholend.
Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
Zufälliges Datum: Wählen Sie jede reale Sekunde innerhalb einer Minute um 10 Uhr UTC ein Datum. Der Schritt wird nicht verwendet.
Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
4.5 GISVector
Eine einzelne Position verwendet die Reihenfolge longitude,latitude : InitialValue=2,48. Veröffentlichte Werte verwenden die longitude;latitudeZum Beispiel 2;48.
Für einen GIS, EndValue ist ein Ankunftspunkt, kein Maximalwert. Koordinaten 5.877286,47.858437 aus einem Punkt im historischen Code des Connectors stammen; sie stellen keine geografischen Grenzen dar. Spezifizieren InitialValue und EndValue erlaubt es dir, deinen eigenen Weg zu wählen.
Ohne Aggregate ist ein Übergang ist der Wechsel von der aktuellen Position zur nächsten Position. Step gibt an, wie viele Fahrten gleicher Länge die Reise von Anfang bis Ende aufgeteilt wird. An jeder Stelle wird ein Übergang vorgenommen Interval.
Mit einem Start (2:48), einem Ziel (4:50), Step=2 und Interval=1, das Ergebnis ist:
| Verstrichene Zeit | Veröffentlichte Position | Bewegung |
|---|---|---|
| 0 Sekunden | 2;48 |
Ausgangspunkt. |
| 1 Sekunde | 3;49 |
Erster Übergang: halbwegs. |
| 2 Sekunden | 4;50 |
Zweite Übergang: Ankunft. |
| 3 Sekunden | 2;48 |
Kehren Sie zum Anfang zurück, um die Reise von vorne zu beginnen. |
Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
Rückwärts InitialValue und EndValue kehrt die Route um. Mit Random, wird ein Punkt zufällig aus dem Segment gezogen; Schritt wird nicht verwendet.
Das GIS-Aggregat behält sein historisches Format bei: Jedes Paar wird in Breiten- und Längengrad geschrieben, wobei sein Dezimalpunkt codiert wird. Daher Aggregate=48%2C2,49%2C3,50%2C4 entspricht veröffentlichten Positionen 2;48, 3;49 und 4;50.
5. Synchronisieren Sie die Entwicklungen mit einem Metronom
5.1 Ein Metronom mit Griff erklären
Ein Metronom definiert eine Frequenz, die mehreren Variablen gemeinsam ist. Es deklariert sich auch mit einer URL, bevor es die Variablen anwendet, die es verwenden werden.
Metronom mit Schlägen im Abstand von 250 ms:
Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
| Legende | Rolle |
|---|---|
Name |
Pflichtbezeichnung des Metronoms. |
Span |
Obligatorische und streng positive Dauer zwischen zwei Schlägen. Sie akzeptiert Sekunden, einschließlich Bruchteile, oder eine formatierte Dauer. |
Der Handle gibt zum Beispiel seine Periode als Wert an 00:00:00.2500000. Er ist mit dem am Anfang des Dokuments angegebenen Referenz mit Namen lesbar. Er ist kein Schlagzähler und akzeptiert keine direkte Schrift; um den Punkt zu ändern, speichere eine neue Definition Metronome.
Die Wiederaufnahme des gleichen Namens aktualisiert sich Span ohne die gemeinsame Phase neu zu starten. Wenn der neue Zeitraum mit einem aktiven oder gespeicherten variablen Bereich nicht kompatibel ist, scheitert die Deklaration explizit und die vorherige Periode bleibt angewendet.
Namen folgen der gleichen Eindeutigkeitsregel wie andere Griffe. Ein noch verwendetes Metronom kann nicht durch eine Variable ersetzt werden Defined oder Evolving.
5.2 Das Intervall bleibt eine Dauer
Das Metronom ist optional. Ohne Metronome, entwickelt sich jeder Griff gemäß seinem Intervall seit seiner Initialisierung weiter. Brüche einer Sekunde werden akzeptiert: Interval=0.29 Erfordert eine Evolution alle 290 ms.
Mit Metronomebehält der Griff sein Intervall und schließt sich einem gemeinsamen temporalen Ursprung an. Zwei Griffe mit demselben Metronom und demselben Intervall entwickeln sich in denselben Zeitrahmen, auch wenn sie zu unterschiedlichen Zeiten aufgezeichnet wurden.
Ein Metronom hat einen Namen Name und eine Punktzahl Span streng positiv. Das Handle-Intervall muss ein positives ganzzahliges Vielfaches dieser Periode sein. Dies sind immer Dauern: Interval=1 bedeutet eine Sekunde, keinen Schlag.
| Metronom-Spann | Interval du handle | Ergebnis |
|---|---|---|
| 250 ms | 1 Sekunde | Evolution alle 4 Schläge. |
| 250 ms | 500 ms | Evolution alle zwei Schläge. |
| 250 ms | 750 ms | Evolution alle 3 Schläge. |
| 250 ms | 290 ms | Ablehnung: Der Bericht ist nicht vollständig. |
| 10 ms | 290 ms | Evolution alle 29. Schläge. |
Ohne Interval, die 30-Sekunden-Dauer bleibt geltend und muss ebenfalls ein Vielfaches von sein Span. Ein fehlendes Metronom in der Konfiguration, ein leerer Name oder ein inkompatibles Intervall erzeugen einen expliziten Fehler.
5.3 Gemeinsame Fristen
Bei einem 250-ms-Metronom haben Griffe mit 500 ms und 750 ms Intervallen alle 1,5 Sekunden eine gemeinsame Deadline. Ein später hinzugefügter Griff schließt sich der nächsten Frist an, die seinem Intervall entspricht.
Die Benachrichtigungen werden nacheinander mit dem Datum der gemeinsamen Frist ausgegeben. Die Frequenz ist keine Echtzeitgarantie. Im Falle einer Verzögerung in der Engine wird eine einzelne Evolution für die zuletzt erreichte Frist angewendet, ohne alle verpassten Beats erneut abzuspielen. Die Wiederverbindung erzeugt einen neuen gemeinsamen Zeitursprung.
5.4 Bereite die Metronome für die Beispiele vor.
Der Katalog verwendet Demo250ms, oben erwähnt, und Demo10ms, deren Schläge 10 ms auseinander liegen:
Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
Wenden Sie diese beiden URLs vor den sieben synchronisierten Beispielen an. Sie befinden sich oben in der Tabelle PreloadPaths am Ende des Dokuments bereitgestellt. Für diese Beispiele ist es nicht mehr notwendig, eine Basisdatei vorzubereiten.
Wenn eine einzelne Charge von Datensätzen eine Metronom-Deklaration und ihre Variablen enthält, verarbeitet Overmind zuerst die eindeutige Deklaration dieses Metronoms. Wenn mehrere Definitionen denselben Namen in der Charge tragen, bleibt ihre Reihenfolge die Reihenfolge der Anfrage zur Erhaltung der letzten Datensatzregel.
Eine Deklaration per Handle wirkt im Speicher, ähnlich wie bei einer Variable. Wenden Sie sie nach einer Neuverbindung erneut an, wenn sie nicht in der Datenbank gespeichert wurde. Die Overmind-Verwaltung erlaubt es Ihnen außerdem, Metronome zu erstellen, zu modifizieren und zu speichern.
6. Qualität, Quelldatum und Fehler
Die Qualität zeigt den simulierten Zustand der Daten an; sie ist vom Verbindungsstatus von Overmind getrennt.
| Qualität | Dargestellte Situation |
|---|---|
Good |
Gültige Daten. |
Unreachable |
Unzugängliche Daten. |
SpecificError |
Spezifischer Fehler. |
Unhandled |
Handle nicht unterstützt. |
UnpluggedConnector |
Stecker getrennt. |
NoConnectorFound |
Keine Stecker gefunden. |
Vorteile Defined, verwenden Status. Vorteile Evolving, verwenden Statuses=Good-Unreachable-SpecificError : Für jede Änderung wird aus dieser Liste eine Qualität gewählt. Ein Label unbekannter Qualität wird umgewandelt in SpecificError.
LastModificationDate legt das Anfangsdatum eines Handles fest Defined. LastModificationTimeSpan Verschiebt das Quelldatum um eine Evolving ohne das Intervall zu ändern: Ein Wert, der jede Sekunde aktualisiert wird, kann fünf Minuten später angezeigt werden.
Der Hub und der ConnectorTester behalten die ursprüngliche Quellqualität und das Datum bei. Daher eine Definition, die erforderlich ist Unreachable und ein festes Datum muss diese Informationen sofort anzeigen, sobald es gespeichert ist, und dann, wenn es mit Namen gespielt wird.
Ein Datensatzfehler liefert einen expliziten Grund und ein Fehler-Level-Log, das mit dem Connector, dem Pfad und der Ursache verknüpft ist. Dazu gehört ein Name fehlt, ein nicht unterstützter Typ, ein fehlgeleiteter Wert, ein Nullintervall, ein unbekanntes Metronom oder ein verbotener Schreib.
Eine Simulation, die während einer veröffentlichten Entwicklung fehlschlägt SpecificError. Die anderen Handles funktionieren weiterhin.
7. URL-Formate und reservierte Zeichen
Parameternamen, Typen und Verhaltensweisen sind nicht groß- und schreibungssensitiv. Parameter, die unbekannt, wiederholt oder nicht auf die Handle-Familie anwendbar sind, werden abgelehnt.
Da der Pfad eine URL ist, haben einige Zeichen eine reservierte Rolle darin. Zum Beispiel ? führt die Parameter ein und & trennt sie. Wenn eines dieser Zeichen Teil eines Wertes ist, muss es kodiert werden, um innerhalb dieses Wertes zu bleiben. Leerzeichen, Akzente und das +-Zeichen müssen ebenfalls in Parameterwerten kodiert werden.
| Charakter | Codierung eines Wertes |
|---|---|
| Weltraum | %20 |
| Ampersand & | %26 |
| Vorzeichen + | %2B |
| Zeichen = | %3D |
| Fragezeichen? | %3F |
| Sharp # | %23 |
| Prozentsatz % | %25 |
| Komma in einem GIS-Paar eines Aggregats | %2C |
Zahlen verwenden das Dezimalpunkt: 21.5, 0.25. Verwendung von Booleans true oder false, nicht 0 oder 1.
Daten können beispielsweise in ISO 8601 geschrieben werden 2026-09-08T10:00:00Z. Ein Datum ohne Zeitzone wird in UTC interpretiert; veröffentlichte Daten werden in UTC normalisiert. Bei positiver Zeitdifferenz kodiert das +-Zeichen: 2026-09-08T12:00:00%2B02:00.
Die Dauern akzeptieren eine bestimmte Anzahl von Sekunden, möglicherweise bruchartig, oder das Format [jours.]hh:mm:ss[.fractions]. Zum Beispiel 0.29 und 00:00:00.290 repräsentieren 290 ms; 1.02:03:04 Steht für 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden.
8. Installation und Datenspeicherung
Der Stecker ist in der Form verteilt wie GraphicStream.Immersive.Hub.Connectors.Overmind.dll. Außerhalb der .NET 10-Laufzeit ist die Anwendungsabhängigkeit GraphicStream.Immersive.Hub.Abstractions.dll, bereitgestellt vom Moderator.
Für ConnectorTester kopiere die Overmind-DLL auf das Connectors neben der ausführbaren Datei und dann den Test ausführen. Er sollte einen einzelnen Overmind-Connector anbieten. Der Konfigurationstyp ist GraphicStream.Immersive.Hub.Connectors.Overmind.ConnectorSession.
Die Grundlagen Overmind/database.json Speichert Katalogpfade, Verwaltungsvariablen und Metronom-Definitionen. Metronome werden beim Login geladen. Gespeicherte Pfade werden nicht automatisch zu aktiven Handles; sie müssen von einem Verbraucher registriert werden.
Eine Trennung stoppt die Entwicklungen und leert das Register von aktiven Griffen. Beim Neustart registrieren Sie die Variablen und Metronome, die nicht gespeichert wurden, erneut. Die Grundlage ist nicht das automatische Speichern des letzten Werts jedes Handgriffs.
Fehlgeformte Basis-JSON oder ungültige Metronome verhindern die Verbindung und verursachen einen Fehler. Das Löschen eines Pfades aus dem Katalog akzeptiert dessen Namen, Kurzreferenz oder Definition; es entfernt Einträge mit demselben Namen und speichert die Datenbank.
Um die alten Wege anzupassen, fügen Sie hinzu Name zu allen Definitionen und geben Variablen, die zuvor nur durch differenziert wurden, unterschiedliche Namen Context.
9. Beispiele für Griffe
9.1 Metronome
250 ms Metronom zur Synchronisation von Variablen.
Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
10 ms Metronom für mehrere Intervalle von 10 ms.
Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
9.2 Definierte Werte
Editierbare ganze Zahl, initialisiert auf 20.
Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
Editierbares Boolesch, initialisiert auf falsch.
Overmind://Defined?Name=MutableBooleanFalse&Type=Boolean&InitialValue=false
Editierbares Byte, initialisiert auf 128.
Overmind://Defined?Name=MutableByte128&Type=SmallInteger&InitialValue=128
Editierbares Dezimalsystem, initialisiert auf 21,5.
Overmind://Defined?Name=MutableDecimal21Point5&Type=Single&InitialValue=21.5
Text mit Akzenten, Leerzeichen & und +.
Overmind://Defined?Name=TextWithReservedCharacters&Type=String&InitialValue=%C3%89tage%201%20%26%20accueil%20%2B%20caf%C3%A9
Der Termin ist für den 8. September 2026 um 10 Uhr UTC festgelegt.
Overmind://Defined?Name=FixedUtcDate&Type=DateTime&InitialValue=2026-09-08T10:00:00Z
Datum 12 Uhr UTC+2, veröffentlicht um 10 Uhr UTC.
Overmind://Defined?Name=DateWithTimeZone&Type=DateTime&InitialValue=2026-09-08T12:00:00%2B02:00
Feste Position: Längengrad 2, Breitengrad 48.
Overmind://Defined?Name=FixedGisPosition&Type=GISVector&InitialValue=2,48
Freitext vom Typ Any.
Overmind://Defined?Name=FreeText&Type=Any&InitialValue=texte%20libre
Die URL-Adresse, die als Text erhalten bleibt.
Overmind://Defined?Name=UrlAsText&Type=Url&InitialValue=https:%2F%2Fexample.com%2Fstatus%3Fzone%3DA%26mode%3Dlive
Guid-ID wird als Text behalten.
Overmind://Defined?Name=GuidAsText&Type=Guid&InitialValue=11111111-2222-3333-4444-555555555555
Text ohne Umwandlung, vom Typ Unbekannt.
Overmind://Defined?Name=UnknownTypeAsText&Type=Unknow&InitialValue=valeur%20sans%20conversion
Ein Wert von 123 bleibt als Text erhalten, wenn Type weggelassen wird.
Overmind://Defined?Name=OmittedTypeAsText&InitialValue=123
Eine Ganzzahl, die standardmäßig auf 0 initialisiert wird.
Overmind://Defined?Name=DefaultIntegerZero&Type=Integer
Das Byte wurde standardmäßig auf 0 initialisiert.
Overmind://Defined?Name=DefaultByteZero&Type=SmallInteger
Dezimalstellen standardmäßig auf 0 gesetzt.
Overmind://Defined?Name=DefaultDecimalZero&Type=Single
Boolean standardmäßig auf falsch gesetzt.
Overmind://Defined?Name=DefaultBooleanFalse&Type=Boolean
Standardmäßig leerer Text.
Overmind://Defined?Name=DefaultEmptyText&Type=String
Datum initialisiert am 1. Januar 1 UTC.
Overmind://Defined?Name=DefaultMinimumDate&Type=DateTime
Position initialisiert bei Längengrad 0, Breite 0.
Overmind://Defined?Name=DefaultGisOrigin&Type=GISVector
Value 42 mit guter Qualität.
Overmind://Defined?Name=GoodQualityValue&Type=Integer&InitialValue=42&Status=Good
Wert 42 mit Unreachable-Qualität.
Overmind://Defined?Name=UnreachableQualityValue&Type=Integer&InitialValue=42&Status=Unreachable
Ein Wert von 42 mit SpecificError-Qualität.
Overmind://Defined?Name=SpecificErrorQualityValue&Type=Integer&InitialValue=42&Status=SpecificError
Wert 42 mit Unhandled-Qualität.
Overmind://Defined?Name=UnhandledQualityValue&Type=Integer&InitialValue=42&Status=Unhandled
Wert 42 mit UnpluggedConnector-Qualität.
Overmind://Defined?Name=UnpluggedConnectorQualityValue&Type=Integer&InitialValue=42&Status=UnpluggedConnector
Wert 42 mit NoConnectorFound-Qualität.
Overmind://Defined?Name=NoConnectorFoundQualityValue&Type=Integer&InitialValue=42&Status=NoConnectorFound
Wert 42 vom 1. Januar 2026 um 8 Uhr UTC.
Overmind://Defined?Name=FixedSourceDate&Type=Integer&InitialValue=42&LastModificationDate=2026-01-01T08:00:00Z
Unbekannte Qualität in SpecificError umgewandelt.
Overmind://Defined?Name=UnknownQualityBecomesSpecificError&Type=Integer&InitialValue=42&Status=ErreurSimulee
Variable namens "Raum A & Etage 1" mit einem beschreibenden Kontext.
Overmind://Defined?Name=Room%20A%20%26%20floor%201&Type=Integer&InitialValue=20&Context=B%C3%A2timent%20A%2F%C3%89tage%201
9.3 Autonome skalierbare Werte
Zähle von 0 auf 100, +1 alle 5 Sekunden, dann wieder auf 0.
Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
Countdown von 3 bis 0 pro Sekunde, dann zurück zu 3.
Overmind://Evolving?Name=Countdown3To0Every1s&Type=Integer&InitialValue=3&EndValue=0&Step=1&Interval=1&Behavior=Decrement
Zufällige ganze Zahl von 1 bis 6 pro Sekunde.
Overmind://Evolving?Name=RandomInteger1To6Every1s&Type=Integer&InitialValue=1&EndValue=6&Interval=1&Behavior=Random
Wechselt jede Sekunde zwischen 2147483646 und 2147483647.
Overmind://Evolving?Name=IntegerMaximumEvery1s&Type=Integer&InitialValue=2147483646&EndValue=2147483647&Interval=1
Byte von 0 bis 255, +85 pro Sekunde.
Overmind://Evolving?Name=IncrementByte0To255Every1s&Type=SmallInteger&InitialValue=0&EndValue=255&Step=85&Interval=1&Behavior=Increment
Byte von 255 bis 0, -85 pro Sekunde.
Overmind://Evolving?Name=DecrementByte255To0Every1s&Type=SmallInteger&InitialValue=255&EndValue=0&Step=85&Interval=1&Behavior=Decrement
Zufällige Bytes von 0 bis 255 pro Sekunde.
Overmind://Evolving?Name=RandomByteEvery1s&Type=SmallInteger&InitialValue=0&EndValue=255&Interval=1&Behavior=Random
Dezimalzahl von 0 bis 1, +0,25 pro Sekunde.
Overmind://Evolving?Name=IncrementDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Step=0.25&Interval=1&Behavior=Increment
Dezimalzahl von 1 bis 0, -0,25 pro Sekunde.
Overmind://Evolving?Name=DecrementDecimal1To0Every1s&Type=Single&InitialValue=1&EndValue=0&Step=0.25&Interval=1&Behavior=Decrement
Zufällige Dezimalzahlen zwischen 0 und 1 jede Sekunde.
Overmind://Evolving?Name=RandomDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Interval=1&Behavior=Random
Boolean wurde jede Sekunde mit Increment umgekehrt.
Overmind://Evolving?Name=ToggleBooleanIncrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Increment
Boolean hat jede Sekunde mit Decrement umgekehrt.
Overmind://Evolving?Name=ToggleBooleanDecrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Decrement
Boolean, jede Sekunde zufällig ausgewählt.
Overmind://Evolving?Name=RandomBooleanEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Random
Eine Nachricht aus der eingebauten Liste wird alle 2 Sekunden zufällig ausgewählt.
Overmind://Evolving?Name=RandomBuiltInTextEvery2s&Type=String&Interval=2
Nachrichten in der integrierten Liste werden alle 2 Sekunden in der Reihenfolge durchgesehen.
Overmind://Evolving?Name=OrderedBuiltInTextEvery2s&Type=String&Interval=2&Behavior=Increment
Alle zwei Sekunden wechseln wir zwischen Stopp und Start.
Overmind://Evolving?Name=ToggleStoppedRunningEvery2s&Type=String&InitialValue=Arr%C3%AAt&EndValue=Marche&Interval=2&Behavior=Increment
Alle 2 Sekunden die Wahl zwischen Frei und Besetzt.
Overmind://Evolving?Name=RandomFreeOccupiedEvery2s&Type=String&InitialValue=Libre&EndValue=Occup%C3%A9&Interval=2
Zyklus Begrüßung, Vorbereitung, Ausführung, alle 2 Sekunden abgeschlossen.
Overmind://Evolving?Name=OrderedWorkflowEvery2s&Type=String&Aggregate=Accueil,Pr%C3%A9paration,Ex%C3%A9cution,Termin%C3%A9&Interval=2
Zyklus A, C, B mit Reduktion alle 2 Sekunden.
Overmind://Evolving?Name=ReverseTextListEvery2s&Type=String&Aggregate=A,B,C&Behavior=Decrement&Interval=2
Frei, besetzt oder Wartungszustand alle 2 Sekunden gewählt.
Overmind://Evolving?Name=RandomStateListEvery2s&Type=String&Aggregate=Libre,Occup%C3%A9,Maintenance&Behavior=Random&Interval=2
List A, B, C, D durchquerte B in Sprüngen von 2 pro Sekunde.
Overmind://Evolving?Name=SkipTwoFromBEvery1s&Type=String&Aggregate=A,B,C,D&InitialValue=B&Step=2&Interval=1
Zyklus der Schritte 0, 10, 50, 100 alle 2 Sekunden.
Overmind://Evolving?Name=IntegerLevelsEvery2s&Type=Integer&Aggregate=0,10,50,100&Interval=2
Bytes 0, 128, 255 alle 2 Sekunden durchlaufen.
Overmind://Evolving?Name=ByteLevelsEvery2s&Type=SmallInteger&Aggregate=0,128,255&Interval=2
Zyklus-Dezimalzahlen 18,5, 20,25 und 23,75 alle 2 Sekunden.
Overmind://Evolving?Name=DecimalLevelsEvery2s&Type=Single&Aggregate=18.5,20.25,23.75&Interval=2
Zyklus falsch, falsch, wahr alle 2 Sekunden.
Overmind://Evolving?Name=BooleanSequenceEvery2s&Type=Boolean&Aggregate=false,false,true&Interval=2
Wechsle alle 2 Sekunden zwischen drei UTC-Daten.
Overmind://Evolving?Name=DateSequenceEvery2s&Type=DateTime&Aggregate=2026-09-08T08:00:00Z,2026-09-08T12:00:00Z,2026-09-08T18:00:00Z&Interval=2
Textzyklus A, B, C des Typs Any alle 2 Sekunden.
Overmind://Evolving?Name=AnyTextListEvery2s&Type=Any&Aggregate=A,B,C&Interval=2
Zyklus von unbekannten x, y, z-Nachrichten alle 2 Sekunden.
Overmind://Evolving?Name=UnknownTextListEvery2s&Type=Unknow&Aggregate=x,y,z&Interval=2
Wechselt alle 2 Sekunden zwischen zwei URLs.
Overmind://Evolving?Name=UrlListEvery2s&Type=Url&Aggregate=https:%2F%2Fexample.com%2Fa,https:%2F%2Fexample.com%2Fb&Interval=2
Alle 2 Sekunden wechseln wir zwischen zwei Guid-Identifikatoren.
Overmind://Evolving?Name=GuidListEvery2s&Type=Guid&Aggregate=11111111-2222-3333-4444-555555555555,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&Interval=2
Datum von 10 Uhr bis 10:01 Uhr, jede Sekunde um 30 Sekunden vorgezogen.
Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
Frühzeitig um 500 ms pro Sekunde, innerhalb eines einminütigen Zeitraums.
Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
Datum von 10:01 bis 10 Uhr, 30 Sekunden pro Sekunde zurückgesetzt.
Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
Das Datum wird zufällig innerhalb einer Minute gezogen, jede Sekunde.
Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
Pfad von (2,48) zu (4,50) in zwei Übergängen, einer pro Sekunde.
Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
Pfad von (4,50) zu (2,48) in zwei Übergängen, einer pro Sekunde.
Overmind://Evolving?Name=ReverseGisTripEvery1s&Type=GISVector&InitialValue=4,50&EndValue=2,48&Step=2&Interval=1
Punkt gewählt auf dem Abschnitt (2,48)-(4,50) jede Sekunde.
Overmind://Evolving?Name=RandomGisPointEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Interval=1&Behavior=Random
Ich laufe drei Positionen in der Reihenfolge, eine pro Sekunde.
Overmind://Evolving?Name=OrderedGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Increment
Reise von drei Positionen in entgegengesetzte Richtung, eine pro Sekunde.
Overmind://Evolving?Name=ReverseGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Decrement
Die Position wird jede Sekunde aus drei Punkten gewählt.
Overmind://Evolving?Name=RandomGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Random
Zähler von 0 bis 10, +1 alle 290 ms.
Overmind://Evolving?Name=CounterEvery290ms&Type=Integer&InitialValue=0&EndValue=10&Interval=0.29
Zähler von 0 bis 10, +1 alle 90 Sekunden.
Overmind://Evolving?Name=CounterEvery90s&Type=Integer&InitialValue=0&EndValue=10&Interval=00:01:30
Zähler von 0 bis 10, +1 jeden 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden.
Overmind://Evolving?Name=CounterEvery1d2h3m4s&Type=Integer&InitialValue=0&EndValue=10&Interval=1.02:03:04
Zähler von 0 bis 10 alle 250 ms mit wissenschaftlicher Notation.
Overmind://Evolving?Name=CounterEvery250msScientific&Type=Integer&InitialValue=0&EndValue=10&Interval=2.5e-1
Zähler von 0 bis 10 alle 30 Sekunden, Intervall weggelassen.
Overmind://Evolving?Name=CounterDefault30s&Type=Integer&InitialValue=0&EndValue=10
Zähler von 0 auf 2, +1 pro Sekunde, mit EndValue.
Overmind://Evolving?Name=Counter0To2Every1s&Type=Integer&InitialValue=0&EndValue=2&Interval=1
Kontere mit Good, Unreachable oder SpecificError-Qualität, die jede Sekunde abgefeuert wird.
Overmind://Evolving?Name=RandomQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Good-Unreachable-SpecificError
Kontere das jede Sekunde mit der Unerreichbaren-Qualität.
Overmind://Evolving?Name=UnreachableCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Unreachable
Der Zähler ändert sich jede Sekunde mit unbekannter Qualität, konvertiert in SpecificError.
Overmind://Evolving?Name=UnknownQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=ErreurSimulee
Der Zähler wurde jede Sekunde aktualisiert, mit einem Quellendatum um 5 Minuten zurückgesetzt.
Overmind://Evolving?Name=CounterWith5MinuteOldDate&Type=Integer&InitialValue=0&EndValue=10&Interval=1&LastModificationTimeSpan=00:05:00&Context=D%C3%A9monstration%2FRetard
9.4 Metronom-synchronisierte Werte
Der Zähler synchronisierte jede Sekunde auf Demo250 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery1s&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:01&Metronome=Demo250ms
Boolean synchronisiert mit dem vorherigen Zähler, jede Sekunde.
Overmind://Evolving?Name=SynchronizedBooleanEvery1s&Type=Boolean&Interval=1&Metronome=Demo250ms
Counter-Evolution alle 2 Schläge von Demo250 ms, also 500 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery500ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.5&Metronome=Demo250ms
Der Zähler ändert sich alle 3 Schläge von Demo250 ms, also 750 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery750ms&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:00.750&Metronome=Demo250ms
Counter-Evolution alle 29 Schläge von Demo10ms, also 290 ms.
Overmind://Evolving?Name=SynchronizedCounterEvery290ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.29&Metronome=Demo10ms
Zähler synchronisiert auf Demo 250 ms alle 30 Sekunden, Intervall weggelassen.
Overmind://Evolving?Name=SynchronizedCounterDefault30s&Type=Integer&InitialValue=0&EndValue=100&Metronome=Demo250ms
Zähler synchronisiert jede Sekunde, mit einem Quelldatum um 2 Sekunden zurückgesetzt.
Overmind://Evolving?Name=SynchronizedCounterWith2sOldDate&Type=Integer&InitialValue=0&EndValue=100&Interval=1&Metronome=Demo250ms&LastModificationTimeSpan=2
10. Laden Sie alle Samples in ConnectorTester
Die folgende JSON-Tabelle enthält 88 URLs: die beiden Metronome, dann die 86 Variablen in den Beispielen. Ihre Namen sind identisch mit denen, die in diesem Dokument verwendet werden.
- Connectortester schließen und dann öffnen
appsettings.jsonneben seiner ausführbaren Datei. - Integrieren Sie diese Wege in
HubSettings.PreloadPaths, wobei die Verbindungen, Eigenschaften und Pfade bereits konfiguriert bleiben. Keine zweite Sektion erstellenHubSettingsfalls es es schon gibt. - Starte den Test neu und aktiviere Overmind.
- Wenden Sie die ersten beiden Linien an,
Demo250msundDemo10ms, mit dem Button "Handle auf Hub anwenden". - Wenden Sie die zu testenden Variablen an. Die synchronisierten Beispiele haben dann ihre Metronome.
In ConnectorTester, PreloadPaths Zeigt die Pfade beim Start an. Die Verbindung des Steckers und das Anlegen der Griffe bleiben manuell. Nach dem erneuten Verbinden werden die Metronome und dann die Variablen erneut angewendet. Für diesen Katalog sind keine zusätzlichen Basisdateien erforderlich.
{
"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"
]
}
}