feat: implement WebSocket server for real-time sensor data handling and add sensor status update routes

This commit is contained in:
Giuseppe Raffa
2026-04-14 19:05:37 +02:00
parent a34048ae6b
commit 137c6131c3
7 changed files with 382 additions and 13 deletions

View File

@@ -7,7 +7,7 @@ router.get('/', async (req, res) => {
res.json(result.rows);
} catch (err) {
console.error('Error fetching sensors', err);
res.status(500).json({ error: 'internal server error' });
res.status(500).json({ error: `internal server error, ${err}` });
}
});
@@ -21,10 +21,40 @@ router.get('/:id', async (req, res) => {
res.json(result.rows[0]);
} catch (err) {
console.error('Error fetching sensor', err);
res.status(500).json({ error: 'internal server error' });
res.status(500).json({ error: `internal server error, ${err}` });
}
});
//Toggle availability
router.post('/:id/inactive', async (req, res) => {
const { id } = req.params;
try {
const result = await db.query('sensors', 'SELECT id, name FROM sensors WHERE id = $1', [id]);
if (result.rows.length === 0) {
return res.status(404).json({ error: 'sensor not found' });
}
await db.query('sensors', 'UPDATE sensors SET active = false WHERE id = $1', [id]);
res.json({ status: 'ok' });
} catch (err) {
console.error('Error updating sensor status', err);
res.status(500).json({ error: `internal server error, ${err}` });
}
});
router.post('/:id/active', async (req, res) => {
const { id } = req.params;
try {
const result = await db.query('sensors', 'SELECT id, name FROM sensors WHERE id = $1', [id]);
if (result.rows.length === 0) {
return res.status(404).json({ error: 'sensor not found' });
}
await db.query('sensors', 'UPDATE sensors SET active = true WHERE id = $1', [id]);
res.json({ status: 'ok' });
} catch (err) {
console.error('Error updating sensor status', err);
res.status(500).json({ error: `internal server error, ${err}` });
}
});
module.exports = router;