You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
1.7 KiB
JavaScript

const express = require('express');
const app = express();
app.use(express.json());
const sensors = [
{
id: 'htu21d-01',
model: 'HTU21D',
quantities: ['temperature', 'relative_humidity']
},
{
id: 'htu21d-02',
model: 'HTU21D',
quantities: ['temperature', 'relative_humidity']
},
];
const measurements = []; //empty
app.get('/', (req, res) => {
res.send('Sensor Logger');
});
app.get('/api/status', (req, res) => {
res.json({ status: 'online', application: 'sensor-logger' });
});
app.get('/api/sensors', (req, res) => {
res.json(sensors);
});
app.get('/api/sensors/:id', (req, res) => {
const sensor = sensors.find(
(item) => item.id === req.params.id
);
if(!sensor) {
return res.status(404).json({
error: 'Sensor not found'
});
}
res.json(sensor);
});
app.post('/api/measurements', (req, res) => {
// crequire json submission
// 1. Receive the measurement.
const measurement = req.body;
// verify object
// Validate submitted fields and sensor id
// 2. Store it in memory.
measurements.push(measurement);
// 3. Show it in the server terminal.
console.log('Received:', measurement);
// 4. Confirm that it was stored.
res.status(201).json(measurement);
});
// GET
app.get('/api/measurements', (req, res) => {
res.json(measurements);
});
app.get('/api/measurements/latest', (req, res) => {
// Check whether any measurements exist.
if (measurements.length === 0) {
return res.status(404).json({
error: 'No measurements yet'
});
}
// The last array element is the latest submitted measurement.
const latest = measurements[measurements.length - 1];
res.json(latest);
});
// starting the listening service
app.listen(3030, () => {
console.log('Server running at http://localhost:3030');
});