{"id":7857,"date":"2022-03-22T17:29:30","date_gmt":"2022-03-22T16:29:30","guid":{"rendered":"http:\/\/documentation-wp.hub.av.priv\/aurora-vision-apis\/user-guide\/status-management\/"},"modified":"2022-06-03T16:24:01","modified_gmt":"2022-06-03T15:24:01","slug":"status-management","status":"publish","type":"page","link":"http:\/\/documentation-wp.hub.av.priv\/it\/aurora-vision-apis\/user-guide\/status-management\/","title":{"rendered":"Gestione Stati Errore"},"content":{"rendered":"\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Qualsiasi entit\u00e0 registrata in Aurora Vision \u00e8 caratterizzata da uno <code>Status<\/code> che consente di identificare la presenza di eventi di errore attivi.<\/p>\n\n\n\n<p>Aurora Vision \u00e8 in grado di valutare lo stato di un impianto, e di conseguenza di tutte le entit\u00e0 in esso registrate, solo se l&#8217;impianto \u00e8 correttamente associato ad un profilo di valutazione errori. Qualsiasi impianto registrato in un portfolio verr\u00e0 automaticamente assegnato al profilo di errore predefinito creato da Aurora Vision; tuttavia l&#8217;amministratore di un portfolio ha sempre la possibilit\u00e0 di creare diversi profili di errore in modo personalizzato e questi ultimi possono essere associati a diversi impianti. In definitiva, quindi, potrebbero esserci impianti che hanno valutazioni diverse perch\u00e9 associati a profili di errore diversi.<\/p>\n\n\n\n<p>Divideremo questo capitolo in pi\u00f9 pagine, in modo da fornire una visione completa e coerente di come funziona la gestione degli eventi di errore: <\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul><li>A <strong>Pagina 2<\/strong> analizzeremo la struttura del profilo di errore predefinito e le categorie in esso contenute;<\/li><li>A <strong>Pagina 3<\/strong> analizzeremo le principali categorie di errore esistenti su Aurora Vision, fornendo una panoramica generale;<\/li><li>A <strong>Pagina 4<\/strong> analizzeremo le APIs che consentono di valutare lo status e gli eventi di errore di entit\u00e0 di livelli gerarchici differenti;<\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Struttura Generale Profili di Errore<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Per fornire maggiore chiarezza, analizzeremo il profilo di errore predefinito che Aurora Vision crea per ciascun portfolio (<em>che non pu\u00f2 essere modificato<\/em> ).<\/p>\n\n\n\n<p>Su Aurora Vision un profilo di errore \u00e8 sempre identificato da un <strong>Nome<\/strong>, un <strong>Acronimo <\/strong>ed un <strong>Creatore <\/strong>e contiene al suo interno una serie di <strong>Categorie Errore<\/strong> che hanno lo scopo di valutare la presenza di eventi di errore per gli impianti a cui \u00e8 assegnato il profilo generando cos\u00ec l&#8217;attivazione di eventi<code> Profile<\/code> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles-2-1024x408.jpg\" alt=\"\" class=\"wp-image-7082\" width=\"1024\" height=\"408\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles-2-1024x408.jpg 1024w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles-2-300x119.jpg 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles-2-768x306.jpg 768w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles-2.jpg 1236w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>L&#8217;amministratore di un portfolio, in base alle sue esigenze ed agli impianti a cui deve essere associato il profilo di errore, ha piena libert\u00e0 nella creazione dei profili di errore e nell&#8217;aggiunta di specifiche categorie di errore al suo interno e pu\u00f2 anche decidere i parametri di valutazione per ciascuna categoria di errore.<\/p>\n\n\n\n<p>Ci sono 4 parametri principali che possono essere modificati:<\/p>\n\n\n\n<ul><li><strong>Tempo Trascorso<\/strong>: indica il tempo che deve trascorrere prima che Aurora Vision, una volta rilevato l&#8217;errore, lo mandi in trigger per mostrarlo come attivo nei livelli gerarchici interessati. Il valore minimo che pu\u00f2 essere assegnato, per evitare l&#8217;innesco di falsi errori, \u00e8 di 15 minuti;<\/li><li><strong>Valutazione<\/strong>: indica la finestra temporale per la quale Aurora Vision valuter\u00e0 la presenza o l&#8217;assenza di errori relativi a quella particolare categoria, secondo i parametri impostati. \u00c8 possibile scegliere finestre temporali diverse, ma occorre tenere presente che al di fuori della finestra definita Aurora Vision non valuter\u00e0 quella specifica categoria di errore appartenente a quel profilo di errore;<\/li><li><strong>Gravit\u00e0<\/strong>: indica la gravit\u00e0 dell&#8217;errore, che \u00e8 mappato uno a uno con lo <code>Status<\/code> dell&#8217;entit\u00e0 gerarchica interessata dall&#8217;errore. Esistono 4 livelli di gravit\u00e0: <code>INFO <\/code>(<em>evento informativo<\/em> ), <code>LOW <\/code>(<em>evento di gravit\u00e0 bassa<\/em> ), <code>MEDIUM <\/code>(<em>evento di gravit\u00e0 media<\/em> ), <code>HIGH <\/code>(<em>evento di alta gravit\u00e0<\/em> );<\/li><li><strong>Soglia<\/strong>: l&#8217;evento di errore si attiva solo se viene superata la soglia indicata. Questo parametro non \u00e8 presente per tutte le categorie di errore (<em>per maggiori dettagli fare riferimento a Pagina 3<\/em> ).<\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Ad esempio l&#8217;errore <code>Power Off<\/code> (<code>PWROFF<\/code>) \u00e8 composto dai seguenti parametri:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"120\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles_PWROFF-1024x120.jpg\" alt=\"\" class=\"wp-image-7120\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles_PWROFF-1024x120.jpg 1024w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles_PWROFF-300x35.jpg 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles_PWROFF-768x90.jpg 768w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_profiles_PWROFF.jpg 1103w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul><li><strong>Elapsed Time<\/strong>: 8 hours<\/li><li><strong>Evaluation<\/strong>: During Daylight &#8211; 2 hours after sunrise and before sunset<\/li><li><strong>Severity<\/strong>: MEDIUM<\/li><li><strong>Threshold<\/strong>: 100 W\/m<sup>2<\/sup><\/li><\/ul>\n\n\n\n<p>Ci\u00f2 significa che Aurora Vision valuter\u00e0 la presenza di un evento di errore <code>PWROFF <\/code>solo durante il giorno, due ore dopo l&#8217;alba e due ore prima del tramonto; attiver\u00e0 l&#8217;errore solo se la soglia supera i 100 W\/m<sup>2<\/sup> e lo far\u00e0 8 ore dopo il rilevamento, portando lo <code>Status <\/code>delle entit\u00e0 gerarchiche interessate a <code>MEDIUM<\/code>, in base alla gravit\u00e0 impostata.<\/p>\n\n\n\n<p>I profili di errore sono sempre assegnati agli impianti e, di conseguenza, lo <code>Status <\/code>di un&#8217;entit\u00e0 pu\u00f2 cambiare solo da questo livello gerarchico in poi; tuttavia esistono categorie di errore valutate solo a livello di Impianto (<code>LVL 3<\/code>) e\/o a livello di Logger (<code>LVL 4<\/code>) e\/o a livello di Device (<code>LVL 5<\/code>). Quando un errore viene individuato e attivato ad un certo livello gerarchico, esso viene propagato a tutte le entit\u00e0 gerarchicamente superiori (<em><em>a partire dal livello di impianto in poi<\/em><\/em> ) e ci\u00f2 significa quindi che lo <code>Status <\/code>di queste entit\u00e0 viene modificato in modo uniforme.<\/p>\n\n\n\n<p>Diamo un&#8217;occhiata ad un esempio:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide\">\n<div class=\"wp-elements-1 wp-block-column has-text-color has-background has-link-color\" style=\"background-color:#eeeeee;color:#000000;padding-top:2em;padding-right:2em;padding-bottom:2em;padding-left:2em\">\n<h2 class=\"has-medium-font-size\" id=\"single\">Propagazione gerarchica dello stato delle entit\u00e0<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Prendiamo ad esempio una parte dello schema gerarchico del capitolo &#8220;Struttura gerarchica&#8221; e supponiamo che <strong>Plant 1<\/strong> sia stato assegnato al profilo di errore predefinito:<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"515\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-2-1024x515.png\" alt=\"\" class=\"wp-image-7374\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-2-1024x515.png 1024w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-2-300x151.png 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-2-768x386.png 768w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-2.png 1396w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><br>Per <strong>Inverter 1<\/strong>, in un determinato momento, si \u00e8 verificato un errore <code>PWROFF<\/code>; ci\u00f2 significa che il suo <code>Status <\/code>\u00e8 passato da <code>NORMAL <\/code>(<em>nessun errore<\/em> ) a <code>MEDIUM<\/code> (<em>secondo la gravit\u00e0 assegnata dal profilo predefinito all&#8217;errore<\/em> <em>PWROFF <\/em>).<br>Tuttavia, <strong>Inverter 1<\/strong> fa parte di una gerarchia che, se scalata verso l&#8217;alto, \u00e8 composta da <strong>Logger 1<\/strong> e <strong>Plant 1<\/strong>.<br>Di conseguenza, ricordando che a partire dal livello di gerarchia dell&#8217;impianto viene assegnato un profilo di errore, lo <code>Status <\/code>di <strong>Logger 1<\/strong> e <strong>Plant 1<\/strong> \u00e8 passato anch&#8217;esso da <code>NORMAL <\/code>a <code>MEDIUM<\/code>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>L&#8217;esempio sopra ci fa capire che una valutazione sommaria della presenza\/assenza di errori pu\u00f2 essere effettuata direttamente a livello gerarchico dell&#8217;impianto. Maggiori dettagli saranno disponibili a <strong>Pagina 4<\/strong>, dove analizzeremo un esempio concreto dell&#8217;API <code>GET Plant Status<\/code>.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Descrizione Categorie di Errore<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>L&#8217;attivazione di un errore, appartenente a una qualsiasi categoria definita in un profilo di errore, pu\u00f2 dipendere dalla presenza\/assenza di dati e\/o da eventi sorgente. Gli eventi di errore <code>Profile<\/code> possono quindi essere attivati \u200b\u200bquando vengono rilevate condizioni specifiche sui dati o quando un dispositivo comunica ad Aurora Vision l&#8217;identificazione di un evento di errore <code>Source<\/code> (<em>ovvero un errore macchina identificato da un dispositivo e inviato ad Aurora Vision, che lo modeller\u00e0 in base al dispositivo che lo ha inviato<\/em>) che rientra in una delle categorie di errore del profilo.<\/p>\n\n\n\n<p>Di seguito le categorie di errori la cui valutazione dipende da condizioni specifiche rilevate sui dati (<em>disponibili solo in Inglese<\/em>):<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><strong>Category Error<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><strong>Description<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><strong>Default Status<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><strong> <\/strong><strong>Hierarchical Evaluation<\/strong><\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>NOTCOM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">One or more devices have been correctly registered on Aurora Vision, but they haven&#8217;t communicated yet.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>INFO<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Plant Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>LOGCOM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Aurora Vision&#8217;s has not received any data from the inverter (<em>or logger<\/em>) for the configured timeout. Devices events will not be evaluated until communication with Aurora Vision is re-established.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>HIGH<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Logger\/Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>DEVCOM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">The device (<em>e.g. meter, weather station, battery&#8230;<\/em>) has not communicated with the inverter (<em>or logger<\/em>) for the configured timeout. Device events will not be evaluated until device communication is re-established.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>MEDIUM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>PWROFF<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">The inverter has not produced power for the Elapsed Time duration, while irradiance remains above the Irradiance Threshold. If the plant does not have a functioning irradiance sensor, only the Elapsed Time will be used to trigger this event.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>MEDIUM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>STROFF<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">A String Off State has been detected on this string. No current was produced by the string over a period of time when the average current output of all strings at the plant was above the threshold value.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>MEDIUM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>STRLOW<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">A String Low State has been detected for the string. The current produced by the string was low, compared to the average current output of all strings at the plant, over a period of time when the average was above the threshold value.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>MEDIUM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>SUBOFF<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">An OFF state has been detected for the sub-array. No current was produced over a period of time when the average current output, of all sub-arrays on the combiner, was above the threshold value.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>MEDIUM<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Device Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>PR-RNG<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">An Out-of-Range state has been detected. The Performance Ratio of the plant was detected out of range for a configured timeout.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\"><code>LOW<\/code><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-center\">Plant Level<\/p>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tutte le altre categorie di errore vengono valutate in base alla presenza di eventi sorgente comunicati direttamente dal dispositivo ad Aurora Vision. Indipendentemente dal tipo di valutazione effettuata, l&#8217;attivazione di un errore di profilo \u00e8 sempre soggetta alle regole stabilite per la specifica categoria di errore definita nel profilo di errore.<\/p>\n\n\n\n<p>Puoi scaricare il file Excel<sup>TM<\/sup>  di tutte le categorie di errore, con la loro descrizione, qui sotto:<\/p>\n\n\n\n<div class=\"wp-block-columns alignwide has-background\" style=\"background-color:#ffe97d\">\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<p class=\"has-text-align-left\"><strong>Aurora Vision Error Categories &#8211; Description File<\/strong><br>Ultimo Aggiornamento: 05\/05\/2022<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center\">\n<div class=\"wp-container-2 wp-block-buttons\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100 is-style-fill\"><a class=\"wp-block-button__link\" href=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/AV_error_categories_REV2022.05.05.xlsx\" style=\"border-radius:0px\" target=\"_blank\" rel=\"noreferrer noopener\" download=\"AV_error_categories_REV2022.05.05.xlsx\">\u2b73\u00a0\u00a0\u00a0Download Excel File<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Valutazione Stato delle Entit\u00e0 ed Eventi di Errore<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Come accennato a <strong>Pagina 2<\/strong>, i profili di errore sono sempre assegnati agli impianti e, di conseguenzdi un&#8217;entit\u00e0 pu\u00f2 cambiare solo da questo livello gerarchico in poi. Quando un evento di errore viene individuato e attivato ad un certo livello gerarchico, esso viene propagato a tutte le entit\u00e0 gerarchicamente superiori (<em>a partire dal livello impianto<\/em>) e ci\u00f2 significa quindi che lo <code>Status <\/code>di queste entit\u00e0 \u00e8 uniformemente modificato; questo comportamento \u00e8 identificato come il principio della propagazione gerarchica dello stato.<\/p>\n\n\n\n<p>L&#8217;API <code>GET Status<\/code> permette di ottenere lo <code>Status <\/code>di un <code>Plant<\/code>, <code>Logger<\/code> e\/o <code>Device <\/code>(<em>a seconda del livello gerarchico e della suite<\/em>).<br>La particolarit\u00e0 di questa API \u00e8 la sua risposta dinamica: restituisce sempre l&#8217;esplosione di tutte le entit\u00e0 gerarchicamente inferiori il cui <code>Status<\/code> \u00e8 diverso da <code>NORMAL<\/code>, indicando quindi quali sono interessati da eventi di errore attivi (<span style=\"text-decoration: underline;\">ma non il tipo di evento di errore<\/span>).<\/p>\n\n\n\n<p>Prendiamo come esempio il seguente schema gerarchico e supponiamo di voler controllare lo <code>Status <\/code>di <strong>Plant 1<\/strong>, per capire se possono esserci eventi di errore attivi:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"515\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-3-1024x515.png\" alt=\"\" class=\"wp-image-7382\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-3-1024x515.png 1024w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-3-300x151.png 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-3-768x386.png 768w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/hierarchy_truncated-3.png 1396w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>A livello gerarchico dell&#8217;impianto, chiamiamo l&#8217;API <code>GET Plant Status<\/code> :<\/p>\n\n\n\n<p><code>https:\/\/api.auroravision.net\/api\/rest\/v1\/plant\/{entityID}\/status<\/code><\/p>\n\n\n\n<p>Se non ci sono eventi di errore attivi, otterremo una risposta in cui lo <code>Status <\/code>di <strong>Plant 1<\/strong> sar\u00e0 uguale a <code>NORM <\/code>(che equivale a <code>NORMAL<\/code>):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_NORMAL-1.png\" alt=\"\" class=\"wp-image-7350\" width=\"256\" height=\"138\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_NORMAL-1.png 512w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_NORMAL-1-300x162.png 300w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><\/figure>\n\n\n\n<p>Se \u00e8 presente almeno un evento di errore attivo, significa che almeno uno dei dispositivi registrati in <strong>Plant 1<\/strong>, che sono quindi figli gerarchici di quest&#8217;ultimo, ha associato un evento di errore attivo; in questo caso, la risposta dell&#8217;API si adatta dinamicamente facendo esplodere lo <code>Status <\/code>di <strong>Plant 1<\/strong> ma anche di tutte quelle entit\u00e0 figlie gerarchiche il cui <code>Status <\/code>\u00e8 diverso da <code>NORM<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_exploded-2.png\" alt=\"\" class=\"wp-image-7390\" width=\"440\" height=\"428\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_exploded-2.png 880w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_exploded-2-300x292.png 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/plant_status_exploded-2-768x747.png 768w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/figure>\n\n\n\n<p>Possiamo vedere come la risposta sia ora pi\u00f9 strutturata e come lo status di <strong>Plant 1<\/strong> sia ora uguale a <code>MEDIUM<\/code>, sintomo che \u00e8 attivo un evento di errore per alcune entit\u00e0 di livello gerarchico inferiore. Questo evento di errore \u00e8 attivo per <strong>Inverter 1<\/strong>, perch\u00e9 l&#8217;API fornisce una risposta esplosa per tutti i livelli gerarchici che vanno da <strong>Plant 1<\/strong> (<code>LVL 3<\/code>) ad <strong>Inverter 1<\/strong> (<code>LVL 5<\/code>). Lo <code>Status <\/code>di tutte e tre le entit\u00e0 \u00e8 quindi uguale a <code>MEDIUM<\/code>, per il principio di propagazione gerarchica di cui abbiamo parlato ad inizio pagina.<\/p>\n\n\n\n<p>Il principio di gestione di una risposta dinamica tramite un&#8217;API <code>GET Status<\/code> API \u00e8 presente anche a livelli gerarchici inferiori.<br>Se per l&#8217;esempio precedente chiamiamo<code> GET Logger Status<\/code>, la risposta restituita sar\u00e0:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/logger_status_exploded-1.png\" alt=\"\" class=\"wp-image-7493\" width=\"427\" height=\"293\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/logger_status_exploded-1.png 854w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/logger_status_exploded-1-300x206.png 300w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/04\/logger_status_exploded-1-768x527.png 768w\" sizes=\"(max-width: 427px) 100vw, 427px\" \/><\/figure>\n\n\n\n<p>Possiamo vedere come la risposta abbia la stessa struttura di quella ottenuta con l&#8217;API <code>GET Plant Status<\/code> , dove sia <strong>Logger 1<\/strong> che <strong>Inverter 1<\/strong> hanno il loro <code>Status <\/code>uguale a <code>MEDIUM<\/code>. L&#8217;unica differenza \u00e8 la presenza di un livello gerarchico in meno (<em>perch\u00e9 abbiamo puntato risorse di un livello gerarchico inferiore<\/em>).<\/p>\n\n\n\n<p>Abbiamo quindi visto come si applica il principio della propagazione gerarchica: qualsiasi dispositivo che abbia un evento di errore attivo, che fa s\u00ec che il suo <code>Status <\/code>sia diverso da <code>NORMAL<\/code>, cambia contemporaneamente lo <code>Status <\/code>di tutte le entit\u00e0 gerarchicamente superiori (<em>a partire da livello di impianto<\/em>). Questo permette di discriminare immediatamente la presenza o l&#8217;assenza di errori semplicemente sfruttando l&#8217;API <code>GET Plant Status<\/code>.<\/p>\n\n\n\n<p>Ovviamente, una volta accertata la presenza di eventi di errore, ci interessa sapere quali sono questi eventi di errore. Per farlo possiamo utilizzare l&#8217;API <code>GET Events <\/code>che permette di ottenere gli eventi di errore di un <code>Plant<\/code>, <code>Logger<\/code> e\/o <code>Device <\/code>(<em>a seconda del livello gerarchico a cui siamo interessati<\/em>) con filtraggio avanzato su: categoria, tipo, stato e occorrenza.<\/p>\n\n\n\n<p>Diamo un&#8217;occhiata alla richiesta API completa e poi analizziamola in dettaglio:<\/p>\n\n\n\n<p><code>https:\/\/api.auroravision.net\/api\/rest\/v1\/{plant,logger,device}\/{entityID}\/events?eventsKind={Profile,Source}&amp;eventsType={eventsType}&amp;eventsState={ALL,ACTIVE,CLOSED}&amp;eventsOccurrence={H24,D7,D30}&amp;page={pageNumber}<\/code><\/p>\n\n\n\n<p>Il <code>path<\/code>, che ti permette di puntare alle risorse desiderate, richiede sempre l&#8217; <code>{entityID}<\/code> ed, in base al livello gerarchico e alla suite in cui ci troviamo, pu\u00f2 essere un <code>Plant<\/code>, <code>Logger<\/code> o <code>Device<\/code> EID:<\/p>\n\n\n\n<p><code>https:\/\/api.auroravision.net\/api\/rest\/v1\/{plant,logger,device}\/{entityID}\/events<\/code><\/p>\n\n\n\n<p>L&#8217;API richiede sempre il parametro query <code>{eventsKind}<\/code> per discriminare la tipologia di eventi di errore da chiamare.<br>Questo parametro pu\u00f2 avere due valori diversi:<\/p>\n\n\n\n<ul><li><code>Profile<\/code>: permette di ottenere gli eventi di errore di tipo profilo, ovvero quelli che vengono attivati \u200b\u200bda Aurora Vision in base al profilo di errore, con le sue regole configurate, associate all&#8217;impianto considerato (<em>o per uno dei dispositivi gerarchicamente figli di quest&#8217;ultimo<\/em>)<\/li><li><code>Source<\/code>: permette di ottenere eventi di errore di tipo sorgente, ovvero errori macchina identificati da un dispositivo e che vengono quindi comunicati ad Aurora Vision (<em>che li modella in base al dispositivo che li ha inviati<\/em>)<\/li><\/ul>\n\n\n\n<p>In precedenza abbiamo detto che l&#8217;attivazione di un errore, appartenente a una qualsiasi categoria definita in un Profilo di Errore, pu\u00f2 dipendere dalla presenza\/assenza di dati e\/o da eventi sorgente. Gli eventi di errore <code>Profile <\/code>possono essere attivati \u200b\u200bquando vengono rilevate condizioni specifiche sui dati oppure quando un dispositivo comunica ad Aurora Vision l&#8217;identificazione di un evento di errore <code>Source <\/code>che rientra in una delle categorie di errore del profilo configurato. Considerando che gli eventi sorgente sono pi\u00f9 difficili da capire rispetto a quelli profilo, perch\u00e9 sono composti da abbreviazioni che possono variare da dispositivo a dispositivo, e che Aurora Vision gestisce implicitamente la modellazione di questi eventi in categorie di errore in modo da attivare l&#8217;errore di profilo corretto, \u00e8 consigliabile filtrare sempre l&#8217;API come segue:<\/p>\n\n\n\n<p><code>https:\/\/api.auroravision.net\/api\/rest\/v1\/{plant,logger,device}\/{entityID}\/events?eventsKind=Profile<\/code><\/p>\n\n\n\n<p>Sebbene il resto dei <code>queryParameters <\/code>non sia necessario per ottenere una risposta, quando si lavora con eventi di errore \u00e8 sempre utile poter filtrare tipo, occorrenza e stato:<\/p>\n\n\n\n<ul><li><code>eventsType<\/code>: permette di filtrare il tipo di eventi di errore del profilo; \u00e8 possibile filtrare un solo tipo di evento di errore alla volta (per una tabella completa sui tipi di eventi di errore, fare riferimento a <strong>Pagina 4<\/strong>). Se non inserito nell&#8217;API, verranno restituiti tutti i tipi di eventi;<\/li><li><code>eventsOccurrence<\/code>: permette di filtrare il verificarsi di eventi di errore; i valori accettati sono <code>24H<\/code>, fper una finestra temporale di 24 ore, <code>7D<\/code>, per una finestra temporale di 7 giorni, oppure <code>30D<\/code>, per una finestra temporale di 30 giorni. Se non inserito nell&#8217;API, verranno restituiti tutti gli eventi che coprono il ciclo di vita dell&#8217;impianto;<\/li><li><code>eventsState<\/code>: permette di filtrare lo stato degli eventi di errore; i valori accettati sono <code>ACTIVE<\/code>, per eventi attivi che quindi non hanno avuto una singolarit\u00e0 temporale di chiusura, <code>CLOSED<\/code>, per eventi chiusi, oppure <code>ALL<\/code>, per richiedere eventi attivi e chiusi contemporaneamente. Se non inseriti nell&#8217;API, verranno restituiti tutti gli eventi attivi e chiusi;<\/li><\/ul>\n\n\n\n<p>A questo punto abbiamo tutti gli strumenti per capire quali eventi di errore sono attivi per <strong>Plant 1<\/strong>:<\/p>\n\n\n\n<p><code>https:\/\/api.auroravision.net\/api\/rest\/v1\/plant\/12345678\/events?eventsKind=Profile&amp;eventsOccurrence=24H&amp;eventsState=ACTIVE<\/code><\/p>\n\n\n\n<p>Poniamoci a livello gerarchico <code>plant<\/code>, inserendo l&#8217;EID di Plant 1 (<code>12345678<\/code>), richiedendo eventi di errore <code>ACTIVE <\/code>per le ultime <code>24H<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/05\/error_events_response_active-862x1024.png\" alt=\"\" class=\"wp-image-7601\" width=\"431\" height=\"512\" srcset=\"http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/05\/error_events_response_active-862x1024.png 862w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/05\/error_events_response_active-253x300.png 253w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/05\/error_events_response_active-768x912.png 768w, http:\/\/documentation-wp.hub.av.priv\/wp-content\/uploads\/2022\/05\/error_events_response_active.png 896w\" sizes=\"(max-width: 431px) 100vw, 431px\" \/><\/figure>\n\n\n\n<p>Possiamo vedere dalla risposta che sono attivi due eventi di errore del tipo di profilo: un <code>DEVCOM <\/code>per <strong>Inverter 1<\/strong> ed un <code>LOGCOM <\/code>per <strong>Logger 1<\/strong>. I due eventi di errore vengono attivati \u200b\u200bin momenti diversi e, facendo riferimento alle definizioni, possiamo supporre che <strong>Inverter 1<\/strong> abbia smesso di inviare dati a <strong>Logger 1<\/strong> ad <code>eventStart<\/code>; quest&#8217;ultimo stava ancora comunicando correttamente con Aurora Vision, ma successivamente ha smesso di farlo ad <code>eventStart<\/code>.<\/p>\n\n\n\n<p>Il principio della propagazione dello stato gerarchico vale anche per questo tipo di API, a conferma quindi che quando un evento di errore viene identificato ed attivato ad un certo livello gerarchico, esso viene propagato a tutte le entit\u00e0 gerarchicamente superiori; ci\u00f2 significa che un evento di errore che interessa un dispositivo viene visualizzato anche a livello gerarchico dell&#8217;impianto, come possiamo chiaramente percepire dall&#8217;esempio sopra riportato.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Qualsiasi entit\u00e0 registrata in Aurora Vision \u00e8 caratterizzata da uno Status che consente di identificare la presenza di eventi di errore attivi. Aurora Vision \u00e8 in grado di valutare lo stato di un impianto, e di conseguenza di tutte le entit\u00e0 in esso registrate, solo se l&#8217;impianto \u00e8 correttamente associato ad un profilo di valutazione [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":1794,"menu_order":10,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/pages\/7857"}],"collection":[{"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/comments?post=7857"}],"version-history":[{"count":105,"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/pages\/7857\/revisions"}],"predecessor-version":[{"id":10128,"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/pages\/7857\/revisions\/10128"}],"up":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/pages\/1794"}],"wp:attachment":[{"href":"http:\/\/documentation-wp.hub.av.priv\/it\/wp-json\/wp\/v2\/media?parent=7857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}