UNPKG

grunig-nodes

Version:

Grünig Nodes Library

43 lines (40 loc) 2.04 kB
module.exports = function(RED) { function AlarmOutput(config) { RED.nodes.createNode(this, config); var node = this; // Nachrichtenverarbeitungsfunktion node.on('input', function(msg) { var alarmList = JSON.parse(config.alarmList); // Extrahieren der Alarmliste aus dem Konfigurationsfeld var path = config.mqttPath; var language = config.language; var payload = parseInt(msg.payload); // Konvertieren des Payloads in eine Ganzzahl if (msg.topic.includes(path)){ // Überprüfen, ob die Alarmliste ein gültiges JSON-Array ist if (Array.isArray(alarmList)) { // Durchlaufen der Alarmliste und Extrahieren der benötigten Informationen var alarms = []; alarmList.forEach(function(alarm, index) { if (alarm && typeof alarm === 'object') { // Überprüfen, ob der Alarm aktiviert ist und das entsprechende Bit gesetzt ist if (alarm.Enable === true && ((payload >> (index)) & 1) === 1) { var dataMsg = { payload: [{ 'Alarm': alarm.Alarm, 'Message': alarm.Message[language] },{ _type: "Alarm" }] }; node.send(dataMsg); } } }); } else { // Wenn die Alarmliste kein gültiges JSON-Array ist, Fehlermeldung ausgeben node.error("Alarm list is not a valid JSON array", msg); } } }); } RED.nodes.registerType("AlarmOutput", AlarmOutput); }