Daftar Isi:

Integrasi Penghitung Geiger Asisten Rumah: 8 Langkah
Integrasi Penghitung Geiger Asisten Rumah: 8 Langkah

Video: Integrasi Penghitung Geiger Asisten Rumah: 8 Langkah

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

Dalam tutorial ini saya akan menunjukkan bagaimana cara menambahkan sensor khusus ke HASS (asisten rumah) lebih khusus penghitung geiger tetapi prosesnya juga serupa untuk sensor lain.

Kami akan menggunakan papan NodeMCU, penghitung geiger berbasis arduino dan asisten rumah yang sudah diinstal.

Integrasi akan didasarkan pada server MQTT (publik atau pribadi) dan saya akan membawa Anda langkah demi langkah dengan ini.

Jika Anda tidak tahu apa itu asisten rumah tangga, silakan kunjungi halaman mereka https://www.home-assistant.io/. Ini adalah platform otomatisasi rumah terkenal yang terpelihara dengan sangat baik dan sangat dapat disesuaikan.

Anda akan belajar tentang:

- konfigurasi lanjutan untuk Asisten Rumah

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

- OTA (over the air update) menggunakan Arduino IDE untuk papan NodeMCU

- cara menghubungkan perangkat serial ke NodeMCU

- menginstal server MQTT secara manual di linux (opsional)

Asumsi dasar:

- Anda memiliki Asisten Rumah dan menjalankannya

- Anda tahu sedikit tentang elektronik

- Anda telah menginstal Arduino IDE

Langkah 1: Suku Cadang dan Alat

Bagian:

1. Papan NodeMCU

2. papan tempat memotong roti

3. kabel juper pria-pria dan pria-wanita

3. kabel usb ke mikro usb

4. penghitung arduino geiger dengan antarmuka serial

(cari Ebay untuk "arduino geiger couter")

5. bahan radioaktif (opsional sampel uji kecil)

Peralatan:

1. Arduino IDE

2. Asisten Rumah terpasang

Langkah 2: Prinsip Kerja

Tujuan kami adalah untuk menunjukkan di HomeAssistat (HASS) pembacaan dari penghitung geiger. Di satu sisi kami memiliki server HASS dan berjalan di suatu tempat itu mungkin raspberry pi atau perangkat lain dan di sisi lain kami memiliki penghitung geiger.

Penghitung geiger memiliki port serial, salah satu solusinya adalah memasang langsung port serial ke RaspberryPi tempat HASS berjalan.

Beberapa alasan mengapa itu mungkin bukan ide yang baik:

- tidak ada ruang fisik di sana

- kami memiliki beberapa perangkat lain di port serial

- kami ingin memasang sensor lingkungan yang harus ditempatkan di luar alih-alih penghitung geiger

Ok jadi kita akan menjajaki kemungkinan lain membuat koneksi melalui WIFI:

HASS mendukung membaca data sensor dan menampilkan bahwa melalui server MQTT, server semacam ini adalah koneksi ringan untuk perangkat kecil satu perangkat mempublikasikan pesan pada "topik" yang lain mendengarkan pada topik itu untuk menerima pesan. Jadi HASS akan mendengarkan, dan kita membutuhkan sesuatu yang akan mempublikasikan pesannya.

Sensor kami hanya tahu untuk berbicara melalui saluran serial sehingga kami akan menggunakan papan yang dapat membaca saluran serial dan yang dapat terhubung melalui WIFI dan berbicara dengan server MQTT. Papan murah yang melakukan ini adalah NodeMCU.

NodeMCU dapat diprogram dengan Arduino IDE. Sketsanya cukup sederhana, ia melakukan hal berikut:

- terhubung ke WIFI

- mempertahankan koneksi MQTT dengan server dan mencoba kembali koneksi saat gagal atau terputus

- mendengarkan data masuk serial sebagai serangkaian bilangan bulat

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

Langkah 3: Pasang Perangkat

Merakit Perangkat
Merakit Perangkat

