> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md).

# Управление атрибутами

Создавайте, редактируйте и удаляйте атрибуты в узле Вычисление атрибута. Используйте автозаполнение, чтобы быстро составлять формулы из доступных полей телеметрии.

Вкладка **Вычисление атрибута** узел позволяет вам создавать, редактировать и управлять атрибутами данных в вашем потоке IoT Logic. Это руководство охватывает основные действия по управлению атрибутами (создание, редактирование, удаление) и ключевые операции, включая функцию автозаполнения для создания формул.

## Создание атрибутов

Вот как создать новый атрибут в узле «Вычисление атрибута»:

{% stepper %}
{% step %}

### Добавить новый атрибут

Нажмите **Добавить атрибут** кнопка
{% endstep %}

{% step %}

### Назовите атрибут

Введите имя для атрибута (например, "Speed mph"). Это имя будет отображаться в [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) и использоваться как [пользовательское имя датчика в Navixy](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/displaying-new-calculated-attributes-on-the-navixy-platform.md).
{% endstep %}

{% step %}

### Задайте формулу

Задайте выражение значения. Для более быстрого создания формул используйте [автозаполнение](#autofill-attribute-names).

{% hint style="info" %}
Короткий синтаксис используется по умолчанию для автозаполненных имен атрибутов в формулах, и его также можно использовать при ручном вводе формулы. Если вы ссылаетесь только на последнее допустимое значение атрибута, можно опустить полный `value()` синтаксис функции и кавычки. Например, формулу преобразования температуры можно записать так: `temperature*1.8 + 32` вместо false `value('temperature', 0, 'valid')*1.8 + 32`.
{% endhint %}
{% endstep %}

{% step %}

### Завершите настройку

Нажмите **Сохранить** для подтверждения конфигурации узла
{% endstep %}
{% endstepper %}

Новый атрибут сохраняется в узле, а настроенное вычисление немедленно применяется в потоке.

### Настройки времени для атрибутов

Настройки времени дают вам контроль над временными метками, связанными с вашими атрибутами:

* **Время генерации**: Когда были созданы данные
  * Используйте `now()` для установки текущего времени в миллисекундах
  * Используйте `genTime('parameter_name', 0, 'valid')` для использования собственного времени генерации параметра
* **Время сервера**: Когда данные были получены IoT Logic
  * Используйте `now()` для установки текущего времени в миллисекундах
  * Используйте `srvTime('parameter_name', 0, 'valid')` для использования серверного времени параметра
  * Добавьте смещения для учета часовых поясов (например, `srvTime('can_speed', 0, 'valid') + 120000` добавляет 2 минуты)

{% hint style="info" %}
Настройки времени важны для анализа данных и синхронизации. Правильная настройка времени обеспечивает хронологическую целостность данных на протяжении всего потока.
{% endhint %}

### Автозаполнение имен атрибутов

При создании формул вычисления вам нужно ссылаться на существующие имена атрибутов из физических устройств или на вычисленные атрибуты из других узлов. Чтобы упростить этот процесс и предотвратить опечатки, IoT Logic предоставляет функцию автозаполнения имен атрибутов.

Чтобы использовать автозаполнение при создании формул:

1. Нажмите ![image-20250605-130755.png](https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-246f310d842a27356a230db8e06eb7dfa5d87a8a%2Fimage-20250605-130755.png?alt=media) в **Формула** поле.
2. Выберите нужный атрибут из появившегося списка; он поддерживает ручной ввод текста для поиска.
3. Нажмите на имя атрибута, чтобы вставить его в формулу.

Выбранный атрибут автоматически вставляется в готовом к использованию формате с применением [короткого синтаксиса](#short-syntax) языка выражений Navixy IoT Logic. Это означает, что элементы, добавленные через автозаполнение, получают доступ к последнему значению выбранного атрибута.

При необходимости вы можете изменить параметры — поменять номер индекса для исторических значений или скорректировать флаг допустимости. Для этого нужно задать формулу, используя [полный синтаксис](#full-syntax) явно, внутри `value()` функция.

Список фильтруется на основе источников данных вашего потока и соответствует тому, что видно в [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md).

{% hint style="info" %}
Список автозаполнения отображает только атрибуты, которые соответствуют **всем** следующим критериям одновременно:

* **Поддерживаются устройствами** - Атрибут должен поддерживаться хотя бы одним устройством, которое сейчас добавлено в ваш поток
* **Фактически передано** - Устройство должно передавать реальные данные по этому атрибуту (а не только поддерживать его теоретически)
* **Доступно в потоке** - Сюда входят как параметры устройства, так и вычисленные атрибуты из других **Вычисление атрибута** узлов в том же потоке

**Пример**: Если ваше устройство поддерживает датчики скорости и температуры, но передавало только данные о скорости (возможно, из-за неисправного датчика температуры), в списке автозаполнения будет показан атрибут 'speed', но не 'temperature'. Атрибут температуры появится только после того, как устройство начнет фактически передавать показания температуры, даже если технически оно его поддерживает.
{% endhint %}

#### Индексированные атрибуты в автозаполнении

Некоторые атрибуты данных содержат несколько значений, индексированных внутри одного атрибута, например показания нескольких аналоговых датчиков, подключенных к основному телематическому устройству. Чтобы использовать эти атрибуты в вычислениях, вам нужно указать точный номер индекса, соответствующий конкретному датчику или входу, на который вы хотите сослаться.

Например, если вам нужно работать с показаниями напряжения с третьего аналогового входа на вашем устройстве, эти данные поступают через атрибут `analog_2` (с использованием индексации с нуля, где первый вход имеет индекс 0). В вашей формуле это будет выглядеть так: `value('analog_2', 0, 'valid')`.

Автозаполнение также справляется с этой ситуацией:

* Индексированные атрибуты отмечены ![image-20250606-123725.png](https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-65afe9be52f6e729d0e1cc25714ef6f5dbd39294%2Fimage-20250606-123725.png?alt=media) значком в списке автозаполнения.
* Эти элементы отображают доступный диапазон индексов в квадратных скобках, например `analog_[1..4]` для атрибутов, поддерживающих пять индексированных значений (индексы с 1 по 4).
* Когда вы выбираете индексированный атрибут, курсор автоматически устанавливается в конце имени атрибута внутри кавычек, позволяя сразу ввести нужный номер индекса.

## Язык выражений

Все формулы в IoT Logic соответствуют спецификациям [язык выражений Navixy IoT Logic](/docs/iot-logic-api/technologies/navixy-iot-logic-expression-language.md). Ниже вы найдете краткую справку по двум вариантам синтаксиса языка. Выбор синтаксиса зависит от конкретного случая и сделан для удобства:

* Короткий синтаксис легко писать, и он лучше всего подходит, когда вам нужны только последние данные.
* Полный синтаксис немного сложнее, но дает больше контроля над глубиной данных, когда вам нужно работать с историческими значениями.

{% hint style="success" %}
Вариант синтаксиса не влияет на саму формулу! Вы также можете сочетать короткий и полный синтаксис в одной формуле.
{% endhint %}

Формулы также могут вызывать функции зон, которые проверяют положение устройства относительно зон в вашей учетной записи. `geofenceName()` возвращает имя зоны, в которой находится устройство, в виде текста, поэтому оно напрямую подходит для значения атрибута. См. [Функции зон](/docs/user/ru/guide/account/iot-logic/nodes/geofence-functions.md).

Оба варианта синтаксиса могут прочитать значение, которого нет. Формула, которая затем выполняет вычисления с этим значением, ничего не возвращает, а атрибут не включается в пакет данных. См. [Отсутствующие значения в выражениях](/docs/user/ru/guide/account/iot-logic/nodes/missing-values-in-expressions.md).

### Короткий синтаксис

Короткий вариант формулы получает доступ к последнему значению атрибута без проверки допустимости. Используйте его, когда в формуле не нужны исторические значения. Считываемое значение может быть пустым, а большинство операторов не могут выполнять вычисления с пустым значением.

{% hint style="info" %}
[Автозаполнение ](#autofill-attribute-names)всегда использует короткий синтаксис.
{% endhint %}

**Синтаксис:** `attribute_name`

**По умолчанию:**

* Индекс: `0` (текущее значение)
* Проверка: `'все'` (включает значения null)

Например, короткая форма `temperature` равна полной формуле `value('temperature', 0, 'all')`. Это означает, что вы можете легко создавать вычисления, не указывая параметры по умолчанию явно:

```jexl
temperature * 1.8 + 32
```

### Полный синтаксис

Использование полного синтаксиса формул позволяет получать доступ к историческим значениям или явно указывать режим проверки. Это помогает, когда нужно использовать не самые последние значения и обрабатывать значения null. В случае полного синтаксиса необходимо задать полную `value()` функция.

**Функция:** `value(attribute_name, index, validation)`

**Параметры:**

<table><thead><tr><th width="152.54547119140625">Параметр</th><th width="176.45452880859375">Диапазон/значения</th><th>Описание</th></tr></thead><tbody><tr><td><code>attribute_name</code></td><td>Любой допустимый атрибут</td><td>Точное имя из телеметрии устройства (может быть <a href="#autofill-attribute-names">автозаполнено</a>)</td></tr><tr><td><code>индекс</code></td><td>0-11</td><td>Историческая позиция: 0=текущее, 1=предыдущее, 11=самое старое сохраненное значение</td></tr><tr><td><code>проверка</code></td><td><code>'все'</code> или <code>'действительный'</code></td><td><code>'все'</code>=включает значения null (точный индекс), <code>'действительный'</code>=исключает значения null (N-е допустимое показание)</td></tr></tbody></table>

Navixy хранит по 12 показаний на каждый атрибут для каждого устройства и сохраняет их до 30 дней после последнего сообщения от этого устройства. Устройство, которое возвращается после более чем 30 дней молчания, начинает без истории. При первом сообщении после возвращения `value('temperature', 1, 'valid')` возвращается null. Чтобы проверить, какая история сейчас есть у устройства, откройте [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md).

**Примеры:**

* Любое предыдущее показание

```jexl
value('temperature', 1, 'all')
```

* 5-е допустимое показание назад

```jexl
value('speed', 5, 'valid')
```

* Изменение температуры (в одной формуле используются короткий и полный варианты синтаксиса)

```jexl
temperature - value('temperature', 1, 'all')
```

{% hint style="info" %}
Больше примеров формул см. [Примеры вычислений](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/calculation-examples.md).
{% endhint %}

## Редактирование существующих атрибутов

Чтобы изменить существующий атрибут:

1. Откройте окно настройки узла, наведя курсор мыши на узел, чтобы отобразились быстрые действия, или дважды щелкнув узел
2. Найдите атрибут, который хотите изменить, в списке атрибутов
3. Внесите нужные изменения в текстовые поля свойств атрибута: **Имя атрибута**, **Формула** или настройки времени
4. Если вам нужно изменить другие атрибуты в этом узле, повторите для них шаг 3
5. Нажмите **Сохранить** чтобы применить изменения к конфигурации узла

{% hint style="info" %}
Когда вы редактируете атрибут, изменения будут применяться только к новым данным, полученным после сохранения. Уже собранные исторические данные пересчитываться не будут.
{% endhint %}

## Удаление атрибутов

Чтобы удалить больше не нужный атрибут:

1. Откройте окно настройки узла, наведя курсор мыши на узел, чтобы отобразились быстрые действия, или дважды щелкнув узел
2. Найдите атрибут, который хотите удалить, и нажмите <img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-91fdf4a5f67bca3919ef3bde451fbd50678ef82e%2Fimage.png?alt=media" alt="" data-size="line">
3. Нажмите **Примените изменения** для подтверждения конфигурации узла

{% hint style="info" %}
Когда вы удаляете атрибут, он больше не будет вычисляться для новых данных, но исторические данные, содержащие этот атрибут, останутся без изменений в базе данных.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://navixy.com/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
