Panduan Pemula OpenHAB Bagian 2: ZWave, MQTT, Aturan dan Bagan

Panduan Pemula OpenHAB Bagian 2: ZWave, MQTT, Aturan dan Bagan

Gratis tidak selalu berarti 'tidak sebagus berbayar', dan OpenHAB tidak terkecuali. Perangkat lunak otomasi rumah open source jauh melebihi kemampuan sistem otomasi rumah lainnya yang ada di pasaran – tetapi tidak mudah untuk menyiapkannya. Bahkan, itu bisa benar-benar membuat frustrasi.





Di bagian 1 panduan ini, saya memandu Anda menginstal OpenHAB pada Raspberry Pi , memperkenalkan konsep inti OpenHAB, dan menunjukkan cara menambahkan item pertama Anda ke dalam sistem. Hari ini kita akan melangkah lebih jauh:





  • Menambahkan perangkat ZWave
  • Menambahkan pengontrol Harmony Ultimate
  • Memperkenalkan aturan
  • Memperkenalkan MQTT, dan memasang broker MQTT di Pi Anda, dengan sensor di Arduino
  • Merekam data dan membuat grafiknya

Pengantar Z-Wave

Z-Wave telah menjadi protokol otomatisasi rumah yang dominan selama bertahun-tahun: dapat diandalkan, telah dikembangkan secara ekstensif, dan bekerja pada rentang yang jauh lebih lama daripada produk rumah pintar lainnya. Ada ratusan sensor Z-Wave yang tersedia untuk Anda yang melakukan berbagai tugas. BukaHAB bisa bekerja dengan Z-Wave, tetapi pengaturannya merepotkan, dan keandalannya tidak dijamin.





Jika Anda mempertimbangkan untuk membeli rumah yang penuh dengan sensor Z-Wave khusus untuk digunakan dengan OpenHAB, saya mendorong Anda untuk mempertimbangkannya kembali. Ini mungkin berhasil untuk Anda, atau mungkin terganggu dengan masalah kecil tapi terus-menerus. Setidaknya, jangan membeli rumah yang penuh dengan sensor sampai Anda memiliki kesempatan untuk mencoba beberapa. Satu-satunya alasan untuk memilih Z-Wave adalah jika Anda tidak 100% puas dengan OpenHAB, dan ingin membiarkan opsi Anda terbuka di masa mendatang: Z-Wave misalnya berfungsi dengan hub Samsung SmartThings, serta hub khusus Z-Wave seperti Homeseer, dan berbagai pilihan perangkat lunak lain seperti domotikz .

Meskipun OpenHAB menyertakan pengikatan Z-Wave, Anda masih perlu konfigurasikan jaringan Z-Wave terlebih dahulu , sebelum OpenHAB dapat mulai melakukan kueri data. Jika Anda memiliki papan pengontrol Rasberry, Anda memiliki beberapa perangkat lunak yang disediakan untuk mengonfigurasi jaringan, jadi kami tidak akan membahasnya di sini. Jika Anda membeli pengontrol USB Z-Stick Aeotec atau sejenisnya, Anda mungkin tidak memiliki perangkat lunak apa pun yang disertakan, jadi baca terus.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB untuk Membuat Gateway (Putih Biasa) BELI SEKARANG DI AMAZON

Jika Anda sudah memiliki pengaturan jaringan Z-Wave , Anda cukup mencolokkan pengontrol ke Pi dan mulai mengonfigurasi binding dan item. Jika ini adalah perampokan pertama Anda ke Z-Wave, ini sedikit lebih rumit.

Pertama, di sisi perangkat keras: setiap pengontrol memiliki caranya sendiri untuk memasangkan dengan perangkat (secara teknis dikenal sebagai 'mode penyertaan' di mana ID node ditetapkan). Dalam kasus Aotec Z-Stick, ini berarti mencabutnya dari port USB, dan menekan tombol sekali untuk menempatkannya ke mode penyertaan. Kemudian dekatkan ke perangkat yang Anda pasangkan, dan tekan tombol penyertaan juga (ini juga akan bervariasi: soket Everspring saya membutuhkan tombol untuk menekan 3 kali berturut-turut dengan cepat, jadi pelajaran di sini adalah membaca manual untuk perangkat Anda) .





Z-Stick berkedip sebentar untuk menunjukkan keberhasilan. Ini menimbulkan masalah saat menghubungkannya kembali ke Pi, karena port baru ditetapkan. Mulai ulang Pi Anda untuk mengatur ulang kembali ke port standar jika Anda merasa telah dipindahkan secara dinamis ke port yang berbeda. Lebih baik lagi: jangan tancapkan ke Pi sampai Anda melakukan semua pemasangan perangkat keras terlebih dahulu.

Memasang HABmin dan Z-Wave Bindings