Kami akan menggunakan papan tempat memotong roti dan kabel sehingga cukup sederhana, kami memiliki beberapa langkah:

- letakkan NodeMCU di papan tempat memotong roti

- sambungkan tabung geiger ke penghitung geiger (hati-hati terhadap polaritas)

- VIN masuk ke penghitung geiger +

- GND masuk ke penghitung geiger -

- NodeMCU D7 (pin 13) masuk ke geiger TX

- NodeMCU D8 (pin 15) masuk ke geiger RX

- daya NodeMCU melalui micro USB dari komputer

Langkah 4: Unggah Kode

Unggah Kode
Unggah Kode
Unggah Kode
Unggah Kode
Unggah Kode
Unggah Kode
Unggah Kode
Unggah Kode

Kami akan menggunakan Arduino IDE dan kami akan memastikan bahwa kami telah menginstal papan NodeMCU dan perpustakaan Adafruit_MQTT diinstal.

1. Kloning repositori github: https://github.com/danionescu0/arduino dan salin sketsa dari proyek/HASSGeigerIntegration ke lokasi buku sketsa arduino Anda

2. Buka Arduino IDE dan instal NodeMCU

- buka File -> Preferences, di URL Additional Boards Manager tambahkan https://arduino.esp8266.com/stable/package_esp8266com_index.json jika Anda sudah memiliki sesuatu di sana, letakkan koma di depan dan klik ok

- dari Tools -> Board -> Board Manager ketik "nodemcu" dan pilih entri esp8266 by ESP8266 Community, dan tekan install

3. Instal Adafruit_MQTT

- buka Alat -> Kelola Perpustakaan -> cari "Adafruit_MQTT" dan instal "perpustakaan Arduino MQTT"

4. Colokkan kabel USB di komputer Anda dan konfigurasikan papan:

- buka Alat -> Papan -> pilih NodeMcu 1.0

- Alat -> Port -> port USB Anda

- biarkan pengaturan lainnya tidak berubah

4. Dalam sketsa, ubah kredensial WIFI Anda agar sesuai dengan milik Anda:

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

#define STAPSK "lulus" // Ganti dengan kata sandi WIFI Anda

5. Unggah sketsa ke papan Anda dan setelah mengunggah, setel ulang papan dari tombol

6. Buka serial monitor, jika semua sudah berjalan dengan baik Anda akan melihat beberapa output seperti ini:

Booting

Alamat IP: 192.168.1.168 OTA diaktifkan Menyambung ke MQTT… MQTT Tersambung! {"radiasi": 0,03}..

Langkah 5: Konfigurasikan HomeAssistant

Konfigurasikan Asisten Rumah
Konfigurasikan Asisten Rumah
Konfigurasikan Asisten Rumah
Konfigurasikan Asisten Rumah

Kami akan berasumsi bahwa Anda memiliki asisten rumah yang aktif dan berjalan. Di sistem saya, saya memiliki HASSOS versi 3.12 pada RaspberryPi. Jika versi asisten rumah Anda terlalu lama atau sangat baru, beberapa fitur mungkin berbeda. Tutorial ini pasti berfungsi dengan versi 3.12.

Jika Anda belum menginstal Home Assistant, lihat panduan instalasi resmi mereka:

Sebelum melanjutkan dengan penginstalan, pastikan NodeMCU sudah terpasang dan memublikasikan data.

Ok kita akan memiliki serangkaian langkah di sini juga untuk konfigurasi:

1. Instal "file editor" jika Anda tidak memilikinya di menu, berikut adalah tutorial resminya:

2. Edit file "/config/configuration.yaml" dan tambahkan berikut ini dan simpan:

- bagian mqtt jika Anda belum memilikinya

mqtt:

broker: broker.hivemq.com penemuan: benar discovery_prefix: ha

- bagian sensor

sensor:

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

3. Dari Konfigurasi -> Kontrol server: tekan "Periksa konfigurasi" periksa file konfigurasi yaml untuk kesalahan, lalu tekan "mulai ulang" dan tunggu hingga dimulai ulang

