{"id":7859,"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-04T15:26:42","modified_gmt":"2022-06-04T14:26:42","slug":"status-management","status":"publish","type":"page","link":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/aurora-vision-apis\/user-guide\/status-management\/","title":{"rendered":"Gerenciamento Status de Erro"},"content":{"rendered":"\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Qualquer entidade cadastrada no Aurora Vision \u00e9 caracterizada por um <code>Status<\/code> que permite identificar a presen\u00e7a de eventos de erro ativos.<\/p>\n\n\n\n<p>Aurora Vision \u00e9 capaz de avaliar o estado de uma usina, e consequentemente de todas as entidades nela registradas, somente se a usina estiver corretamente associada a um perfil de avalia\u00e7\u00e3o de erros. Qualquer planta registrada em um portf\u00f3lio ser\u00e1 automaticamente atribu\u00edda ao perfil de erro padr\u00e3o criado pelo Aurora Vision; no entanto, o administrador de uma carteira tem sempre a possibilidade de criar diferentes perfis de erro de forma personalizada e estes podem ser associados a diferentes plantas. Em \u00faltima an\u00e1lise, portanto, pode haver plantas que tenham avalia\u00e7\u00f5es diferentes porque est\u00e3o associadas a diferentes perfis de erro.<\/p>\n\n\n\n<p>Vamos dividir este cap\u00edtulo em v\u00e1rias p\u00e1ginas, a fim de fornecer uma vis\u00e3o completa e consistente de como funciona o gerenciamento de erros: <\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul><li>Na <strong>P\u00e1gina<\/strong> <strong>2<\/strong> analisaremos a estrutura do perfil de erro padr\u00e3o e as categorias contidas nele;<\/li><li>Na <strong>P\u00e1gina<\/strong> <strong>3<\/strong> analisaremos as principais categorias de erro existentes no Aurora Vision, fornecendo uma vis\u00e3o geral;<\/li><li>Na <strong>P\u00e1gina<\/strong> <strong>4<\/strong> analisaremos as APIs que permitem avaliar o status e os eventos de erro de diferentes entidades de n\u00edveis hier\u00e1rquicos;<\/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>Estrutura Geral dos Perfis de Erro<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Para maior clareza, analisaremos o perfil de erro padr\u00e3o que o Aurora Vision cria para cada portf\u00f3lio (<em>que n\u00e3o pode ser editado<\/em> ).<\/p>\n\n\n\n<p>No Aurora Vision, um perfil de erro \u00e9 sempre identificado por um <strong>Nome<\/strong>, un <strong>Acr\u00f4nimo<\/strong> e um <strong>Criador<\/strong> e cont\u00e9m uma s\u00e9rie de <strong>Categorias de Erro<\/strong> que t\u00eam a finalidade de avaliar a presen\u00e7a de eventos de erro para as usinas \u00e0s quais o perfil est\u00e1 atribu\u00eddo, gerando assim a ativa\u00e7\u00e3o de eventos de <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>O administrador de um portf\u00f3lio, de acordo com suas necessidades e as plantas \u00e0s quais o perfil de erro deve estar associado, tem total liberdade para criar perfis de erro e adicionar categorias de erro espec\u00edficas dentro dele, podendo ainda decidir os par\u00e2metros de avalia\u00e7\u00e3o para cada um dos categorias de erro.<\/p>\n\n\n\n<p>Existem 4 par\u00e2metros principais que podem ser editados:<\/p>\n\n\n\n<ul><li><strong>Tempo Decorrido<\/strong>: indica o tempo que deve passar antes que o Aurora Vision, uma vez detectado o erro, o eleva para mostr\u00e1-lo como ativo aos n\u00edveis hier\u00e1rquicos envolvidos. O valor m\u00ednimo que pode ser atribu\u00eddo, para evitar o acionamento de falsos erros, \u00e9 de 15 minutos;<\/li><li><strong>Avalia\u00e7\u00e3o<\/strong>: indica a janela de tempo para a qual o Aurora Vision avaliar\u00e1 a presen\u00e7a ou aus\u00eancia de erros relacionados a essa categoria em particular, de acordo com os par\u00e2metros definidos. Diferentes janelas de tempo podem ser escolhidas, mas deve-se ter em mente que fora da janela definida, o Aurora Vision n\u00e3o avaliar\u00e1 essa categoria de erro espec\u00edfica pertencente a esse perfil de erro;<\/li><li><strong>Gravidade<\/strong>: indica a gravidade do erro, que \u00e9 mapeado um a um com o <code>Status<\/code> da entidade hier\u00e1rquica afetada pelo erro. Existem 4 n\u00edveis de gravidade: <code>INFO <\/code>(<em>evento informativo<\/em> ), <code>LOW <\/code>(<em>evento de baixa gravidade<\/em> ), <code>MEDIUM <\/code>(<em>evento de gravidade m\u00e9dia<\/em> ), <code>HIGH <\/code>(<em>evento de alta gravidade<\/em> );<\/li><li><strong>Limiar<\/strong>: o evento de erro \u00e9 ativado somente se o limite indicado for excedido. Este par\u00e2metro n\u00e3o est\u00e1 presente para todas as categorias de erros (<em>para mais detalhes, consulte a P\u00e1gina 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>Por exemplo, o erro <code>Power Off<\/code> (<code>PWROFF<\/code>) \u00e9 composto pelos seguintes par\u00e2metros:<\/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>Isso significa que o Aurora Vision avaliar\u00e1 a presen\u00e7a de um evento de erro <code>PWROFF <\/code>somente durante o dia, duas horas ap\u00f3s o nascer do sol e duas horas antes do p\u00f4r do sol; ele ativar\u00e1 o erro somente se o limite exceder 100 W\/m<sup>2<\/sup> e o far\u00e1 8 horas ap\u00f3s a detec\u00e7\u00e3o, trazendo o <code>Status <\/code>das entidades hier\u00e1rquicas em quest\u00e3o para <code>MEDIUM<\/code>, de acordo com a gravidade definida.<\/p>\n\n\n\n<p>Perfis de erro s\u00e3o sempre atribu\u00eddos \u00e0s plantas e, consequentemente, o <code>Status <\/code>de uma entidade s\u00f3 pode mudar a partir deste n\u00edvel hier\u00e1rquico; no entanto, existem categorias de erro avaliadas apenas no Plant level (<code>LVL 3<\/code>) e\/ou no the Logger level (<code>LVL 4<\/code>) e\/ou no  Device level (<code>LVL 5<\/code>). Quando um erro \u00e9 identificado e ativado em um determinado n\u00edvel hier\u00e1rquico, ele \u00e9 propagado para todas as entidades hierarquicamente superiores (<em><em>desde o n\u00edvel da planta em diante<\/em><\/em> ) e isso significa que o <code>Status <\/code>dessas entidades \u00e9 alterado uniformemente.<\/p>\n\n\n\n<p>Vamos dar uma olhada em um exemplo:<\/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\">Propaga\u00e7\u00e3o Hier\u00e1rquica de Status de Entidades<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tomemos como exemplo uma parte do esquema hier\u00e1rquico do cap\u00edtulo &#8220;Estrutura Hier\u00e1rquica&#8221; e vamos supor qtenha sido atribu\u00edda ao perfil de erro padr\u00e3o:<\/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>Para <strong>Inverter 1<\/strong>, em um determinado momento, um erro <code>PWROFF<\/code> foi acionado; isso significa que seu <code>Status <\/code>passou de <code>NORMAL <\/code>(<em>sem erros<\/em> ) para <code>MEDIUM<\/code> (<em>de acordo com o gravidade atribu\u00edda pelo perfil padr\u00e3o ao erro PWROFF <\/em>).<br>No entanto, <strong>Inverter 1<\/strong> faz parte de uma hierarquia que, se salendo, \u00e9 composta de <strong>Logger 1<\/strong> e <strong>Plant 1<\/strong>.<br>Como consequ\u00eancia, lembrando que um perfil de erro \u00e9 atribu\u00eddo a partir do n\u00edvel de hierarquia da planta, o <code>Status <\/code>do <strong>Logger 1<\/strong> e <strong>Plant 1<\/strong> tamb\u00e9m passou de <code>NORMAL <\/code>para <code>MEDIUM<\/code>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>O exemplo acima nos faz entender que um resumo avalia\u00e7\u00e3o da presen\u00e7a\/aus\u00eancia de erros pode ser feita diretamente no n\u00edvel hier\u00e1rquico da planta. Mais detalhes estar\u00e3o dispon\u00edveis na <strong>P\u00e1gina<\/strong> <strong>4<\/strong>, onde analisaremos um exemplo concreto da 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>Descri\u00e7\u00e3o das Categorias de Erro<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>A ativa\u00e7\u00e3o de um erro, pertencente a qualquer categoria definida em um Perfil de Erro, pode depender da presen\u00e7a\/aus\u00eancia de dados e\/ou eventos de origem. Os eventos de erro de <code>Profile<\/code> podem, portanto, ser ativados quando condi\u00e7\u00f5es espec\u00edficas s\u00e3o detectadas nos dados ou quando um dispositivo comunica ao Aurora Vision a identifica\u00e7\u00e3o de um evento de erro <code>Source<\/code> (<em>que \u00e9 um erro de m\u00e1quina identificado por um dispositivo e enviado ao Aurora Vision, que o modelar\u00e1 com base no dispositivo que o enviou<\/em>) que se enquadra em uma das categorias de erro de perfil.<\/p>\n\n\n\n<p>A seguir est\u00e3o as categorias de erros cuja avalia\u00e7\u00e3o depende de condi\u00e7\u00f5es espec\u00edficas detectadas nos dados (<em>dispon\u00edvel apenas em Ingl\u00eas<\/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>Todas as outras categorias de erros s\u00e3o avaliadas com base na presen\u00e7a de eventos de origem comunicados diretamente pelo dispositivo ao Aurora Vision. Independentemente do tipo de avalia\u00e7\u00e3o feita, a ativa\u00e7\u00e3o de um erro de perfil est\u00e1 sempre sujeita \u00e0s regras definidas para a categoria de erro espec\u00edfica definida no perfil de erro.<\/p>\n\n\n\n<p>Voc\u00ea pode baixar o Excel<sup>TM<\/sup> file e todas as categorias de erro, com sua descri\u00e7\u00e3o, abaixo:<\/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>\u00daltima Atualiza\u00e7\u00e3o: 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>Avalia\u00e7\u00e3o de Status de Entidades e Eventos de Erro<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Conforme mencionado na <strong>P\u00e1gina<\/strong> <strong>2<\/strong>, os perfis de erro s\u00e3o sempre atribu\u00eddos \u00e0s plantas e, consequentemente, o <code>Status <\/code>de uma entidade s\u00f3 pode mudar a partir deste n\u00edvel hier\u00e1rquico. Quando um evento de erro \u00e9 identificado e ativado em um determinado n\u00edvel hier\u00e1rquico, ele \u00e9 propagado para todas as entidades hierarquicamente superiores (<em>desde o n\u00edvel da planta em diante<\/em>) e isso significa que o <code>Status <\/code>dessas entidades \u00e9 uniformemente alterada; esse comportamento \u00e9 identificado como o princ\u00edpio de propaga\u00e7\u00e3o de status hier\u00e1rquico.<\/p>\n\n\n\n<p>A <code>GET Status<\/code> API permite obter o <code>Status <\/code>de uma <code>Plant<\/code>, <code>Logger<\/code> e\/ou <code>Device <\/code>(<em>dependendo do n\u00edvel hier\u00e1rquico e da su\u00edte<\/em>).<br>A peculiaridade desta API \u00e9 sua resposta din\u00e2mica: ela sempre retorna a explos\u00e3o de todas as entidades hierarquicamente inferiores cujo <code>Status<\/code> \u00e9 diferente de <code>NORMAL<\/code>, indicando quais s\u00e3o afetados por eventos de erro ativos (<span style=\"text-decoration: underline;\">mas n\u00e3o o tipo de erro do evento real<\/span>).<\/p>\n\n\n\n<p>Vamos usar o seguinte esquema hier\u00e1rquico como exemplo e supor que queremos verificar o <code>Status <\/code>da <strong>Plant 1<\/strong>, para entender se pode haver algum evento de erro ativo:<\/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>No n\u00edvel hier\u00e1rquico da planta, vamos chamar a 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 n\u00e3o houver nenhum evento de erro ativo, obteremos uma resposta na qual o <code>Status <\/code>da <strong>Plant 1<\/strong> ser\u00e1 igual a <code>NORM <\/code>(que \u00e9 equivalente 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 houver pelo menos um evento de erro ativo, significa que pelo menos um dos dispositivos registrados na <strong>Plant 1<\/strong>, que s\u00e3o, portanto, filhos hier\u00e1rquicos desta \u00faltima, possui um evento de erro ativo associado; neste caso, a resposta da API se adapta dinamicamente explodindo o <code>Status <\/code>de <strong>Plant 1<\/strong> mas tamb\u00e9m de todas as entidades filhas hier\u00e1rquicas cujo <code>Status <\/code>\u00e9 diferente de <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>Podemos ver como a resposta agora est\u00e1 mais estruturada e como o Status da <strong>Plant 1<\/strong> agora \u00e9 igual a <code>MEDIUM<\/code>, um sintoma de que um evento de erro est\u00e1 ativo para alguns entidades de n\u00edvel hier\u00e1rquico inferior. Este evento de erro est\u00e1 ativo para <strong>Inverter 1<\/strong>, porque a API nos fornece uma resposta explodida para todos os n\u00edveis hier\u00e1rquicos, desde <strong>Plant 1<\/strong> (<code>LVL 3<\/code>) para <strong>Inverter 1<\/strong> (<code>LVL 5<\/code>). O <code>Status <\/code>de todas as tr\u00eas entidades \u00e9, portanto, igual a <code>MEDIUM<\/code>, devido ao princ\u00edpio de propaga\u00e7\u00e3o hier\u00e1rquica que mencionamos no topo da p\u00e1gina.<\/p>\n\n\n\n<p>O princ\u00edpio de manipula\u00e7\u00e3o de uma resposta din\u00e2mica por uma API <code>GET Status<\/code> tamb\u00e9m est\u00e1 presente em n\u00edveis hier\u00e1rquicos inferiores.<br>Se para o exemplo acima vamos chamar<code> GET Logger Status<\/code>, a resposta retornada ser\u00e1:<\/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>Podemos ver como a resposta tem exatamente a mesma estrutura que a obtida com a API <code>GET Plant Status<\/code>, onde tanto <strong>Logger 1<\/strong> quanto <strong>Inverter 1<\/strong> t\u00eam seu <code>Status <\/code>igual a <code>MEDIUM<\/code>. A \u00fanica diferen\u00e7a \u00e9 a presen\u00e7a de um n\u00edvel hier\u00e1rquico a menos (<em>porque temos recursos direcionados de um n\u00edvel hier\u00e1rquico inferior<\/em>).<\/p>\n\n\n\n<p>Vimos, portanto, como se aplica o princ\u00edpio da propaga\u00e7\u00e3o hier\u00e1rquica: qualquer dispositivo que tenha um evento de erro ativo, que fa\u00e7a com que seu <code>Status <\/code>seja diferente de <code>NORMAL<\/code>, altera simultaneamente o <code>Status <\/code>de todas as entidades hierarquicamente superiores (<em>desde o n\u00edvel da planta em diante<\/em>). Isso permite discriminar imediatamente a presen\u00e7a ou aus\u00eancia de erros simplesmente explorando a API <code>GET Plant Status<\/code>.<\/p>\n\n\n\n<p>Obviamente, depois de verificarmos a presen\u00e7a de eventos de erro, estamos interessados \u200b\u200bem saber quais s\u00e3o esses eventos de erro. Para isso podemos usar a API <code>GET Events <\/code>que permite obter os eventos de erro de uma <code>Plant<\/code>, <code>Logger<\/code> e\/ou <code>Device <\/code>(<em>dependendo do n\u00edvel hier\u00e1rquico que nos interessa<\/em>) com filtragem avan\u00e7ada em: categoria, tipo, estado e ocorr\u00eancia.<\/p>\n\n\n\n<p>Vamos dar uma olhada na solicita\u00e7\u00e3o de API completa e, em seguida, vamos dividi-la para analis\u00e1-la em detalhes:<\/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>O <code>path<\/code>, que permite apontar para os recursos desejados, se, com base no n\u00edvel hier\u00e1rquico e na su\u00edte em que voc\u00ea est\u00e1, pode ser um  <code>Plant<\/code>, <code>Logger<\/code> ou <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>A  API sempre requer o par\u00e2metro de consulta <code>{eventsKind}<\/code> para discriminar o tipo de evento de erro a ser chamado.<br>Esse par\u00e2metro pode ter dois valores diferentes:<\/p>\n\n\n\n<ul><li><code>Profile<\/code>: permite obter eventos de erro do tipo perfil, ou seja, aqueles que s\u00e3o ativados pelo Aurora Vision com base no perfil de erro, com suas regras configuradas, associadas \u00e0 planta considerada (<em>ou para um dos dispositivos hierarquicamente filhos deste \u00faltimo<\/em>)<\/li><li><code>Source<\/code>: permite obter eventos de erro do tipo fonte, ou seja, erros de m\u00e1quina identificados por um dispositivo e que s\u00e3o ent\u00e3o comunicados \u00e0 Aurora Vision (<em>que os modela com base no dispositivo que os enviou<\/em>)<\/li><\/ul>\n\n\n\n<p>Dissemos anteriormente que a ativa\u00e7\u00e3o de um erro, pertencente a qualquer categoria definida em um Perfil de Erro, pode depender da presen\u00e7a\/aus\u00eancia de dados e\/ou eventos de origem. Eventos de erro de <code>Profile <\/code>podem ser ativados quando condi\u00e7\u00f5es espec\u00edficas s\u00e3o detectados nos dados ou quando um dispositivo comunica ao Aurora Vision a identifica\u00e7\u00e3o de um evento de erro <code>Source <\/code>que se enquadra em uma das categorias de erro do perfil. Considerando que os eventos de origem s\u00e3o mais dif\u00edceis de entender que os de perfil, pois s\u00e3o compostos por abrevia\u00e7\u00f5es que podem variar de dispositivo para dispositivo, e que o Aurora Vision gerencia implicitamente a modelagem desses eventos em categorias de erro para ativar o erro de perfil correto evento, \u00e9 aconselh\u00e1vel sempre filtrar a API da seguinte forma:<\/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>Embora o resto dos <code>queryParameters <\/code>n\u00e3o sejam necess\u00e1rios para obter uma resposta, ao trabalhar com eventos de erro \u00e9 sempre \u00fatil poder filtrar tipo, ocorr\u00eancia e estado:<\/p>\n\n\n\n<ul><li><code>eventsType<\/code>permite filtrar o tipo de eventos de erro do perfil; apenas um tipo de evento de erro pode ser filtrado por vez (para obter uma tabela completa sobre os tipos de eventos de erro, consulte a <strong>P\u00e1gina<\/strong> <strong>4<\/strong>). Caso n\u00e3o seja inserido na API, todos os tipos de eventos ser\u00e3o retornados;<\/li><li><code>eventsOccurrence<\/code>: permite filtrar a ocorr\u00eancia de eventos de erro; os valores aceitos s\u00e3o <code>24H<\/code>, para uma janela de 24 horas, <code>7D<\/code>, para um tempo janela de 7 dias, ou <code>30D<\/code>, para um tempo janela de 30 dias. Caso n\u00e3o seja inserido na API, todos os eventos que cobrem a vida \u00fatil da planta ser\u00e3o retornados;<\/li><li><code>eventsState<\/code>: permite filtrar o estado dos eventos de erro; os valores aceitos s\u00e3o <code>ACTIVE<\/code>, para eventos ativos que, portanto, n\u00e3o possuem uma singularidade temporal de fechamento, <code>CLOSED<\/code>, para eventos fechados, ou <code>ALL<\/code>, para solicita\u00e7\u00e3o eventos ativos e fechados ao mesmo tempo. Caso n\u00e3o seja inserido na API, todos os eventos ativos e fechados ser\u00e3o retornados;<\/li><\/ul>\n\n\n\n<p>Neste ponto, temos todas as ferramentas para entender quais eventos de erro est\u00e3o ativos para <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>Nos colocamos no n\u00edvel hier\u00e1rquico <code>plant<\/code>, inserindo o EID da Plant 1 (<code>12345678<\/code>), solicitando eventos de erro <code>ACTIVE<\/code> em as \u00faltimas <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>Podemos ver pela resposta que dois eventos de erro de tipo de perfil est\u00e3o ativos: um <code>DEVCOM <\/code>para <strong>Inverter 1<\/strong> e um <code>LOGCOM <\/code>para <strong>Logger 1<\/strong>. Os dois eventos de erro s\u00e3o ativados em momentos diferentes e, referindo-se \u00e0s defini\u00e7\u00f5es, podemos supor que o <strong>Inverter 1<\/strong> parou de enviar dados para o <strong>Logger 1<\/strong> em <code>eventStart<\/code>; o \u00faltimo ainda estava se comunicando corretamente com o Aurora Vision, mas posteriormente parou de faz\u00ea-lo em <code>eventStart<\/code>.<\/p>\n\n\n\n<p>O princ\u00edpio da propaga\u00e7\u00e3o hier\u00e1rquica de status tamb\u00e9m \u00e9 v\u00e1lido para este tipo de API, confirmando assim que quando um evento de erro \u00e9 identificado e ativado em um determinado n\u00edvel hier\u00e1rquico, ele \u00e9 propagado para todas as entidades hierarquicamente superiores; isso significa que um evento de erro que afeta um dispositivo tamb\u00e9m \u00e9 exibido no n\u00edvel hier\u00e1rquico da planta, como podemos perceber claramente no exemplo dado acima.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Qualquer entidade cadastrada no Aurora Vision \u00e9 caracterizada por um Status que permite identificar a presen\u00e7a de eventos de erro ativos. Aurora Vision \u00e9 capaz de avaliar o estado de uma usina, e consequentemente de todas as entidades nela registradas, somente se a usina estiver corretamente associada a um perfil de avalia\u00e7\u00e3o de erros. Qualquer [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":1796,"menu_order":10,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/pages\/7859"}],"collection":[{"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/comments?post=7859"}],"version-history":[{"count":110,"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/pages\/7859\/revisions"}],"predecessor-version":[{"id":10319,"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/pages\/7859\/revisions\/10319"}],"up":[{"embeddable":true,"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/pages\/1796"}],"wp:attachment":[{"href":"http:\/\/documentation-wp.hub.av.priv\/pt-pt\/wp-json\/wp\/v2\/media?parent=7859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}