Более эффективный побитовый разбор регистра modbus

Ну конечно получилось.
Вот только сегодня до компьютера добрался
Если брать мой пример реализации и проверить устрйство на “виртуальность”, как намекал выше - достаточно сделать так:

//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);

Результат:
Screenshot_20230510_140251

Ну и “виртуальность” - определяется, собственно топиками /devices/wb-gpio/meta/driver и /devices/wb-gpio/meta

PS: вот благодаря таким вопросам работать интересно и увлекательно. :slight_smile: Благодарю!
PPS: А еще можно динамически контролы двигать, записывая разные занчения order :wink:

1 лайк