ConnectorTester: Assicurati le tue prolunghe

Panoramica di ConnectorTester

ConnectorTester è uno strumento progettato per facilitare lo sviluppo e la validazione di connettori Immersive. Permette di avviare un connettore al di fuori dell'intero Hub per testare, in condizioni controllate, il suo comportamento riguardo a handle, valori scambiati e comandi (writes/scene).

Training

Il Hub Immersivo rappresenta il livello software che interfaccia l'esposizione dei dati e il suo consumo da parte del Beholder.

Rappresenta uno strato universale di indirezione tra un consumatore (ad esempio un giocatore Immersive Beholder) e i dati, indipendentemente dai protocolli utilizzati per accedervi.

Titolo

Ruolo dello strumento

  • Isolamento : Far funzionare un connettore da solo, senza dispiegare l'intero Hub.
  • Validazione : verificare che le maniglie siano correttamente riconosciute e registrate secondo il Pattern definito.
  • Debug : Osservare i messaggi di stato (StateMessages) e notifiche pubblicate dal connettore.
  • Simulazione : Testare i cicli di vita (Inizializzare, Connettere, Disconnettersi) e assicurarsi che il connettore risponda come previsto.

Perché usare ConnectorTester?

Durante lo sviluppo di un connettore, diversi elementi devono essere testati prima dell'integrazione nell'Hub:

  • Che metodo CanHandle filtra bene i percorsi che gli appartengono.
  • Quello HandleHandles Registra correttamente le coppie Dischietto/Proprietà.
  • Gli aggiornamenti sui valori sono pubblicati come HandleSnapshot.
  • Che gli scritti (WriteValue) sono correttamente tradotte in chiamate alla sorgente (REST, OPC UA, ecc.).

Benefici

  • Riduce i tempi di debug fornendo un ambiente mirato.
  • Migliora la qualità dei connettori prima che vengano integrati in un vero hub.
  • Facilita la dimostrazione dei connettori a team interni o clienti (prova di concetto rapida).

Panoramica dell'interfaccia

Il ConnectorTester è organizzato in diversi pannelli che permettono di controllare i connettori, visualizzare i loro log e osservare i valori delle maniglie in tempo reale. Ecco una descrizione per aree principali:

Interfaccia 1

1: Il pannello dei Logs

Il pannello di sinistra elenca Tutti gli eventi emessa dal Hub e dai connettori:

  • Time (UTC) : Il timestamp dell'evento.
  • Origine : Il modulo che ha prodotto il messaggio (Hub, BuildingSensorSimulatorConnector, e così via).
  • Tipo : Livello log (Informazioni, Avviso, Errore).
  • Messaggio : Descrizione dettagliata (ad esempio "Interessi registrati: 101/Floor").

È associato a una barra degli strumenti, in alto, che permette, da sinistra a destra, di eliminare i log e resettare questa console, oppure di esportare l'elenco dei log attuali sotto forma di file.

2: Panel della Sessione Virtuale

