Segui

Come utilizzare Bravo API

Sommario
In questo articolo viene illustrato come usufruire di Bravo API per realizzare un Connettore generico di collegamento tra una Macchina IoT e Bravo Manufacturing.

1. Indice

    2. Come configurare il servizio Bravo API

    3. Endpoints API

    4. API Custom Error

    5. API Configurazione Connettori Generici

    6. API Dati Connettori Generici

    7. Come censire un Connettore generico su Bravo Manufacturing

2. Come configurare il servizio Bravo API
Bravo Manufacturing fornisce un punto di accesso per interagire con la piattaforma Bravo Manufacturing installata nella rete aziendale attraverso le Bravo REST API accessibili da qualsiasi postazione collegata sulla rete aziendale dove è stato installato Bravo Manufacturing.
E’ possibile configurare il servizio API tramite il “Centro di controllo servizi” presente nella macchina aziendale dove viene installato il componente Bravo Server.

Immagine1.png

Accedendo alla scheda di configurazione è possibile:

  • Specificare l’istanza/database Bravo Manufacturing con cui si vuole interagire tramite il servizio Bravo API
  • Scegliere la Porta server da utilizzare per accedere alle API. Nello specifico si intende il numero di porta utilizzata in combinazione con l’indirizzo IP LAN della macchina server su cui è stato installato il Bravo Server e su cui risiede anche il servizio Bravo API (esempio di URL: http://{Indirizzo IP}:{Porta}/api/v1/...)
  • Scegliere Il percorso dove salvare i dati di log

Immagine2.png

Nota: Per poter accedere al servizio di Web API da qualsiasi postazione presente in rete aziendale, verificare sulla macchina dove risiede il servizio, che il firewall abbia una regola di connessione in ingresso che permetta di utilizzarlo. Nel caso di utilizzo di Windows Firewall si può procedere in due modi:

  • Creare una regola di connessione in entrata specificando la porta utilizzata dal servizio Bravo API (protocollo TCP)
  • Creare una regola di connessione in entrata direttamente sul file eseguibile del servizio Bravo API
    (es. C:\Program Files (x86)\Antos\BravoAPI\BravoAPI.exe). In questo caso cambiando la porta server dalla scheda di configurazione sopra, la regola del firewall rimane sempre valida e non bisogna aggiornale come nel caso precedente.

Tra le API presenti attualmente possiamo individuare le seguenti categorie:

  • API Configurazione Connettori generici – recupero informazioni sulla configurazione dei connettori generici, dei dispositivi connessi e delle relative variabili
  • API Dati Connettori generici – scrittura di un set di valori da assegnare alle variabili dei connettori generici (chiamato “snapshots”) per l’esecuzione automatica di policy create all’interno di Bravo Manufacturing sulle macchine IoT.
    Le policy non sono altro che una combinazione di regole e azioni configurate nel database di Bravo Manufacturing.
    Le azioni scattano al verificarsi di una serie di condizioni, ossia le “regole”.
    Le regole da rispettare vengono verificate sulla base dei valori in ingresso assegnati alle variabili dei connettori.
    Esempi di azioni possono essere la registrazione di rilevazioni in Bravo Manufacturing come l’accensione o lo spegnimento di una macchina, o il versamento di pezzo prodotti.

3. Endpoints API
Di seguito vengono riportati tutti gli endpoint di tutte le categorie di API illustrate nel precedente capitolo.
La rappresentazione dei dati restituiti dalle chiamate alle API è in formato JSON.

API CONFIGURAZIONE CONNETTORI GENERICI

Endpoint Richiesta HTTP
/api/v1/connectors GET
/api/v1/connectors/{idGenericConnector:long} GET
/api/v1/connectors/{externalKey:Guid} GET

API DATI CONNETTORI GENERICI

Endpoint Richiesta HTTP
/api/v1/snapshotvalues POST

Le risposte API, sia in caso di successo che in caso di errore gestito, sono caratterizzate dallo stesso tipo di struttura JSON:

  • httpStatusCode: codice stato della richiesta HTTP
  • apiCustomError: codice di errore API Custom definito all’interno della piattaforma Bravo Manufacturing. Questo campo è presente anche in caso di chiamate API completate con successo. In questo caso specifico ritorna il codice ritornato è sempre 1000 (“Nessun Errore”). Vedi tabella dei codici nel capitolo “4. API Custom Error”
  • responseData: l’oggetto contenente il risultato dei dati di risposta. Di solito contiene i dati recuperati tramite chiamate HTTP GET
  • apiCustomErrorMessage (opzionale): messaggio di errore relativo al codice API Custom Error. Viene compilato in caso di errore singolo
  • errors (opzionale): lista degli errori correlati al codice API Custom Error. Compilato in caso di risposta con errori multipli
  • exception (opzionale): oggetto contenente informazioni su un errore non gestito
  • warnings (opzionale): lista dei warning. A differenza degli errori non incidono sul fallimento delle chiamate API ma sono comunque notifiche da prendere in considerazione

4. API Custom Error
Di seguito viene riportata la lista dei codici “API Custom Error” utilizzati attualmente dalle Bravo API e definiti all’interno delle logiche di Bravo Manufacturing.

API CUSTOM ERROR

Codice Valore enumerativo Descrizione
1000 NoError Nessun errore
1001 Unknown Errore sconosciuto
1004 InputDataNotValid Dato di input non validi
1014 ConnectorNotFound Connettore padre non trovato
1015 GenericConnectorNotFound Connettore generico non trovato
1016 DisabledGenericConnector Connettore generico disabilitato
1017 GenericDeviceVariablesNotFound Variabile del Dispositivo di un Connettore generico
non trovata

5. API Configurazione Connettori Generici

5.1 GET /api/v1/connectors
Ritorna informazioni sulla configurazione di una lista di connettori generici inseriti in Bravo Manufacturing. Il dato JSON che viene restituito contiene i seguenti campi:

  • httpStatusCode: codice dello stato di richiesta HTTP GET
  • apiCustomError: codice di errore interno a Bravo Manufacturing
  • responseData: lista dei connettori generici. Ciascun connettore contiene i seguenti campi:
    • idGenericConnector: identificativo numerico del connettore generico
    • idERP: codice alfanumerico del connettore generico
    • name: nome del connettore generico
    • description: descrizione del connettore generico
    • externalKey: chiave esterna (GUID) del connettore generico
    • disableConnector: valore che indica se il connettore è stato disabilitato
    • connectorType: tipo di connettore (allo stato attuale il valore è sempre 1)
    • deleted: valore che indica se il connettore è stato eliminato logicamente in Bravo
    • bmCreated: data creazione del connettore generico
    • bmUpdated: data ultimo aggiornamento del connettore generico

Note: I campi bmCreated e bmUpdated non contengono dati significativi sulla creazione o aggiornamento poiché non sono dati presenti nella tabella dei connettori generici del database di Bravo Manufacturing. Per tale motivo, allo stato attuale, vengono impostati con la data ora in cui è stata effettuata la richiesta.

5.1.1 Parametri URL
Nessun parametro

5.1.2 Richiesta di esempio

URL di esempio http://192.168.0.1/api/v1/connectors
Body Vuoto

5.1.3 Risposta di esempio

Status Code - 200 OK

Body:

{
"httpStatusCode": 200,
"apiCustomError": 1000,
"responseData": [
{
"idGenericConnector": 1,
"idERP": "GEN-001",
"name": "GEN-001",
"description": "Generic Connector 001",
"externalKey": "b38a8001-a3eb-481c-8ee9-9843fb6bdfe5",
"disableConnector": false,
"connectorType": 1,
"deleted": false,
"bmCreated": "2018-10-19T14:39:10.3936326+02:00",
"bmUpdated": "2018-10-19T14:39:10.3936368+02:00"
},
{
"idGenericConnector": 2,
"idERP": "GEN-002",
"name": "GEN-002",
"description": "Generic Connector 002",
"externalKey": "c3f14165-d993-4268-9533-7cf29398ab57",
"disableConnector": false,
"connectorType": 1,
"deleted": false,
"bmCreated": "2018-10-19T14:39:10.3936503+02:00",
"bmUpdated": "2018-10-19T14:39:10.3936509+02:00"
}
]
}

Come già accennato sopra, in caso di risposta con successo, il codice ApiCustomError restituisce sempre il valore 1000 che indica lo stato di “NoError”. Stessa cosa avviene per le API successive in caso di risposta affermativa.

Status Code - 204 No Content
Niente da restituire

5.2 GET /api/v1/connectors/{idGenericConnector:long}
Ritorna informazioni dettagliate sulla configurazione di un connettore generico inserito in Bravo Manufacturing. Il dato JSON che viene restituito contiene i seguenti campi:

  • httpStatusCode: codice dello stato di richiesta HTTP GET
  • apiCustomError: codice di errore interno a Bravo Manufacturing
  • responseData: oggetto contenente le informazioni di configurazione del connettore generico e dei dispositivi e variabili che lo compongono
    • connector: contiene le informazioni di configurazione del connettore generico. I campi sono gli stessi già visti nel paragrafo 5.1.
      Nello specifico quelli contenuti nella riposta JSON all’interno del campo responseData.
    • devices: lista contenente i dispositivi del connettore generico. Ogni elemento della lista identifica un device e contiene i seguenti campi:
      • device: contiene i dati di dettaglio del dispositivo corrente:
        • idGenericDevice: identificativo numerico del dispositivo
        • idGenericConnector: identificativo numerico del connettore generico del
          dispositivo
        • name: nome del dispositivo
        • category: categoria a cui appartiene il dispositivo
        • externalKey: chiave esterna (alfanumerica) del dispositivo
        • disableDevice: indica se il dispositivo è stato disabilitato
        • deleted: indica se il dispositivo è stato eliminato logicamente in Bravo Manufacturing
        • bmCreated: data creazione del dispositivo
        • bmUpdated: data ultimo aggiornamento del dispositivo
      • variables: lista contenente le variabili del dispositivo. Ogni elemento della lista identifica una variabile e contiene i seguenti campi:
        • idGenericDeviceVariable: identificativo numerico della variabile
        • idGenericDevice: identificativo numerico del dispositivo della variabile
        • name: nome della variabile
        • description: descrizione della variabile
        • category: categoria a cui appartiene la variabile
        • externalKey: chiave esterna (alfanumerica) della variabile
        • minValue: valore minimo di tolleranza del variabile
        • maxValue: valore massimo di tolleranza del variabile
        • unit: unità di misura del variabile
        • dataType: tipologia del dato della variabile
        • enabled: indica se la variabile è utilizzata all’interno di Bravo Manufacturing
        • deleted: indica se la variabile è stata eliminata logicamente in Bravo Manufacturing
        • bmCreated: data creazione della variabile
        • bmUpdated: data ultimo aggiornamento della variabile

Note: Come già visto per i connettori, anche in questo caso i campi bmCreated e bmUpdated non contengono dati significativi sulla creazione o aggiornamento poiché non sono dati presenti nelle tabelle dispositivi e variabili del database di Bravo Manufacturing. Per tale motivo, allo stato attuale, vengono impostati con la data ora in cui è stata effettuata la richiesta.

Il campo dataType contiene il codice che indica il tipo di dato che contiene la variabile.
Di seguito viene riportata la tabella con tutti i valori dell’enumerativo.

dataType Tipologia di Dato
0 String
1 Integer
2 Double
3 Boolean

5.2.1 Parametri URL
idGenericConnector: identificativo numerico del dispositivo

5.2.2 Richiesta di esempio

URL di esempio http://192.168.0.1/api/v1/connectors/2
Body Vuoto

5.2.3 Risposta di esempio

Status Code - 200 OK

Body:

{
"httpStatusCode": 200,
"apiCustomError": 1000,
  "responseData": {
"connector": {
"idGenericConnector": 2,
"idERP": "GEN-002",
"name": "GEN-002",
"description": "Generic Connector 002",
"externalKey": "c3f14165-d993-4268-9533-7cf29398ab57",
"disableConnector": false,
"connectorType": 1,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2476461+02:00",
"bmUpdated": "2018-10-10T16:28:11.2476467+02:00"
},
"devices": [
{
"device": {
"idGenericDevice": 2,
"idGenericConnector": 2,
"name": "Zapper v2",
"category": "Classic",
"description": "Console Entertainment System",
"externalKey": "D001",
"disableDevice": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2522121+02:00",
"bmUpdated": "2018-10-10T16:28:11.2522139+02:00"
},
"variables": [
{
"idGenericDeviceVariable": 5,
"idGenericDevice": 2,
"name": "Trigger sensor v2",
"description": "",
"category": "Buttons",
"externalKey": "V001",
"minValue": 0,
"maxValue": 100,
"unit": "Point",
"dataType": 2,
"enabled": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2545215+02:00",
"bmUpdated": "2018-10-10T16:28:11.2545227+02:00"
},
{
"idGenericDeviceVariable": 6,
"idGenericDevice": 2,
"name": "Basic voltage v2",
"description": "",
"category": "Electric",
"externalKey": "V002",
"minValue": 0,
"maxValue": 12,
"unit": "V",
"dataType": 2,
"enabled": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2545269+02:00",
"bmUpdated": "2018-10-10T16:28:11.2545275+02:00"
},

]
},
{
"device": {
"idGenericDevice": 3,
"idGenericConnector": 2,
"name": "Joypad classic",
"category": "",
"description": "Console Entertainment System",
"externalKey": "D002",
"disableDevice": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2522193+02:00",
"bmUpdated": "2018-10-10T16:28:11.2522199+02:00"
},
"variables": [
{
"idGenericDeviceVariable": 10,
"idGenericDevice": 3,
"name": "Button A",
"description": "",
"category": "Buttons",
"externalKey": "V001",
"minValue": 0,
"maxValue": 1,
"unit": "",
"dataType": 3,
"enabled": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2571778+02:00",
"bmUpdated": "2018-10-10T16:28:11.2571793+02:00"
},
{
"idGenericDeviceVariable": 11,
"idGenericDevice": 3,
"name": "Button B",
"description": "",
"category": "Buttons",
"externalKey": "V002",
"minValue": 0,
"maxValue": 1,
"unit": "",
"dataType": 3,
"enabled": false,
"deleted": false,
"bmCreated": "2018-10-10T16:28:11.2571829+02:00",
"bmUpdated": "2018-10-10T16:28:11.2571835+02:00"
},

]
}
]
}
}

Status Code - 404 Not Found
1) ApiCustomError 1015 - GenericConnectorNotFound

