【物联网服务NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql

面向读者群体

  • ❤️ 电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识 ❤️
  • ❤️ 业余爱好物联网开发者,有简单技术基础,想针对硬件功能构造简单的服务器❤️
  • ❤️ 本篇创建记录 2023-03-12 ❤️
  • ❤️ 本篇更新记录 2023-03-12 ❤️

技术要求

  • HTMLCSSJavaScript基础更好,当然也没事,就直接运行实例代码学习

专栏介绍

  • 通过简短5天时间的渐进式学习NodeJs,可以了解到基本的服务开发概念,同时可以学习到npm、内置核心API(FS文件系统操作、HTTP服务器、Express框架等等),最终能够完成基本的物联网web开发,而且能够部署到公网访问。

🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝

1. 前言

本篇基于

的基础上,会做升级,更加符合实际技术选型。

  • 数据存储从文件改为mysql数据库

所以本篇更偏向于差异点,其他知识直接查看基础篇,不会从头到尾重复一遍。

2. 服务器代码

服务器包括两大块:

  • 配置MySQL服务器
  • NodeJs服务器开发

2.1 配置MySQL服务器

初学者先简单学习:

到这一步,我们认为已经建立了一个叫做nodejs的数据库。
在这里插入图片描述
我们通过DBeaver建立一张新表,表名为:

  • temp_record表名

表列包括:

  • uid 设备编号 bigint unsigned
  • temp 温度值 float
  • time 测温时间 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、服务请求等等对应的知识点并加以实际应用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值