La Parte 2 mostra le maniglie tracciate in Tempo reale. Ogni aggiornamento con:

  • Percorso del manico (ad es. BuildingSensor://101/floor).
  • Stato (Buono, Cattivo, ecc.).
  • Valore : il valore attuale.
  • Data di modifica : il timestamp dei dati fornito dalla fonte.

Sono possibili due modalità di visualizzazione che possono essere attivate tramite il pulsante sinistro della barra degli strumenti associata a questo pannello:

  • Visualizzazione tramite handle: Tutti gli handle gestiti sono visualizzati in modo unitario e viene aggiornato solo il loro stato o valore.
  • Vista basata su eventi: La lista mostra ogni evento relativo a un cambiamento in un handle sotto forma di lista di log.

È associata a una barra strumentali, in alto, che permette, da sinistra a destra, di cambiare la modalità di visione come abbiamo appena visto, di eliminare i log della modalità di visione associata e di resettare questa console, oppure di esportare sotto forma di file l'elenco dei log attuali di questo pannello.

3: Elenco dei connettori

Nel pannello destro/superiore, il Connettori Visualizza i connettori gestiti. Questi connettori si trovano nel Connectors situato allo stesso livello dell'eseguibile:

  • Ogni connettore è elencato con il proprio nome e spazio nominale.
  • Un interruttore ON/OFF Ti permette di attivare/disattivare il connettore singolarmente. Noi attiviamo i metodi IConnector.Initialize allora IConnector.Connect. Trigger spenti IConnector.Disconnect
  • Lo stato del connettore (verde per attivo) riflette il suo Status (Connessi, Scollegato, ecc.).

Questo pannello è associato a una barra degli strumenti, in alto, che permette, da sinistra a destra: di aggiornare la lista dei connettori dalla directory Connectors, apri la cartella del connettore in Esplora risorse di Windows.

4: Quadro Proprietà

Sotto di questo, il Proprietà Ti permette di definire chiavi/autovalori che saranno associati al HubSettings.Properties dell'istanza Test Hub.

  • Ogni riga corrisponde a una chiave di configurazione (ad esempio, NewKey1, NewKey2).
  • I valori possono essere modificati direttamente.
  • Cliccando su "Applica" queste proprietà vengono inserite in HubSettings.

Questo pannello è associato a una barra degli strumenti, in alto, che permette, da sinistra a destra: di aggiungere una nuova proprietà, eliminare la proprietà selezionata, applicare le proprietà all'Hub, esporre (sotto forma di json) l'elenco delle proprietà del pannello.

5: Schede Contesto dell'Interfaccia

Queste schede ti permettono di passare dalla gestione dell'Hub con i suoi connettori e proprietà alla gestione delle maniglie. Ci arriveremo tra un attimo.

6: Menu Globale

Il menu globale mostra, sotto il titolo, una barra degli strumenti con due opzioni:

  • Un pulsante per nascondere le schede contestuali di visualizzazione, per dare spazio ai log e ai pannelli virtuali delle sessioni.
  • Accesso alla finestra "Informazioni".
Interfaccia 2

7: Pannello di gestione delle manette

Cliccando sulla scheda corrispondente si apre la scheda per gestire i handle. Sono associati alla proprietà HubSettings.PreloadPaths dell'istanza Test Hub.

Il pannello mostra dall'alto verso il basso:

  • Una barra degli strumenti per copiare, nella clipboard, il json dei handle gestiti dal Test Hub
  • Un modulo con un campo di input per aggiungere un nuovo handle sotto forma di percorso.
  • L'elenco dei percorsi gestiti dal Test Hub.

Ogni percorso visualizzato in questa lista ha due pulsanti associati:

  • Un pulsante per inviare il percorso all'Hub che poi verrà inviato ai Connector già caricati.
  • Un pulsante per rimuovere la maniglia dalla lista delle maniglie gestite dal Test Hub.

Usa ConnectorTester con un connettore

Dopo aver compreso il ruolo di ConnectorTester, vediamo come usarlo concretamente per testare un connettore. Lo strumento ti permette di caricare dinamicamente una DLL di connettore, istanziarla e poi interagire con essa come farebbe l'Hub.

Scarica questi tre progetti Visual Studio:

Scarica tutte queste risorse, lancia progetti correlati a Visual Studio per:

  • BuildingSensorSimulator : esporrà tutti i dispositivi da monitorare sotto forma di servizio Rest.
  • ConnectorTester: Permette di avviare l'eseguibile del test del connettore.

Passaggi per testare un connettore

  1. Per prima cosa, aggiungere alla soluzione del progetto ConnectorTest La mia Azienda.Hub.Connettori.ConnettoreAEdificioSensorSimulatore.
Soluzione a uno sacco

In questo modo, puoi compilare e avviare entrambi i progetti in un'unica sessione, rendendo più facile il debug del connettore.

  1. Assicurati che il progetto ConnectorTester sia presente nel progetto startup.
  2. Testa la compilazione e correggi eventuali errori.
  3. Avvia il ConnectorTester e nei pannelli dei connettori clicca sull'icona .
  4. Tieni aperta la directory, useremo l'indirizzo più tardi.
  5. Aggiungi al progetto ConnectorTester un riferimento al progetto dll del tuo connettore (qui La mia Azienda.Hub.Connettori.ConnettoreAEdificioSensorSimulatore).
Progetto Connector Citato
  1. Apri le proprietà del progetto La mia Azienda.Hub.Connettori.ConnettoreAEdificioSensorSimulatore.
  2. Ci vediamo in partita Build/Eventi.
  3. In "Eventi post-costruzione" inserisci il seguente comando:
copy $(TargetPath) C:\Users\valentin\source\repos\ConnectorTester\bin\Debug\net9.0-windows\Connectors

dove C:\Users\valentin\source\repos\ConnectorTester\bin\Debug\net9.0-windows\Connectors è l'indirizzo della directory dei connettori letta dal progetto ConnectorTester che abbiamo aperto prima.

Copia automatica del connettore ad ogni costruzione

Questo comando copierà la DLL del connettore nella directory dedicata del ConnectorTester ad ogni compilazione.

  1. Compila il progetto ora BuildingSensorSimulator.
  2. Eseguilo, deve avviarsi https://localhost:7003.
Lancio di BuildingSensorSimulator
  1. Compila il progetto ora BuildingSensorSimulator.
  2. Eseguilo, deve avviarsi https://localhost:7003.

Ora siamo pronti a testare il nostro connettore.

  1. Esegui il progetto ConnectorTester.
  2. Il panel di Connettori dovrebbe mostrare il connettore ConnectorToBuildingSensorSimulator
Il connettore ConnectorToBuildingSensorSimulator è disponibile
  1. Posiziona un punto di rottura nel OnConnect della classe BuildingSensorSimulatorConnector.
Punto di interruzione in OnConnect
  1. Nel pannello del connettore, attiva il connettore Connettore BuildingSensorSimulator cliccando sul pulsante Switch associato (che dovrebbe diventare verde):

Il punto di interruzione si attiva e l'applicazione effettua la stop nel debug:

Punto di interruzione in OnConnect

Siamo in grado di debug del nostro connettore.

Passaggi per testare le maniglia

Qui presumiamo di aver avviato il nostro connettore nel debug dal ConnectorTester come spiegato nel punto precedente.

  1. Clicca su Manici dopo aver attivato il connettore Connettore BuildingSensorSimulator.
  2. Nel campo di input di questa scheda, inserisci il percorso come lo abbiamo definito nel tutorial collegato (Vedi punto dedicato)
BuildingSensor://101/floor
Punto di interruzione in OnConnect
  1. Fai lo stesso per i seguenti percorsi:
BuildingSensor://201/door
BuildingSensor://1/
  1. Valida con il Enter oppure tramite l'icona .
  2. Una volta aggiunto il percorso alla lista, puoi cliccare sul pulsante di validazione alla destra per chiedere all'Hub di tenerlo in considerazione
Considerazione dei manici

I pannelli di Registri e quello di Sessione specificare la corretta gestione del Handle:

Manette di tracciamento nel ConnectorTester