Diagnostica
Trackle Library offre un set di metodi per inviare le informazioni relative allo stato di salute del dispositivo al Cloud. Questa funzionalità è essenziale per il monitoraggio dei potenziali problemi hardware o di rete che possono emergere dopo l'installazione dei dispositivi sul campo.
Le informazioni di diagnostica (HealthCheck) sono suddivise in tre categorie: Cloud, System e Network. La diagnostica Cloud (numero di connessioni, disconnessioni, roundtrip time, ecc...) viene gestita in maniera autonoma dalla Trackle Library.
Per configurare, valorizzare o aggiornare un dato di diagnostica deve essere chiamata la funzione specifica della categoria (System o Network), indicando la "chiave" del parametro (elencate sotto) ed il relativo valore.
Ad esempio, per aggiornare il numero di tentativi di connessione alla rete e specificare la memoria ram totale del dispositivo, devono essere utilizzati i seguenti comandi:
System: informazioni sul funzionamento del sistema:
SYSTEM_LAST_RESET_REASON: Fornisce il motivo dell'ultimo reset del sistema. Può aiutare a identificare la causa di riavvii o reset del dispositivo.
SYSTEM_FREE_MEMORY: Restituisce la quantità di memoria libera disponibile nel sistema. Questa chiave può essere utilizzata per monitorare l'utilizzo della memoria.
SYSTEM_BATTERY_CHARGE: Rappresenta lo stato di carica della batteria del dispositivo in percentuale. Questa chiave fornisce informazioni sulla carica residua della batteria.
SYSTEM_SYSTEM_LOOPS: Fornisce il numero di cicli di loop del sistema. Questa chiave può essere utilizzata per tenere traccia del numero di iterazioni del ciclo principale del sistema.
SYSTEM_APPLICATION_LOOPS: Restituisce il numero di cicli di loop dell'applicazione. Questa chiave può essere utilizzata per monitorare il numero di iterazioni del ciclo dell'applicazione.
SYSTEM_UPTIME: Rappresenta il tempo trascorso (in secondi) dall'ultima accensione o riavvio del dispositivo.
SYSTEM_BATTERY_STATE: Lo stato di carica attuale della batteria. I possibili valori sono unknown, not_charging, charging, charged, discharging, fault, disconnected.
SYSTEM_POWER_SOURCE: Un'enumerazione che descrive la fonte di energia attuale. I valori possibili sono unknown, VIN, USB host, USB adapter, USB otg.
SYSTEM_TOTAL_RAM: la memoria RAM totale a disposizione del dispostivo.
SYSTEM_USED_RAM: la memoria RAM utilizzata dal dispositivo.
Network: informazioni sulla rete e sulla qualità della connessione:
NETWORK_CONNECTION_STATUS: Stato della connessione di rete. Quando si riceve un evento vitale attraverso il Cloud è necessario che sia sempre connesso. I valori possibili sono turned_off, turning_on, disconnected, connecting, connected, disconnecting, turning_off.
NETWORK_CONNECTION_ERROR_CODE: Un codice di errore specifico della piattaforma restituito dalla funzione di basso livello del sistema operativo del dispositivo per l'evento di connettività di rete più recente.
NETWORK_DISCONNECTS: Conteggio delle disconnessioni di rete .
NETWORK_CONNECTION_ATTEMPTS: Numero di tentativi necessari per stabilire una connessione di rete .
NETWORK_DISCONNECTION_REASON: Ultimo motivo per cui la rete si è disconnessa. I valori possibili sono none, error, user, network_off, listening, sleep, reset.
NETWORK_IPV4_ADDRESS: Rappresenta l'indirizzo IPv4 locale del dispositivo. Questo indirizzo è utile per identificare il dispositivo sulla rete.
NETWORK_IPV4_GATEWAY: Restituisce l'indirizzo del gateway IPv4 utilizzato dal dispositivo per comunicare con la rete.
NETWORK_RSSI: misura stimata di quanto bene un dispositivo può sentire, rilevare e ricevere segnali da qualsiasi punto di accesso o da un router specifico.
NETWORK_SIGNAL_STRENGTH_VALUE: valore della potenza del segnale utile ricevuto. Varia, circa, da -30 (valore migliore) a -130 (valore peggiore).
NETWORK_SIGNAL_STRENGTH: valore della potenza del segnale in percentuale; più si avvicina a 100, più alta è la qualità. Come regola generale, più il dispositivo è vicino a una torre o un router, maggiore sarà la potenza del segnale.
NETWORK_SIGNAL_QUALITY: valore della qualità del segnale in percentuale; più si avvicina a 100, più alta è la qualità. Come regola generale, minore è il numero di dispositivi nelle immediate vicinanze che comunicano utilizzando frequenze radio simili, migliore sarà la qualità del segnale
NETWORK_SIGNAL_QUALITY_VALUE: valore che indica il grado di qualità del segnale agganciato considerando gli RB (Resource Block) allocati, l'SNR ed influenzato dal carico della cella specifica agganciata. Varia da -1 (valore migliore) a -20 (valore peggiore). Il range "ottimale" si aggira dai -6 ai -9 e quello di "carico" dai -10 ai -13/-14.
NETWORK_ACCESS_TECNHOLOGY: tipo di tecnologia utilizzata (GSM, LTE, WI-FI, ecc...) di tipo
hal_net_access_tech_t
NETWORK_CELLULAR_CELL_GLOBAL_IDENTITY_MOBILE_COUNTRY_CODE: valore decimale che identifica la nazionalità dell'operatore all'interno della rete PLMN (Public Land Mobile Network) GSM. Per l'Italia questo codice è 222.
NETWORK_CELLULAR_CELL_GLOBAL_IDENTITY_MOBILE_NETWORK_CODE: valore decimale che identifica univocamente l'operatore all'interno della PLMN nazionale. In Italia per esempio, vale 01 per Tim, 10 per Vodafone, 88 per Wind.
NETWORK_CELLULAR_CELL_GLOBAL_IDENTITY_LOCATION_AREA_CODE: valore che identifica univocamente una Location Area entro una PLMN. La grandezza di quest'area non è fissa, ma dipende da come è progettata la rete.
NETWORK_CELLULAR_CELL_GLOBAL_IDENTITY_CELL_ID: valore che identifica la cella attualmente agganciata. Questo numero dipende dal gestore e dall'area.
NETWORK_MAC_ADDRESS_OUI: Restituisce il primo componente dell'indirizzo MAC (Organizationally Unique Identifier) associato al dispositivo.
NETWORK_MAC_ADDRESS_NIC: Restituisce il secondo componente dell'indirizzo MAC (Network Interface Card) associato al dispositivo.
La diaagnostica del dispositivo può essere inviata al Cloud in modo automatico o manuale.
Per configurare l'invio automatico è necessario definire l'intervallo di tempo, in millisecondi, tra due invii consecutivi attraverso la funzione setPublishHealthCheckInterval(uint32_t interval)
.
L'invio manuale avviene chiamando funzione publishHealthCheck().
Last updated