Body:

{
"httpStatusCode": 404,
"apiCustomError": 1015,
"responseData": null,
"apiCustomErrorMessage": "No Generic Connector found with IdGenericConnector 3"
}

In questo caso viene passato come parametro URL un identificativo numerico di un connettore inesistente o cancellato logicamente all’interno del database di Bravo Manufacturing.
Il codice APICustomError restituito è il 1015 e indica che il connettore generico non è stato trovato
“GenericConnectorNotFound” (inesistente o eliminato logicamente).
Nel campo APICustomErrorMessage viene descritto l’errore nel dettaglio.

5.3 GET /api/v1/connectors/{externalKey:Guid}
Come già visto nel paragrafo precedente 5.2 anche questa API ritorna informazioni di dettaglio sulla configurazione di un connettore generico inserito in Bravo Manufacturing.
Il dato JSON restituito è esattamente identico.
L’unica differenza sta nel fatto di utilizzare come parametro URL il campo di tipo Guid externalKey ossia la chiave esterna del connettore generico, anziché l’identificativo numerico IdGenericConnector.

5.3.1 Parametri URL
externalKey: chiave esterna (GUID) del connettore generico

5.3.2 Richiesta di esempio

URL di esempio http://192.168.0.1/api/v1/connectors/c3f14165-d993-4268-9533-7cf29398ab57
Body Vuoto

