首页 > 解决方案 > 使用节点 js websockets 实时显示温度

问题描述

我有温度传感器 ds18b20 并且我成功读取了读数,如何在温度变化时将此值发送给连接的客户端。

socket.emit('Temperature', TempValue() );

使用connection它只执行一次,我需要不断地向客户端发送这将显示在 HTML 页面上。

标签: javascriptnode.jsraspberry-pi

解决方案


我有一个有点类似的系统,它基于几个温度传感器控制阁楼风扇。我要做的是:

  1. 我使用setInterval()读取温度传感器的服务器本地轮询间隔。此间隔独立于任何连接,它是服务器代表所有连接执行的操作。
  2. 当应用程序第一次启动时,第一个温度被发送到任何连接的客户端,我存储了我上次发送的那个温度值。
  3. 然后在下一个轮询循环中,我将新的当前温度值与我发送的最后一个温度值进行比较。当这两个值相差某个预定量时,我会向所有连接的客户端广播一个新的温度值,io.emit()并将刚刚发送的新值保存为新的比较值。
  4. 如果它们没有足够的差异,那么我不会发送任何东西,也不会保存新的温度并继续检查每个轮询间隔,等待温度值差异到足以保证将其发送给客户端。

通过这种方式,我只在它实际上与之前的值有足够的差异并且值得使用一些带宽发送时才向客户端发送一个新的温度。


推荐阅读