Karena OpenHAB sebenarnya bukan utilitas konfigurasi untuk Z-Wave, kita akan menginstal alat manajemen web lain yang melakukannya – sesuatu yang disebut HABmin. Pergilah ke Repositori HABmin Github unduh rilis saat ini. Setelah Anda membuka ritsletingnya, Anda akan menemukan 2 .stoples file di direktori addons – ini harus ditempatkan di direktori addons yang sesuai di share OpenHAB Home Anda (jika Anda juga menggunakan Aotec gen5 Z-Stick, pastikan Anda memiliki setidaknya versi 1.8 dari pengikatan Z-Wave) .





Selanjutnya, buat folder baru di direktori webapps, dan beri nama 'habmin' (huruf kecil penting). Salin sisa file yang diunduh ke sana.

Catatan: Ada juga HABmin 2 dalam pengembangan aktif. Instalasi hampir sama tetapi dengan satu tambahan .jar addon. Mungkin ada baiknya mencoba keduanya hanya untuk melihat mana yang Anda sukai.

Jika Anda belum melakukannya, colokkan pengontrol Anda ke Pi Anda. Ketik berikut ini untuk menemukan port yang benar.

ls /dev/tty*

Anda sedang mencari apa pun dengan USB dalam nama, atau dalam kasus khusus saya, Z-stick menampilkan dirinya sebagai / dev / ttyACM0 (modem). Mungkin lebih mudah untuk melakukan perintah sekali sebelum Anda mencolokkannya, dan sekali setelahnya, sehingga Anda dapat melihat apa yang berubah jika Anda tidak yakin.

Buka file konfigurasi OpenHAB dan ubah bagian pada Z-Wave, batalkan komentar pada kedua baris dan masukkan alamat perangkat Anda yang sebenarnya. Satu langkah terakhir bagi saya adalah mengizinkan pengguna OpenHAB mengakses modem.

sudo usermod -a -G dialout openhab

Sekarang, untuk memulai semuanya, mulai ulang OpenHAB

Sudo service openhab restart

Mudah-mudahan, jika Anda memeriksa log debug, Anda akan melihat sesuatu seperti ini. Selamat, Anda sekarang berbicara Z-Wave. Anda juga dapat menemukan log debug yang dibanjiri pesan dari berbagai node Z-Wave. Mari kita mulai dengan memeriksa HABMIN untuk melihat apa yang ditemukan: http://openhab.local:8080/habmin/index.html (mengganti openhab.local dengan nama host atau alamat IP Raspberry Pi Anda).

Ada banyak hal yang bisa dilihat di HABMIN, tapi kami hanya benar-benar peduli dengan Konfigurasi -> Bindings -> Z-Wave -> Perangkat tab, seperti yang Anda lihat di bawah ini. Perluas simpul untuk mengedit lokasi dan label nama untuk kemudahan referensi Anda.

Mengonfigurasi Item Z-Wave

Setiap perangkat Z-Wave akan memiliki konfigurasi khusus untuk OpenHAB. Untungnya, sebagian besar perangkat telah dieksplorasi dan akan ada contoh di luar sana untuk Anda. Mengonfigurasi perangkat khusus yang tidak dikenali jauh di luar cakupan panduan ini, tetapi mari kita asumsikan itu didukung untuk saat ini.

Pertama, saya memiliki sakelar dan pengukur daya Everspring AN158 dasar di Node 3. Googling cepat membawa saya ke posting blog di Wetwa.re, dengan konfigurasi item sampel. Saya mengadaptasi ini sebagai berikut:

Ganti Dehumidifier_Switch 'Dehumidifier' {zwave='3:command=switch_binary'}

Number Dehumidifier_Watts 'Konsumsi daya dehumidifier [%.1f W]' { zwave='3:command=meter' }

Sempurna.

Selanjutnya adalah Multi-Sensor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) BELI SEKARANG DI AMAZON

Untuk yang ini, saya menemukan contoh konfigurasi di iwasdot.com , dan multisensor saya ada di Node 2.

Nomor Hallway_Temperature 'Suhu Hallway [%.1f °C]' (Hallway, Suhu) {zwave='2:0:command=sensor_multilevel,sensor_type=1,sensor_scale=0'}

Nomor Hallway_Humidity 'Hallway Humidity [%.0f %%]' (Hallway, Humidity) {zwave='2:0:command=sensor_multilevel,sensor_type=5'}

Nomor Hallway_Luminance 'Hallway Luminance [%.0f Lux]' (Hallway) {zwave='2:0:command=sensor_multilevel,sensor_type=3'}

Hubungi Hallway_Motion 'Gerakan Hallway [%s]' (Hallway, Motion) {zwave='2:0:command=sensor_binary,respond_to_basic=true'}

Sensor angka_1_baterai 'Baterai [%s %%]' (Gerak) {zwave='2:0:command=battery'}

Jika format ini terlihat aneh bagi Anda, silakan kembali ke yang pertama panduan pemula , khususnya bagian penjilidan Hue, tempat saya menjelaskan cara item ditambahkan. Anda mungkin hanya perlu menyalin contoh tempel seperti ini, tetapi jika Anda memiliki perangkat baru, dokumentasi penjilidan merinci semua perintah .

