> 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` вместо `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](/files/24dbf02ac928467c17429a864abdf0a7cd894ece) в **поле «Formula»** поле.
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](/files/a36e007b635767a74443fc08ed43a296a5462da6) значком в списке автозаполнения.
* Эти записи отображают доступный диапазон индексов в квадратных скобках, например `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 %}

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

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

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

**Синтаксис:** `имя_атрибута`

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

* Индекс: `0` (текущее значение)
* Проверка: `'all'` (включает 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>имя_атрибута</code></td><td>Любой допустимый атрибут</td><td>Точное имя из телеметрии устройства (может быть <a href="#autofill-attribute-names">автозаполнено</a>)</td></tr><tr><td><code>индекс</code></td><td>0-12</td><td>Историческая позиция: 0=текущее, 1=предыдущее, 12=12 показаний назад</td></tr><tr><td><code>проверка</code></td><td><code>'all'</code> или <code>'valid'</code></td><td><code>'all'</code>=включает null-значения (точный индекс), <code>'valid'</code>=исключает null-значения (N-е валидное значение)</td></tr></tbody></table>

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

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

```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. Внесите необходимые изменения в текстовые поля свойств атрибута: **Имя атрибута**, **поле «Formula»** или настройки времени
4. Если вам нужно отредактировать другие атрибуты в этом узле, повторите для них шаг 3
5. Нажмите **Сохранить** чтобы применить изменения к конфигурации узла

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

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

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

1. Откройте окно настройки узла, наведя курсор мыши на узел, чтобы показать быстрые действия, или дважды щелкнув узел
2. Найдите атрибут, который хотите удалить, и нажмите <img src="/files/d464f3ed2f96e2d7d5efd888e614496dfb341cfb" 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
