Isi kandungan:

Integrasi Kaunter Geiger Pembantu Rumah: 8 Langkah
Integrasi Kaunter Geiger Pembantu Rumah: 8 Langkah

Video: Integrasi Kaunter Geiger Pembantu Rumah: 8 Langkah

Video: Integrasi Kaunter Geiger Pembantu Rumah: 8 Langkah
Video: Book 10 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-7) 2024, Julai
Anonim
Image
Image
Prinsip Kerja
Prinsip Kerja

Dalam tutorial ini saya akan menunjukkan bagaimana anda bagaimana menambahkan sensor tersuai ke HASS (pembantu rumah) lebih khusus lagi kaunter geiger tetapi prosesnya serupa untuk sensor lain juga.

Kami akan menggunakan papan NodeMCU, kaunter geiger berasaskan arduino dan pembantu rumah yang sudah dipasang.

Integrasi akan dibuat berdasarkan pelayan MQTT (awam atau swasta) dan saya akan membawa anda selangkah demi selangkah dengan ini.

Sekiranya anda tidak tahu apa itu pembantu rumah sila lawati halaman mereka https://www.home-assistant.io/. Ini adalah platform automasi rumah yang terkenal yang sangat terawat dan dapat disesuaikan.

Anda akan belajar mengenai:

- konfigurasi lanjutan untuk Pembantu Rumah

- NodeMCU (papan pengembangan) dan cara memprogramkannya dengan Arduino IDE

- OTA (kemas kini melalui udara) menggunakan Arduino IDE untuk papan NodeMCU

- cara menyambungkan peranti bersiri ke NodeMCU

- memasang pelayan MQTT secara manual pada linux (pilihan)

Andaian asas:

- anda mempunyai Pembantu Rumah dan berfungsi

- anda tahu sedikit mengenai elektronik

- anda telah memasang Arduino IDE

Langkah 1: Bahagian dan Alat

Bahagian:

1. Papan NodeMCU

2. roti roti

3. wayar juper lelaki-lelaki dan lelaki-perempuan

3. kabel usb ke mikro usb

4. kaunter arduino geiger dengan antara muka bersiri

(cari Ebay untuk "arduino geiger couter")

5. bahan radioaktif (pilihan sampel ujian kecil)

Alat:

1. Arduino IDE

2. Pembantu Rumah dipasang

Langkah 2: Prinsip Kerja

Tujuan kami adalah untuk menunjukkan di HomeAssistat (HASS) bacaan dari kaunter geiger. Di satu sisi, kita mempunyai pelayan HASS dan berjalan di suatu tempat, ia mungkin pi raspberry atau peranti lain dan di sisi lain kita mempunyai kaunter geiger.

Kaunter geiger mempunyai port bersiri, satu penyelesaiannya adalah dengan melampirkan langsung port bersiri ke RaspberryPi di mana HASS berjalan.

Beberapa sebab mengapa ia bukan idea yang baik:

- tidak ada ruang fizikal di sana

- kami mempunyai beberapa peranti lain di port bersiri

- kami ingin memasang sensor persekitaran yang harus diletakkan di luar dan bukannya kaunter geiger

Baiklah, jadi kita akan meneroka kemungkinan lain membuat sambungan melalui WIFI:

HASS menyokong data sensor pembacaan dan menunjukkan bahawa melalui pelayan MQTT, pelayan jenis ini adalah sambungan ringan untuk peranti kecil satu peranti menerbitkan mesej pada "topik" yang lain mendengar topik tersebut untuk menerima mesej. Oleh itu, HASS akan mendengar, dan kita memerlukan sesuatu yang akan menerbitkan mesej.

Sensor kami hanya tahu bercakap melalui saluran bersiri sehingga kami akan menggunakan papan yang dapat membaca baris bersiri dan yang dapat menghubungkan melalui WIFI dan bercakap dengan pelayan MQTT. Papan murah yang melakukan ini adalah NodeMCU.

NodeMCU dapat diprogramkan dengan Arduino IDE. Lakarannya cukup mudah, ia melakukan perkara berikut:

- bersambung ke WIFI

- mengekalkan sambungan MQTT dengan pelayan dan mencuba semula sambungan apabila gagal atau terputus