Pengikatan Harmoni Logitech

Sebelum kita masuk ke aturan, saya ingin menambahkan catatan singkat tentang bekerja dengan pengikatan Harmoni. Saya penggemar berat remote control seri Harmony untuk menyederhanakan pengalaman pusat media rumah, tetapi mereka sering berdiri sebagai sistem terpisah di dalam rumah pintar. Dengan OpenHAB, aktivitas Logitech Harmony dan kontrol perangkat penuh kini dapat menjadi bagian dari sistem terpusat Anda, dan bahkan termasuk dalam aturan otomatisasi.

Mulailah dengan menginstal tiga file pengikat yang Anda temukan dengan menggunakan apt-cache untuk mencari 'harmoni':

Jangan lupa chown direktori binding lagi setelah Anda selesai:

sudo apt-get install openhab-addon-action-harmonyhub

sudo apt-get install openhab-addon-binding-harmonyhub

sudo apt-get install openhab-addon-io-harmonyhub

sudo chown -hR openhab:openhab /usr/share/openhab

Untuk mengkonfigurasi binding, buka file openhab.cfg dan tambahkan bagian baru sebagai berikut:

########## HARMONY REMOTE CONTROL ##########

harmonihub:host=192.168.1.181 atau ip kamu

harmonihub: nama pengguna = harmoni-anda-email-login

harmonihub: kata sandi = kata sandi Anda

Alamat IP adalah alamat hub Harmony Anda. Gunakan pemindai jaringan untuk mengetahuinya. Anda juga harus memasukkan detail login Anda, yang Anda masukkan saat meluncurkan utilitas konfigurasi Harmony standar. Itu dia. Setelah memulai ulang Hue Anda, log debug Anda akan memiliki keluaran yang tiba-tiba dari penjilidan.

Ini adalah daftar berformat JSON dari semua aktivitas, perangkat, dan perintah Anda yang dapat dikirim. Sebaiknya salin ini untuk referensi di masa mendatang. Anda dapat membuatnya lebih mudah dibaca dengan node yang dapat dilipat dengan menempelkan ke formatter JSON online seperti ini .

Selain aktivitas PowerOff standar yang merupakan default, Anda akan menemukan aktivitas yang Anda tentukan sendiri tercantum di sini berdasarkan nama. Sekarang mari kita buat kontrol satu tombol sederhana untuk memulai aktivitas. Pertama, di file item Anda, tambahkan baris berikut. Ubah grup dan ikon jika Anda suka.

/* Pusat Harmoni */

String Harmony_Activity 'Harmony [%s]' (Living_Room) {harmonyhub='*[currentActivity]' }

Ini adalah sebuah Pengikatan String dua arah , yang mampu mengambil aktivitas saat ini, dan memerintahkan aktivitas saat ini menjadi sesuatu yang lain. Sekarang kita dapat membuat tombol untuk itu, di file peta situs.

Ganti item=Harmony_Activity mappings=[PowerOff='Off',Exercise='Exercise',13858434='TV',Karaoke='Karaoke']

windows 10 tidak bisa klik taskbar

Dalam tanda kurung siku, Anda akan melihat setiap aktivitas bersama dengan labelnya. Umumnya Anda dapat merujuk langsung ke aktivitas seperti yang Anda beri nama di remote Anda, tetapi pengecualian untuk ini yang saya temukan, adalah apa pun dengan spasi dalam nama aktivitas, seperti 'Tonton TV'. Dalam hal ini, Anda harus menggunakan ID aktivitas. Sekali lagi, Anda dapat menemukan ID di output debug JSON. Simpan dan segarkan antarmuka Anda, Anda akan melihat sesuatu yang mirip dengan ini:

Anda juga dapat merujuk ke aktivitas dalam aturan Anda, seperti yang akan kita lihat selanjutnya. Baca halaman wiki untuk info lebih lanjut tentang Pengikatan harmoni .

Pengantar Umum Aturan

Sebagian besar hub rumah pintar menyertakan beberapa jenis pembuatan aturan sehingga Anda dapat secara otomatis bereaksi terhadap data sensor dan peristiwa di rumah. Faktanya, saya berpendapat bahwa rumah yang benar-benar pintar bukanlah rumah yang Anda perlukan untuk menghabiskan waktu berinteraksi dengan aplikasi seluler – ini adalah rumah yang tidak terlihat oleh pengguna akhir dan sepenuhnya otomatis. Untuk tujuan ini, OpenHAB juga menyertakan bahasa skrip aturan yang kuat yang dapat Anda programkan, jauh melebihi kerumitan sebagian besar hub rumah pintar atau resep IFTTT.

Aturan pemrograman terdengar lebih buruk dari itu. Mari kita mulai sederhana dengan sepasang aturan yang menghidupkan atau mematikan lampu tergantung pada sensor kehadiran:

aturan 'Lampu kantor menyala saat James hadir'

