У меня есть arduino для отправки данных. Я хотел отправить значения в службу nodejs и показать ее на веб-странице. Я хотел использовать socket.io, но я просто могу использовать UDP-соединение от Arduino к серверу (ethe rnet). Проблема в том, что я не знаю, как объединить оба кода в один.
Мой код socket.io сейчас работает, если я вызываю его с веб-сайта, но вместо создания var msg он должен получить данные, которые отправляет arduino.
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3000;
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
setInterval(function()
{
console.log("Emulando UDP")
var msg = JSON.parse ('{"x" : 1, "y" : 1}');
msg.x = Math.floor(Math.random() * 760);
msg.y = Math.floor(Math.random() * 760);
io.emit('udp data', msg);
}, 1000);
});
/*
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
*/
http.listen(port, function(){
console.log('listening on *:' + port);
});
Это служба UDP, которая читает пакеты arduino:
const udp = require('dgram')
const server = udp.createSocket('udp4')
const data = Buffer.from('MSG from UDP client')
server.on('error', function(error) {
console.log('Error ' + error);
server.close();
});
server.on('message', function(msg, info) {
console.log('Data received from client : ' + msg.toString());
console.log('Received %d bytes from %s:%d\n',msg.length, info.address, info.port);
});
//emits when socket is ready and listening for datagram msgs
server.on('listening',function(){
var address = server.address();
var port = address.port;
var family = address.family;
var ipaddr = address.address;
console.log('Server is listening at port : ' + port);
console.log('Server ip :' + ipaddr);
console.log('Server is IP4/IP6 : ' + family);
/*
server.send(data, 8888, "192.168.1.200", error => {
if (error) {
console.log(error)
server.close()
} else {
console.log('Data sent !!!')
}
});
*/
});
//emits after the socket is closed using socket.close();
server.on('close',function(){
console.log('Socket is closed !');
});
server.bind(4444);
Любая идея о том, как объединить их в один, мне нужна помощь, пожалуйста Я новичок в этом, любая помощь будет оценена очень !! Когда я попытался объединить их, я не получил данные arduino.