5.3.3 Risposta di esempio
Status Code - 200 OK
Body: Il risultato è identico a quello presente nella sezione “5.2.3 Risposta di esempio – Status Code: 200 OK” del paragrafo 5.2.

Status Code - 404 Not Found
1) ApiCustomError 1015 - GenericConnectorNotFound

Body:

{
"httpStatusCode": 404,
"apiCustomError": 1015,
"responseData": null,
"apiCustomErrorMessage": "No Generic Gonnector found with ExternalKey c3f14165-d993-4268-9533-
7cf29398ab58"
}

Il risultato è identico a quello presente nella sezione “5.2.3 Risposta di esempio – Status Code: 404 Not Found” del paragrafo 5.2 tranne per il messaggio che in questo caso è riferito alla chiave esterna.

6. API Dati Connettori Generici

6.1 POST /api/v1/snapshotvalues
Riceve in input un set di valori da assegnare alle variabili dei dispositivi di uno specifico connettore generico registrato nel database di Bravo Manufacturing.
Le logiche interne di Bravo Manufacturing provvedono a creare uno snapshot composto da questo set di valori all’interno del database di Bravo Manufacturing.
Lo snapshot viene successivamente utilizzato per eseguire le policy realizzate in Bravo Manufacturing per quello specifico connettore generico.