Kapan

Item JamesInOffice berubah dari OFF menjadi ON

kemudian

sendCommand(Office_Hue,ON)

akhir

aturan 'Lampu kantor mati saat James pergi'

Kapan

Item JamesInOffice berubah dari ON ke OFF

kemudian

sendCommand(Office_Hue,OFF)

akhir

Pertama, kami memberi nama aturan – jadilah deskriptif, sehingga Anda tahu peristiwa apa yang diaktifkan. Selanjutnya, kita mendefinisikan aturan sederhana kita dengan mengatakan jika x benar, maka lakukan y . Akhir menandakan penutupan aturan tertentu. Ada sejumlah kata khusus yang dapat Anda gunakan dalam aturan, tetapi untuk saat ini kita berurusan dengan dua sintaks sederhana - Barang , yang memungkinkan Anda untuk menanyakan keadaan sesuatu; dan kirimPerintah , yang melakukan persis seperti yang Anda pikirkan. Aku bilang ini mudah.

Mungkin tidak perlu menggunakan sepasang aturan, tetapi karena logika saya menjadi lebih kompleks, akan bermanfaat untuk memisahkannya saat saya memasuki atau meninggalkan area - dan mungkin ide yang baik untuk menambahkan sensor cahaya di suatu tempat ke dalam persamaan sehingga kita tidak perlu menyalakan lampu.

Mari kita lihat contoh lain untuk membuat aturan terjadwal.

aturan 'Olahraga setiap pagi'

Kapan

Waktu cron '0 0 8 1/1 * ? *'

kemudian

harmoniStartActivity('Latihan')

akhir

Sekali lagi, kami memberi nama aturan, kondisi keadaan kapan harus diaktifkan, dan tindakan yang harus diambil. Namun dalam kasus ini, kami mendefinisikan pola Waktu. Kode lucu yang Anda lihat dalam tanda kutip adalah ekspresi CRON untuk Quartz Scheduler (formatnya sedikit berbeda dengan CRONtab biasa). saya menggunakan cronmaker.com untuk membantu membuat ekspresi, tetapi Anda juga dapat membaca panduan format [Tidak Lagi Tersedia] untuk penjelasan mendetail dan lebih banyak contoh.

CronMaker.com digunakan untuk menghasilkan ekspresi Cron yang diformat dengan benar

Aturan saya mengatakan cukup '8 pagi setiap pagi, setiap hari dalam seminggu, beri tahu sistem Harmony Ultimate saya untuk memulai aktivitas Latihan', yang pada gilirannya mengaktifkan TV, Xbox, amplifier, dan menekan tombol A setelah satu menit untuk meluncurkan disk di dalam drive.

Sayangnya, OpenHAB belum bisa melakukan latihan untuk saya.

Satu lagi aturan yang ingin saya tunjukkan adalah sesuatu yang saya gunakan untuk mengatur tingkat kelembapan di rumah saya. Saya memiliki dehumidifier tunggal yang harus saya pindahkan ke mana pun diperlukan, jadi saya memutuskan untuk melihat semua sensor kelembaban saya, menemukan mana yang tertinggi, dan menyimpannya dalam variabel. Saat ini dipicu setiap menit, tetapi itu dapat dengan mudah diturunkan. Lihat dulu:

impor org.openhab.core.library.types.*

impor org.openhab.model.script.actions.*

impor java.lang.String

aturan 'Monitor Kelembaban'

ketika Waktu cron '0 * * * * ?'

kemudian

var sebelumnyaTinggi = 0

var tinggiHum = ''

Kelembaban?.members.forEach[hum|

logDebug('humidity.rules', hum.name);

if(hum.state sebagai DecimalType > prevHigh){

prevHigh = hum.state

highHum = hum.nama + ': ' + hum.status + '%'

}

ponsel saya terus muncul iklan

]

logDebug('humidity.rules', highHum);

postUpdate(Dehumidifier_Needed,highHum);

akhir

Inti dari aturan ada di Kelembaban?.members.foreach garis. Kelembaban adalah nama grup untuk sensor kelembapan saya; .anggota ambil semua item dalam grup itu; untuk setiap mengulanginya (dengan format braket persegi aneh yang mungkin tidak Anda kenal). Sintaks aturan adalah turunan dari Xtend, sehingga Anda dapat membaca Dokumentasi Xtend jika Anda tidak dapat menemukan contoh untuk beradaptasi.

Anda mungkin tidak perlu melakukannya – ada ratusan contoh aturan di luar sana:

MQTT untuk OpenHAB dan Internet of Things

MQTT adalah sistem pesan ringan untuk komunikasi mesin-ke-mesin – semacam Twitter untuk Arduino atau Raspberry Pis Anda untuk berbicara satu sama lain (walaupun tentu saja ia bekerja dengan lebih dari sekadar itu). Ini dengan cepat mendapatkan popularitas dan menemukan dirinya sebagai rumah dengan perangkat Internet of Things, yang biasanya merupakan pengontrol mikro sumber daya rendah yang membutuhkan cara yang andal untuk mengirimkan data sensor kembali ke hub Anda atau menerima perintah jarak jauh. Itulah tepatnya yang akan kita lakukan dengannya.

