Menerima data dari sensor karbon dioksida Dadget ke sistem rumah pintar

Sensor karbon dioksida Dadget KIT MT8057S telah lama memantapkan dirinya sebagai perangkat yang cukup andal dan murah. Salah satu kelemahannya, menurut saya, adalah bahwa secara resmi data darinya hanya dapat diperoleh dengan program berpemilik untuk windows, dan tidak ada yang lain.





Namun, mendapatkan data di linux relatif mudah. Saya harus menggunakan kruk kecil, tetapi pada akhirnya, pembacaan co2 dan suhu dapat diperoleh di konsol dan dikirim lebih lanjut.



Artikel ini telah membahas pengiriman data ke IoBroker dan Home Assistant.



Anda membutuhkan libhidapi library dan program co2mon kecil yang terletak di github.



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


Unduh dan kompilasi program 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


Jalur mungkin perlu disesuaikan agar sesuai dengan sistem Anda.



Program ini bekerja dalam dua mode - menerima data secara konstan di konsol, dan dalam mode daemon. Ketika diluncurkan tanpa parameter, program ini secara konstan menampilkan pembacaan saat ini ke konsol sampai ditutup secara paksa. Solusi yang agak aneh, mungkin saya tidak mengetahuinya, tetapi kami bekerja dengan apa yang kami miliki.



Dalam kedua mode, program dapat menyimpan data ke file teks, cukup tambahkan -D switch dan tentukan path ke direktori.



Saya tidak ingin menggantung iblis lain di server rumah pintar yang sudah lemah, dan data tentang karbon dioksida tidak berubah dengan cepat. Karena itu, saya melemparkan skrip sederhana yang meluncurkan program, menunggu lima detik, dan membunuhnya.



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


Tambahkan skrip ke cron, saya jalankan satu menit sekali, itu sudah lebih dari cukup.



Selesai! Sekarang dalam dua file teks yang dibuat oleh program, ada pembacaan iklim saat ini.



Poin penting - untuk menerima data dari usb, pengguna harus memiliki hak yang sesuai, atau cron harus dijalankan sebagai root, masing-masing, file teks yang dibuat juga akan di-root, ini harus diperhitungkan.



Sekarang bagian kedua - kami mengirim data yang diterima ke sistem rumah pintar. Mari kita mulai dengan IoBroker. Untuk memulainya, dengan itu, karena pada saat saya mengatur sendiri tugas ini, saya menggunakannya.



Semuanya sederhana di sana - ada adaptor systeminfo yang dapat membaca file dari sistem file, antara lain. Bukan berarti suhu ini diperlukan, tetapi mengapa tidak.







Kami menyimpan, dan voila:







Dan kemudian saya beralih ke Home Assistant. Di dalamnya saya menggunakan mosquitto, dan saya memutuskan untuk mengirim data melaluinya, bertujuan memisahkan komputer di masa depan atau menambahkan sensor.



Saya tidak mempertimbangkan instalasi dan konfigurasi broker, ini di luar ruang lingkup artikel.



Klien mosquitto harus diinstal pada komputer yang terhubung dengan sensor, jika tidak diinstal:



apt-get install mosquitto-clients


Tambahkan dua sensor ke konfigurasi Home Assistant, dan reboot:



- 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


Tambahkan empat baris ke skrip yang menerima data:



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 ""


Selesai, Anda baik-baik saja) Sekarang kroner kami menerbitkan pembacaan sensor untuk topik co2 sekali dalam satu menit, dan pada gilirannya, Pembantu Rumah membacanya:







Sekarang kami memiliki data sensor dalam sistem rumah pintar, dan kami dapat menjadwalkan otomatisasi. Kap saya menyala, saya belum mengendalikan ventilasi persediaan, tetapi jika Anda menghidupkan kapnya, udaranya secara bertahap diperbarui.



All Articles