服务器具有挂起的重新启动_ESP8266与网络服务器实时通讯

背景知识视频教程

Bootstrap 4布局:响应式单页设计​viadean.com
289dd5695a7b0350a15e1357db36e4dc.png
Node.js,Express,MongoDB等:2020年完整的训练营 - 国外课栈​viadean.com
5baab70f1b99d2e2a61aee1f962a6891.png
高级Express - 国外课栈​viadean.com
8e38136841d166f6cdba8a91d3bd05ac.png

目前,所有已呈现的通信都是基于请求响应方法的,其中一个实体发送请求,另一实体发回响应。 但是在某些情况下,您需要ESP8266模块与服务器之间的实时通信,而不仅仅是事务。

实时通讯协议

ESP8266流数据

要从ESP8266流传输数据,我们首先需要在ESP8266与服务器之间建立连接; 通过连接流式传输的数据将是X,Y和Z轴的加速度值。 ESP8266将从ADXL345芯片读取它们,并将其发送到nodeJS服务器。 可以从服务器将数据发送到同一服务器上连接的浏览器,也可以将其写入数据库以进行进一步分析:

最终电路还可以包括一个时间序列数据库,例如InfluxDb,用于存储由ADXL345传输的值。

添加数据库可以使您从多个加速度传感器收集各种数据,将它们存储在数据库中,根据要求检索它们以将它们与当前值进行比较,或者使用当前和历史数据绘制漂亮的图形。

服务器还可以对某些值做出反应,并发送警报(电子邮件,SMS),并将数据发送到其他ESP8266模块以做出反应,或发送到其他服务器。

ADXL345加速度计

它是由Analog Devices(AD)生产的一种超低功耗3轴加速度计,能够进行高达±16g的高分辨率测量。 如果您仅打算测量地球的重力,那么±2g可能就足够了。 对于汽车运动,±4g很好,但是如果您要跟踪突然停止的物体,则需要±16g:

加速计连接ESP8266

代码

由于该sketch还有一些用于WebSocket连接的额外类,因此这里仅显示.ino文件的基本部分。

包含库:

实例化一个accel对象并创建一个唯一标识作为类构造函数的参数:

为服务器名称或其IP地址分配空间,并将默认端口设置为1234。稍后,用户将能够在Wi-Fi设置过程中选择一个:

声明将使用的全局变量:

如果要格式化SPIFFS并将clean-g再次刷新到ESP8266,请将clean_g设置为1:

通知我们需要将配置保存到SPIFFS上的config.json文件的回调函数为:

在setup()函数中,它将初始化并设置ADXL345芯片:

初始化传感器。 如果传感器未连接到ESP8266开发板,请等待:

将范围设置为适合您的项目的任何范围。 ADXL345最多可支持±16g。 根据您的应用程序,可以通过更改SetRange函数的参数来选择其他值:

接下来,从SPIFFS config.json文件中读取配置。 如果未找到配置文件,则ESP8266会假设它未配置,因此它将以接入点模式启动,并等待用户设置Wi-Fi SSID,Wi-Fi密码,服务器名称和服务器的端口,将用于连接到:

使用自定义字段(例如服务器名称和服务器端口)以及将保存到SPIFFS的Wi-Fi SSID和Wi-Fi密码配置WiFiManager,以便在每次ESP8266重启时自动连接:

现在,我们拥有将保存到SPIFFS的所有信息。 本部分仅在首次配置ESP8266时调用。 引入的信息将是持久性的,因为现在可以在每次引导时对其进行保存和检索:

现在,我们将连接到服务器,然后,我们将发送一条连接消息,其中包含从ESP8266的MAC地址派生的唯一标识。

服务器可以使用此消息来识别ESP8266并动态构造一些Web界面。 在这种情况下,如果服务器收到连接消息,它将构建一个图形,该图形将实时显示所有三个轴的接收值:

在主循环中,我们将:

  • 在每个时间间隔读取加速度的值,并将构造一个JSON消息,该消息将发送到服务器
  • 检查是否有来自服务器的传入消息。您还可以从服务器控制ESP8266; 您可以设置一些参数,重新启动ESP8266,触发某个GPIO,甚至通过格式化SPIFFS将ESP8266重置为其默认值。
  • 检查连接状态,如果有必要,请重新连接到服务器。

