我无法从 ESP-01 向我的后端服务器发送 AT 命令。错误 400 错误请求

问题描述 投票:0回答:1

嗨,我一直在尝试使用 stm 和 esp-01 并与 firebase 和后端服务器进行通信。我的后端服务器js是这样的:

const express = require('express');
const app = express();
const firebaseAdmin = require('firebase-admin');
const serviceAccount = require('.myFirebaseAdminSDK.json');
firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(serviceAccount),
    databaseURL: 'myFirebaseURL' 
});

app.use(express.json());

app.post('/sendData', (req, res) => {
    const { temperature } = req.body;


    const db = firebaseAdmin.database();
    db.ref('bme280').push({ temperature }) 
        .then(() => {
            res.send('Data sent successfully');
        })
        .catch(error => {
            console.error('Error sending data:', error);
            res.status(500).send('Error sending data');
        });
});
const PORT = process.env.PORT || 6355;
app.listen(PORT, () => {
    console.log(`Server started on port ${PORT}`);
});

我发送AT命令

AT+CIPSTART="TCP","192.168.1.38",6355
AT+CIPSEND=113
POST /sendData 
Host: 192.168.1.38
Content-Type: application/json
Content-Length: 20


{"temperature":"25"}

但是我从 ESP-01 收到了这个

AT+CIPSTART="TCP","192.168.1.38",6355

CONNECT

OK
AT+CIPSEND=113


OK
> 
Recv 113 bytes

SEND OK

+IPD,47:HTTP/1.1 400 Bad Request
Connection: close

CLOSED

我通过 windowsshell 检查我的服务器是否正常工作WindowsShell ss 这也适用于我的 firebase 实时数据库 Firebase ss 所以我无法弄清楚。 我发现这个使用AT命令将Json数据发送到服务器 但我已经这样发送了。 为什么我使用后端服务器?因为 Firebase 切换到 TLS 1.2 并且 AT 固件不支持它。 如果您有更好的解决方案,请告诉我。

firebase-realtime-database stm32 esp8266 at-command
1个回答
0
投票

AT+CIPSTART="TCP","192.168.1.38",6355

  1. 192.168.1.38
    是您的本地域,它不是 Firebase 域。
  2. 对于使用 AT 命令固件的 ESP01,要访问 SSL 站点,端口需要是
    443
    而不是
    6355
    ,协议也需要是“SSL”而不是“TCP”。
AT+CIPSTART="SSL","url",443

阅读ESP8266 SSL 用户指南了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.