Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
for (const reference of result.references!) {
console.log(reference.toString());
}
const registeredNodes = await session.registerNodes(["ns=1;s=FanSpeed", "ns=1;s=PumpSpeed"]);
const fanSpeedId = registeredNodes[0].toString();
const pumpSpeedId = registeredNodes[1].toString();
console.log("registered Node", fanSpeedId);
console.log("registered Node", pumpSpeedId);
const value = await session.read({ nodeId: fanSpeedId, attributeId: AttributeIds.Value });
console.log(`FanSpeed ${value.toString()}`);
const value2 = await session.read({ nodeId: pumpSpeedId, attributeId: AttributeIds.Value });
console.log(`PumpSpeed ${value2.toString()}`);
await client.disconnect();
} catch (e) {
// Deal with the fact the chain failed
console.log(chalk.red("Error !"), e);
process.exit(-1);
}
})();
const result = await session.browse({
nodeId: "i=2558"
});
for (const reference of result.references!) {
console.log(reference.toString());
}
const registeredNodes = await session.registerNodes(["ns=1;s=FanSpeed", "ns=1;s=PumpSpeed"]);
const fanSpeedId = registeredNodes[0].toString();
const pumpSpeedId = registeredNodes[1].toString();
console.log("registered Node", fanSpeedId);
console.log("registered Node", pumpSpeedId);
const value = await session.read({ nodeId: fanSpeedId, attributeId: AttributeIds.Value });
console.log(`FanSpeed ${value.toString()}`);
const value2 = await session.read({ nodeId: pumpSpeedId, attributeId: AttributeIds.Value });
console.log(`PumpSpeed ${value2.toString()}`);
await client.disconnect();
} catch (e) {
// Deal with the fact the chain failed
console.log(chalk.red("Error !"), e);
process.exit(-1);
}
})();
console.log(n.toString());
});
const parameters1: MonitoringParametersOptions = {
discardOldest: true,
queueSize: 100,
samplingInterval: 100,
filter: new DataChangeFilter({
deadbandType: DeadbandType.Absolute,
deadbandValue: 0.1,
trigger: DataChangeTrigger.StatusValueTimestamp
})
};
const itemToMonitor1: ReadValueIdLike = {
attributeId: AttributeIds.Value,
nodeId: "ns=1;s=FanSpeed"
};
const item1 = await subscription.monitor(itemToMonitor1, parameters1, TimestampsToReturn.Both);
console.log(" Item1 = ", item1.result!.statusCode.toString());
item1.on("changed", (dataValue: DataValue) => {
console.log(" Value1 has changed : ", dataValue.toString());
});
const itemToMonitor2: ReadValueIdLike = {
attributeId: AttributeIds.EventNotifier,
nodeId: "i=2258"
};
const parameters2: MonitoringParametersOptions = {
discardOldest: true,
const itemToMonitor1: ReadValueIdLike = {
attributeId: AttributeIds.Value,
nodeId: "ns=1;s=PumpSpeed"
};
const item1 = ClientMonitoredItem.create(subscription, itemToMonitor1, parameters1, TimestampsToReturn.Both);
item1
.on("changed", (dataValue: DataValue) => {
console.log(" Value1 has changed : ", dataValue.toString());
})
.on("terminated", () => {
console.log("item1 has been terminated");
});
const itemToMonitor2: ReadValueIdLike = {
attributeId: AttributeIds.Value,
nodeId: "ns=1;s=FanSpeed"
};
const item2 = ClientMonitoredItem.create(subscription, itemToMonitor2, parameters1, TimestampsToReturn.Both);
item2
.on("changed", (dataValue: DataValue) => {
console.log(" Value2 has changed : ", dataValue.toString());
})
.on("terminated", () => {
console.log("item2 has been terminated");
});
await timeout(10000);
await subscription.terminate();
await client.disconnect();
const subscription = await session.createSubscription2({
maxNotificationsPerPublish: 1000,
publishingEnabled: true,
requestedLifetimeCount: 100,
requestedMaxKeepAliveCount: 10,
requestedPublishingInterval: 1000
});
subscription.on("raw_notification", (n: any) => {
console.log(n.toString());
});
const itemsToMonitor = [
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_1.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_2.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_3.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_4.Temperature")
}
];
const timerId = setInterval(async () => {
if (client.isReconnecting) {
console.log(" suspending OPCUA read while connection is lost");
return;
}
try {
const dataValue = await session.read({
attributeId: AttributeIds.Value,
nodeId: "i=2258"
});
console.log(dataValue.statusCode.toString(), dataValue.value.toString());
console.log(" now un-plug and re-plug the network cable to test node-opcua automatic reconnection");
} catch (err) {
console.log(" Error while reading value", err.message);
}
}, 2000);
public monitor_item(treeItem: any) {
if (!this.subscription) return;
const node = treeItem.node;
this.subscription.monitor({
nodeId: node.nodeId,
attributeId: AttributeIds.Value
//, dataEncoding: { namespaceIndex: 0, name:null }
}, {
samplingInterval: 1000,
discardOldest: true,
queueSize: 100
},
TimestampsToReturn.Both,
(err: Error | null, monitoredItem: ClientMonitoredItem) => {
if (err) {
console.log("cannot create monitored item", err.message);
return;
}
node.monitoredItem = monitoredItem;
const dataValueDataType = await session.read({ nodeId: variableNodeID, attributeId: AttributeIds.DataType });
console.log(" DataType =", dataValueDataType.value.value.toString());
const dataTypeNodeId = dataValueDataType.value.value as NodeId;
const extraDataTypeManager = await session.extractNamespaceDataType();
await getDataTypeDefinition(session, dataTypeNodeId, extraDataTypeManager);
const dataValueDataTypeBrowseName = await session.read({
attributeId: AttributeIds.BrowseName,
nodeId: dataValueDataType.value.value
});
console.log(" DataType BrowseName", dataValueDataTypeBrowseName.value.value.toString());
const dataValue = await session.read({ nodeId: variableNodeID, attributeId: AttributeIds.Value });
console.log(dataValue.toString());
await session.close();
await client.disconnect();
console.log("Done !");
}
subscription.on("raw_notification", (n: any) => {
console.log(n.toString());
});
const itemsToMonitor = [
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_1.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_2.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_3.Temperature")
},
{
attributeId: AttributeIds.Value,
nodeId: resolveNodeId("ns=3;s=AirConditioner_4.Temperature")
}
];
const optionsGroup = {
discardOldest: true,
queueSize: 1,
samplingInterval: 10
};
const monitoredItemGroup = ClientMonitoredItemGroup.create(subscription, itemsToMonitor, optionsGroup, TimestampsToReturn.Both);