Я успешно реализовал DS18B20 на Raspberry Pi с интерфейсом Gatsby. Мой следующий шаг — поместить все данные о температуре в mongodb, который я использую STRAPI в качестве бэкэнда. Ниже приведен мой код в server.js.
const express = require('express');
const http = require('http');
const socketIO = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIO(server);
const ds18b20 = require('ds18b20');
const fetch = require('isomorphic-fetch');
const port = 4001;
const interval = 1000;
io.on('connection', (socket) => {
var sensorId = [];
ds18b20.sensors((err, id) => {
sensorId = id;
socket.emit('sensors', id);
});
setInterval(() => {
sensorId.forEach((id) => {
ds18b20.temperature(id, (err, value) => {
socket.emit('temps', {'id': id, 'value': value});
});
});
}, interval);
setInterval(() => {
sensorId.forEach((id) => {
ds18b20.temperature(id, (err, value) => {
var tempData = {
temperature: value,
date: new Date()
};
fetch('http://172.20.10.3:1337/weathers', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(tempData),
})
.then(response => response.json())
.then(data => console.info(data))
.catch(err => console.info(err));
});
});
}, 10000);
});
server.listen(port, () => console.info(`Listening on port ${port}`));
Он возвращает следующий журнал:
Dec 20 23:47:41 raspberrypi node[5195]: {
Dec 20 23:47:41 raspberrypi node[5195]: statusCode: 400,
Dec 20 23:47:41 raspberrypi node[5195]: error: 'Bad Request',
Dec 20 23:47:41 raspberrypi node[5195]: message: 'ValidationError',
Dec 20 23:47:41 raspberrypi node[5195]: data: { errors: { temperature: [Array] } }
Dec 20 23:47:41 raspberrypi node[5195]: }
Как я могу получить с помощью метода POST для STRAPI? Заранее большое спасибо.
Я понимаю, я просто меняю значение на String с помощью .toString().
var tempData = {
temperature: value,
date: new Date()
};
к
var tempData = {
temperature: value.toString(),
date: new Date()
};