Per passare i valori delle variabili bisogna inserire nel Body della chiamata HTTP POST un oggetto JSON composto nel modo seguente:

  • ConnectorKey: chiave esterna (GUID) del connettore generico. Corrisponde al campo externalKey del connettore generico, già visto nei paragrafi precedenti.
  • Variables: la lista dei valori delle variabili del connettore generico. Per ciascuna variabile bisogna specificare:
    • ExternalKey: chiave esterna (alfanumerica) della variabile. Il campo coincide con la
      proprietà “externalKey” degli oggetti contenuti nella lista variables dell’oggetto JSON
      restituito dalle API GET dei paragrafi 5.2 e 5.3
      (api/v1/connectors/{IdGenericConnector:long} o api/v1/connectors/{externalKey:Guid}).
    • DataValue: valore della variabile
    • DeviceExternalKey: chiave esterna del dispositivo a cui appartiene la variabile
    • DateTimeStamp: (opzionale - default: true) data ora di assegnazione valore
    • Quality: (opzionale - default:1753-01-01 00:00:00.000) indica se è definita o meno la qualità della variabile

Attenzione: Per quanto riguarda l’insieme dei dati da passare in input, non bisogna passare
obbligatoriamente una lista valori per ogni variabile presente all’interno del connettore. Possiamo quindi inviare un set di valori per un sottoinsieme di variabili. A seguito saranno poi le logiche di Bravo Manufacturing che si gestiranno snapshot di dimensioni differenti.

