grunig-nodes
Version:
Grünig Nodes Library
43 lines (40 loc) • 2.04 kB
JavaScript
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);
}