使用ESP8266构建一个简单的温湿度在线监测装置

本文档介绍了一个基于ESP8266和DHT11传感器的物联网项目,通过WebSocket实现温湿度数据的采集和实时显示。项目旨在建立基础的物联网概念,ESP8266每两秒采集一次数据并通过WiFi发送到服务器。服务器端使用Node.js和'nodejs-websocket'库接收并显示数据,客户端使用ECharts动态显示温度。此外,讨论了Socket.IO与Node.jsWebSocket的区别,并计划增加历史数据存储、联动控制和报警功能,以及可能采用MQTT协议优化通信。

主要功能

在终端对环境温湿度进行采集,通过WIFI接入网络

能够显示实时参数变化(表格和曲线),具备一定的历史数据回溯功能

后期可加入一些联动控制或报警功能

项目目的

没有什么特别的实用性,就是随便玩一玩,建立基础的物联网概念

开展思路

采集端每两秒采集一次数据并传输,数据传输可采用post或websocket,后续考虑直接采用websocket

服务器端实时接受采集的数据并进行显示,每十分钟对数据进行一次存储,作为历史数据(后面这个还没搞。。。)

服务器搭建选择

网络连接可以采用虚拟服务器进行内网映射

本来想用之前的那个红米1s作为本地服务器的,刷了N次机,官方的非官方的刷机包都试过了,稳定版root不了,用开发版每次root之后wifi连接都出现了问题,不知道是什么原因,已经基本放弃了,以后再说吧,还是先老老实实用电脑试试吧

写在前面:
在玩ESP8266的时候,想在ESP8266和DHT11的基础上搞个wifi数据采集模块,实现传感器数据的采集和实时显示。
一开始的时候想通过http轮询get或post方式进行传感器数据的传输,想了一下过程有点繁琐,就在网上找了一下发现websocket是一种比较好的方式。

HTTP请求头部比较长,浪费带宽,而websocket就比较好了,既可以双向传输,也比较节省带宽,目前直播网站中普遍采用websocket方式传输弹幕信息,一些聊天类应用也有所采用。websocket协议的标识符是ws,像https一样如果加密的话是wxs。

在此后的过程中踩了很多坑,包括了各个方面

研究通讯模式时先后发现了两个websocket应用,即socket.io和Nodejs Websocket,他们都是基于Node.js的

Socket.IO

官网:https://socket.io/docs/
Socket.IO是一个库,它支持浏览器和服务器之间的实时、双向和基于事件的通信。它包括:
Node.js服务器:Source | API
浏览器的Javascript客户端库(也可以从Node.js运行):Source | API
具备以下特性:
1.可靠性
2.自动重连
3.断开检测
4.二进制传输
5.多路复用
Socket.IO不是WebSocket实现。尽管Socket.IO确实在可能的情况下使用WebSocket作为传输,但它在每个数据包中添加了一些元数据:需要消息确认时的数据包类型、命名空间和数据包id。这就是为什么WebSocket客户端无法成功连接到Socket.IO服务器,而Socket.IO客户端也无法连接到WebSocket服务器。

上面是Socket.IO的官方简介,尤其是最后一段,一开始的时候我没有注意到,在对示例进行调试的过程中发现,每个连接的端口是不固定的,而且发送数据的格式也如上面所述,都是封装好的,需要浏览器的支持。

这也就造成了我后面没法用这个和8266进行通讯了。

Nodejs Websocket

websocket服务器和客户端的nodejs模块
可以提供一些基础的websocket功能,进而实现传感器数据的传输
所以这里我们就采用这个了

服务器端:
开启websocket服务,接收来自客户端和8266的信息

var http = require("http")
var ws = require("nodejs-websocket")
var fs = require("fs")

var moment = require('moment')
moment.locale('zh-cn')


http.createServer(function (r
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值