UniSet 2.32.1
BackendClickHouse: Поддержка динамических тегов

"Динамические теги" это добавление тегов в зависимости от состояния указанного датчика. При этом можно указывать любые датчики. Значения тегов могут быть статическими и динамическими (т.е. формироваться на основе значения).

Доступно три способа настройки тегов

Прямое указание статических значений тегов

<sensor name="Sensor1" iotype="AI" ... clickhouse_dyn_tags="key1=tag1 key2=tag2" clickhouse_dyn_sid="Sensor3" />

Где

  • clickhouse_dyn_sid - задаёт датчик на который реагировать (!=0)
  • clickhouse_dyn_tags - задаёт список тегов, которые будут добавлены если датчик != 0

Указание динамических тегов при использовании только одного датчика

<sensor name="Sensor1" iotype="AI" ... clickhouse_dyn_values="modes" clickhouse_dyn_sid="Sensor3" />

Где

Указание динамических тегов формирующихся от нескольких датчиков

Для более тонкой настройки задаётся имя специальной секции, в которой теги можно сопоставить конкретному значению датчика

<sensor name="Sensor1" iotype="AI"..>
<clickhouse_tags>
<sensor name="S1" values="modes"/>
<sensor name="S2" values="myTag2"/>
</clickhouse_tags>
</sensor>

Где

Секция настройки сопоставления значений и тегов

Для сопоставления значений и тегов в configure.xml должна быть специальная секция

<clickhouse_tags>
<tag name="modes">
<item value="1" tags="key1=tag1 key2=tag2"/>
<item value="2" tags="key3=tag3 key4=tag4"/>
<item range="[3,100]" tags="key5=tag5 key6=tag6"/>
</tag>
<tag name="myTag2">
<item value="1" tags="mykey1=mytag1 mykey2=mytag2"/>
<item value="2" tags="mykey3=mytag3 mykey4=mytag4"/>
<item value="4" tags="mykey5=mytag5 mykey6=mytag6"/>
<item range="[min,10]" tags="mykey7=mytag8 mykey8=mytag8"/>
</tag>
<tag name="myDynValue">
<item range="[min,max]" tags="mykey=%v key2=%min key3=text"/>
<item range="[10,15]" tags="mykey=%min_%v_%max"/>
</tag>
</clickhouse_tags>

Поддерживается два способа задания диапазона.

  • "value" - прямое указание значения
  • "range" - указание диапазона. При этом разрешено указывать в качестве значений "min" и "max". При этом будут использованы минимально и максимально возможные значения для типа long.

Помимо этого поддерживается возможность динамически формировать тег. Возможные следующие замены:

  • %v - текущее значение
  • %min - минимум указанный в "range"
  • %max - максимум указанный в "range"

min, min - действуют только для "range".