Tapi mengapa menemukan kembali roda?

MQ Telemetry Transport ditemukan pada tahun 1999 untuk menghubungkan pipa minyak melalui koneksi satelit yang lambat, yang dirancang khusus untuk meminimalkan penggunaan baterai dan bandwidth, sambil tetap menyediakan pengiriman data yang andal. Selama bertahun-tahun, prinsip desain tetap sama, tetapi kasus penggunaan telah bergeser dari sistem tertanam khusus ke perangkat Internet of Things umum. Pada tahun 2010 protokol dirilis bebas royalti, terbuka bagi siapa saja untuk digunakan dan diimplementasikan. Kami suka gratis.

Anda mungkin bertanya-tanya mengapa kami repot-repot dengan protokol lain - kami sudah memiliki HTTP - yang dapat digunakan untuk mengirim pesan cepat antara semua jenis sistem yang terhubung web (seperti OpenHAB dan IFTTT, khususnya dengan saluran pembuat baru ). Dan Anda akan benar. Namun, pemrosesan overhead server HTTP cukup besar – sedemikian rupa sehingga Anda tidak dapat dengan mudah menjalankannya pada mikrokontroler tertanam seperti Arduino (setidaknya, Anda bisa, tetapi Anda tidak akan memiliki banyak memori tersisa untuk hal lain. ). MQTT adalah sisi lain yang ringan, sehingga mengirim pesan di sekitar jaringan Anda tidak akan menyumbat pipa, dan dapat dengan mudah masuk ke dalam ruang memori Arduino kecil kami.

Bagaimana MQTT Bekerja?

MQTT membutuhkan server (disebut 'broker') dan satu atau lebih klien. Server bertindak sebagai perantara, menerima pesan dan menyiarkannya kembali ke klien yang berminat.

Mari kita lanjutkan dengan Twitter-untuk-mesin analogi sekalipun. Sama seperti pengguna Twitter yang dapat menge-tweet 140 karakter mereka yang tidak berarti, dan pengguna dapat 'mengikuti' pengguna lain untuk melihat aliran kiriman yang dikuratori, klien MQTT dapat berlangganan saluran tertentu untuk menerima semua pesan dari sana, serta memublikasikan pesan mereka sendiri. ke saluran itu. Pola terbitkan dan berlangganan ini disebut sebagai pub / sub , yang bertentangan dengan tradisi server klien model HTTPnya.

HTTP mengharuskan Anda menjangkau mesin yang berkomunikasi dengan Anda, katakan Halo, lalu bolak-balik untuk terus-menerus saling mengakui saat Anda mendapatkan atau memasukkan data. Dengan pub/sub, klien yang melakukan penerbitan tidak perlu tahu klien mana yang berlangganan: itu hanya mengeluarkan pesan, dan broker mendistribusikannya kembali ke klien berlangganan mana pun. Setiap klien dapat mempublikasikan, dan berlangganan topik, seperti pengguna Twitter.

Tidak seperti Twitter, MQTT tidak terbatas pada 140 karakter. Ini data agnostik, sehingga Anda dapat mengirim sejumlah kecil atau blok teks besar, datagram berformat JSON, atau bahkan gambar dan file biner.

Bukannya MQTT lebih baik dari HTTP untuk semuanya – tapi itu adalah lebih cocok jika kita akan memiliki banyak sensor di sekitar rumah, terus-menerus melapor.

Penting juga untuk diketahui bahwa OpenHAB tidak akan bertindak sebagai broker MQTT Anda – kami akan membahasnya nanti. Namun, OpenHAB akan bertindak sebagai klien: ia dapat mempublikasikan log aktivitas OpenHAB Anda, serta mengikat saluran tertentu ke perangkat, sehingga Anda dapat misalnya memiliki sakelar yang dikendalikan oleh pesan MQTT pada saluran tertentu. Ini sangat ideal untuk membuat rumah yang penuh dengan sensor.

Instal Nyamuk di Pi Anda

Meskipun OpenHAB menyertakan klien MQTT sehingga Anda dapat berlangganan topik dan juga memublikasikan pesan, itu tidak akan bertindak sebagai server. Untuk itu, Anda perlu menggunakan broker MQTT berbasis web (berbayar atau gratis), atau menginstal perangkat lunak gratis di Pi Anda. Saya ingin menyimpan semuanya di rumah, jadi saya telah menginstal Mosquitto di Pi.

Sayangnya, versi yang tersedia melalui apt-get biasa benar-benar ketinggalan zaman. Sebagai gantinya, mari tambahkan sumber terbaru.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

sudo apt-key tambahkan mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get install mosquitto

Hanya itu yang perlu kita lakukan agar server MQTT aktif dan berjalan di jaringan lokal. Broker Anda berjalan pada port 1883 secara default.

