物联网服务NodeJs-5天学习第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql
Posted 单片机菜鸟哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了物联网服务NodeJs-5天学习第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql相关的知识,希望对你有一定的参考价值。
【NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql
面向读者群体
- ❤️ 电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识 ❤️
- ❤️ 业余爱好物联网开发者,有简单技术基础,想针对硬件功能构造简单的服务器❤️
- ❤️ 本篇创建记录 2023-03-12 ❤️
- ❤️ 本篇更新记录 2023-03-12 ❤️
技术要求
- 有HTML、CSS、JavaScript基础更好,当然也没事,就直接运行实例代码学习
专栏介绍
- 通过简短5天时间的渐进式学习NodeJs,可以了解到基本的服务开发概念,同时可以学习到npm、内置核心API(FS文件系统操作、HTTP服务器、Express框架等等),最终能够完成基本的物联网web开发,而且能够部署到公网访问。
🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
1. 前言
本篇基于
的基础上,会做升级,更加符合实际技术选型。
- 数据存储从
文件
改为mysql数据库
所以本篇更偏向于差异点,其他知识直接查看基础篇,不会从头到尾重复一遍。
2. 服务器代码
服务器包括两大块:
- 配置MySQL服务器
- NodeJs服务器开发
2.1 配置MySQL服务器
初学者先简单学习:
到这一步,我们认为已经建立了一个叫做nodejs
的数据库。
我们通过DBeaver建立一张新表,表名为:
temp_record
表名
表列包括:
uid
设备编号 bigint unsignedtemp
温度值 floattime
测温时间 timestamp
构建一个索引uid:
uid
作为列 uid的索引
有兴趣的同学了解一下mysql的数据类型
最终生成的DDL:
执行保存生成新表:
可以得到一张新的表:
到这一步,我们的表已经创建成功,接下来就是nodejs方面的业务编写。
2.2 NodeJs服务器代码
2.2.1 对接temp_check 表
// 第一步:引入mysql模块
let mysql = require("mysql");
// 连接参数
const db_config=
host : 'localhost', // 主机地址
user : 'root', // 用户名
password : '123456', // 用户密码
database : 'nodejs', // 数据库名
port : 3306, // 端口号,默认3306
timezone : 'utc' // 解决时区时间统一的问题
// 第二步:创建数据库连接池,这里参数会很多
let pool=mysql.createPool(db_config)
// 第三步:正式发起数据库连接
pool.getConnection(function(err,connect)//通过getConnection()方法进行数据库连接
if(err)
console.log(`mysql链接失败$err`);
else
)
// 插入打卡记录
function insertRecord(id,temp,time)
// 第三步:正式发起数据库连接
pool.getConnection(function(err,connect)//通过getConnection()方法进行数据库连接
if(err)
console.log(`mysql链接失败$err`);
else
let insertSql2 = `insert into temp_record(uid,temp,time) values ($id,'$temp','$time')`
console.log(insertSql2)
connect.query(insertSql2,function(err,result)
if(err)
console.log(`SQL error:$err`)
else
console.log('插入成功');
connect.release();//释放连接池中的数据库连接
);
)
module.exports =
insertRecord
重点关注sql语句:
insert into temp_record(uid,temp,time) values ($id,'$temp','$time')
- uid 设备编号
- temp 当前测量温度
- time 当前测量时间
2.2.2 mqtt服务改动 —— topic_router
mqttTopic.use('SysThingPropertyPost',USE_JSON, (payload)=>
console.log(payload)
if (payload.params.temp)
ds18b20Handler.setCurrentTemp(payload.id, payload.params.temp)
// 往数据库插入记录
mysql.insertRecord(payload.id, payload.params.temp, time.getCurrentDateTime())
)
把之前存储为文件改成存到mysql表里面。
3. ESP8266代码
保持和 【NodeJs-5天学习】第三天实战篇③ ——基于MQTT的环境温度检测 不变
4. 测试效果
至此,一个简单的基于MQTT的环境温度检测系统就可以了。
4.总结
篇④结合ESP8266来开发简单物联网应用——获取多个ds18b20节点的温度,上报到本地部署的mqtt服务器,同时启动express服务器,提供一个可视化页面查看曲线图。麻雀虽小五脏俱全,初学者需要理解数据库存储操作以及对接QQ、服务请求等等对应的知识点并加以实际应用。
以上是关于物联网服务NodeJs-5天学习第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql的主要内容,如果未能解决你的问题,请参考以下文章
物联网服务NodeJs-5天学习第四天存储篇① ——安装使用mysql 8.0
物联网服务NodeJs-5天学习第四天存储篇③ ——基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ
物联网NodeJs-5天学习第四天存储篇⑤ ——PM2,node.js应用进程管理器