Dadget二酸化炭素センサーからスマートホームシステムにデータを受信する

二酸化炭素センサーDadget KIT MT8057Sは、かなり信頼性が高く、安価なデバイスとして長い間確立されてきました。私の意見では、1つの欠点は、公式にそこからのデータを取得できるのは、Windows専用のプログラムでしか得られないことです。





ただし、Linuxでのデータの取得は比較的簡単です。小さな松葉杖を使わなければなりませんでしたが、結局、コンソールでco2と温度の読み取り値を取得して、さらに送信することができました。



この記事では、IoBrokerおよびHome Assistantへのデータの送信について説明しました。



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


パスは、システムに合わせて調整する必要がある場合があります。



このプログラムは、コンソールで絶えずデータを受信するモードとデーモンモードの2つのモードで動作します。パラメータなしで起動すると、プログラムは強制的に閉じるまで、コンソールに現在の読み取り値を常に表示します。少し奇妙な解決策、私はそれを理解していなかったかもしれませんが、私たちは私たちが持っているもので作業しています。



どちらのモードでも、プログラムはデータをテキストファイルに保存し、-Dスイッチを追加してディレクトリへのパスを指定するだけです。



スマートホームの既に弱いサーバーに別の悪魔を掛けたくなかったので、二酸化炭素に関するデータはすぐには変わりません。したがって、プログラムを起動し、5秒待ってから終了する単純なスクリプトを投入しました。



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


スクリプトをcronに追加します。1分に1回実行します。これで十分です。



できた!プログラムが作成する2つのテキストファイルに、現在の気候値が表示されます。



重要なポイント-usbからデータを受信するには、ユーザーは適切な権限を持っているか、cronをそれぞれrootとして実行する必要があります。作成されたテキストファイルもrootになるため、これを考慮する必要があります。



次は、受信したデータをスマートホームシステムに送信します。 IoBrokerから始めましょう。そもそも、自分でこのタスクを設定した時から使っていました。



すべてが単純です-特に、ファイルシステムからファイルを読み取ることができるsysteminfoアダプターがあります。これらの温度が必要であるというわけではありませんが、なぜ必要ではないのですか。







保存して出来上がり:







その後、ホームアシスタントに切り替えました。その中で私は蚊を使用しており、将来的にコンピューターを分離したりセンサーを追加したりすることを目的として、データを送信することにしました。



ブローカーのインストールと構成は考慮していません。これは記事の範囲を超えています。



センサーが接続されていない場合は、センサーが接続されているコンピューターにmosquittoクライアントをインストールする必要があります。



apt-get install mosquitto-clients


Home Assistant設定に2つのセンサーを追加して、再起動します。



- 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


データを受け取るスクリプトに4行追加します。



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トピックに1分に1回公開し、次にどのHome Assistantがそれらを読み取ります。







これで、スマートホームシステムにセンサーデータがあり、自動化をスケジュールできます。私のフードはオンになっていますが、まだ換気を制御していませんが、フードをオンにすると、空気は徐々に更新されます。



All Articles