Не получается отправить данные в формате JSON с ESP8266 на сервер на локальный сервер на node.js
Отправляю данные в формате JSON с esp8266 используя библиотеки SocketIOClient, ArduinoJSON, в компорт выводится, что данные отправились, но на сервер данные не приходит, и используя дебаггер я заметил, что часть с приёмом данных попросту скипается, может ли мне кто помочь с этой проблемой? Код скину ниже
Код сервера:
let PORT = process.env.PORT || 3000;
const express = require('express');
const app = express();
let http = require('http');
let server = http.Server(app);
const io = require("socket.io")(server, {
cors: {
origin: "*",
methods: ["GET", "POST"],
transports: ["websocket", "polling"],
credentials: true,
},
allowEIO3: true,
});
app.use(express.static('view'));
app.get('/', (req, res) => {
res.sendFile(__dirname + '/view/pages/home/index.html');
});
app.get('/ac', (req, res) => {
res.sendFile(__dirname + '/view/pages/ac/index.html');
});
app.get('/cv', (req, res) => {
res.sendFile(__dirname + '/view/pages/cv/index.html');
});
app.get('/light', (req, res) => {
res.sendFile(__dirname + '/view/pages/light/index.html');
});
app.get('/blinds', (req, res) => {
res.sendFile(__dirname + '/view/pages/blinds/index.html');
});
app.get('/venting', (req, res) => {
res.sendFile(__dirname + '/view/pages/venting/index.html');
});
app.get('/robot', (req, res) => {
res.sendFile(__dirname + '/view/pages/robot/index.html');
});
server.listen(PORT, () => console.log(`Server started on ${PORT}...`));
io.on('connect', function(socket) {
console.log('new user connected');
socket.on('espData', data =>{
console.log('data Received: ' + data);
try{
var obj = JSON.parse(data);
console.log('temp:' + obj.temp + 'hum: ' + obj.hum);
} catch(err){
console.log('The incoming data is not a valid JSON format');
}
});
});
код с esp8266:
#include <Arduino.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <SocketIoClient.h>
#include <DHT.h>
#define USER_SERIAL Serial
#define DHTTYPE DHT11
#define DHTPin D4
DHT dht(DHTPin, DHTTYPE);
float hum = 0, temp = 0;
const char *ssid = "AndrewNet";
const char *pass = "pass1234word";
SocketIoClient webSocket;
void DHTRead() //Работает!!
{
hum = dht.readHumidity();
temp = dht.readTemperature();
if (isnan(hum) || isnan(temp))
{
Serial.println("Failed to read from DHT sensor!");
}
else
{
Serial.print("Humidity: ");
Serial.println(hum);
Serial.print(" %\t Temperature: ");
Serial.print(temp);
Serial.println(" *C ");
}
}
void sendDataJSON()
{
Serial.begin(9600);
while (!Serial)
continue;
DynamicJsonDocument doc(500);
doc["hum"] = hum;
doc["temp"] = temp;
String jsonStr;
serializeJson(doc, jsonStr);
const char* jsonString = jsonStr.c_str();
Serial.println(jsonString);
delay(1000);
webSocket.emit("data", jsonString);
Serial.println("Data was sent!");
delay(1500);
}
void controlled(const char *message, size_t length)
{
USER_SERIAL.println(message);
// DynamicJsonDocument doc(1024);
// desarializeJson(doc, message);
// double r = doc["r"];
// double g = doc["g"];
// double b = doc["b"];
// USER_SERIAL.print("RGB(");
// USER_SERIAL.print(r);
// USER_SERIAL.print(",");
// USER_SERIAL.print(g);
// USER_SERIAL.print(",");
// USER_SERIAL.print(b);
// USER_SERIAL.print(")");
// analogWrite(R, (r * 255));
// analogWrite(G, (g * 255));
// analogWrite(B, (b * 255));
}
void connectWiFi()
{
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
USER_SERIAL.print(".");
delay(1000);
}
USER_SERIAL.print("");
USER_SERIAL.println("WiFi connected");
USER_SERIAL.print("IP Address: ");
USER_SERIAL.println(WiFi.localIP());
sendDataJSON();
}
void setup()
{
USER_SERIAL.begin(9600);
dht.begin();
connectWiFi();
webSocket.begin("192.168.43.159", 3000);
webSocket.on("message", controlled);
}
void loop()
{
webSocket.loop();
DHTRead();
sendDataJSON();
}