4. Dari Ikhtisar -> Menu pojok kanan atas -> Konfigurasi UI -> tekan tombol + dari kanan bawah

5. Pilih "sensor" dari daftar -> di kolom "entity" cari "sensor.radiation", di kolom nama tulis "Radiation" dan klik ok, seharusnya sudah di halaman utama sekarang

Langkah 6: Mengonfigurasi Server MQTT Anda Sendiri [Opsional]

Mari kita bahas sedikit tentang MQTT

“MQTT adalah protokol transport pesan yang diterbitkan/berlangganan Server Klien. Ini ringan, terbuka, sederhana, dan dirancang agar mudah diimplementasikan. Karakteristik ini membuatnya ideal untuk digunakan dalam banyak situasi, termasuk lingkungan terbatas seperti untuk komunikasi dalam konteks Machine to Machine (M2M) dan Internet of Things (IoT) di mana jejak kode kecil diperlukan dan/atau bandwidth jaringan sangat mahal.”

Kutipan dari spesifikasi resmi MQTT 3.1.1.

Jadi pada dasarnya kita dapat mempublikasikan pesan di suatu tempat di satu sisi dan di sisi lain kita dapat mendengarkan pesan tersebut dan melakukan sesuatu dengan data. MQTT mendukung "topik", topik adalah string yang digunakan broker untuk memfilter pesan untuk setiap klien, jadi jika kami memublikasikan pesan ke topik "/radiasi", pendengar harus berlangganan topik yang sama untuk mendapatkan pesan yang kami kirim.

Berikut adalah tutorial hebat tentang MQTT secara detail:

Menggunakan server sarang gratis ada beberapa kelemahan seperti:

- siapa pun yang mendengarkan topik Anda akan menerima pesan Anda

- jika turun atau membutuhkan pembayaran nanti Anda tidak akan dapat menggunakannya (kecuali Anda membayar)

- jika ada orang yang memublikasikan pesan ke topik yang sama, Anda juga akan menerima pesan mereka, mereka mungkin memublikasikan pesan yang tidak kompatibel dan merusak grafik HASS Anda

Menggunakan server pribadi

Jika Anda tidak ingin menggunakan server gratis publik, Anda memiliki opsi server pribadi. Kita akan menginstal Mosquitto MQTT di server ubuntu / debian seperti raspberry pi atau komputer.

Mosquitto adalah server yang mengimplementasikan protokol MQTT dan gratis.

Untuk menginstalnya, masuk ke raspnerry pi Anda atau server berbasis debian lainnya dan jalankan:

sudo apt update

sudo apt install -y mosquitto mosquitto-clients Sudo systemctl enable mosquitto.service

Ini akan memperbarui repositori, menginstal server dan klien mosquiito dan mengaktifkannya untuk menjalankan layanan saat startup

Untuk menjalankan ip server:

nama host -I

dan itu akan menampilkan sesuatu seperti:

192.168.1.52 172.17.0.1 172.18.0.1

Jadi ip saya adalah 192.168.1.52, pada perintah di bawah ini ganti dengan ip Anda sendiri

Anda dapat menguji server MQTT dengan memublikasikan pesan dan menerimanya dengan alat konsol, karena dua terminal ini harus dibuka, terminal yang mendengarkan pesan, terminal yang akan menerbitkan pesan.

Pertama di terminal, jalankan perintah ini untuk mendengarkan pesan tentang "/ beberapa topik"

mosquitto_sub -h 192.168.1.52 -t /beberapa-topik

Buka terminal lain dan publikasikan pesan ke topik itu:

mosquitto_pub -h 192.168.1.52 -t /beberapa topik -m '{"kelembaban": 74.0}'

Di terminal pertama Anda akan melihat ' {"humidity": 74.0}' dicetak.

Perhatian khusus:

- pengaturan ini mengasumsikan bahwa HASS, Mosquitto dan NodeMCU terhubung ke jaringan WIFI yang sama dan tidak ada aturan firewall dan mereka dapat berkomunikasi secara bebas

