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