> 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](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) в **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](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` (текущее значение)
* Проверка: `'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>attribute_name</code></td><td>Любой допустимый атрибут</td><td>Точное имя из телеметрии устройства (может быть <a href="#autofill-attribute-names">подставлено автоматически</a>)</td></tr><tr><td><code>index</code></td><td>0-11</td><td>Позиция в истории: 0 = текущее, 1 = предыдущее, 11 = самое старое сохраненное значение</td></tr><tr><td><code>validation</code></td><td><code>'all'</code> или <code>«valid»</code></td><td><code>'all'</code>= включает null-значения (точный индекс), <code>«valid»</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. Внесите нужные изменения в текстовые поля свойств атрибута: **Имя атрибута**, **Formula** или настройки времени
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 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.
