grunig-nodes
Version:
Grünig Nodes Library
51 lines (42 loc) • 1.98 kB
JavaScript
module.exports = function(RED) {
function OpcUaReadNode(config) {
RED.nodes.createNode(this, config);
var node = this;
// Nachrichtenverarbeitungsfunktion
node.on('input', function(msg) {
// Einstellungen speichern
var path = config.path || ""; // Standardwert verwenden, wenn nicht vorhanden
var value = config.value || 0;
for (var i = 1; i <= 15; i++) {
// Konstruieren des Variablennamens
var variableName = "data" + i;
// Abrufen des Datenstrings aus dem Kontext
var dataString = config[variableName];
// Überprüfen, ob Daten vorhanden sind
if (dataString !== undefined) {
// Trennen von Name und Datentyp
var parts = dataString.split(/\s*\[\s*/);
var name = parts[0].trim(); // Name ist der erste Teil
// Überprüfen, ob ein Datentyp vorhanden ist
var dataType = "";
if (parts.length > 1) {
dataType = parts[1].replace(']', '').trim(); // Datentyp ist der zweite Teil ohne das schließende eckige Klammern []
}
// Erstellen der Nachricht
var dataMsg = {
topic: path + name,
datatype: dataType,
browseName: name,
payload: value
};
// Überprüfen, ob browseName und datatype definiert sind
if (dataMsg.browseName !== "" && dataMsg.datatype !== "") {
node.send(dataMsg);
}
}
}
});
}
// Node-Typ registrieren
RED.nodes.registerType("OpcUa-Read", OpcUaReadNode);
};