- mendengar data masuk bersiri sebagai satu siri bilangan bulat

- setelah bilangan bulat tiba, ia menghantarnya melalui MQTT ke topik tertentu

Langkah 3: Pasang Peranti

Pasang Peranti
Pasang Peranti

Kami akan menggunakan papan roti dan wayar sehingga cukup mudah, kami mempunyai beberapa langkah:

- letakkan NodeMCU di papan roti

- sambungkan tiub geiger ke kaunter geiger (berhati-hati untuk kekutuban)

- VIN pergi ke kaunter geiger +

- GND pergi ke kaunter geiger -

- NodeMCU D7 (pin 13) menuju ke geiger TX

- NodeMCU D8 (pin 15) menuju ke geiger RX

- kuasa NodeMCU melalui mikro USB dari komputer

Langkah 4: Muat naik Kod

Muat naik Kod
Muat naik Kod
Muat naik Kod
Muat naik Kod
Muat naik Kod
Muat naik Kod
Muat naik Kod
Muat naik Kod

Kami akan menggunakan Arduino IDE dan kami akan memastikan papan NodeMCU dipasang dan perpustakaan Adafruit_MQTT dipasang.

1. Klon repositori github: https://github.com/danionescu0/arduino dan salin lakaran dari projek / HASSGeigerIntegration ke lokasi buku sketsa arduino anda

2. Buka Arduino IDE dan pasang NodeMCU

- pergi ke Fail -> Pilihan, di URL Pengurus Papan Tambahan tambahkan https://arduino.esp8266.com/stable/package_esp8266com_index.json jika anda sudah mempunyai sesuatu di sana letakkan koma di hadapan dan klik ok

- dari Alat -> Papan -> Jenis Pengurus Papan "nodemcu" dan pilih entri esp8266 oleh Komuniti ESP8266, dan tekan pasang

3. Pasang Adafruit_MQTT

- pergi ke Alat -> Kelola Perpustakaan -> cari "Adafruit_MQTT" dan pasang "Arduino MQTT library"

4. Pasangkan kabel USB di komputer anda dan konfigurasikan papan:

- pergi ke Tools -> Board -> pilih NodeMcu 1.0

- Alat -> Port -> port USB anda

- biarkan tetapan lain tidak berubah

4. Dalam lakaran ubah kelayakan WIFI anda agar sesuai dengan yang anda miliki:

#define STASSID "ssid" // Ganti dengan SSID WIFI anda

#define STAPSK "pass" // Ganti dengan kata laluan WIFI anda

5. Muat naik lakaran ke papan anda dan setelah muat naik tetapkan semula papan dari butang

6. Buka monitor bersiri, jika semuanya berjalan lancar, anda akan melihat beberapa output seperti ini:

Booting

Alamat IP: 192.168.1.168 OTA diaktifkan Menyambung ke MQTT… MQTT Disambungkan! {"radiasi": 0.03}..

Langkah 5: Konfigurasikan HomeAssistant

Konfigurasikan HomeAssistant
Konfigurasikan HomeAssistant
Konfigurasikan HomeAssistant
Konfigurasikan HomeAssistant

Kami akan menganggap bahawa anda mempunyai pembantu rumah yang aktif. Pada sistem saya, saya mempunyai HASSOS versi 3.12 pada RaspberryPi. Sekiranya versi pembantu rumah anda terlalu lama atau sangat baru, beberapa ciri mungkin berbeza. Tutorial ini berfungsi dengan pasti dengan versi 3.12.

Sekiranya anda tidak memasang Pembantu Rumah, lihat panduan pemasangan rasmi mereka:

Sebelum maju dengan pemasangan, pastikan NodeMCU terpasang dan menerbitkan data.

Baiklah, kita akan mempunyai beberapa langkah di sini untuk konfigurasi:

1. Pasang "editor fail" jika anda tidak memilikinya dalam menu, berikut adalah tutorial rasmi:

2. Edit fail "/config/configuration.yaml" dan tambahkan yang berikut dan simpan

- bahagian mqtt jika anda belum memilikinya

mqtt:

broker: penemuan broker.hivemq.com: penemuan benar_prefix: ha

