You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一局域网内实现两台ESP32之间的数据传输?

同一局域网内两台ESP32的HTTP数据传输方案(无需AP模式)

核心思路

两台ESP32均连接到家庭现有路由器(同一局域网),其中作为HomeKit设备的ESP32开启HTTP服务器接收数据,另一台ESP32作为HTTP客户端主动发送传感器数据。


一、HomeKit ESP32(服务器端)代码片段

在你已有的HomeKit代码基础上,添加HTTP服务器逻辑即可:

#include <WiFi.h>
#include <WebServer.h>

// WiFi配置
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

WebServer server(80); // 监听80端口

// 处理传感器数据接收的接口
void handleSensorData() {
    // 接收温度参数
    if (server.hasArg("temp")) {
        String temp = server.arg("temp");
        // 此处可将数据同步到HomeKit设备逻辑(比如更新HomeKit温度传感器值)
        Serial.print("收到温度: ");
        Serial.println(temp);
    }
    // 接收湿度参数
    if (server.hasArg("humid")) {
        String humid = server.arg("humid");
        Serial.print("收到湿度: ");
        Serial.println(humid);
    }
    server.send(200, "text/plain", "数据接收成功");
}

void setup() {
    Serial.begin(115200);

    // 连接WiFi
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\nHomeKit设备IP: " + WiFi.localIP().toString());

    // 注册HTTP路由
    server.on("/sensor", HTTP_POST, handleSensorData);
    server.begin();
    Serial.println("HTTP服务器已启动");

    // 这里保留你原有的HomeKit初始化代码
    // ...
}

void loop() {
    server.handleClient(); // 处理HTTP请求
    // 这里保留你原有的HomeKit循环代码
    // ...
}

二、客户端ESP32(数据发送端)代码

#include <WiFi.h>
#include <HTTPClient.h>

// WiFi配置(与服务器端同一网络)
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

// HomeKit设备的固定IP(建议在路由器后台绑定MAC到固定IP)
const char* serverIP = "192.168.1.100";
const int serverPort = 80;

void setup() {
    Serial.begin(115200);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\n客户端已连接WiFi");
}

void loop() {
    if (WiFi.status() == WL_CONNECTED) {
        HTTPClient http;

        // 构建请求链接(替换为实际传感器读数)
        String requestUrl = "http://" + String(serverIP) + ":" + String(serverPort) + "/sensor?temp=25.3&humid=58";
        http.begin(requestUrl);

        // 发送GET请求(也可改用POST发送JSON格式数据)
        int httpCode = http.GET();
        if (httpCode > 0) {
            Serial.print("服务器响应: ");
            Serial.println(http.getString());
        } else {
            Serial.print("请求失败,错误码: ");
            Serial.println(httpCode);
        }
        http.end();
    }
    delay(5000); // 每5秒发送一次数据
}

关键注意事项

  • 给两台ESP32设置固定IP:可通过路由器后台绑定MAC地址到固定IP,或在代码中用WiFi.config()设置静态IP,避免IP变化导致通信中断。
  • 检查路由器设置:确保未开启AP隔离功能,否则同局域网设备无法互相通信。
  • 复杂数据传输:若需发送多维度数据,可改用POST请求发送JSON格式内容,服务器端通过server.arg("plain")获取并解析JSON。

内容的提问来源于stack exchange,提问作者Zhekich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:20:35