Periksa apakah server MQTT Anda berfungsi menggunakan MQTT.fx gratis, yang bersifat lintas platform. Klik ikon pengaturan untuk membuat profil baru, dan masukkan alamat IP atau nama Raspberry Pi Anda. Simpan, dan tekan hubungkan. Jika lampu lalu lintas kecil di kanan atas berubah menjadi hijau, Anda siap berangkat.

Untuk tes cepat, klik tab 'berlangganan', dan ketik dalamTopik / ke dalam kotak teks, lalu tekan tombol Langganan tombol. Anda sekarang berlangganan untuk menerima pesan tentang topik bernama inTopic, meskipun itu akan menampilkan 0 pesan. Kembali ke tab terbitkan, ketik inTopic ke dalam kotak kecil, dan pesan singkat ke dalam kotak teks besar di bawah. Memukul Menerbitkan beberapa kali dan lihat kembali pada tab subscribe. Anda akan melihat beberapa pesan yang muncul di topik tersebut.

Sebelum kita menambahkan beberapa sensor aktual ke jaringan kita, kita perlu belajar tentang level topik, yang memungkinkan kita untuk menyusun dan memfilter jaringan MQTT. Nama topik peka huruf besar-kecil, tidak boleh dimulai dengan $, atau menyertakan spasi, atau karakter non-ASCII - praktik pemrograman standar untuk nama variabel, sungguh.

Pemisah / menunjukkan tingkat topik, yang hierarkis, misalnya berikut ini semua tingkat topik yang valid.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/ruang tamu/suhu

myHome/ruang tamu/kelembaban

myHome/dapur/suhu

myHome/dapur/kelembaban

Anda seharusnya sudah melihat bagaimana struktur pohon ini sempurna untuk rumah pintar yang penuh dengan sensor dan perangkat. Praktik terbaik untuk digunakan dengan beberapa sensor dalam satu ruangan adalah dengan memublikasikan setiap variabel sensor sebagai tingkat topiknya sendiri - bercabang ke lebih spesifik (seperti pada contoh di atas) - daripada mencoba untuk memublikasikan beberapa jenis sensor ke saluran yang sama .

Klien kemudian dapat memublikasikan atau berlangganan ke sejumlah level topik individual, atau menggunakan beberapa karakter wildcard khusus untuk memfilter dari yang lebih tinggi di hierarki.

Wildcard + menggantikan satu level topik mana pun. Contohnya:

myHome/+/suhu

akan berlangganan klien ke keduanya

myHome/ruang tamu/suhu

myHome/dapur/suhu

... tapi tidak tingkat kelembaban.

# adalah wildcard multi-level, jadi Anda dapat mengambil apa pun dari larik sensor ruang tamu dengan:

myHome/ruang tamu/#

Secara teknis, Anda juga dapat berlangganan ke level root # yang membuat Anda benar-benar mendapatkan segalanya melalui broker, tetapi itu bisa seperti menempelkan selang kebakaran di wajah Anda: sedikit berlebihan. Coba sambungkan ke broker MQTT publik dari HiveMQ dan berlangganan #. Saya mendapat sekitar 300 pesan dalam beberapa detik sebelum klien saya mogok.

Kiat Pemula MQTT: ' /rumah saya/' adalah topik yang berbeda dengan ' rumah saya/' – menyertakan garis miring di awal membuat level topik kosong, yang meskipun secara teknis valid, tidak disarankan karena dapat membingungkan.

Sekarang setelah kita mengetahui teorinya, mari kita mulai dengan Arduino, Ethernet Shield, dan sensor suhu dan kelembaban DHT11 – Anda mungkin memilikinya di starter kit Anda, tetapi jika tidak, ganti saja sensor lingkungan dengan gerakan sensor (atau bahkan tombol).

Menerbitkan MQTT Dari Arduino Dengan Koneksi Ethernet

Jika Anda memiliki perangkat hybrid Arduino yang kompatibel dengan Wi-Fi atau Ethernet built-in, itu juga akan berfungsi. Akhirnya kita akan menginginkan cara komunikasi yang lebih baik/murah yang harus menggunakan koneksi jaringan di setiap ruangan, tetapi ini berfungsi untuk mempelajari dasar-dasarnya.

Mulailah dengan mengunduh perpustakaan pubsubclient dari Github . Jika Anda telah menggunakan tombol 'Unduh sebagai ZIP', strukturnya agak salah. Buka zip, ganti nama folder menjadi hanya klien pub , lalu keluarkan kedua file dari src folder dan pindahkan ke atas satu tingkat ke akar folder yang diunduh. Kemudian pindahkan seluruh folder ke Arduino/perpustakaan direktori.

Ini contoh kode saya yang bisa Anda adaptasi : output sinyal DHT11 ada di pin 7. Ubah IP server untuk Pi Anda di baris berikut:

client.setServer('192.168.1.99', 1883);