- bahagian sensor

sensor:

- platform: nama mqtt: "Radiation" state_topic: "ha / radiation" unit_of_measurement: 'uSv' unique_id: "radiasi" value_template: "{{value_json.radiation}}"

3. Dari Konfigurasi -> Kawalan pelayan: tekan "Periksa konfigurasi" periksa fail konfigurasi yaml untuk kesilapan, dan kemudian tekan "mulakan semula" dan tunggu sehingga ia dimulakan semula

4. Dari Gambaran Keseluruhan -> Menu sudut kanan atas -> Konfigurasi UI -> tekan butang + dari kanan bawah

5. Pilih "sensor" dari daftar -> dalam bidang "entiti" cari "sensor.radiation", di bidang nama tulis "Radiasi" dan klik ok, ia harus berada di halaman utama sekarang

Langkah 6: Mengkonfigurasi Pelayan MQTT Anda Sendiri [Pilihan]

Mari kita bincangkan sedikit mengenai MQTT

"MQTT adalah protokol pengangkutan pesanan penerbitan / langganan Pelayan Pelanggan. Ringan, terbuka, sederhana, dan dirancang agar mudah dilaksanakan. Ciri-ciri ini menjadikannya ideal untuk digunakan dalam banyak situasi, termasuk lingkungan yang terbatas seperti untuk komunikasi dalam konteks Mesin ke Mesin (M2M) dan Internet of Things (IoT) di mana jejak kod kecil diperlukan dan / atau lebar jalur rangkaian adalah premium."

Petikan dari spesifikasi MQTT 3.1.1 rasmi.

Jadi pada dasarnya kita dapat menerbitkan mesej di suatu tempat di satu pihak dan di sisi lain kita dapat mendengar mesej tersebut dan melakukan sesuatu dengan data. MQTT menyokong "topik", topik adalah rentetan yang digunakan broker untuk menyaring mesej untuk setiap pelanggan, jadi jika kami menerbitkan mesej ke topik "/ radiasi", pendengar mesti melanggan topik yang sama untuk mendapatkan mesej yang kami hantar.

Berikut adalah tutorial hebat mengenai MQTT secara terperinci:

Menggunakan pelayan sarang percuma terdapat beberapa kelemahan seperti:

- sesiapa yang mendengar topik anda akan menerima mesej anda

- jika turun atau memerlukan pembayaran di kemudian hari, anda tidak akan dapat menggunakannya (melainkan anda membayar)

- jika ada yang menerbitkan mesej ke topik yang sama, anda juga akan menerima mesej mereka, mereka mungkin menerbitkan mesej yang tidak sesuai dan memecahkan grafik HASS anda

Menggunakan pelayan peribadi

Sekiranya anda tidak mahu menggunakan pelayan percuma awam, anda mempunyai pilihan untuk pelayan peribadi. Kami akan memasang Mosquitto MQTT pada pelayan ubuntu / debian seperti raspberry pi atau komputer.

Mosquitto adalah pelayan yang menerapkan protokol MQTT dan percuma.

Untuk memasangnya log masuk ke raspnerry pi anda atau pelayan berasaskan debian lain dan jalankan:

sudo apt kemas kini

sudo apt install -y mosquitto mosquitto-client sudo systemctl aktifkan mosquitto.service

Ini akan mengemas kini repositori, memasang pelayan dan klien mosquiito dan membolehkannya dijalankan pada permulaan

Untuk melaksanakan pelayan ip:

nama hos -I

dan akan menghasilkan sesuatu seperti:

192.168.1.52 172.17.0.1 172.18.0.1

Jadi ip saya adalah 192.168.1.52, dalam arahan di bawah gantikannya dengan ip anda sendiri

Anda boleh menguji pelayan MQTT dengan menerbitkan mesej dan menerimanya dengan alat konsol, kerana dua terminal ini mesti dibuka yang mendengarkan mesej, yang akan menerbitkan mesej.

Pertama di terminal jalankan perintah ini untuk mendengar mesej mengenai "/ some-topic"

mosquitto_sub -h 192.168.1.52 -t / sebilangan topik

Buka terminal lain dan terbitkan mesej ke topik itu:

