UNPKG

grunig-nodes

Version:

Grünig Nodes Library

85 lines (73 loc) 3.88 kB
module.exports = function(RED) { function Modbus_Read (config) { RED.nodes.createNode(this, config); var node = this; // Nachrichtenverarbeitungsfunktion node.on('input', function(msg) { // Einstellungen speichern var mqttPath = config.mqttPath || ""; // Standardwert verwenden, wenn nicht vorhanden var comEnabled = config.comEnabled || "false"; var format = config.format || ""; var communication = msg.payload.Communication || false; var machineID = msg.payload.MachineID; var value; for (var i = 1; i <= 15; i++) { // Speichern der Datenwerte var variableName = "data" + i; var dataString = config[variableName]; if (dataString !== undefined && dataString !== "") { if (format === "format_unit"){ // Trennen von Name, Zahl und Symbol var match = dataString.match(/([^[\]]+)\s*\[(\d+)\]\s*\[([^\]]+)\]/); if (match !== null && match.length === 4){ var name = match[1].trim(); // Name var payload = parseInt(match[2].trim()); // Zahl (als Integer) var unit = match[3].trim(); // Symbol } if (communication === false && comEnabled === "true") { value = 0; } else { value = msg.payload.Value[payload]; } dataMsg = { payload: { 'value': value, 'unit': unit }, topic: "GRUNIG/" + machineID + "/" + mqttPath + "/" + name }; } else if (format === "format_payload"){ // Extrahiere den Text und den Inhalt in den eckigen Klammern var match = dataString.match(/([^[\]]+)\s*\[(\S+)\]/); if (match !== null && match.length === 3){ var name = match[1].trim(); // Text vor den eckigen Klammern var payload = parseInt(match[2].trim()); // Inhalt der eckigen Klammern } if (communication === false && comEnabled === "true") { value = 0; } else { value = msg.payload.Value[payload]; } dataMsg = { payload: value, topic: "GRUNIG/" + machineID + "/" + mqttPath + "/" + name }; } else{ node.warn("no format selected"); } //******************** */ // Rückgabe des msg-Objekts if (name !== "" && name !== undefined && value !== undefined && value !== ""){ node.send(dataMsg); } } } }); } // Node-Typ registrieren RED.nodes.registerType("Modbus-Read", Modbus_Read); };