Sayangnya, kami tidak dapat menggunakan nama ramahnya (OpenHAB.local dalam kasus saya) karena tumpukan TCP/IP di Arduino sangat sederhana dan menambahkan kode untuk penamaan Bonjour akan memakan banyak memori yang tidak ingin kita buang. Untuk mengubah topik tempat data sensor disiarkan, gulir ke bawah ke baris berikut:

penyangga karakter[10];

dtostrf(t,0, 0, penyangga);

client.publish('openhab/himitsu/temperature',buffer);

dtostrf(h,0, 0, penyangga);

client.publish('openhab/himitsu/humidity',buffer);

Kode juga termasuk berlangganan saluran perintah. Temukan dan sesuaikan baris berikut:

client.subscribe('openhab/himitsu/command');

Periksa kode di sekitar sana dan Anda akan melihat bahwa Anda dapat dengan mudah mengontrol LED atau relai misalnya dengan mengirimkan perintah ke saluran tertentu. Dalam kode contoh, itu hanya mengirim pesan kembali mengakui penerimaan perintah.

Unggah kode Anda, colokkan Arduino Anda ke jaringan, dan gunakan MQTT.fx untuk berlangganan # atau openhab / himitsu / # (atau apa pun yang Anda ubah nama ruangannya, tetapi jangan lupa untuk menyertakan # di akhir). Segera Anda akan melihat pesan masuk; dan jika Anda mengirim AKTIF atau MATI ke topik perintah, Anda juga akan melihat ucapan terima kasih kembali.

Pengikatan MQTT untuk OpenHAB

Langkah terakhir dalam persamaan adalah untuk menghubungkan ini ke OpenHAB. Untuk itu, tentu kita membutuhkan pengikatan.

sudo apt-get install openhab-addon-binding-mqtt

sudo chown -hR openhab:openhab /usr/share/openhab

Dan edit file konfigurasi untuk mengaktifkan pengikatan.

mqtt:broker.url=tcp://localhost:1883

mqtt:broker.clientId=openhab

Mulai ulang OpenHAB

Sudo service openhab restart

Kemudian mari kita tambahkan satu atau dua item:

/* Sensor MQTT */

Nomor Himitsu_Temp 'Suhu Himitsu [%.1f °C]' (Himitsu,Suhu) {mqtt='<[broker:openhab/himitsu/temperature:state:default]'}

Nomor Himitsu_Humidity'Himitsu Kelembaban [% .1f %%]' (Himitsu, Kelembaban) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Sekarang Anda harus memahami formatnya; itu mendapatkan Item nomor dari pengikatan MQTT, pada topik tertentu. Ini contoh sederhana, Anda mungkin ingin merujuk ke halaman wiki di mana itu bisa menjadi jauh lebih kompleks .

Selamat, Anda sekarang memiliki dasar array sensor berbasis Arduino yang murah. Kami akan meninjau kembali ini di masa depan dan menempatkan Arduino ke jaringan RF mereka sendiri yang sepenuhnya terpisah. Saya juga telah membuat versi yang identik untuk papan Wizwiki 7500 jika Anda kebetulan memiliki salah satunya.

Data Persistensi dan Grafik

Saat ini Anda mungkin sudah menyiapkan sekumpulan sensor, baik dari Z-Wave atau Arduino khusus yang menjalankan MQTT – sehingga Anda dapat melihat status terkini dari sensor tersebut kapan saja, dan Anda juga harus bereaksi terhadap nilainya dalam aturan. Tetapi hal yang menarik tentang nilai sensor pada umumnya adalah nilai tersebut berubah seiring waktu: di situlah kegigihan dan grafik berperan. Kegigihan di OpenHAB berarti menyimpan data dari waktu ke waktu. Mari kita lanjutkan dan atur RRD4J (Round Robin Database for Java), disebut demikian karena data disimpan dalam mode round robin – data lama dibuang untuk mengompresi ukuran database.

Instal paket rrd4j dengan perintah berikut.

sudo apt-get install openhab-addon-persistence-rrd4j
sudo chown -hR openhab:openhab /usr/share/openhab

Kemudian buat file baru bernama rrd4j.persist dalam konfigurasi/kegigihan map. Tempelkan berikut ini:

Strategi {

setiapMenit : '0 * * * * ?'

setiap Jam : '0 0 * * * ?'

setiap hari : '0 0 0 * * ?'

default = setiap Perubahan

}

Item {

// pertahankan semuanya ketika nilainya diperbarui, hanya default, dan pulihkan dari database saat startup

* : strategy = everyChange, restoreOnStartup

// selanjutnya kami menentukan strategi khusus setiap Jam untuk apa pun di grup Suhu, dan dan setiap menit untuk Kelembaban

membuat windows 10 terlihat seperti windows xp

Suhu* : strategi = setiap Jam

Kelembaban* : strategi = setiap Menit

// atau Anda dapat menambahkan item tertentu di sini, seperti

//Bedroom_Humidity,JamesInOffice : strategy = everyMinute

}