6.1.1 Parametri URL
Nessun parametro

6.1.2 Richiesta di esempio

URL di esempio http://192.168.0.1/api/v1/snapshotvalues
Body

{
   "ConnectorKey": "c3f14165-d993-4268-9533-7cf29398ab57",
   "Variables": [
                     {
                     "ExternalKey": "V001",
                     "DataValue": "10,2",
                     "DeviceExterna1lKey": "D001" ,
                     "DataTimestamp": "2018-09-24T15:00:10.200Z",
                     "DataQuality" : false
                 },
                     {
                     "ExternalKey": "V002",
                     "DataValue": "15,2",
                     "DeviceExternalKey": "D001"
                },
                     {
                     "ExternalKey": "V003",
                     "DataValue": "",
                     "DeviceExternalKey": "D001"
                },
                     {
                     "ExternalKey": "V004",
                     "DataValue": false,
                     "DeviceExternalKey": "D001"
                },
                     {
                     "ExternalKey": "V005",
                     "DataValue": "3,2",
                     "DeviceExternalKey": "D001"
                },
                     {
                     "ExternalKey": "V001",
                     "DataValue": false,
                     "DeviceExternalKey": "D002"
                },
                     {
                     "ExternalKey": "V002",
                     "DataValue": true,
                     "DeviceExternalKey": "D002"
                },
                     {
                      "ExternalKey": "V003",
                      "DataValue": true,
                      "DeviceExternalKey": "D002"
                 },
                     {
                     "ExternalKey": "V004",
                     "DataValue": true,
                     "DeviceExternalKey": "D002"
                 }
     ]
}

Nel caso sopra sono stati passati in input una lista di valori per tutte le variabili che risultano abilitate all’interno del connettore. Come già specificato è possibile passare anche un input di valori per un sottoinsieme di variabili.

6.1.3 Risposta di esempio

Status Code - 201 Created
Body:


{
"httpStatusCode": 201,
"apiCustomError": 1000,
"responseData": null
}

Status Code - 201 Created (with warnings)
Nel caso in cui si verifichino degli warning in fase di validazione dei dati di input, la creazione dello snapshot e quindi il risultato dell’API è sempre positivo con codice 201. Tuttavia vengono riportati nella risposta JSON la lista degli warning che si sono verificati.

Tra i possibili warning abbiamo:

  • Dispositivo disabilitato
  • Variabile disabilitata
  • Valore variabile risulta fuori dal range prestabilito (Min/Max). Questo controllo avviene nei casi in cui la variabile è di tipo numerico.

Esempio Body:

{
"warnings": [
"Out of range value of Variable 'V001' (Device:'D001'): The Value '10,2' the value is out of
range (Min value:'0' Max value:'5')",
"The Variable 'V002' (Device:'D001') is currently disabled.",
"Device 'D002': The device that contains the variable 'V001' is currently disabled.",
"Device 'D002': The device that contains the variable 'V002' is currently disabled.",
"Device 'D002': The device that contains the variable 'V003' is currently disabled.",
"Device 'D002': The device that contains the variable 'V004' is currently disabled."
],
"httpStatusCode": 201,
"apiCustomError": 1000,
"responseData": null
}

Status Code: 404 Not Found
Di seguito viene riportata una lista di casi in cui viene restituito un JSON con HTTP Status 404 e con specifici codici ApiCustomError in base al tipo di errore.

1) ApiCustomError 1015 - GenericConnectorNotFound

Body:

