Connettore Overmind

Overmind è un connettore Hub che fornisce dati virtuali per test e dimostrazioni. Permette di simulare un punto di regolazione, contatore, stato, data o posizione geografica, senza apparecchiature fisiche.

Gestisce due famiglie di variabili:

  • Defined —Il valore viene impostato al salvataggio, e poi cambiato tramite una scrittura da una sessione, un'applicazione o un altro connettore.
  • Evolving —Il valore cambia automaticamente a un intervallo scelto. Gli abbonati ricevono le variazioni di valore, qualità e data di origine.

La definizione è portata dall'URL del handle. Name è obbligatoria e ne costituisce il riferimento principale. Una terza forma, Overmind://Metronome, ti permette di dichiarare metronomi che sincronizzano variabili in evoluzione.

In questo articolo

    Mostra altro
    Mostra meno

    1. Definisci e trova un handle

    1.1 Struttura del percorso

    Il percorso di un handle è un URL. Il suo prefisso, o protocollo, è Overmind://. Per definire una variabile, essa è seguita da Defined oppureEvolving, e poi un punto interrogativo che ne presenta le impostazioni.

    Ogni parametro è un'associazione Clé=Valeur. Il personaggio & separa i parametri, come nella parte di query di un URL.

    Contatore da 0 a 100, incrementato di 1 ogni 5 secondi, poi ridotto a 0:

    Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
    
    

    1.2 Nome: Identità e Sostituzione

    Name identifica un handle in un'istanza di Overmind. Gli spazi all'inizio e alla fine del nome vengono rimossi, e il confronto non distingue le maiuscole e le cose. Quindi Counter e counter indichi la stessa variabile.

    Salvare una definizione con un nome già presente sostituisce la vecchia definizione e reimposta il valore, anche se il percorso fornito è lo stesso. Le abbonamenti esistenti a quel nome continuano a ricevere le sue modifiche. Una definizione non valida viene rifiutata prima di sostituire la variabile esistente.

    1.3 Leggi e iscriviti per nome

    Dopo aver salvato la definizione, usa solo il suo nome per leggere il suo valore o iscriviti alle sue modifiche:

    Overmind://Name=Increment0To100Every5s
    
    

    Questo breve percorso non resetta la maniglia. Accetta solo il Name. Per cambiare la definizione, salva di nuovo un percorso Defined oppure Evolving con lo stesso nome.

    1.4 Scrivere su un handle definito

    Crea una politica modificabile:

    Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
    
    

    Poi invia il valore 25 à Overmind://Name=MutableInteger20 tramite l'operazione di scrittura Hub. Il nome rimane lo stesso, il valore diventa 25 e la data di modifica viene aggiornata.

    Una scrittura incompatibile con il tipo viene rifiutata senza cambiare il valore o la data. Scrive su un handle Evolving sono rifiutati.

    2. Tipi di valori

    Il parametro Type Indica la natura del valore simulato. Determina come Overmind interpreta il valore ricevuto, quali valori sono accettati e quali calcoli sono possibili durante un'evoluzione o una scrittura.

    Ad esempio, Type=Integer Interprete 10 come un intero a cui possiamo aggiungere un gradino. Type=String Scatola 10 come un messaggio. Type=DateTime Ti permette di anticipare una data di una data di una data stabilita.

    Manici Defined e Evolving Usa gli stessi tipi. Un'affermazione Metronome ha un punto diretto Span e non usa il Type.

    Tipo Valore manipolato
    Boolean Booleano true oppure false.
    Integer Tutto firmato da -2147483648 a 2147483647.
    SmallInteger Byte senza segno da 0 a 255.
    Single Numero decimale, memorizzato in doppia precisione in Overmind.
    DateTime Data e ora pubblicate su UTC.
    GISVector Posizione geografica.
    String Messaggio.
    Unknow, Any, Url, Guid Trattato come testo; un URL o un Guid non viene validato come tale.
    Color, Image, Array Tipi non supportati: La definizione è negata.

    Senza Type, Usi dell'Overmind Unknow. Un valore come 123 Il testo viene lasciato se non è indicato alcun tipo numerico.

    3. Manici definiti

    Un manico Defined rappresenta un valore che è fisso e poi modificato dall'esterno, scrivendo nell'Hub. È adatto, ad esempio, per un setpoint, uno stato forzato o un valore dimostrativo stabile. Non evolve automaticamente.

    Più chiavi possono essere associate a Defined Nel suo URL: il nome identifica la variabile, il tipo ne specifica la natura e gli altri parametri permettono di scegliere il suo valore iniziale, la qualità o la data di sorgente. Le chiavi disponibili sono le seguenti.

    Parametro Ruolo e default
    Name Nome richiesto, identificazione tramite indirizzo.
    Context Testo descrittivo opzionale, senza alcun effetto sull'identità.
    Type Tipo di valore; Unknow di default.
    InitialValue Valore iniziale, convertito in Type.
    Status Qualità iniziale; Good di default.
    LastModificationDate Data iniziale di fonte; data UTC attuale di default.

    Context è un'informazione descrittiva opzionale. Non separa le identità: due definizioni hanno la stessa Name e contesti diversi si riferiscono allo stesso manico.

    Senza InitialValue, i numeri sono 0, il booleano è falso, il testo è vuoto, la data è il 1° gennaio, 1 UTC, e la posizione GIS è (0,0).

    LastModificationDate descrive la data del valore, non la frequenza con cui cambia. Una voce di successo aggiorna questa data. Un'istruzione può quindi portare una qualità Unreachable e una data vecchia appena registrata per simulare dati non disponibili o obsoleti.

    4. Maniglia in evoluzione

    Un manico Evolving rappresenta una variabile che cambia automaticamente nel tempo. Può simulare un contatore, una misurazione casuale, una serie di stati, una data avanzata o uno spostamento geografico. Gli abbonati sono informati della sua evoluzione.

    Le chiavi associate a Evolving nell'URL ti permette di scegliere il tipo di valore, la sua partenza, il suo arrivo, come evolverlo e la durata tra due modifiche. Step agisce sulla variazione di valore; Interval Regola il tempo tra una modifica e l'altra.

    Parametro Ruolo e default
    Name Nome richiesto, identificazione tramite indirizzo.
    Context Testo descrittivo facoltativo.
    Type Tipo di valore; Unknow di default.
    InitialValue Il punto di partenza o l'ingresso iniziale dell'Aggregato.
    EndValue Segnale di arrivo, data o durata assoluta a seconda del tipo.
    Step Nessuna evoluzione, durata, salto in una lista o numero di transizioni GIS.
    Interval Tempo positivo tra due evoluzioni; 30 secondi di default.
    Behavior Increment di default; Decrement oppure Random come desiderato. Per testi senza Aggregato esplicito, il predefinito è Random (vedi Elenchi e testi).
    Aggregate Una lista di valori da sfogliare con virgole separata.
    Metronome Nome di un metronomo esistente; opzionale.
    Statuses Elenco delle possibili qualità, separate da trattini; Good di default.
    LastModificationTimeSpan Durata per sottrarre dalla data di origine; zero di default.

    EndValue è l'unico parametro finale accettato.

    4.1 Comportamento e looping

    Increment aggiunge Step ; Decrement lo sottrae. Per numeri e date, InitialValue è il punto di partenza e EndValue il limite nella direzione scelta. Dopo aver superato questo limite, il valore ritorna al punto di partenza. Il limite viene raggiunto se il gradino cade esattamente su di esso.

    Con InitialValue=0, EndValue=100 e Step=1, la sequenza è 0, 1, 2, fino a 100, e poi 0. Con InitialValue=3, EndValue=0 e Behavior=Decrement, è 3, 2, 1, 0, poi 3.

    Random sceglie un valore tra i limiti o da una lista di valori (vedi sotto per la nozione diAggregate). Step non viene usato per il sorteggio casuale. Se questo parametro viene fornito, il suo valore deve comunque essere valido.

    Senza Behavior, il comportamento è Increment. Il caso particolare dei testi è spiegato nella sezione Elenchi e testi.

    4.2 Impostazioni predefinite e step

    Tipo senza aggregato Partenza predefinita Terminale di arrivo predefinito Passo predefinito
    Integer Minimo di tipo; massimo in Declino. Massimo di tipo; minimo in Declino. 1.
    SmallInteger 0. 255 ; 0 in declino. 1.
    Single 0. Massimo di tipo; minimo in Declino. 0.1.
    DateTime 1 gennaio, 1 UTC. Data massima; data minima in Declino. 30 secondi.
    Boolean falso. Alternanza o estrazione casuale. Non usato.
    String e tipi simili Prima voce nella lista. Elenco dei messaggi. 1 ingresso.
    GISVector Longone 0, latitudine 0. Punto finale storico: longitudine 5.877286, latitudine 47.858437 (vedi GISVector). Un viaggio fatto in un solo viaggio.

    Scegli terminali autoesplicative per una simulazione leggibile. Step deve essere positivo: intero per Integer, SmallInteger, liste e transizioni GIS; decimale per Single ; Durata per DateTime.

    Per un Boolean senza Aggregate, Lo step non viene utilizzato : il booleano viene invertito ad ogni scadenza con Increment oppure Decrement. Con Random, viene estratta casualmente e può mantenere lo stesso valore. Quando Aggregate fornisce una lista di Booleani, la lista viene attraversata secondo le regole descritte di seguito.

    4.3 Elenchi aggregati e testi

    Aggregate=A,B,C fornisce i valori consentiti. Increment avanzare nella lista, Decrement ritiri e Random sceglie un ingresso. Il percorso è ciclico; Step conta le voci da saltare, con 1 di default.

    Il primo input viene usato inizialmente, anche con Decrement. InitialValue Ti permette di scegliere un'altra voce e devi quindi appartenere alla lista. EndValue non si verifica quando l'Aggregate è presente. Tutte le voci vengono convertite nel tipo richiesto.

    In un manico Evolving, Un testo evolve sempre scegliendo una voce da un elenco. Questo riguarda String e i tipi assimilati al testo: Any, Unknow, Url e Guid.

    Questa lista può avere tre origini:

    • A Aggregate esplicito: I valori forniti sono l'elenco. Senza Behavior, sono sfogliate in ordine con Increment.
    • Testi definiti da InitialValue e EndValue —Formano una lista di due voci. Se una fine viene omettata, essa viene presa dalla lista integrata.
    • Nessuna di queste cose: Overmind utilizza la sua lista di messaggi integrata.

    Negli ultimi due casi, senza un aggregato esplicito, il Behavior Il predefinito è Random. Puoi scegliere Behavior=Increment per sfogliare i testi in ordine. Un testo Defined, invece, rimane un valore fisso e non utilizza alcuna lista.

    4.4 DateTime

    Per un DateTime, InitialValue è la data di partenza. EndValue può essere una data di arrivo assoluta o una durata calcolata dalla partenza.

    Step è la durata della data simulata. Interval è il tempo reale tra due evoluzioni: Step=30&Interval=1 Anticipa la data di 30 secondi ogni secondo reale.

    Data di arrivo assoluta: inizia alle 10:00 UTC, avanza di 30 secondi per ogni secondo reale, e torna indietro dopo le 10:01 UTC.

    Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
    
    

    Data relativa di arrivo: viaggio di un minuto dalle 10:00 UTC, avanzando di 500 ms per ogni secondo reale.

    Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
    
    

    Durata relativa in diminuzione: A partire dalle 10:01 UTC, sottraendo 30 secondi da ogni secondo effettivo, fino a un minuto prima della partenza, e poi ripetendo.

    Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
    
    

    Data casuale: Scegli una data ogni secondo reale entro un minuto dalle 10:00 UTC. Il passaggio non viene utilizzato.

    Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
    
    

    4.5 GISVector

    Una singola posizione utilizza l'ordine longitude,latitude : InitialValue=2,48. I valori pubblicati utilizzano il longitude;latitude, ad esempio 2;48.

    Per un GIS, EndValue è un punto di arrivo, non un valore massimo. Coordinate 5.877286,47.858437 hanno origine da un punto nel codice storico del connettore; non rappresentano alcun confine geografico. Specificare InitialValue e EndValue Ti permette di scegliere la tua strada.

    Senza aggregato, un Transizione è il passaggio dalla posizione attuale alla successiva. Step indica quanti viaggi della stessa lunghezza il viaggio dall'inizio alla fine è diviso. Viene effettuata una transizione in ciascuno Interval.

    Con una partenza (2.48), un arrivo (4.50), Step=2 e Interval=1, il risultato è:

    Tempo trascorso Posizione pubblicata Movimento
    0 secondi 2;48 Punto di partenza.
    1 secondo 3;49 Prima transizione: a metà.
    2 secondi 4;50 Seconda transizione: arrivo.
    3 secondi 2;48 Torna all'inizio per ricominciare il viaggio.
    Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
    
    

    Retromarcia InitialValue e EndValue inverte il percorso. Con Random, un punto viene estratto casualmente dal segmento; Step non viene usato.

    5. Sincronizza le evoluzioni con un metronomo

    5.1 Dichiarare un metronomo con manico

    Un metronomo definisce una cadenza comune a diverse variabili. Si dichiara inoltre con un URL, prima di applicare le variabili che lo utilizzeranno.

    Metronomo con battiti distanziati a 250 ms:

    Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
    
    
    Chiave Ruolo
    Name Nome obbligatorio del metronomo.
    Span Durata obbligatoria e rigorosamente positiva tra due battiti. Accetta secondi, inclusi frazionari, o una durata formattata.

    L'handle fornisce il suo periodo come valore, ad esempio 00:00:00.2500000. È leggibile con il riferimento per nome descritto all'inizio del documento. Non è un contatore di battito e non accetta scrittura diretta; per cambiare il punto, si salva una nuova definizione Metronome.

    Riformulando gli aggiornamenti dello stesso nome Span senza riavviare la fase comune. Se il nuovo periodo è incompatibile con un intervallo di variabili attive o salvate, la dichiarazione fallisce esplicitamente e il periodo precedente rimane applicato.

    I nomi seguono la stessa regola di unicità degli altri manigli. Un metronomo ancora in uso non può essere sostituito da una variabile Defined oppure Evolving.

    5.2 L'intervallo rimane una durata

    Il metronomo è opzionale. Senza Metronome, ogni maniglia evolve in base al suo intervallo dalla sua inizializzazione. Frazioni di secondo sono accettate: Interval=0.29 richiede un'evoluzione ogni 290 ms.

    Con Metronome, la maniglia mantiene il suo intervallo e si unisce a un'origine temporale comune. Due maniglie con lo stesso metronomo e lo stesso intervallo si evolvono negli stessi intervalli temporali, anche se registrate in momenti diversi.

    Un metronomo ha un nome Name e un periodo Span strettamente positivo. L'intervallo dell'handle deve essere un multiplo intero positivo di questo periodo. Queste sono sempre durate: Interval=1 significa un secondo, non un battito.

    Campata del metronomo Interval du handle Risultato
    250 ms 1 secondo Evoluzione ogni 4 battiti.
    250 ms 500 ms Evoluzione ogni 2 battimenti.
    250 ms 750 ms Evoluzione ogni 3 battiti.
    250 ms 290 ms Rifiuto: il rapporto non è completo.
    10 ms 290 ms Evoluzione ogni 29 battiti.

    Senza Interval, la durata di 30 secondi rimane in vigore e deve essere anch'essa un multiplo di Span. Un metronomo assente nella configurazione, un nome vuoto o un intervallo incompatibile producono un errore esplicito.

    5.3 Scadenze comuni

    Su un metronomo da 250 ms, le maniglie con intervalli di 500 ms e 750 ms hanno una scadenza comune ogni 1,5 secondi. Una maniglia aggiunta successivamente si unisce alla scadenza successiva corrispondente al suo intervallo.

    Le notifiche vengono emesse successivamente, con la data della scadenza comune. La cadenza non è una garanzia in tempo reale. In caso di ritardo nel motore, viene applicata una singola evoluzione per l'ultima scadenza raggiunta, senza ripetere tutti i battiti persi. La riconnessione crea una nuova origine in tempo comune.

    5.4 Prepara i metronomi per gli esempi

    Il catalogo utilizza Demo250ms, espresso sopra, e Demo10ms, i cui battiti sono distanziati di 10 ms:

    Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
    
    

    Applica questi due URL prima dei sette esempi sincronizzati. Si trovano in cima alla tabella PreloadPaths fornito alla fine del documento. Non è più necessario preparare un file base per questi esempi.

    Quando un singolo lotto di record contiene una dichiarazione di metronomo e le sue variabili, Overmind elabora prima la dichiarazione unica di quel metronomo. Se più definizioni condividono lo stesso nome nel lotto, il loro ordine rimane l'ordine della richiesta per preservare la regola dell'ultimo record.

    Una dichiarazione tramite handle ha effetto in memoria, come quella di una variabile. Riapplicala dopo una riconnessione se non è stata salvata nel database. L'amministrazione Overmind permette anche di creare, modificare e salvare metronomi.

    6. Qualità, data di fonte ed errori

    La qualità indica lo stato simulato dei dati; è separata dallo stato di connessione di Overmind.

    Qualità Situazione mostrata
    Good Dati validi.
    Unreachable Dati inaccessibili.
    SpecificError Errore specifico.
    Unhandled Maniglia non supportata.
    UnpluggedConnector Connettore disconnesso.
    NoConnectorFound Nessun connettore trovato.

    Pro Defined, usa Status. Pro Evolving, usa Statuses=Good-Unreachable-SpecificError : Da questa lista viene scelta una qualità per ogni modifica. Un'etichetta di qualità sconosciuta viene convertita in SpecificError.

    LastModificationDate imposta la data iniziale di un handle Defined. LastModificationTimeSpan Sposta la data di fonte di un Evolving senza cambiare il suo intervallo: un valore aggiornato ogni secondo può essere presentato con cinque minuti di ritardo.

    L'Hub e il ConnectorTester mantengono la qualità e la data originali della sorgente. Quindi una definizione che richiede Unreachable e una data fissa deve mostrare questa stessa informazione non appena viene salvata, e poi quando viene giocata per nome.

    Un fallimento di record fornisce una ragione esplicita e un log a livello di errore, associato al connettore, al percorso e alla causa. Questo include un Name assenti, un tipo non supportato, un valore malformato, un intervallo nullo, un metronomo sconosciuto o una scrittura proibita.

    Una simulazione che fallisce durante un'evoluzione pubblicata SpecificError. Le altre maniglie continuano a funzionare.

    7. Formati URL e caratteri riservati

    I nomi dei parametri, i tipi e i comportamenti sono indistinti a maiuscole e minuscole (case --county). I parametri che sono sconosciuti, ripetuti o inapplicabili alla famiglia degli handle vengono negati.

    Poiché il percorso è un URL, alcuni caratteri hanno un ruolo riservato in esso. Ad esempio, ? introduce i parametri e & li separa. Quando uno di questi caratteri fa parte di un valore, deve essere codificato per rimanere all'interno di quel valore. Gli spazi, gli accenti e il segno + devono anch'essi essere codificati in valori di parametri.

    Carattere Codifica in un valore
    Spazio %20
    Ampersand & %26
    Segno + %2B
    Segno = %3D
    Punto interrogativo? %3F
    Sharp # %23
    Percentuale % %25
    Virgola in una coppia GIS di un aggregato %2C

    I numeri usano il punto decimale: 21.5, 0.25. Uso dei booleani true oppure false, non 0 oppure 1.

    Le date possono essere scritte, ad esempio, in ISO 8601 2026-09-08T10:00:00Z. Una data senza fuso orario viene interpretata in UTC; le date pubblicate sono normalizzate in UTC. In una differenza temporale positiva, si codifica il segno +: 2026-09-08T12:00:00%2B02:00.

    Le durate accettano un certo numero di secondi, possibilmente frazionari, oppure il formato [jours.]hh:mm:ss[.fractions]. Ad esempio, 0.29 e 00:00:00.290 rappresentano 290 ms; 1.02:03:04 rappresenta 1 giorno, 2 ore, 3 minuti e 4 secondi.

    8. Installazione e conservazione dei dati

    Il connettore è distribuito sotto forma di GraphicStream.Immersive.Hub.Connectors.Overmind.dll. Al di fuori dell'runtime di .NET 10, la sua dipendenza applicativa è GraphicStream.Immersive.Hub.Abstractions.dll, fornito dall'ospite.

    Per ConnectorTester, copiare la DLL Overmind nel Connectors accanto all'eseguibile, poi eseguire il test. Dovrebbe offrire un singolo connettore Overmind. Il tipo di configurazione è GraphicStream.Immersive.Hub.Connectors.Overmind.ConnectorSession.

    Le basi Overmind/database.json Memorizza i percorsi del catalogo, le variabili di amministrazione e le definizioni del metronomo. I metronomi vengono caricati al momento dell'accesso. I percorsi salvati non diventano automaticamente handle attivi; devono essere registrati da un consumatore.

    Una disconnessione interrompe le evoluzioni e svuota il registro delle maniglie attive. Al riavvio, si registrano nuovamente le variabili e i metronomi che non sono stati salvati. La base non è un salvataggio automatico dell'ultimo valore di ogni maniglia.

    JSON base malformata o metronomi invalidi impediscono la connessione e producono un errore. Eliminare un percorso dal catalogo ne accetta il nome, il riferimento breve o la definizione; rimuove voci con lo stesso nome e salva il database.

    Per adattare i vecchi percorsi, aggiungi Name a tutte le definizioni e danno nomi distinti a variabili che in precedenza erano differenziate solo da Context.

    9. Esempi di manici

    9.1 Metronomi

    250ms di metronomo per sincronizzare le variabili.

    Overmind://Metronome?Span=00:00:00.250&Name=Demo250ms
    
    

    Metronomo da 10 ms per intervalli multipli di 10 ms.

    Overmind://Metronome?Span=00:00:00.010&Name=Demo10ms
    
    

    9.2 Valori definiti

    Intero modificabile, inizializzato a 20.

    Overmind://Defined?Name=MutableInteger20&Type=Integer&InitialValue=20
    
    

    Boolean modificabile, inizializzato su false.

    Overmind://Defined?Name=MutableBooleanFalse&Type=Boolean&InitialValue=false
    
    

    Byte modificabile, inizializzato a 128.

    Overmind://Defined?Name=MutableByte128&Type=SmallInteger&InitialValue=128
    
    

    Decimale modificabile, inizializzato a 21.5.

    Overmind://Defined?Name=MutableDecimal21Point5&Type=Single&InitialValue=21.5
    
    

    Testo contenente accenti, spazi & e +.

    Overmind://Defined?Name=TextWithReservedCharacters&Type=String&InitialValue=%C3%89tage%201%20%26%20accueil%20%2B%20caf%C3%A9
    
    

    Data fissata per l'8 settembre 2026 alle 10:00 UTC.

    Overmind://Defined?Name=FixedUtcDate&Type=DateTime&InitialValue=2026-09-08T10:00:00Z
    
    

    Data alle 12:00 UTC+2, pubblicata alle 10:00 UTC.

    Overmind://Defined?Name=DateWithTimeZone&Type=DateTime&InitialValue=2026-09-08T12:00:00%2B02:00
    
    

    Posizione fissa: longitudine 2, latitudine 48.

    Overmind://Defined?Name=FixedGisPosition&Type=GISVector&InitialValue=2,48
    
    

    Testo libero di tipo Qualsiasi.

    Overmind://Defined?Name=FreeText&Type=Any&InitialValue=texte%20libre
    
    

    L'indirizzo URL che viene mantenuto come testo.

    Overmind://Defined?Name=UrlAsText&Type=Url&InitialValue=https:%2F%2Fexample.com%2Fstatus%3Fzone%3DA%26mode%3Dlive
    
    

    ID GUID tenuto come messaggio.

    Overmind://Defined?Name=GuidAsText&Type=Guid&InitialValue=11111111-2222-3333-4444-555555555555
    
    

    Testo senza conversione, di tipo Sconosciuto.

    Overmind://Defined?Name=UnknownTypeAsText&Type=Unknow&InitialValue=valeur%20sans%20conversion
    
    

    Un valore di 123 viene mantenuto come testo quando Tipo viene omesso.

    Overmind://Defined?Name=OmittedTypeAsText&InitialValue=123
    
    

    Un intero inizializzato a 0 di default.

    Overmind://Defined?Name=DefaultIntegerZero&Type=Integer
    
    

    Byte inizializzato a 0 di default.

    Overmind://Defined?Name=DefaultByteZero&Type=SmallInteger
    
    

    Decimale impostato a 0 di default.

    Overmind://Defined?Name=DefaultDecimalZero&Type=Single
    
    

    Boolean impostato su false di default.

    Overmind://Defined?Name=DefaultBooleanFalse&Type=Boolean
    
    

    Testo vuoto di default.

    Overmind://Defined?Name=DefaultEmptyText&Type=String
    
    

    Data inizializzata il 1° gennaio, 1 UTC.

    Overmind://Defined?Name=DefaultMinimumDate&Type=DateTime
    
    

    Posizione inizializzata a longitudine 0, latitudine 0.

    Overmind://Defined?Name=DefaultGisOrigin&Type=GISVector
    
    

    Valore 42 con buona qualità.

    Overmind://Defined?Name=GoodQualityValue&Type=Integer&InitialValue=42&Status=Good
    
    

    Valore 42 con qualità Inraggiungibile.

    Overmind://Defined?Name=UnreachableQualityValue&Type=Integer&InitialValue=42&Status=Unreachable
    
    

    Un valore di 42 con qualità SpecificError.

    Overmind://Defined?Name=SpecificErrorQualityValue&Type=Integer&InitialValue=42&Status=SpecificError
    
    

    Valore 42 con qualità Unhandle.

    Overmind://Defined?Name=UnhandledQualityValue&Type=Integer&InitialValue=42&Status=Unhandled
    
    

    Valore 42 con qualità UnpluggedConnector.

    Overmind://Defined?Name=UnpluggedConnectorQualityValue&Type=Integer&InitialValue=42&Status=UnpluggedConnector
    
    

    Valore 42 con qualità NoConnectorFound.

    Overmind://Defined?Name=NoConnectorFoundQualityValue&Type=Integer&InitialValue=42&Status=NoConnectorFound
    
    

    Valore 42 datato 1 gennaio 2026 alle 8:00 UTC.

    Overmind://Defined?Name=FixedSourceDate&Type=Integer&InitialValue=42&LastModificationDate=2026-01-01T08:00:00Z
    
    

    Qualità sconosciuta convertita in SpecificError.

    Overmind://Defined?Name=UnknownQualityBecomesSpecificError&Type=Integer&InitialValue=42&Status=ErreurSimulee
    
    

    Variabile chiamata "Stanza A & piano 1", con un contesto descrittivo.

    Overmind://Defined?Name=Room%20A%20%26%20floor%201&Type=Integer&InitialValue=20&Context=B%C3%A2timent%20A%2F%C3%89tage%201
    
    

    9.3 Valori scalabili autonomi

    Contatta da 0 a 100, +1 ogni 5 secondi, poi torna a 0.

    Overmind://Evolving?Name=Increment0To100Every5s&Type=Integer&InitialValue=0&EndValue=100&Step=1&Interval=5&Behavior=Increment
    
    

    Conto alla rovescia da 3 a 0 ogni secondo, poi di nuovo a 3.

    Overmind://Evolving?Name=Countdown3To0Every1s&Type=Integer&InitialValue=3&EndValue=0&Step=1&Interval=1&Behavior=Decrement
    
    

    Intero casuale da 1 a 6 ogni secondo.

    Overmind://Evolving?Name=RandomInteger1To6Every1s&Type=Integer&InitialValue=1&EndValue=6&Interval=1&Behavior=Random
    
    

    Alternando tra 2147483646 e 2147483647 ogni secondo.

    Overmind://Evolving?Name=IntegerMaximumEvery1s&Type=Integer&InitialValue=2147483646&EndValue=2147483647&Interval=1
    
    

    Byte da 0 a 255, +85 ogni secondo.

    Overmind://Evolving?Name=IncrementByte0To255Every1s&Type=SmallInteger&InitialValue=0&EndValue=255&Step=85&Interval=1&Behavior=Increment
    
    

    Byte da 255 a 0, -85 ogni secondo.

    Overmind://Evolving?Name=DecrementByte255To0Every1s&Type=SmallInteger&InitialValue=255&EndValue=0&Step=85&Interval=1&Behavior=Decrement
    
    

    Byte casuale da 0 a 255 ogni secondo.

    Overmind://Evolving?Name=RandomByteEvery1s&Type=SmallInteger&InitialValue=0&EndValue=255&Interval=1&Behavior=Random
    
    

    Decimale da 0 a 1, +0,25 ogni secondo.

    Overmind://Evolving?Name=IncrementDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Step=0.25&Interval=1&Behavior=Increment
    
    

    Decimale da 1 a 0, -0,25 ogni secondo.

    Overmind://Evolving?Name=DecrementDecimal1To0Every1s&Type=Single&InitialValue=1&EndValue=0&Step=0.25&Interval=1&Behavior=Decrement
    
    

    Decimale casuale tra 0 e 1 ogni secondo.

    Overmind://Evolving?Name=RandomDecimal0To1Every1s&Type=Single&InitialValue=0&EndValue=1&Interval=1&Behavior=Random
    
    

    Boolean invertite ogni secondo con Increment.

    Overmind://Evolving?Name=ToggleBooleanIncrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Increment
    
    

    Booleano invertiva ogni secondo con Decrement.

    Overmind://Evolving?Name=ToggleBooleanDecrementEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Decrement
    
    

    Booleano scelto casualmente ogni secondo.

    Overmind://Evolving?Name=RandomBooleanEvery1s&Type=Boolean&InitialValue=false&Interval=1&Behavior=Random
    
    

    Messaggio dalla lista integrata selezionato casualmente ogni 2 secondi.

    Overmind://Evolving?Name=RandomBuiltInTextEvery2s&Type=String&Interval=2
    
    

    I messaggi nella lista integrata vengono sfogliati in ordine ogni 2 secondi.

    Overmind://Evolving?Name=OrderedBuiltInTextEvery2s&Type=String&Interval=2&Behavior=Increment
    
    

    Alternando tra Stop e Start ogni 2 secondi.

    Overmind://Evolving?Name=ToggleStoppedRunningEvery2s&Type=String&InitialValue=Arr%C3%AAt&EndValue=Marche&Interval=2&Behavior=Increment
    
    

    Scegliere tra libero e occupato ogni 2 secondi.

    Overmind://Evolving?Name=RandomFreeOccupiedEvery2s&Type=String&InitialValue=Libre&EndValue=Occup%C3%A9&Interval=2
    
    

    Ciclo di benvenuto, preparazione, esecuzione, completato ogni 2 secondi.

    Overmind://Evolving?Name=OrderedWorkflowEvery2s&Type=String&Aggregate=Accueil,Pr%C3%A9paration,Ex%C3%A9cution,Termin%C3%A9&Interval=2
    
    

    Cicli A, C, B con diminuzione ogni 2 secondi.

    Overmind://Evolving?Name=ReverseTextListEvery2s&Type=String&Aggregate=A,B,C&Behavior=Decrement&Interval=2
    
    

    Stato libero, occupato o manutenzione scelto ogni 2 secondi.

    Overmind://Evolving?Name=RandomStateListEvery2s&Type=String&Aggregate=Libre,Occup%C3%A9,Maintenance&Behavior=Random&Interval=2
    
    

    Elenco A, B, C, D attraversati da B con salti di 2 ogni secondo.

    Overmind://Evolving?Name=SkipTwoFromBEvery1s&Type=String&Aggregate=A,B,C,D&InitialValue=B&Step=2&Interval=1
    
    

    Ciclo di passaggi 0, 10, 50, 100 ogni 2 secondi.

    Overmind://Evolving?Name=IntegerLevelsEvery2s&Type=Integer&Aggregate=0,10,50,100&Interval=2
    
    

    Cicla i byte 0, 128, 255 ogni 2 secondi.

    Overmind://Evolving?Name=ByteLevelsEvery2s&Type=SmallInteger&Aggregate=0,128,255&Interval=2
    
    

    Cicla i decimali 18,5, 20,25 e 23,75 ogni 2 secondi.

    Overmind://Evolving?Name=DecimalLevelsEvery2s&Type=Single&Aggregate=18.5,20.25,23.75&Interval=2
    
    

    Cicla falso, falso, vero ogni 2 secondi.

    Overmind://Evolving?Name=BooleanSequenceEvery2s&Type=Boolean&Aggregate=false,false,true&Interval=2
    
    

    Alterna tre date UTC ogni 2 secondi.

    Overmind://Evolving?Name=DateSequenceEvery2s&Type=DateTime&Aggregate=2026-09-08T08:00:00Z,2026-09-08T12:00:00Z,2026-09-08T18:00:00Z&Interval=2
    
    

    Ciclo di testi A, B, C del tipo Qualsiasi ogni 2 secondi.

    Overmind://Evolving?Name=AnyTextListEvery2s&Type=Any&Aggregate=A,B,C&Interval=2
    
    

    Ciclo di messaggi x, y, z sconosciuti ogni 2 secondi.

    Overmind://Evolving?Name=UnknownTextListEvery2s&Type=Unknow&Aggregate=x,y,z&Interval=2
    
    

    Alternando due URL ogni 2 secondi.

    Overmind://Evolving?Name=UrlListEvery2s&Type=Url&Aggregate=https:%2F%2Fexample.com%2Fa,https:%2F%2Fexample.com%2Fb&Interval=2
    
    

    Alternando tra due identificatori Guid ogni 2 secondi.

    Overmind://Evolving?Name=GuidListEvery2s&Type=Guid&Aggregate=11111111-2222-3333-4444-555555555555,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&Interval=2
    
    

    Data dalle 10:00 alle 10:01, anticipata di 30 secondi ogni secondo.

    Overmind://Evolving?Name=AdvanceDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=2026-09-08T10:01:00Z&Step=30&Interval=1
    
    

    Anticipa la data di 500 ms ogni secondo, entro un intervallo di un minuto.

    Overmind://Evolving?Name=AdvanceDate500msEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Step=00:00:00.500&Interval=1
    
    

    Data dalle 10:01 alle 10:00, con un ritardo di 30 secondi ogni secondo.

    Overmind://Evolving?Name=RewindDate30sEvery1s&Type=DateTime&InitialValue=2026-09-08T10:01:00Z&EndValue=60&Step=30&Interval=1&Behavior=Decrement
    
    

    Data sorta casualmente entro un minuto, ogni secondo.

    Overmind://Evolving?Name=RandomDateWithinMinuteEvery1s&Type=DateTime&InitialValue=2026-09-08T10:00:00Z&EndValue=00:01:00&Interval=1&Behavior=Random
    
    

    Percorso da (2,48) a (4,50) in due transizioni, una al secondo.

    Overmind://Evolving?Name=ForwardGisTripEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Step=2&Interval=1
    
    

    Percorso da (4,50) a (2,48) in due transizioni, una al secondo.

    Overmind://Evolving?Name=ReverseGisTripEvery1s&Type=GISVector&InitialValue=4,50&EndValue=2,48&Step=2&Interval=1
    
    

    Punto scelto nel segmento (2,48)-(4,50) ogni secondo.

    Overmind://Evolving?Name=RandomGisPointEvery1s&Type=GISVector&InitialValue=2,48&EndValue=4,50&Interval=1&Behavior=Random
    
    

    Esegui tre posizioni in ordine, una al secondo.

    Overmind://Evolving?Name=OrderedGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Increment
    
    

    Viaggia da tre posizioni nella direzione opposta, una al secondo.

    Overmind://Evolving?Name=ReverseGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Decrement
    
    

    Posizione scelta da tre punti ogni secondo.

    Overmind://Evolving?Name=RandomGisRouteEvery1s&Type=GISVector&Aggregate=48%2C2,49%2C3,50%2C4&Interval=1&Behavior=Random
    
    

    Conteggio da 0 a 10, +1 ogni 290 ms.

    Overmind://Evolving?Name=CounterEvery290ms&Type=Integer&InitialValue=0&EndValue=10&Interval=0.29
    
    

    Contatta da 0 a 10, +1 ogni 90 secondi.

    Overmind://Evolving?Name=CounterEvery90s&Type=Integer&InitialValue=0&EndValue=10&Interval=00:01:30
    
    

    Conteggio da 0 a 10, +1 ogni 1 giorno, 2 ore, 3 minuti e 4 secondi.

    Overmind://Evolving?Name=CounterEvery1d2h3m4s&Type=Integer&InitialValue=0&EndValue=10&Interval=1.02:03:04
    
    

    Contatore da 0 a 10 ogni 250 ms, con notazione scientifica.

    Overmind://Evolving?Name=CounterEvery250msScientific&Type=Integer&InitialValue=0&EndValue=10&Interval=2.5e-1
    
    

    Conteggio da 0 a 10 ogni 30 secondi, intervallo omesso.

    Overmind://Evolving?Name=CounterDefault30s&Type=Integer&InitialValue=0&EndValue=10
    
    

    Contatore da 0 a 2, +1 ogni secondo, con EndValue.

    Overmind://Evolving?Name=Counter0To2Every1s&Type=Integer&InitialValue=0&EndValue=2&Interval=1
    
    

    Rispondi con la qualità Good, Unreachable o SpecificError che viene sparato ogni secondo.

    Overmind://Evolving?Name=RandomQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Good-Unreachable-SpecificError
    
    

    Il contro-cambiamento cambia ogni secondo con la qualità Inraggiungibile.

    Overmind://Evolving?Name=UnreachableCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=Unreachable
    
    

    Cambio di contatore ogni secondo con qualità sconosciuta convertita in SpecificError.

    Overmind://Evolving?Name=UnknownQualityCounterEvery1s&Type=Integer&InitialValue=0&EndValue=10&Interval=1&Statuses=ErreurSimulee
    
    

    Il contatore viene aggiornato ogni secondo, con una data di fonte spostata di 5 minuti.

    Overmind://Evolving?Name=CounterWith5MinuteOldDate&Type=Integer&InitialValue=0&EndValue=10&Interval=1&LastModificationTimeSpan=00:05:00&Context=D%C3%A9monstration%2FRetard
    
    

    9.4 Valori sincronizzati con metronomo

    Contatore sincronizzato ogni secondo su Demo250ms.

    Overmind://Evolving?Name=SynchronizedCounterEvery1s&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:01&Metronome=Demo250ms
    
    

    Booleano sincronizzato con il contatore precedente, ogni secondo.

    Overmind://Evolving?Name=SynchronizedBooleanEvery1s&Type=Boolean&Interval=1&Metronome=Demo250ms
    
    

    Counter-evolving ogni 2 battiti di Demo250ms, cioè 500 ms.

    Overmind://Evolving?Name=SynchronizedCounterEvery500ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.5&Metronome=Demo250ms
    
    

    Cambio di contatore ogni 3 battiti di Demo250ms, cioè 750ms.

    Overmind://Evolving?Name=SynchronizedCounterEvery750ms&Type=Integer&InitialValue=0&EndValue=100&Interval=00:00:00.750&Metronome=Demo250ms
    
    

    Counter-evolving ogni 29 battiti di Demo10ms, cioè 290ms.

    Overmind://Evolving?Name=SynchronizedCounterEvery290ms&Type=Integer&InitialValue=0&EndValue=100&Interval=0.29&Metronome=Demo10ms
    
    

    Contatore sincronizzato a Demo250ms ogni 30 secondi, intervallo omesso.

    Overmind://Evolving?Name=SynchronizedCounterDefault30s&Type=Integer&InitialValue=0&EndValue=100&Metronome=Demo250ms
    
    

    Contatore sincronizzato ogni secondo, con una data di origine spostata di 2 secondi.

    Overmind://Evolving?Name=SynchronizedCounterWith2sOldDate&Type=Integer&InitialValue=0&EndValue=100&Interval=1&Metronome=Demo250ms&LastModificationTimeSpan=2
    
    

    10. Carica tutti i campioni in ConnectorTester

    La tabella JSON qui sotto contiene 88 URL: i due metronomi, poi le 86 variabili negli esempi. I loro nomi sono identici a quelli usati in questo documento.

    1. Chiudi ConnectorTester, poi apri appsettings.json accanto al suo eseguibile.
    2. Integrare questi percorsi in HubSettings.PreloadPaths, mantenendo già configurati i connettori, le proprietà e i percorsi. Non creare una seconda sezione HubSettings se esiste già.
    3. Riavvia il test e attiva Overmind.
    4. Applica le prime due linee, Demo250ms e Demo10ms, con il pulsante "Applica la maniglia all'hub".
    5. Applicare le variabili da testare. Gli esempi sincronizzati hanno poi i loro metronomi.
    {
      "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"
        ]
      }
    }