Ну конечно получилось.
Вот только сегодня до компьютера добрался
Если брать мой пример реализации и проверить устрйство на “виртуальность”, как намекал выше - достаточно сделать так:
//05_10_test_01.js
var dashName = "wb-gpio";
var ctrlName = "cDate";
//Если устройство "не виртуально" - получим
//ERROR: Error in creating control cDate on device wb-gpio: Device is external
//Тут проверим, виртуальное ли устройство. Если нет - сделаем его таковым.
if (getDevice(dashName).isVirtual()){
log.info("Устройство",dashName, "вируальное")
}
else {
log.info("Устройство",dashName, "НЕ вируальное")
defineVirtualDevice(dashName, {
title: dashName,
cells: {},
});
}
//Тут проверим есть ли уже контрол и если нет - создадим.
if (!getDevice(dashName).isControlExists(ctrlName)) {
log.info("Контрола нет, создаем.")
getDevice(dashName).addControl(ctrlName, {
type: "text",
value: "",
readonly: true
});
}
//Тут сделаем таймер, котрый будет обновлять контрл
setInterval(function(){
dev[dashName][ctrlName] = (new Date()).toString();
log.info("timer fired", (new Date()).toString());
}, 1000);
Результат:
Ну и “виртуальность” - определяется, собственно топиками /devices/wb-gpio/meta/driver
и /devices/wb-gpio/meta
PS: вот благодаря таким вопросам работать интересно и увлекательно. Благодарю!
PPS: А еще можно динамически контролы двигать, записывая разные занчения order