{
"httpStatusCode": 404,
"apiCustomError": 1015,
"responseData": null,
"apiCustomErrorMessage": "No Generic connector found with ExternalKey:'c3f14165-d993-4268-9533-
7cf29398ab58'. The Generic connector doesn't exist or has been deleted."
}

2) ApiCustomError 1014 - ConnectorNotFound

Body:

{
"httpStatusCode": 404,
"apiCustomError": 1014,
"responseData": null,
"apiCustomErrorMessage": "No Connector found for Generic Connector 'c3f14165-d993-4268-9533-
7cf29398ab57'. The Connector doesn't exist or has been deleted."
}

Status Code: 400 Bad Request
1) ApiCustomError 1016 - DisabledGenericConnector

Body:

{
"httpStatusCode": 400,
"apiCustomError": 1016,
"responseData": null,
"apiCustomErrorMessage": "The Generic connector 'c3f14165-d993-4268-9533-7cf29398ab57' is
disabled."
}

2) ApiCustomError 1017 – GenericDeviceVariablesNotFound

Body:

{
"httpStatusCode": 400,
"apiCustomError": 1017,
"responseData": null,
"apiCustomErrorMessage": "No Variables found for Generic Connector 'c3f14165-d993-4268-9533-
7cf29398ab57'."
}

3) ApiCustomError 1004 – InputDataNotValid
Nel caso in cui gli errori precedenti non si verificano, la validazione dei dati in input procede passa ad uno step successivo, in cui vengono applicate le logiche di validazione sulle singole variabili. Di seguito viene riportata una lista dei possibili errori di validazione che possono verificarsi:

  • Dispositivo non trovato nel connettore generico
  • Variabile non trovata nel dispositivo
  • Valore non valido per la tipologia dati della variabile
  • Occorrenze multiple della stessa variabile

Esempio di Body:

{
"errors": [
"Invalid Variable 'V001': The related Device 'D0011' was not found into the Generic Connector
'c3f14165-d993-4268-9533-7cf29398ab57'. The Device doesn't exist or has been deleted or related to
another connector.",
"Invalid Variable 'V0022': Variable not found in the Device 'D001'. The Variable doesn't exist
or has been deleted or related to another device/connector.",
"Invalid Value for Variable 'V004' (Device:'D001'): The DataValue 'test' is not valid. The
Variable Type is 'Boolean'",
"Multiple occurrences of the Variable 'V005' (Device:'D001'): Only one occurrence must be
entered in the input data."
],
"httpStatusCode": 400,
"apiCustomError": 1004,
"responseData": null
}

7. Come censire un Connettore generico su Bravo Manufacturing
Un Connettore generico, dopo essere stato realizzato e predisposto per comunicare con una Macchina IoT, deve essere configurato su Bravo Manufacturing per realizzare la connessione tra i due prodotti.
Per censire un Connettore generico su Bravo Manufacturing seguire le indicazioni sotto riportate:

  1. aprire Bravo Desktop;
  2. andare nella voce di menù in [Strumenti > Bravo IoT Connectors > Connettore generico Bravo];
  3. premere sul pulsante "Nuovo" Nuovo.png nella barra degli strumenti;
  4. indicare un codice, un nome e una descrizione per il Connettore generico negli appositi campi;
  5. nel campo "Chiave esterna" viene generato e visualizzato automaticamente un codice univoco per interfacciare Bravo Manufacturing al Connettore generico, il codice deve essere copiato, si può utilizzare l'apposito pulsante di copia Copia.png  e poi riportato nel Connettore generico;
  6. il file di configurazione JSON generato dal Connettore generico, sulla base del codice indicato al punto precedente, deve essere caricato nel campo "File di configurazione", utilizzando il pulsante di ricerca\caricamento file Cerca.png; in questo modo vengono caricate le informazioni relative ai segnali gestiti dal Connettore generico;
  7. premere sul pulsante "Salva" per confermare l'inserimento dell'anagrafica Connettore generico;
  8. aprire l'anagrafica di dettaglio del Connettore generico censito;
  9. nella scheda "Dispositivi" è possibile verificare i dispositivi ed i relativi segnali collegati al Connettore generico.

Immagine5.png

NOTA
Nell'anagrafica di dettaglio di un Connettore generico, senza essere in stato di modifica, premendo sul pulsante "Aggiorna dispositivi dal file" (in basso a sinistra nella scheda "Dispositivi"), è possibile aggiornare la lista dei dispositivi connessi al Connettore generico.

 

Altre domande? Invia una richiesta

Commenti

Powered by Zendesk