mosquitto_pub -h 192.168.1.52 -t / some-topic -m '{"kelembapan": 74.0}'

Di terminal pertama anda akan melihat '{"kelembapan": 74.0}' dicetak.

Perhatian istimewa:

- persediaan ini mengandaikan bahawa HASS, Mosquitto dan NodeMCU disambungkan ke rangkaian WIFI yang sama dan tidak ada peraturan firewall dan mereka dapat berkomunikasi secara bebas

- pelayan Mosquitt MQTT tidak mempunyai nama pengguna / kata laluan, jika anda ingin menetapkan kelayakan, periksa ini: https://www.steves-internet-guide.com/mqtt-username-password-example/ Juga anda perlu mengkonfigurasi kelayakan dalam Pembantu Rumah dan dalam lakaran arduino

Langkah 7: OTA (Kemas Kini Melalui Udara) untuk NodeMCU

Kemas kini melalui udara bermaksud bahawa papan pengembangan dapat dikedip tanpa wayar tanpa memerlukan kabel fizikal.

Arduino IDE menyokong fungsi ini untuk siri ESP8266 dan beberapa papan lain:

- memerlukan flash awal melalui kabel USB

- membuat port maya melalui WIFI dan hanya dapat dilihat dari Arduino IDE

- tiada maklumat debug bersiri tersedia

- menyokong perlindungan dengan kata laluan

Untuk mengaktifkan OTA dalam lakaran ESP8266, sertakan perpustakaan terlebih dahulu:

#sertakan "ArduinoOTA.h"

Tentukan juga pemalar kata laluan lakaran ini:

#tentukan SKETCHPASS "some_password"

Di bahagian persediaan tambahkan baris berikut:

sementara (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Sambungan Gagal! Reboot …"); kelewatan (5000); ESP.mulakan semula (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Mula mengemas kini "+ taip);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (int intigned int, unsigned int total) {Serial.printf ("Progress:% u %% / r", (progress / (total / 100)));}); ArduinoOTA.onError ( (ralat ota_error_t) {Serial.printf ("Ralat [% u]:", ralat); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} lain jika (ralat == OTA_BEGIN_ERROR) {Serial.println ("Begin Failed");} lain jika (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} lain jika (error == OTA_RECEIVE_ERROR) {Serial.println (" Terima Gagal ");} lain jika (ralat == OTA_END_ERROR) {Serial.println (" Tamat Gagal ");}}); ArduinoOTA.begin (); Serial.print ("Alamat IP:"); Serial.println (WiFi.localIP ());

Dan di bahagian gelung tambahkan baris ini:

ArduinoOTA.handle ();

Selepas kod awal anda dimuatkan setelah papan boot, anda akan melihat di Arduino IDE di bahagian Tools-> Port dua jenis port:

Port bersiri: / dev / ttyUSB0 (contohnya)

Port rangkaian: esp8266-xxxxx di 192.168.1.xxx

Sekarang anda boleh memilih port rangkaian dan memuat naik lakaran jauh, anda akan diminta untuk kata laluan lakaran (yang anda telah tetapkan dalam pemalar di atas)

Langkah 8: Kesimpulan, Kerja Masa Depan

Tutorial ini dapat diubahsuai dengan mudah untuk menghantar data mengenai jenis sensor lain:

- jika sensor anda secara langsung disokong oleh NodeMCU melalui perpustakaan, cukup kumpulkan data dari sensor dan tekan terus melalui MQTT

- jika pustaka sensor tidak berfungsi dengan NodeMCU tetapi hanya untuk Arduino kemudian muat naik kod anda ke arduino, keluarkan nilainya melalui baris bersiri dan baca di NodeMCU dan tekan (seperti yang kami lakukan dengan kaunter geiger)

Kita bahkan boleh mengubahnya untuk menghantar data dari pelbagai sensor seperti:

- sambungkan sensor anda ke NodeMCU

- data tinjauan dari setiap sensor

- untuk setiap sensor menerbitkan data ke topik yang berbeza

- dalam HASS menentukan beberapa sensor (seperti yang kita lakukan dengan geiger) yang akan mendengar topik yang berbeza

Disyorkan: