首先,确保Arduino已连接并正确设置了端口。
其次,确保NodeJS服务器已正确运行并监听端口。
代码示例:
Arduino端代码:
// 定义需要发送的json格式数据
String jsonStr = "{\"temperature\": 25, \"humidity\": 50}";
void sendData() {
// 连接NodeJS服务器
Serial.println("AT+CIPSTART=\"TCP\",\"192.168.1.101\",3000");
if (Serial.find("CONNECT"))
{
// 向NodeJS发送数据
String sendStr = String("POST /data HTTP/1.1\r\n") +
"Host: 192.168.1.101:3000\r\n" +
"Connection: close\r\n" +
"Content-Type: application/json\r\n" +
"Content-Length: " + jsonStr.length() + "\r\n\r\n" +
jsonStr +
"\r\n\r\n";
Serial.print("AT+CIPSEND=");
Serial.println(sendStr.length());
if(Serial.find(">"))
{
Serial.print(sendStr);
Serial.println();
}
}
Serial.println("AT+CIPCLOSE");
}
NodeJS服务器代码:
// 引入Socket.io和http模块
const socketIO = require('socket.io');
const http = require('http');
// 创建http服务器,并监听3000端口
const server = http.createServer();
server.listen(3000);
// 创建Socket.io服务
const io = socketIO(server);
// 监听连接事件
io.on('connection', (socket) => {
console.log('a user connected');
// 监听data事件
socket.on('data', (data) => {
// 解析收到的json格式数据
let json = JSON.parse(data);
// 获取temperature和humidity值
let temperature = json.temperature;
let humidity = json.humidity;
console.log(`temperature: ${temperature}, humidity: ${humidity}`);
});
// 监听断开事件
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
``