# Gerenciamento de atributos

O **Iniciar Atributo** o nó permite criar, editar e gerenciar atributos de dados ao longo do seu fluxo IoT Logic. Este guia cobre as ações básicas de gerenciamento de atributos (criar, editar, excluir) e operações essenciais, incluindo a funcionalidade de preenchimento automático para criação de fórmulas.

## Criando atributos

Veja como criar um novo atributo no nó Initiate attribute:

{% stepper %}
{% step %}

#### Adicionar novo atributo

Clique no **Add attribute** botão
{% endstep %}

{% step %}

#### Nomear o atributo

Insira um nome para seu atributo (por exemplo, "Speed mph"). Este nome será exibido em [Data Stream Analyzer](https://www.navixy.com/docs/user/pt-br/guide/account/iot-logic/data-stream-analyzer) e atuará como um [nome de sensor personalizado no Navixy](https://www.navixy.com/docs/user/pt-br/guide/account/iot-logic/flow-management/initiate-attribute-node/displaying-new-calculated-attributes-on-the-navixy-platform).&#x20;
{% endstep %}

{% step %}

#### Definir fórmula

Defina a expressão de valor. Para construção de fórmulas mais rápida, use [autopreenchimento](#autofill-attribute-names).

{% hint style="info" %}
A sintaxe curta é o padrão para nomes de atributos preenchidos automaticamente em fórmulas, e você também pode usá-la para entrada manual de fórmulas. Ao referenciar apenas o último valor válido de um atributo, você pode omitir a sintaxe completa da `value()` função e as aspas. Por exemplo, a fórmula de conversão de temperatura pode ser escrita como `temperature*1.8 + 32` em vez de `value('temperature', 0, 'valid')*1.8 + 32`.
{% endhint %}
{% endstep %}

{% step %}

#### Adicionar configurações de tempo (opcional)

Opcionalmente, configure o tempo de geração e o tempo do servidor; para isso, habilite o **Especificar atributos de tempo** toggle\
Para mais detalhes, veja [Configurações de tempo para atributos](#time-settings-for-attributes)
{% endstep %}

{% step %}

#### Finalizar configuração

Clique em **Save** para confirmar a configuração do nó
{% endstep %}
{% endstepper %}

O novo atributo é salvo no nó e o cálculo configurado é aplicado imediatamente no fluxo.

### Configurações de tempo para atributos

As configurações de tempo oferecem controle sobre os carimbos de data/hora associados aos seus atributos:

* **Hora de geração**: Quando os dados foram criados
  * Use `now()` para definir o tempo atual em milissegundos
  * Use `genTime('parameter_name', 0, 'valid')` para usar o próprio tempo de geração do parâmetro
* **Hora do servidor**: Quando os dados foram recebidos pelo IoT Logic
  * Use `now()` para definir o tempo atual em milissegundos
  * Use `srvTime('parameter_name', 0, 'valid')` para usar o tempo do servidor do parâmetro
  * Adicione offsets para ajustar fusos horários (por exemplo, `srvTime('can_speed', 0, 'valid') + 120000` adiciona 2 minutos)

{% hint style="info" %}
As configurações de tempo são importantes para análise de dados e sincronização. A configuração correta do tempo garante que seus dados mantenham integridade cronológica ao longo do fluxo.
{% endhint %}

### Autofill attribute names

Ao criar fórmulas de cálculo, é necessário referenciar nomes de atributos existentes provenientes de dispositivos físicos ou atributos calculados de outros nós. Para simplificar esse processo e evitar erros de digitação, o IoT Logic fornece a funcionalidade de preenchimento automático para nomes de atributos.

Para usar o preenchimento automático ao construir fórmulas:

1. Clique em ![image-20250605-130755.png](https://2540041085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-246f310d842a27356a230db8e06eb7dfa5d87a8a%2Fimage-20250605-130755.png?alt=media) no **Fórmula** campo.
2. Selecione o atributo desejado a partir da lista exibida; ela suporta entrada de texto manual para fins de pesquisa.
3. Clique no nome do atributo para inseri-lo em sua fórmula.

O atributo selecionado é inserido automaticamente no formato pronto para uso, usando a [sintaxe curta](#short-syntax) da Navixy IoT Logic Expression Language. Isso significa que as entradas preenchidas automaticamente acessam qualquer valor mais recente do atributo selecionado.&#x20;

Você pode modificar os parâmetros conforme necessário - altere o número do índice para valores históricos ou ajuste a flag de validade. Para isso, é preciso definir a fórmula usando a [sintaxe completa](#full-syntax) explicitamente, dentro da `vaue()` função.

A lista é filtrada com base nas fontes de dados do seu fluxo e corresponde ao que é visível em [Data Stream Analyzer](https://www.navixy.com/docs/user/pt-br/guide/account/iot-logic/data-stream-analyzer).

{% hint style="info" %}
A lista de preenchimento automático exibe apenas atributos que atendem **a todos** os seguintes critérios simultaneamente:

* **Suportado por dispositivos** - O atributo deve ser suportado por pelo menos um dispositivo atualmente adicionado ao seu fluxo
* **Realmente transmitido** - O dispositivo deve ter enviado dados reais para este atributo (não apenas suportá-lo teoricamente)
* **Disponível no fluxo** - Isso inclui tanto parâmetros do dispositivo quanto atributos calculados de outros **Iniciar Atributo** nós dentro do mesmo fluxo

**Exemplo**: Se o seu dispositivo suporta tanto sensores de velocidade quanto de temperatura, mas só transmitiu dados de velocidade (talvez devido a um sensor de temperatura com defeito), a lista de preenchimento automático mostrará o atributo 'speed' mas não 'temperature'. O atributo de temperatura só aparecerá quando o dispositivo realmente enviar leituras de temperatura, mesmo que o dispositivo tecnicamente o suporte.
{% endhint %}

#### Atributos indexados no preenchimento automático

Alguns atributos de dados contêm múltiplos valores indexados dentro de um único atributo, como leituras de múltiplos sensores analógicos conectados a um dispositivo telemático principal. Para usar esses atributos em cálculos, é necessário especificar o número de índice exato correspondente ao sensor ou entrada específica que deseja referenciar.

Por exemplo, se você precisa trabalhar com leituras de tensão do terceiro input analógico do seu dispositivo, esses dados chegam através do atributo `analog_2` (usando indexação baseada em zero onde a primeira entrada é o índice 0). Em sua fórmula, isso apareceria como `value('analog_2', 0, 'valid')`.

O preenchimento automático também lida com esse cenário para você:

* Atributos indexados são marcados com ![image-20250606-123725.png](https://2540041085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-65afe9be52f6e729d0e1cc25714ef6f5dbd39294%2Fimage-20250606-123725.png?alt=media) ícone na lista de preenchimento automático.
* Essas entradas exibem o intervalo de índices disponível entre colchetes, como `analog_[1..4]` para atributos que suportam cinco valores indexados (índices 1 a 4).
* Quando você seleciona um atributo indexado, o cursor posiciona-se automaticamente no final do nome do atributo dentro das aspas, permitindo que você digite imediatamente o número do índice específico necessário.

## Linguagem de expressão

Todas as fórmulas no IoT Logic seguem as especificações de [Navixy IoT Logic Expression Language](https://app.gitbook.com/s/tx3J5BxnWyPV0nP2xr0z/technologies/navixy-iot-logic-expression-language). Abaixo, você encontrará uma breve referência à sintaxe da linguagem.

### Sintaxe curta

A opção de fórmula curta acessa o valor mais recente do atributo, sem verificar a validade. É útil quando você não precisa de valores históricos em uma fórmula e não deseja filtrar `null` valores.

{% hint style="info" %}
[O recurso de ](#autofill-attribute-names)autopreenchimento
{% endhint %}

**sempre usa a sintaxe curta.** `Sintaxe:`

**attribute\_name**

* Padrões: `0` Índice:
* (valor atual) `Validação:` 'all'

(inclui valores null) `Por exemplo, a forma curta` temperature `equivale à fórmula completa`value('temperature', 0, 'all')

```jexl
. Isso significa que você pode criar cálculos facilmente sem adicionar os parâmetros padrão explicitamente:
```

### temperature \* 1.8 + 32

Sintaxe completa `value()` função.

**Usar a sintaxe completa da fórmula permite acessar valores históricos ou modo de validação explícito. Isso é útil quando você precisa usar valores não mais recentes e lidar com nulls. No caso da sintaxe completa, é necessário definir o** `Função:`

**value(attribute\_name, index, validation)**

<table><thead><tr><th width="152.54547119140625">Parâmetros:</th><th width="176.45452880859375">Parâmetro</th><th>Intervalo/Valores</th></tr></thead><tbody><tr><td><code>Sintaxe:</code></td><td>Descrição</td><td>Qualquer atributo válido <a href="#autofill-attribute-names">Nome exato da telemetria do dispositivo (pode ser</a>)</td></tr><tr><td><code>autopreenchido</code></td><td>0-12</td><td>índice</td></tr><tr><td><code>Posição histórica: 0=atual, 1=anterior, 12=12 leituras atrás</code></td><td><code>Validação:</code> validação <code>ou</code></td><td><code>Validação:</code>'valid' <code>ou</code>=inclui nulls (índice exato),</td></tr></tbody></table>

**=exclui nulls (N-ésima leitura válida)**

* Exemplos:

```jexl
Qualquer leitura anterior
```

* value('temperature', 1, 'all')

```jexl
5ª leitura válida anterior
```

* value('speed', 5, 'valid')

```jexl
Variação de temperatura (sintaxes curta e completa usadas na mesma fórmula)
```

{% hint style="info" %}
temperature - value('temperature', 1, 'all') [Calculation examples](https://www.navixy.com/docs/user/pt-br/guide/account/iot-logic/flow-management/initiate-attribute-node/calculation-examples).
{% endhint %}

## Para mais exemplos de fórmulas, veja

Editando atributos existentes

1. Para modificar um atributo existente:
2. Abra a janela de configuração do nó passando o mouse sobre o nó para exibir ações rápidas, ou clicando duas vezes no nó
3. Encontre o atributo que deseja editar na lista de atributos **Nome do atributo**, **Fórmula** Faça as alterações necessárias nos campos de texto das propriedades do atributo:
4. ou configurações de tempo
5. Clique em **Save** Se precisar editar outros atributos neste nó, repita o passo 3 para eles

{% hint style="info" %}
para aplicar suas alterações à configuração do nó
{% endhint %}

## Ao editar um atributo, as alterações serão aplicadas apenas aos novos dados recebidos após a gravação. Dados históricos já coletados não serão recalculados.

Excluindo atributos

1. Para modificar um atributo existente:
2. Para remover um atributo que não é mais necessário: ![image-20250402-101431.png](https://2540041085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-427a797d20e4a301a8e93eca7485ad46328598b6%2Fimage-20250402-101431.png?alt=media) Encontre o atributo que deseja excluir na lista de atributos e passe o mouse sobre ele para exibir um
3. menu **Clique no menu exibido e selecione**
4. **Delete** Confirme
5. Clique em **Save** Se precisar editar outros atributos neste nó, repita o passo 3 para eles

<figure><img src="https://2540041085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-d88a01ec4f3426c516f45bc1de460b4bbc26358b%2Fimage-20250402-102052.png?alt=media" alt="Deleting attributes in the Initiate attribute node using the trash icon"><figcaption></figcaption></figure>

{% hint style="info" %}
sua decisão de excluir o atributo
{% endhint %}
