From 621a38f8bfb9eb782a46b5f9e879867fe6dc1420 Mon Sep 17 00:00:00 2001 From: unocelli Date: Tue, 26 Nov 2024 17:47:11 +0100 Subject: [PATCH] fix: restored values summary (async) --- server/runtime/devices/device.js | 57 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/server/runtime/devices/device.js b/server/runtime/devices/device.js index 982eed125..57c43a4bf 100644 --- a/server/runtime/devices/device.js +++ b/server/runtime/devices/device.js @@ -38,10 +38,10 @@ function Device(data, runtime) { var sharedDevices = data.sharedDevices; var tryToConnect = 0; var comm; // Interface to OPCUA/S7/.. Device - // required: connect, disconnect, isConnected, polling, init, load, getValue, - // getValues, getStatus, setValue, bindAddDaq, getTagProperty, + // required: connect, disconnect, isConnected, polling, init, load, getValue, + // getValues, getStatus, setValue, bindAddDaq, getTagProperty, fncGetDeviceProperty = runtime.project.getDeviceProperty; - + if (data.type === DeviceEnum.S7) { if (!S7client) { return null; @@ -56,44 +56,44 @@ function Device(data, runtime) { if (!MODBUSclient) { return null; } - comm = MODBUSclient.create(data, logger, events, manager, runtime); + comm = MODBUSclient.create(data, logger, events, manager, runtime); } else if (data.type === DeviceEnum.BACnet) { if (!BACNETclient) { return null; } - comm = BACNETclient.create(data, logger, events, manager, runtime); + comm = BACNETclient.create(data, logger, events, manager, runtime); } else if (data.type === DeviceEnum.WebAPI) { if (!HTTPclient) { return null; } - comm = HTTPclient.create(data, logger, events, manager, runtime); + comm = HTTPclient.create(data, logger, events, manager, runtime); } else if (data.type === DeviceEnum.MQTTclient) { if (!MQTTclient) { return null; } data.certificatesDir = path.resolve(runtime.settings.appDir, '_certificates'); - comm = MQTTclient.create(data, logger, events, runtime); + comm = MQTTclient.create(data, logger, events, runtime); } else if (data.type === DeviceEnum.EthernetIP) { if (!EthernetIPclient) { return null; } - comm = EthernetIPclient.create(data, logger, events, manager, runtime); + comm = EthernetIPclient.create(data, logger, events, manager, runtime); } else if (data.type === DeviceEnum.FuxaServer) { if (!FuxaServer) { return null; } - comm = FuxaServer.create(data, logger, events, manager); + comm = FuxaServer.create(data, logger, events, manager); } else if (data.type === DeviceEnum.ODBC) { if (!ODBCclient) { return null; } - comm = ODBCclient.create(data, logger, events, manager); + comm = ODBCclient.create(data, logger, events, manager); } // else if (data.type === DeviceEnum.Template) { // if (!TEMPLATEclient) { // return null; // } - // comm = TEMPLATEclient.create(data, logger, events, manager); + // comm = TEMPLATEclient.create(data, logger, events, manager); // } if (!comm) { return null; @@ -202,7 +202,7 @@ function Device(data, runtime) { } /** - * Call Device to disconnect + * Call Device to disconnect */ this.disconnect = function () { return comm.disconnect(); @@ -280,7 +280,7 @@ function Device(data, runtime) { } }); } - + /** * Call Device to return Tag/Node attribute (only OPCUA) */ @@ -356,8 +356,8 @@ function Device(data, runtime) { /** * Set connection status of device in FuxaServer * used only from FuxaServer device - * @param {*} deviceId - * @param {*} status + * @param {*} deviceId + * @param {*} status */ this.setDeviceConnectionStatus = function (deviceId, status) { comm.setConnectionStatus(deviceId, status); @@ -376,28 +376,27 @@ function Device(data, runtime) { return parseFloat(current) + parseFloat(fnc[1]); } else if (fnc[0] === 'remove') { return parseFloat(current) - parseFloat(fnc[1]); - } + } } catch (err) { logger.error(err); } return value; } - this.restoreValues = function() { + this.restoreValues = () => { try { if (this.getDaqValueToRestore) { var self = this; - this.getDaqValueToRestore(property.id).then((toRestore) => { + this.getDaqValueToRestore(property.id).then(async (toRestore) => { var restored = 0; - toRestore.forEach(element => { + for (let element of toRestore) { if (element.id && !utils.isNullOrUndefined(element.value)) { - self.setValue(element.id, element.value).then((result) => { - if (result) { - restored++; - } - }); + const result = await self.setValue(element.id, element.value); + if (result) { + restored++; + } } - }); + } logger.info(`'${property.name}' restored ${restored}/${toRestore.length} values`); }).catch((err) => { logger.error(`'${property.name}' restore error! ${err}`); @@ -425,8 +424,8 @@ function Device(data, runtime) { /** * Return the property (security mode) supported from device - * @param {*} endpoint - * @param {*} type + * @param {*} endpoint + * @param {*} type */ function getSupportedProperty(endpoint, type, packagerManager) { var self = this; @@ -451,7 +450,7 @@ function getSupportedProperty(endpoint, type, packagerManager) { /** * Return the result of request - * @param {*} property + * @param {*} property */ function getRequestResult(property) { return new Promise(function (resolve, reject) { @@ -469,7 +468,7 @@ function getRequestResult(property) { /** * Load the plugin library - * @param {*} type + * @param {*} type */ function loadPlugin(type, module) { if (type === DeviceEnum.S7) {