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

如何建立与Tasmota设备的WebSocket连接?实时数据获取方案咨询

Tasmota设备实时数据获取方案

1. WebSocket连接(原生支持)

Tasmota本身就支持WebSocket连接,这是获取实时数据的高效方式,不用轮询:

  • 连接地址:ws://<你的设备IP>/ws
  • 连接成功后,设备会主动推送状态变化(比如传感器数值、开关状态更新);你也可以主动发送命令获取初始数据。
  • 前端JS示例:
function initWebSocket() {
  const ws = new WebSocket('ws://你的设备IP/ws');
  ws.onopen = () => {
    console.log('WebSocket连接成功');
    // 请求传感器初始数据
    ws.send('{"command":"status","parameter":8}');
  };
  ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    // 这里替换成你的页面更新逻辑
    document.getElementById('temp-value').textContent = data.StatusSNS?.Temperature || '无数据';
  };
  ws.onclose = () => {
    console.log('连接断开,3秒后重连');
    setTimeout(initWebSocket, 3000);
  };
}
initWebSocket();

2. MQTT协议(多设备场景首选)

如果要管理多个Tasmota设备,MQTT是更合适的选择:

  • 先在Tasmota设备的WebUI里配置MQTT服务器信息(路径:Configuration -> MQTT),设置好服务器地址、端口、主题前缀。
  • 设备会自动把状态数据发布到指定主题(比如tele/<设备名>/SENSOR)。
  • 前端可以通过MQTT over WebSocket连接到你的MQTT服务器,订阅对应主题就能实时收数据,用mqtt.js库就能实现:
import mqtt from 'mqtt';
const client = mqtt.connect('ws://你的MQTT服务器IP:8083/mqtt');
client.on('connect', () => {
  client.subscribe('tele/你的设备名/SENSOR');
});
client.on('message', (_, message) => {
  const data = JSON.parse(message.toString());
  // 更新页面展示
  console.log('实时数据:', data);
});

3. WebHook主动推送

让Tasmota设备主动把数据推送到你的网站接口:

  • 在设备WebUI的Configuration -> Other -> WebHook里,设置你的网站接收数据的API地址,选择触发条件(比如状态变化、定时推送)。
  • 设备满足条件时会POST数据到你的接口,后端接收后可以存库,再通过WebSocket/SSE推给前端页面。

4. Server-Sent Events(SSE)

如果你的后端已经能拿到Tasmota数据(比如通过MQTT或WebHook),可以用SSE向前端推送:

  • 后端写一个SSE接口,前端用EventSource连接:
const eventSource = new EventSource('/api/tasmota-data-stream');
eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // 更新页面元素
  document.getElementById('sensor-data').textContent = JSON.stringify(data);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:47:23