ESP32通过本地IP地址对接私有部署ThingsBoard的方案咨询
ESP32通过本地IP地址对接私有部署ThingsBoard的方案咨询
嘿,这个场景我之前折腾过好几次,给你分享下直接可用的方案和踩过的坑:
直接替换IP地址的基础操作
你把THINGSBOARD_SERVER改成本地IP的思路完全没问题,这是最直接的做法。不过要注意两个关键细节:- 一定要给你的ThingsBoard服务器设置静态IP,别用路由器自动分配的动态IP,不然哪天路由器重启换了IP,ESP32就找不到服务器了
- 确认ESP32和服务器在同一局域网,WiFi连的是同一个热点/网段
代码里直接替换就行,比如:
constexpr char THINGSBOARD_SERVER[] = "192.168.0.100"; constexpr uint16_t THINGSBOARD_PORT = 1883; // 保持默认端口,要是你改了TB的端口就对应修改连接失败的排查步骤
要是替换后连不上,按这个顺序查:- 先在电脑上用
ping 192.168.0.100测试,能通再搞ESP32的代码,排除服务器本身的问题 - 检查ESP32的WiFi连接代码,确保SSID和密码正确,成功连入局域网
- 看ThingsBoard的防火墙设置,有没有开放MQTT(1883)或者你用的通信端口的局域网访问权限
- 如果你用MQTT协议,确认连接逻辑里传对了IP和端口,比如:
if (!tb.connect(THINGSBOARD_SERVER, THINGSBOARD_PORT, YOUR_DEVICE_TOKEN)) { Serial.println("连接ThingsBoard失败,重试中..."); delay(2000); }
- 先在电脑上用
进阶优化:用本地域名(可选)
要是你嫌后期改IP麻烦,也可以在路由器里给TB服务器做个本地域名映射,比如把tb-local映射到192.168.0.100,这样ESP32代码里可以写constexpr char THINGSBOARD_SERVER[] = "tb-local";,和用demo域名的写法完全一样,以后服务器IP变了只需要改路由器的映射,不用动ESP32代码
备注:内容来源于stack exchange,提问作者Chul Kim
相关产品推荐
相关产品推荐