- server Mosquitt MQTT tidak memiliki nama pengguna/kata sandi, jika Anda ingin mengatur kredensial, periksa ini: https://www.steves-internet-guide.com/mqtt-username-password-example/ Anda juga perlu mengonfigurasi kredensial di Asisten Rumah dan di sketsa arduino

Langkah 7: OTA (Pembaruan Melalui Udara) untuk NodeMCU

Pembaruan melalui udara berarti bahwa papan pengembangan dapat di-flash secara nirkabel tanpa memerlukan kabel fisik.

Arduino IDE mendukung fungsi ini untuk seri ESP8266 dan beberapa papan lainnya:

- memerlukan flash awal melalui kabel USB

- membuat port virtual melalui WIFI dan hanya terlihat dari Arduino IDE

- tidak ada informasi debug serial yang tersedia

- mendukung perlindungan dengan kata sandi

Untuk mengaktifkan OTA dalam sketsa ESP8266, pertama-tama sertakan perpustakaan:

#sertakan "ArduinoOTA.h"

Juga tentukan konstanta kata sandi sketsa ini:

#define SKETCHPASS "some_password"

Di bagian pengaturan tambahkan baris ini:

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

Serial.println("Koneksi Gagal! Reboot…"); penundaan(5000); ESP.mulai ulang(); } ArduinoOTA.setPassword(SKETCHPASS); ArduinoOTA.onStart(() { Jenis string; if (ArduinoOTA.getCommand() == U_FLASH) { type = "sketsa"; } else { // U_FS type = "filesystem"; } Serial.println("Mulai memperbarui " + jenis); }); ArduinoOTA.onEnd(() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress((kemajuan int yang tidak ditandatangani, total int yang tidak ditandatangani) { Serial.printf("Kemajuan: %u%%\r", (kemajuan / (total / 100))); }); ArduinoOTA.onError((ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (kesalahan == OTA_BEGIN_ERROR) { Serial.println("Mulai Gagal"); } else if (kesalahan == OTA_CONNECT_ERROR) { Serial.println("Connect Failed"); } else if (kesalahan == OTA_RECEIVE_ERROR) { Serial.println(" Penerimaan Gagal"); } else if (kesalahan == OTA_END_ERROR) { Serial.println("Akhir Gagal"); } }); ArduinoOTA.mulai(); Serial.print("Alamat IP: "); Serial.println(WiFi.localIP());

Dan di bagian loop tambahkan baris ini:

ArduinoOTA.handle();

Setelah kode awal Anda diunggah setelah papan boot, Anda akan melihat di Arduino IDE di bagian Tools->Port dua jenis port:

Port serial: /dev/ttyUSB0 (misalnya)

Port jaringan: esp8266-xxxxx di 192.168.1.xxx

Sekarang Anda dapat memilih port jaringan dan mengunggah remote sketsa, Anda akan dimintai kata sandi sketsa (yang telah Anda tetapkan dalam konstanta di atas)

Langkah 8: Kesimpulan, Pekerjaan Masa Depan

Tutorial ini dapat dengan mudah dimodifikasi untuk mengirim data tentang jenis sensor lainnya:

- jika sensor Anda didukung langsung oleh NodeMCU melalui perpustakaan, cukup kumpulkan data dari sensor dan langsung dorong melalui MQTT

- jika perpustakaan sensor tidak bekerja dengan NodeMCU tetapi hanya untuk Arduino kemudian unggah kode Anda ke arduino, keluarkan nilainya melalui jalur serial dan baca di NodeMCU dan dorong (seperti yang kami lakukan dengan penghitung geiger)

Kami bahkan dapat memodifikasinya untuk mengirim data dari beberapa sensor seperti:

- hubungkan sensor Anda ke NodeMCU

- data polling dari setiap sensor

- untuk masing-masing sensor mempublikasikan data ke topik yang berbeda

- di HASS, tentukan beberapa sensor (seperti yang kami lakukan dengan geiger) yang akan mendengarkan berbagai topik

Direkomendasikan: