diff --git a/server.js b/server.js index 5a459af..a2c78c7 100644 --- a/server.js +++ b/server.js @@ -535,6 +535,7 @@ function evaluateAlarms(readings, outputChanges = []) { } // 2. Sensor Triggers (Existing Logic) + let sensorDetails = []; // Track sensor values for logging if (!triggered && trigger.sensors && trigger.sensors.length > 0) { const results = trigger.sensors.map(cond => { const sensorId = cond.sensor; @@ -546,7 +547,10 @@ function evaluateAlarms(readings, outputChanges = []) { const type = parts.length === 2 ? parts[1] : parts[2]; const reading = readings.find(r => r.devName === devName); - if (!reading) return false; + if (!reading) { + sensorDetails.push({ sensor: sensorId, value: 'NO_READING', operator, threshold }); + return false; + } let value = null; if (type === 'temp') value = reading.temp_c; @@ -557,6 +561,9 @@ function evaluateAlarms(readings, outputChanges = []) { if (p) value = p.speak; } + // Track the sensor value for logging + sensorDetails.push({ sensor: sensorId, value: value, operator, threshold }); + if (value === null || value === undefined) return false; switch (operator) { @@ -577,10 +584,17 @@ function evaluateAlarms(readings, outputChanges = []) { } if (triggered) { - console.log(`ALARM TRIGGERED: ${alarm.name}`); + // Build detailed sensor info string + const sensorInfo = sensorDetails.map(s => + `${s.sensor}: ${s.value === null ? 'NULL' : s.value === 'NO_READING' ? 'NO_READING' : s.value} (${s.operator} ${s.threshold})` + ).join(', '); + + console.log(`ALARM TRIGGERED: ${alarm.name} | Sensors: ${sensorInfo}`); alarmStates.set(alarm.id, Date.now()); const action = JSON.parse(alarm.action_data); - const msg = `🚨 ALARM: ${alarm.name}\n\n${action.message || 'No message'}`; + const msg = `🚨 ALARM: ${alarm.name}\n\n${action.message || 'No message'}\n\nšŸ“Š Sensor Values:\n${sensorDetails.map(s => + `• ${s.sensor}: ${s.value === null ? 'NULL' : s.value === 'NO_READING' ? 'NO_READING' : s.value} (threshold: ${s.operator} ${s.threshold})` + ).join('\n')}`; sendTelegramNotification(msg); } } catch (err) {