Diagnostica

Trackle Library fornisce dei metodi per inviare lo stato di salute del dispositivo al Cloud. Questa funzionalità permette di monitorare gli eventuali problemi hardware o di rete che si possono presentate una volta che i dispositivi sono stati installati sul campo.

I valori di HealthCheck disponibili sono raggruppati in 3 categorie:

Cloud: informazioni sullo stato della connessione al cloud:

  • CLOUD_CONNECTION_STATUS: Stato della connessione cloud. Quando si riceve un evento vitale attraverso il Cloud è necessario che sia sempre connesso. I valori possibili sono disconnected, connecting, connected, disconnecting.

  • CLOUD_CONNECTION_ERROR_CODE: Un codice di errore specifico della piattaforma restituito dalla funzione del sistema operativo del dispositivo di basso livello per l'evento di connettività cloud più recente.

  • CLOUD_DISCONNECTS: Il numero di disconnessioni impreviste dal cloud dall'ultimo reset.

  • CLOUD_CONNECTION_ATTEMPTS: Numero di tentativi effettuati per stabilire la connessione al cloud.

  • CLOUD_DISCONNECTION_REASON: Ultimo motivo per cui la connessione cloud è stata interrotta. I valori possibili sono none, error, user, network_disconnect, listening.

  • CLOUD_REPEATED_MESSAGES: Il numero di volte in cui un messaggio CoAP è stato reinviato dal dispositivo al cloud a causa della mancata ricezione del messaggio originale.

  • CLOUD_UNACKNOWLEDGED_MESSAGES: Il numero di messaggi CoAP che sono stati reinviati per il numero massimo di volte dal dispositivo, ancora non riconosciuti dal cloud e quindi eliminati.

  • CLOUD_RATE_LIMITED_EVENTS: Il conteggio attuale dei publish che hanno causato un evento di rate limited da quando il dispositivo è stato riavviato.

  • CLOUD_COAP_ROUND_TRIP: Il tempo di round-tirp (andata e ritorno) dell'ultimo messaggio inviato al cloud, in millisecondi

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.

Per valorizzare un parametro di diagnostica va chiamata la funzione relativa alla categoria (Power, Network o System); questa funzione riceve come parametri l'identificativo (costante) ed il valore a seconda del tipo.

trackleDiagnosticCloud(trackle_s, CLOUD_CONNECTION_ATTEMPTS, 5);
trackleDiagnosticNetwork(trackle_s, NETWORK_CONNECTION_ATTEMPTS, 10);
trackleDiagnosticSystem(trackle_s, SYSTEM_TOTAL_RAM, 10000);

L'HealthCheck può essere inviato al Cloud in modo automatico o manuale. Per configurare l'invio automatico è necessario definire l'intervallo ti tempo tra due invii consecutivi attraverso la funzione setPublishHealthCheckInterval(uint32_t interval).

L'invio manuale avviene chiamando funzione publishHealthCheck().

// invia la diagnostica ogni minuto
trackleSetPublishHealthCheckInterval(trackle_s, 60*1000);

// invia la diagnostica
tracklePublishHealthCheck(trackle_s);

Last updated