同样,在loop()函数中将检查连接状态,如果有必要,如果连接丢失,则重新连接到服务器:

检查是否有来自服务器的传入消息:

如果ESP8266收到一条名为welcome的消息,它将以一条名为connection的消息及其唯一ID响应:

如果收到的消息为resetModule,则EPS8266会自行重置。 可以在此处添加很多消息,以更改GPIO的状态,读取GPIO状态,从A0读取值或将PWM写入GPIO:

检查与服务器的连接,如果有必要,请重新连接:

服务器端

服务器端使用了Node.js和Express.js.。启动服务器步骤:

打开浏览器,将其指向服务器的IP地址和端口,您将在SmoothieJS提供的漂亮图形上看到加速:

按下重新启动ESP8266将远程重新启动您的模块,如果您从网页上按下重新初始化ESP8266按钮,则ESP8266将重置Wi-Fi凭证,IP地址和端口号的所有数据。

您可以在同一服务器上添加多个模块,对于每个新连接,服务器将为其添加新的图形和新的按钮。 这样,您可以监视同一页面中的多个传感器,而无需刷新它或执行任何操作。 如果您想为您的家庭自动化平台提供一个不错的仪表板,这非常好

作为改进,您可以添加时间序列数据库(例如InfluxDB)来存储接收到的值,并具有所需的持久性。 要创建更复杂的仪表板,可以使用Grafana(https://grafana.com/):

服务器端代码包含两部分:

  1. 后端代码,负责从ESP8266模块和Web页面接收连接
  2. 连接到服务器并显示漂亮图形的前端代码

后端代码

参阅

ESP8266与网络服务器实时通讯 - 国外课栈​viadean.com
60b71f3bc9df03f7512d46b9c6308258.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java除号_Java的运算符

1.算数运算符 加(正号)  - 减(符号)  * 乘  / 除% 取模(取余)   自增  -- 自减号的几种作用:加法运算  表示为一个正数  还可以用来作字符串的拼接整数相除只能得到整数。如果想得到小数,必须把参与计算的数据变化为浮点类型的数据。自增和…

strace命令_在软件部署中使用 strace 进行调试

我最喜欢的用来解决“为什么这个软件无法在这台机器上运行?”这类问题的工具就是 strace。-- Simon Arneaud(作者)我的大部分工作都涉及到部署软件系统,这意味着我需要花费很多时间来解决以下问题:这个软件可以在原开发…

procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色

上个月新入手了一个新的ipad,又打开了一种关于漫画的新的可能性~同时验证了那句话:对生活保持好奇,你将收获更多。于是就有一些喜欢画画的小伙伴有私信这样的漫画怎么画的?这个秘密工具就是:ipad ➕ Apple pencil ➕ a…

transactional注解的使用_Java:Spring @Transactional工作原理

本文将深入研究Spring的事务管理。主要介绍Transactional在底层是如何工作的。之后的文章将介绍:propagation(事务传播)和isolation(隔离性)等属性的使用事务使用的陷阱有哪些以及如何避免JPA和事务管理很重要的一点是JPA本身并不提供任何类型的声明式事务管理。如果…

java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...

Java 2D Graphics提供了强大的画线功能,可以控制线型,线宽,刷子的形状等,但在JDK1.2以前,没有提供这样一个功能,为了保持与旧版JDK的相容,实现一个可控制线型,线宽的画直线方法还是…

system流怎么判断为空_并行流ParallelStream中隐藏的陷阱

点击上方蓝字 ↑↑ Throwable文摘关注公众号设置星标,不定时推送高质量原创文章关注前提这篇文章介绍一下日常开发中并行流ParallelStream中隐藏的陷阱,这个问题其实离我们很近,特别是喜欢使用JDK1.8的流式编程的伙伴,应该会深有感…

vfp操作excel排序_中招计算机信息技术考试训练|Excel操作题一|排序和筛选

Excel操作题(一):进入本题工作目录,请完成以下操作。1、将单元格区域A1:F1合并后居中,字体格式设置为黑体、16号。2、将单元格区域A2:F2填充颜色改为橙色,A3:A7填充颜色改为黄色。3、用函数计算5个储蓄所的…

java 反射机制 视频_【视频笔记】Java反射机制笔记

Java 语言的反射机制在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法。对于任意一个对象,可以调用它的任意一个方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射…

算术溢出使用4字节值上的运算符_c语言程序设计的数据类型、运算符和表达式介绍...

数据类型 为什么在用计算机运算时,要指定数据的类型呢?在数学中,数值是不分类型的,数值的运算是绝对准确的,例如:1/3的值是0.333333(循环小数)。 而在计算机中,数据是存放在存储单元中的,它是具体存在的。而且,存储单元是由有限的字节构成的,每一个存储单元中存放数据…

java windows 下载_Windows环境下JDK的下载与安装

1.首先检查一下本机是否有安装java。按winR,在弹出窗口中输入cmd,按回车打开控制台在控制台中输入 java 并按回车,如果显示“java 不是内部或外部命令,也不是可运行的程序或批处理文件“,则说明这台电脑还没安装java可…

net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...

编者按:即使.NET Core3.1.5已经发布,在进行.NET Core的性能诊断时,我们有时依然不知该从何处下手,那这篇介绍.NET Core3.0中引入的诊断工具,或许能为我们提供参考。在.NET Core 3.0中,我们引入了一套工具&a…

vba中有多线程吗_VBA会被Python代替吗?

先说答案:不会被替代这里引用轮子哥的话说:微软只会开发更多的增强型插件来慢慢淡化VBA,但是不会用其他语言取代VBA。早在17年底,就有风声说Python要取代VBA,成为Excel官方脚本语言。我认真翻看了下好多篇文章&#xf…

统计一个整数的所有因子的个数_【题解循环嵌套】1095:数1的个数

1095:数1的个数时间限制: 1000 ms 内存限制: 65536 KB【题目描述】给定一个十进制正整数n(1≤n≤10000),写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。例如当n2时,写下1,2。这样只出现了1个“1”;当…

运行java是提示 选择未包含 main 类型 如何解决_RuoYi 若依 代码生成器使用教程...

你好! 若是你想学习如何使用RuoYi 若依 代码生成器, 能够仔细阅读这篇文章,了解一下RuoYi 若依 代码生成器的基本知识。java新建数据表(注意字段必定要写注释)USE ry;web/*Table structure for table sys_zyq */sqlDROP TABLE IF EXISTS sys_zyq;数据库C…

vb.net 功能f8键事件_憋了三年,史上最全的 F1~F12 键用法整理出来了!

F1~F12 键在Excel表格中的用法,小编很早就想写篇教程整理一下。可三年过去了还没整理出来,原因有很多,总结成一个字:懒!这么,终于整理出来了!提示:有的电脑启用了FN键,如…

usb hid 调试软件_开源USB免驱固件升级软件分享

跳兔科技开源软件分享,免驱的USB固件升级软件,给您的产品提供无限的活力。加快产品上市速度。相信做MCU开发的人都免不了要做boot升级功能,产品投入使用中,如果再使用link进行固件更新的话就比较麻烦,那么拥有一个优秀…

yolo算法_不到2MB,超轻YOLO算法!准确率接近YOLOv3,速度快上45%

点击上方↑↑↑“OpenCV学堂”关注我来源:公众号 量子位 授权最轻的YOLO算法出来了!这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。而且,这个YOLO-Fastest算法满…

http请求丢部分数据_温故知新,HTTP/2

去年年底,据国际互联网工程任务组( IETF )消息,HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3,即有望成为 HTTP 协议的第三个正式版本,也就是说HTTP/3可能要来了。 该消息是如此的惹人注目,是因为HTTP是我们身边的协议…

poi java 其他_让POI架起Java与Office之间的桥梁一

本文将阐述如何用POI来读取/写入完整的Excel文件。作者:中国IT实验室 来源:中国IT实验室 2007年8月31日本文将阐述如何用POI来读取/写入完整的Excel文件。约定:POI项目2.0版现在已经接近正式发行阶段,开发进度迅速,不断…

vue ui框架_「webAPP」记录几款比较好用的vue 移动端的ui框架

有时在做项目时,不同场景的项目既要有网站,又要有手机端,为了快速开发,如果功能简单,要求不高的话,我们一般会用H5进行移动端的适配。如果采用纯html进行书写手机端的样式,往往UI的体验感非常差…