基于“树莓”和“ CO2检测器”的房间通风系统

智能家居的风潮席卷了整个互联网,现在每个人都想制作一个可以通过互联网关闭或在马桶上翻转风扇的灯泡。我的经验很简单:我想要一个可以自动为房间通风的系统。

在考虑了系统原理之后,我得出了一些结论,我决定执行这些结论。按照计划,系统的整个功能分为三个部分:控制所有事物的“大脑”,用于打开窗户或打开风扇的通风系统以及用于监视室内空气质量的传感器本身。我将向您介绍有关空气质量传感器的更多信息,以及有关将其与智能家居的“大脑”集成在一起的话题。

设备概述


我决定通过二氧化碳的浓度来控制空气“新鲜”的质量。未来的计划包括发射用于氨,丙烷/丁烷(气体泄漏),空气中尘埃浓度等的传感器。

决定将通风系统放置在一个人要花费尽可能多时间的客厅中。这样的房间可能是一间卧室,在那里,一个自动通风系统在晚上的睡眠中将非常有用。



众所周知,空气中的二氧化碳浓度不仅会严重影响人脑的生产力,人类的行为,而且会影响人们休息的能力。 CO2浓度越高,效果越差。



Dadget公司的二氧化碳检测器用作测量二氧化碳浓度的设备。

该设备可以从计算机或笔记本电脑的USB端口获得电源。在前面板上-LCD指示器,该指示器显示有关二氧化碳浓度和环境温度的信息。还有3个LED,可以使用户直观地看到内容。一切都非常简单-打开设备。一切正常。

令我着迷的是,有适用于该设备的软件。有适用于Windows和Linux的软件。Linux程序的源代码在github上,似乎由我们的同胞编写。并且,如果您拥有源代码,则可以提出一些内容,对其进行修改,然后自己“简化”程序。

工作流程概述


如实践和google所示,该设备在计算机上被视为HID设备。因此,在Windows程序中,有一个名为HIDApi的dll。要使用Linux,您需要同名的HIDApi库。我完成了linux软件的源代码并编写了一个简单的尖叫声。

显然,使用Linux计算机从传感器读取数据并将其传输到某个地方的智能家居控制器是亵渎神灵。因此,决定使用安装了纯Debian的Raspbery pi。将来,计划在Arduino上进行所有操作并通过无线通道进行传输。

我的软硬件组合方案如下:



博学的读者和狂热的怪胎可能会认为在此方案中使用HUB并不是很运动。没错,您可以直接连接二氧化碳监测仪并享受生活。使用这样的方案,我可以立即解决几个问题:
●通常,智能家居的大脑不在传感器所在的位置;
●使用树莓派可以连接其他传感器;
●单独放置传感器,由于数据已传输到控制器,因此我们获得两种指示方法,一种在传感器屏幕上显示,另一种在电话上或通过网页显示。

MicasaVerde设备用作智能家居控制器,该设备可以从传感器收集数据并根据给定程序(在其术语中称为“场景”)做出决策。



在设备中,您可以创建虚拟传感器并使用http请求来更新其信息,这与我对raspberry pi所做的一样。
请求示例:
ip_address:3480 / data_request?ID =变量集&DeviceNum = 6&serviceId =缸:micasaverde-com:serviceId:DoorLock1&Variable =状态和值= 1
也就是说,Malinka从二氧化碳检测器读取数据,然后将数据http请求发送到Vera。该方案很简单,但是可行。

软件版本



所以有一个“树莓”,无论什么版本,主要是它具有网络接口。

接下来,您需要安装对隐藏设备的支持。该库来自git,因此git应该安装在“ malink”上:

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev

接下来,下载并

安装mkdir hidapi
cd hidapi /
git init
git克隆
库本身github.com/signal11/hidapi.git

其他库
sudo apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev autotools-dev autoconf automake libtool

install
cd hidapi /
./bootstrap
./configure
make
sudo make安装


之后,下载CO2监视程序的源代码
mkdir co2monitor
cd co2monitor
git init
git clone github.com/dmage/co2mon.git


接下来,我对程序代码进行了一些调整,在初始版本中,它读取了两个参数(温度和co2),并以无穷循环的形式发送到控制台。 。这个选项不适合我,目标是运行一次并获取一次值,所以我在main.c中更改了两行。

我们正在寻找行

printf(“ CntR \ t%s \ n”,buf);
fflush(标准输出);


并更改为

printf(“%s \ n”,buf);
fflush(stdout);
退出(1);


第一行负责显示值,更改后仅显示数字,输出后,程序将关闭,出口(1)行将响应。

编译
cmake ...
make


接下来,我们编写了一个简单的脚本来启动程序,将上面编译的程序的输出值分配给变量,然后使用curl将此值传递给MicasaVerde。之后,添加udev规则,以使系统无需root即可访问传感器。

子系统==“ usb”,ATTR {idVendor} ==“ 04d9”,ATTR {idProduct} ==“ a052”,MODE =“ 0666”

并将轮询和传输脚本每分钟添加到cron中。

crontab -e
并添加行
* * * * * /home/pi/co2sender.sh


脚本的结果

当然,您仍然必须配置MicasaVerde文件,以便到处都有足够的记录。但是它可以快速,轻松地工作。

结论



结果,我们有了一个基于CO2检测器的系统,该系统像往常一样运行,分析并报告二氧化碳浓度的变化。同时,Malinka每分钟从传感器读取一次数据,并将其传输到智能家居控制器,该控制器可以在必要时打开通风系统。

Source: https://habr.com/ru/post/zh-CN390859/


All Articles