从Dadget二氧化碳传感器接收数据到智能家居系统

二氧化碳传感器Dadget KIT MT8057S早已确立了自己的地位,是一种相当可靠且便宜的设备。在我看来,一个缺点是只能使用Windows专有程序来获取正式数据,而别无其他。





但是,在Linux上获取数据相对容易。我不得不使用一个小型拐杖,但最后,可以在控制台中获取二氧化碳和温度的读数,然后进一步发送。



本文介绍了如何将数据发送到IoBroker和家庭助理。



您将需要libhidapi库和位于github上的一个小型co2mon程序。



apt-get install git cmake g++ pkg-config libhidapi-dev


下载并编译co2mon程序



mkdir co2
cd co2
git clone https://github.com/dmage/co2mon.git
cd co2mon
mkdir build
cd build
cmake ..
make
cd co2mond
mv co2mond ../../../co2mond


可能需要调整路径以适合您的系统。



该程序以两种模式工作-在控制台中不断接收数据,在守护程序模式下。在不带参数的情况下启动时,程序将不断向控制台显示当前读数,直到将其强行关闭。有点奇怪的解决方案,也许我没有弄清楚,但是我们正在使用现有的东西。



在两种模式下,程序都可以将数据保存到文本文件,只需添加-D开关并指定目录的路径即可。



我不想在本来就很弱的智能家居服务器上挂上另一个恶魔,而且二氧化碳的数据不会很快改变。因此,我投入了一个简单的脚本来启动程序,等待五秒钟,然后将其杀死。



#!/bin/bash
cd /home/server/co2
./co2mond -D /home/server/co2 > log.txt &
sleep 5
pkill co2mond
rm log.txt


将脚本添加到cron中,我每分钟运行一次,这就足够了。



做完了!现在,在程序创建的两个文本文件中,有当前的气候读数。



重要的一点是,要从usb接收数据,用户必须具有适当的权限,或者cron必须分别以root身份运行,创建的文本文件也将是root,这必须予以考虑。



现在第二部分-我们将接收到的数据发送到智能家居系统。让我们从IoBroker开始。首先,因为在我自己设定此任务时,我就使用了它。



那里的一切都很简单-其中有一个systeminfo适配器,可以从文件系统中读取文件。不是说需要这些温度,而是为什么呢。







我们保存,瞧:







然后我切换到家庭助理。在其中,我使用了mosquitto,并决定通过它发送数据,以期将来分离计算机或添加传感器。



我不考虑代理的安装和配置,这不在本文的讨论范围之内。



mosquitto客户端必须安装在与传感器连接的计算机上(如果未安装):



apt-get install mosquitto-clients


将两个传感器添加到Home Assistant配置中,然后重新启动:



- platform: mqtt
  state_topic: "co2/co2"
  name: "co2.co2"
  unit_of_measurement: ppm
 
- platform: mqtt
  state_topic: "co2/temp"
  name: "co2.temp"
  unit_of_measurement: °C


在接收数据的脚本中添加四行:



read co2 /home/server/co2/CntR
read temp /home/server/co2/Tamb
mosquitto_pub -h localhost -t "co2/co2" -m $co2 -u "" -P ""
mosquitto_pub -h localhost -t "co2/temp" -m $temp -u "" -P ""


完成,您就很好了。现在,我们的克隆人每分钟一次将传感器读数发布到co2主题,然后由哪个Home Assistant读取它们:







现在,我们在智能家居系统中有了传感器数据,并且可以安排自动化。我的引擎盖打开了,我还没有控制通风,但是如果打开引擎盖,空气会逐渐恢复。



All Articles