Если кому интересно, то можно задать вирт. устройство произвольно из скрипта.
Логика проста.
Задаем массив объектов, которые хотим передать в вирт. устройство. Например:
[
{source_dev:"T3HLS-1/Temperature", target_dev:"Temperature1",modify_mode:"Kelvins"},
{source_dev:"T3HLS-1/External_Sensor_1", target_dev:"Temperature2",modify_mode:"Kelvins"},
{source_dev:"T3HLS-1/External_Sensor_2", target_dev:"Temperature3",modify_mode:"Kelvins"},
{source_dev:"T3HLS-1/Humidity", target_dev:"Humidity",modify_mode:"Round(x)"},
{source_dev:"T3HLS-1/Illuminance", target_dev:"Illuminance",modify_mode:"Round(xHyst2)"},
{source_dev:"T3HLS-1/Sound_Level", target_dev:"Sound_Level",modify_mode:"Round(xHyst2)"},
{source_dev:"T3HLS-1/Input_Voltage", target_dev:"Input_Voltage",modify_mode:"Round(x)"}
]);
затем обрабатываем этот массив, вынимая нужные поля и расставляя их в новом объекте полей (cells)
for (var i=0; i<this.SETTINGS.length;i++){
log("отрабатываем cell " + i);
cells[this.SETTINGS[i].target_dev] = {
type:"string",
value:"NA"
}
};
Ключевой для меня была конструкция cells[this.SETTINGS[i].target_dev]. Размещение переменной в квадратных скобках дает возможность создать поле с именем этой переменной.
ну и венец всему:
defineVirtualDevice(obj_name,{
title: obj_name,
cells:cells
});