博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库完整版
阅读量:1963 次
发布时间:2019-04-27

本文共 1809 字,大约阅读时间需要 6 分钟。

这周更新了 将BME680 数据上传到domoticz服务器部分的配置,主要的工作就是将本地已经获取到的数据上传到domoticz服务器上。 源码的地址:

在中 粗略介绍了怎么去从BME680 中读取到温湿度气压和空气品质的原始数据,这次时间比较充足,补发一个完整版的迁移项目结构。

在之前的毕设项目中使用的是MQTT协议将各种数据上传到domoticz 服务器,而本次选择了使用url 直接将数据上传的方法,两种方法都能实现 我们需要的功能,但是本次还是选择了http的方法。

项目大致分为以下几个模块  在正式开始看本文章之前建议去看一下之前的文章,之前的文章对于开发环境介绍比较多。

1.树莓派的I2C驱动

2.BME680驱动以及空气品质算法

3.domoticz的智能家居系统 的API分析

4.libevent 实现将本地的数据上传到domoticz系统中去。

1.树莓派驱动部分

驱动使用了bcm2835的硬件驱动库,这个库是网上找的,可以实现操作树莓派3B+的硬件寄存器使用树莓派的硬件IIC

关于IIC部分的驱动请参考

/i2c_drive 路径下的文件,my_i2c.c是我根据树莓派i2c测试程序改写的,专门适应于BME680的驱动接口的代码。

这三个函数是 全部的驱动代码,BME680驱动通过调用这三个函数去读取传感器的数据,具体的实现原理请读者自行体会,其中涉及了一个一次最大读取数量的概念,我记得树莓派的fifo貌似是一次最大读取32个字节,所以驱动之中添加了对于超出最大单次读取长度的处理。 关于BME680 传感器的初始化部分,这次区别于之前的代码,使用了BSEC提供的官方的demo,这一部分我也就不去详细介绍了,他的入口参数是这样的

主要就是向BME的驱动传入几个需要实现特定功能的函数的函数指针。

关于几个函数的实现,目前的版本并没有去实现全部的函数。

其中需要注意的是关于时间戳的函数,因为要去分析空气品质,所以算法库需要我们去提供一个时间戳来运行,这也是本次我选择树莓派平台的原因,在单片机上我们去获取一个时间戳不是那么的容易。

BME680驱动以及空气品质算法

这一部分主要分享驱动的获取以及算法库的链接方法以及使用。

BME680的一般的温湿度和气压部分的驱动我们可以很方便的在github上找到,github的地址

这个驱动库主要是去进行一些相对复杂的计算获得校正之后的温湿度和气压的,在实现了前面提到的两个IIC的驱动函数和系统延时函数之后我们就可以读取到BME680的这三个输出数据。

关于驱动库中的部分计算过程大致如下图所示。。。。。。  对于算法工程师可能没啥,但是对于码农已经有点复杂了

我们可以直接使用官方的驱动获得我们需要的数据。

关于算法库的使用,在单片机上的应用是直接将

这三个文件添加到工程之中去,这一部分可以参考我之前的博客,不多介绍。本次我是使用了cmake 来生成makefile 在linux环境下进行工程的编译的,我们根据需要将需要用到的文件添加到可执行文件之中。

这样就是将文件添加到我们的编译列表之中。

3.domoticz的智能家居系统 的API分析

我们需要上传的是温湿度和气压以及IAQ信息。关于domoticz的智能家居系统不去做过多的介绍,API的地址是这里

https://www.domoticz.cn/wiki/Domoticz_API%E5%8F%8AJSON%E7%BD%91%E5%9D%80

我们的温湿气压可以放到一个虚拟传感器上

本次项目使用的API主要是这一条。我们只需要将我们本地采集的数据按照上面的url的格式拼凑起来,然后发送一个http的请求,就可以将数据更新到服务器,但是我的服务器由于是在公网上,所以domoticz需要对url的发出者进行认证

关于认证部分的说明参考 刚刚的domoticz的api

按照API的提示使用在线工具将用户名和密码进行加密

上述的地址可以留给读者去进行测试。 具体的实现细节就不去过多赘述了,读者感兴趣自己去看代码吧。  需要注意的就是要有认证。

4.libevent 实现将本地的数据上传到domoticz系统中去。

这一部分主要的工作就是将我们获取到的数据合成为一个url请求,懒得写了,留坑,以后再写吧代码去gitee找吧。

目前可能还有很多的问题,一点点解决吧。

转载地址:http://hktsf.baihongyu.com/

你可能感兴趣的文章
JavaDoc---生成自己的API文档
查看>>
Scanner对象的介绍
查看>>
Java三种流程结构介绍
查看>>
Java 方法(函数)详解
查看>>
Java数组详解
查看>>
Java面向对象详解
查看>>
Java static 关键字
查看>>
Java抽象类
查看>>
Java接口介绍
查看>>
Java内部类
查看>>
在Debian 8上使用Apt-Get安装Java
查看>>
关于C++中重定义:不同类型的基类型问题
查看>>
vs中动态DLL与静态LIB工程中加入版本信息的方法
查看>>
gflags_static.lib 无法解析的外部符号 __imp__PathMatchSpec解决方法
查看>>
PHP教程:PHP开发快速入门_v20200418
查看>>
大数据分析技术与应用一站式学习(值得收藏)_v20200418
查看>>
ios开发手册_v20200718
查看>>
TortoiseGit客户端设置中文显示
查看>>
Qt 在windows下的串口读写
查看>>
Qt之输出日志
查看>>