我有温度传感器ds18b20,并且我成功获得了读数,如何随着温度变化将该值发送给连接的客户端。

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


connection上使用此命令仅执行一次,因此我需要连续发送给客户端,该请求将显示在HTML页面上。

最佳答案

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


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


这样,仅当新温度实际上与之前的值有足够大的差异并且值得使用一些带宽来发送时,我才向客户端发送新温度。

07-28 10:06