Di bagian pertama file ini, kami mendefinisikan strategi, yang berarti memberi nama pada ekspresi CRON. Ini sama seperti yang sudah kita lakukan dengan My.OpenHAB, tapi kali ini kita membuat beberapa strategi baru yang bisa kita gunakan setiap hari, setiap jam dan setiap menit. Saya belum menggunakan semuanya, tetapi saya mungkin akan menggunakannya di masa depan.

Di paruh kedua file, kami memberi tahu rr4dj nilai data mana yang akan disimpan. Sebagai default, kami akan menyimpan semuanya setiap kali diperbarui, tetapi saya juga telah menentukan beberapa strategi berbasis waktu untuk sensor tertentu. Suhu Saya tidak terlalu mempermasalahkannya, jadi saya telah menyetelnya untuk menghemat setiap Jam saja, tetapi kelembapan adalah masalah besar bagi saya, jadi saya ingin melihat bagaimana perubahannya setiap menit. Jika ada data lain yang secara khusus ingin Anda simpan pada waktu yang ditentukan, tambahkan di sini sekarang atau sesuaikan sesuai kebutuhan.

Catatan: jika Anda ingin membuat grafik data juga, Anda HARUS menyimpannya setidaknya sekali dalam satu menit. Tidak masalah jika data sensor Anda diperbarui secepat ini, Anda hanya perlu memberi tahu rr4dj untuk menyimpannya satu menit sekali.

Dengan definisi itu, Anda akan mulai melihat beberapa keluaran debug yang memberi tahu Anda bahwa nilai sedang disimpan.

Selanjutnya, mari kita buat beberapa grafik cantik dari semua data ini. Ini sangat mudah. Untuk membuat grafik masing-masing sensor, tambahkan berikut ini ke peta situs Anda:

Bagan item=Kamar tidur_Periode Kelembaban=h

Itu benar-benar semua yang Anda butuhkan. Nilai yang valid untuk periode adalah j, 4j, 8j, 12j, D, 3D, W, 2W, M, 2M, 4M, Y ; harus jelas apa artinya ini. Defaultnya adalah D untuk data sehari penuh jika tidak ditentukan.

Untuk membuat grafik dengan beberapa item, cukup buat grafik nama grup sebagai gantinya:

Bagan item=Periode Kelembaban=h

Anda mungkin juga tertarik untuk mengetahui bahwa Anda dapat menggunakan grafik ini di tempat lain; itu menghasilkan gambar menggunakan URL berikut: http://YOUROPENHABURL:8080/chart?groups=Humidity&period=h

bagaimana? Milikmu Sistem OpenHAB Datang?

Itu saja untuk pemasangan panduan ini, tetapi jangan berharap ini akan menjadi yang terakhir Anda dengar dari kami tentang OpenHAB. Semoga panduan ini dan panduan pemula telah memberi Anda landasan yang kuat untuk mengembangkan sistem OpenHAB Anda sendiri yang lengkap – tetapi ini adalah proses yang tidak pernah benar-benar selesai.

Untungnya, OpenHAB dapat menskalakan dengan baik dari beberapa perangkat hingga ratusan, dari kerumitan aturan sederhana hingga otomatisasi rumah terbaik – jadi bagaimana sistem Anda berjalan? Perangkat mana yang Anda pilih? Apa proyek besar berikutnya yang akan Anda tangani?

Mari kita bicara di komentar – dan tolong, jika Anda merasa panduan ini berguna, klik tombol bagikan itu untuk memberi tahu teman Anda bagaimana mereka juga dapat mengatur sistem OpenHAB mereka sendiri.

Kami harap Anda menyukai item yang kami rekomendasikan dan diskusikan! MUO memiliki kemitraan afiliasi dan sponsor, jadi kami menerima bagian dari pendapatan dari beberapa pembelian Anda. Ini tidak akan memengaruhi harga yang Anda bayar dan membantu kami menawarkan rekomendasi produk terbaik.

Membagikan Membagikan Menciak Surel Panduan Pemula untuk Menganimasikan Pidato

Menganimasikan pidato bisa menjadi tantangan. Jika Anda siap untuk mulai menambahkan dialog ke proyek Anda, kami akan merinci prosesnya untuk Anda.

Baca Selanjutnya
Topik-topik yang berkaitan
  • buatan sendiri
  • Rumah Pintar
  • Arduino
  • Otomatisasi Rumah
  • Bentuk panjang
  • Panduan Bentuk Panjang
Tentang Penulis James Bruce(707 Artikel Diterbitkan)

James memiliki gelar BSc dalam Artificial Intelligence dan bersertifikat CompTIA A+ dan Network+. Ketika dia tidak sibuk sebagai Editor Ulasan Perangkat Keras, dia menikmati LEGO, VR, dan permainan papan. Sebelum bergabung dengan MakeUseOf, ia adalah seorang teknisi pencahayaan, guru bahasa Inggris, dan insinyur pusat data.

More From James Bruce

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan