Panduan Pemula OpenHAB Bahagian 2: ZWave, MQTT, Peraturan dan Carta

Panduan Pemula OpenHAB Bahagian 2: ZWave, MQTT, Peraturan dan Carta

Percuma tidak selalu bermaksud 'tidak sebaik dibayar', dan OpenHAB tidak terkecuali. Perisian automasi rumah sumber terbuka jauh melebihi kemampuan sistem automasi rumah lain di pasaran - tetapi tidak mudah untuk disiapkan. Sebenarnya, ia benar-benar mengecewakan.





Dalam bahagian 1 panduan ini, saya membimbing anda memasang OpenHAB pada Raspberry Pi , memperkenalkan konsep teras OpenHAB, dan menunjukkan kepada anda cara menambahkan item pertama anda ke dalam sistem. Hari ini kita akan pergi lebih jauh:





  • Menambah peranti ZWave
  • Menambah pengawal Harmony Ultimate
  • Memperkenalkan peraturan
  • Memperkenalkan MQTT, dan memasang broker MQTT pada Pi anda, dengan sensor pada Arduino
  • Merakam data dan membuat grafik

Pengenalan Z-Wave

Z-Wave telah menjadi protokol automasi rumah yang dominan selama bertahun-tahun: boleh dipercayai, telah dikembangkan secara meluas, dan berfungsi dalam jangkauan yang jauh lebih lama daripada produk rumah pintar yang lain. Terdapat beratus-ratus sensor Z-Wave yang tersedia untuk anda yang melakukan pelbagai tugas. OpenHAB boleh bekerjasama dengan Z-Wave, tetapi perlu disiapkan, dan kebolehpercayaan tidak terjamin.





Sekiranya anda mempertimbangkan untuk membeli rumah yang penuh dengan sensor Z-Wave khusus untuk digunakan dengan OpenHAB, saya menggesa anda untuk mempertimbangkan semula. Ini mungkin berfungsi dengan baik untuk anda, atau mungkin akan terganggu dengan masalah kecil tetapi berterusan. Paling tidak, jangan beli rumah yang penuh dengan sensor sehingga anda berpeluang mencuba beberapa. Satu-satunya sebab untuk memilih Z-Wave adalah jika anda tidak 100% menetap di OpenHAB, dan ingin membiarkan pilihan anda terbuka pada masa akan datang: Z-Wave misalnya berfungsi dengan hub Samsung SmartThings, dan juga hub khusus Z-Wave seperti Homeseer, dan pelbagai pilihan perisian lain seperti domoticz .

Walaupun OpenHAB merangkumi Z-Wave yang mengikat, anda tetap perlu melakukannya konfigurasikan rangkaian Z-Wave terlebih dahulu , sebelum OpenHAB dapat memulakan pertanyaannya untuk data. Sekiranya anda mempunyai papan pengawal Rasberry, anda mempunyai beberapa perisian yang disediakan untuk mengkonfigurasi rangkaian, jadi kami tidak akan membahasnya di sini. Sekiranya anda membeli alat kawalan Aeotec USB Z-Stick atau yang serupa, kemungkinan anda tidak mempunyai perisian yang disertakan, jadi baca terus.



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

Sekiranya anda sudah mempunyai persediaan rangkaian Z-Wave , anda hanya boleh memasukkan pengawal anda ke Pi dan mula mengkonfigurasi pengikat dan item. Sekiranya ini adalah percubaan pertama anda ke Z-Wave, ini sedikit lebih rumit.

Pertama, dari sisi perkakasan: setiap pengawal mempunyai cara tersendiri untuk berpasangan dengan peranti (dikenali secara teknikal sebagai 'mod penyertaan' di mana ID nod ditetapkan). Dalam kes Aotec Z-Stick, ini bermaksud mencabutnya dari port USB, dan menekan butang sekali untuk memasukkannya ke mod penyertaan. Kemudian bawa ke peranti yang anda pasangkan, dan tekan juga butang penyertaan (ini juga akan berbeza: soket Everspring saya memerlukan butang untuk menekan 3 kali berturut-turut, jadi pelajaran di sini adalah membaca manual untuk peranti anda) .





Z-Stick berkedip sebentar untuk menunjukkan kejayaan. Ini menimbulkan masalah ketika memasangkannya kembali ke Pi, kerana port baru ditugaskan. Mulakan semula Pi anda untuk menetapkannya semula ke port standard jika anda dapati ia ditugaskan semula secara dinamik. Lebih baik lagi: jangan pasangkannya ke Pi sehingga anda melakukan semua pemasangan perkakasan terlebih dahulu.

Memasang HABmin dan Z-Wave Bindings

Oleh kerana OpenHAB sebenarnya tidak menggunakan utiliti konfigurasi untuk Z-Wave, kami akan memasang alat pengurusan web lain yang - sesuatu yang dipanggil HABmin. Pergi ke Repositori HABmin Github memuat turun siaran semasa. Setelah melepaskan zip, anda akan menemui 2 .jar fail dalam direktori addons - ini harus diletakkan di direktori addons yang sesuai di bahagian OpenHAB Home anda (jika anda juga menggunakan Aotec gen5 Z-Stick, pastikan anda mempunyai sekurang-kurangnya versi 1.8 dari pengikat Z-Wave) .





Seterusnya, buat folder baru di direktori webapps, dan namakan 'habmin' (huruf kecil penting). Salin selebihnya fail yang dimuat turun ke sana.

Catatan: Terdapat juga HABmin 2 dalam pembangunan aktif. Pemasangan hampir sama tetapi dengan satu tambahan .jar tambahan. Mungkin patut dicuba kedua-duanya hanya untuk melihat mana yang anda sukai.

Sekiranya anda belum melakukannya, pasangkan alat kawalan anda ke Pi anda. Taipkan yang berikut untuk mencari port yang betul.

ls / dev / tty *

Anda mencari apa-apa dengan USB dalam namanya, atau dalam kes saya, Z-stick muncul sebagai / dev / ttyACM0 (modem). Mungkin lebih mudah untuk melakukan perintah sekali sebelum anda memasangkannya, dan sekali selepasnya, jadi anda dapat melihat apa yang berubah jika anda tidak pasti.

Buka fail konfigurasi OpenHAB dan ubah bahagian pada Z-Wave, melepaskan kedua-dua baris dan meletakkan alamat peranti anda yang sebenarnya. Satu langkah terakhir bagi saya adalah membenarkan pengguna OpenHAB mengakses modem.

sudo usermod -a -G dialout openhab

Sekarang, untuk memulakan semuanya, mulakan semula OpenHAB

perkhidmatan sudo mulakan semula openhab

Mudah-mudahan, jika anda memeriksa log debug, anda akan melihat sesuatu seperti ini. Tahniah, anda sekarang bercakap Z-Wave. Anda juga mungkin mendapati log debug dibanjiri dengan mesej dari pelbagai nod Z-Wave. Mari mulakan dengan memeriksa HABMIN untuk melihat apa yang dijumpainya: http: //openhab.local: 8080 / habmin / index.html (menggantikan openhab.local dengan nama host atau alamat IP Raspberry Pi anda).

Terdapat banyak yang dapat dilihat di HABMIN, tetapi kami hanya prihatin dengan Konfigurasi -> Ikatan -> Gelombang Z -> Peranti tab, seperti yang anda lihat di bawah. Luaskan simpul untuk mengedit label lokasi dan nama untuk kemudahan rujukan anda.

Mengkonfigurasi Item Gelombang-Z

Setiap peranti Z-Wave akan mempunyai konfigurasi khusus untuk OpenHAB. Syukurlah, kebanyakan peranti telah diterokai dan sudah ada contoh di luar sana untuk peranti anda. Mengkonfigurasi peranti tersuai yang tidak dikenali jauh di luar skop panduan ini, tetapi anggap ia disokong buat masa ini.

Pertama, saya mempunyai suis kuasa dan meter Everspring AN158 asas pada Node 3. Googling pantas membawa saya ke catatan blog di Wetwa.re, dengan contoh konfigurasi item. Saya menyesuaikannya seperti berikut:

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

Nombor penggunaan Dehumidifier_Watts 'Dehumidifier [% .1f W]' {zwave = '3: command = meter'}

Sempurna.

Seterusnya adalah Aeotec Gen5 Multi-Sensor.

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

Untuk yang satu ini, saya dapati contoh konfigurasi di iwasdot.com , dan multisensor saya berada di Node 2.

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

Number Hallway_Humidity 'Kelembapan Lorong [% .0f %%]' (Lorong, Kelembapan) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

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

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

Number sensor_1_battery 'Battery [% s %%]' (Motion) {zwave = '2: 0: command = bateri'}

Sekiranya format ini kelihatan aneh bagi anda, sila kembali ke format yang pertama panduan pemula , khususnya bahagian pengikat Hue, di mana saya menerangkan bagaimana item ditambahkan. Anda mungkin hanya perlu menyalin contoh tampalan seperti ini, tetapi sekiranya anda mempunyai peranti baru, dokumentasi yang mengikat memperincikan semua arahan .

Pengikatan Harmoni Logitech

Sebelum kita memasuki peraturan, saya ingin menambahkan nota ringkas mengenai bekerja dengan pengikatan Harmony. Saya peminat siri siri jarak jauh Harmony untuk mempermudah pengalaman pusat media rumah, tetapi mereka sering berdiri sebagai sistem yang terpisah dalam rumah pintar. Dengan OpenHAB, aktiviti Logitech Harmony dan kawalan peranti penuh kini boleh menjadi sebahagian daripada sistem terpusat anda, dan bahkan termasuk dalam peraturan automasi.

Mulakan dengan memasang tiga fail mengikat yang anda dapati dengan menggunakan apt-cache untuk mencari 'harmoni':

Jangan lupa chown direktori pengikat sekali lagi apabila anda selesai:

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

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

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

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

Untuk mengkonfigurasi pengikatan, buka fail openhab.cfg dan tambahkan bahagian baru seperti berikut:

########## KAWALAN REMOTE HARMONI ##########

harmonihub: host = 192.168.1.181 atau ip anda

harmonihub: nama pengguna = log masuk-harmoni-e-mel anda

harmonihub: kata laluan = kata laluan Awak

Alamat IP adalah hab Harmony anda. Gunakan pengimbas rangkaian untuk mengetahuinya. Anda juga perlu memasukkan butiran log masuk anda, yang anda masukkan semasa melancarkan utiliti konfigurasi Harmony standard. Itu sahaja. Setelah menghidupkan semula Hue anda, log debug anda harus mempunyai output yang tiba-tiba dari pengikatan.

Ini adalah senarai berformat JSON untuk semua aktiviti, peranti, dan perintah anda yang dapat dihantar. Adalah idea yang baik untuk menyalinnya untuk rujukan masa depan. anda boleh menjadikannya lebih mudah dibaca dengan simpul yang dilipat dengan menampal ke dalam pemformat JSON dalam talian seperti yang ini .

Serta aktiviti PowerOff standard yang merupakan lalai, anda akan dapati aktiviti yang ditentukan sendiri yang disenaraikan di sini berdasarkan nama. Sekarang mari buat kawalan satu butang mudah untuk memulakan aktiviti. Pertama, dalam fail item anda, tambahkan baris berikut. Tukar kumpulan dan ikon jika anda mahu.

/ * Hab Harmoni * /

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

Ini adalah mengikat tali dua hala , yang dapat mengambil aktiviti semasa, dan memerintahkan aktiviti semasa menjadi sesuatu yang lain. Sekarang kita boleh membuat butang untuknya, dalam fail peta laman.

Tukar item = Pemetaan Harmoni_Aktiviti = [PowerOff = 'Mati', Latihan = 'Latihan', 13858434 = 'TV', Karaoke = 'Karaoke']

perkara sejuk yang perlu dilakukan di terminal

Di kurungan persegi anda akan melihat setiap aktiviti bersama label. Secara amnya anda boleh merujuk secara langsung kepada aktiviti kerana anda telah menamakannya di alat kawalan jauh anda, tetapi pengecualian dari ini yang saya dapati, adalah apa-apa dengan ruang dalam nama aktiviti, seperti 'Tonton TV'. Dalam kes ini, anda perlu menggunakan ID aktiviti. Sekali lagi, anda dapat mencari ID dalam output debug JSON. Simpan dan muat semula antara muka anda, anda akan melihat sesuatu yang serupa dengan ini:

Anda juga boleh merujuk kepada aktiviti dalam peraturan anda, seperti yang akan kita lihat selanjutnya. Baca halaman wiki untuk maklumat lebih lanjut mengenai Ikatan harmoni .

Pengenalan Am kepada Peraturan

Sebilangan besar kediaman pintar merangkumi beberapa jenis pembuatan peraturan supaya anda dapat bertindak balas secara automatik terhadap data dan peristiwa sensor di rumah. Sebenarnya, saya berpendapat bahawa rumah yang benar-benar pintar bukanlah rumah yang anda perlukan untuk meluangkan masa berinteraksi dengan aplikasi mudah alih - rumah yang tidak dapat dilihat oleh pengguna akhir dan automatik sepenuhnya. Untuk tujuan ini, OpenHAB juga menyertakan bahasa skrip peraturan yang kuat yang dapat anda atur cara, jauh melebihi kerumitan kebanyakan hub rumah pintar atau resipi IFTTT.

Peraturan pengaturcaraan terdengar lebih teruk daripada yang ada. Mari kita mulakan dengan sepasang peraturan yang menghidupkan atau mematikan lampu bergantung pada sensor kehadiran:

peraturan 'Lampu pejabat menyala ketika James hadir'

bila

Item JamesInOffice diubah dari OFF ke ON

kemudian

sendCommand (Office_Hue, AKTIF)

akhir

peraturan 'Pejabat dimatikan ketika James pergi'

bila

Item JamesInOffice diubah dari ON ke OFF

kemudian

sendCommand (Office_Hue, MATI)

akhir

Pertama, kami namakan peraturan - deskriptif, jadi anda tahu peristiwa apa yang sedang berlangsung. Seterusnya, kami menentukan peraturan mudah kami dengan mengatakan apabila x benar, maka lakukan y . Akhir menandakan penutupan peraturan tersebut. Terdapat sebilangan kata khas yang boleh anda gunakan dalam peraturan, tetapi buat masa ini kami berurusan dengan dua sintaks kecil - Item , yang membolehkan anda bertanya keadaan sesuatu; dan hantarCommand , yang melakukan apa yang anda fikirkan. Saya memberitahu anda bahawa ini mudah.

Mungkin tidak perlu menggunakan sepasang peraturan, tetapi kerana logik saya menjadi lebih kompleks, akan bermanfaat jika mereka memisahkannya sama ada saya memasuki atau meninggalkan kawasan tersebut - dan mungkin idea yang baik untuk menambahkan sensor cahaya di suatu tempat ke dalam persamaan sehingga kita tidak perlu menyalakan lampu secara tidak perlu.

Mari kita lihat contoh lain untuk membuat peraturan berjadual.

peraturan 'Bersenam setiap pagi'

bila

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

kemudian

harmoniStartActivity ('Latihan')

akhir

Sekali lagi, kami menamakan peraturan tersebut, menyatakan keadaan bila perlu, dan tindakan yang harus diambil. Tetapi dalam kes ini, kita menentukan corak Masa. Kod lucu yang anda lihat dalam petikan adalah ungkapan CRON untuk Quartz Scheduler (formatnya sedikit berbeza dengan CRONtab biasa). sudah biasa cronmaker.com untuk membantu membuat ungkapan, tetapi anda juga boleh membaca panduan format [Tidak Lagi Tersedia] untuk penjelasan terperinci dan lebih banyak contoh.

CronMaker.com digunakan untuk menghasilkan ungkapan Cron yang diformat dengan betul

Peraturan saya hanya mengatakan '8 pagi setiap pagi, setiap hari dalam seminggu, beritahu sistem Harmony Ultimate saya untuk memulakan aktiviti Latihan', yang seterusnya mengaktifkan TV, Xbox, penguat, dan menekan butang A selepas satu minit untuk melancarkan cakera dalam pemacu.

Malangnya, OpenHAB belum dapat melakukan latihan untuk saya.

Satu lagi peraturan yang ingin saya tunjukkan adalah sesuatu yang saya gunakan untuk menguruskan tahap kelembapan di rumah saya. Saya mempunyai dehumidifier tunggal yang saya perlukan untuk bergerak ke mana sahaja diperlukan, jadi saya memutuskan untuk melihat semua sensor kelembapan saya, mencari mana yang paling tinggi, dan menyimpannya dalam pemboleh ubah. Saat ini dicetuskan setiap minit, tetapi itu dapat diturunkan dengan mudah. Lihat dahulu:

import jenis org.openhab.core.library.tipe. *

import org.openhab.model.script.actions. *

import java.lang.String

peraturan 'Monitor Kelembapan'

bila Time cron '0 * * * *?'

kemudian

var prevHigh = 0

var highHum = '

Kelembapan?. Anggota. Untuk Setiap [hum |

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

jika (hum.state sebagai DecimalType> prevHigh) {

prevHigh = hum.state

highHum = hum.name + ':' + hum.state + '%'

}

bagaimana memulihkan rentetan snap

]

logDebug ('humidity.rules', highHum);

postUpdate (Dehumidifier_Needed, highHum);

akhir

Inti peraturan adalah di Kelembapan?. Anggota.foreach garis. Kelembapan adalah nama kumpulan untuk sensor kelembapan saya; . anggota merebut semua item dalam kumpulan itu; untuk setiap mengulanginya (dengan format kurungan persegi yang ingin tahu yang mungkin anda tidak biasa). Sintaks peraturan adalah turunan dari Xtend, jadi anda dapat membaca Dokumentasi Xtend jika anda tidak dapat mencari contoh untuk menyesuaikan diri.

Anda mungkin tidak perlu melakukannya - terdapat ratusan contoh peraturan di luar sana:

MQTT untuk OpenHAB dan Internet of Things

MQTT adalah sistem pesanan ringan untuk komunikasi mesin-ke-mesin - sejenis Twitter untuk Arduinos atau Raspberry Pis anda untuk bercakap antara satu sama lain (walaupun tentu saja ia berfungsi dengan lebih daripada sekadar yang lain). Ini dengan cepat mendapat popularitas dan menjadikannya rumah dengan peranti Internet of Things, yang biasanya pengawal mikro sumber rendah yang memerlukan cara yang boleh dipercayai untuk menghantar data sensor kembali ke hab anda atau menerima arahan jauh. Itulah yang akan kita lakukan dengannya.

Tetapi mengapa mencipta semula roda?

MQ Telemetry Transport diciptakan pada tahun 1999 untuk menghubungkan saluran paip minyak melalui sambungan satelit yang perlahan, yang dirancang khusus untuk meminimumkan penggunaan bateri dan lebar jalur, sambil tetap memberikan penghantaran data yang boleh dipercayai. Selama bertahun-tahun prinsip reka bentuknya tetap sama, tetapi kes penggunaannya telah beralih dari sistem tertanam khusus ke peranti Internet of Things secara umum. Pada tahun 2010 protokol ini dikeluarkan bebas royalti, terbuka untuk digunakan dan dilaksanakan oleh siapa saja. Kami suka percuma.

Anda mungkin tertanya-tanya mengapa kita mengganggu dengan protokol lain - kita sudah mempunyai HTTP - yang boleh digunakan untuk menghantar mesej pantas antara semua jenis sistem yang disambungkan ke web (seperti OpenHAB dan IFTTT, terutama dengan saluran pembuat baru ). Dan anda akan betul. Walau bagaimanapun, overhead pemprosesan pelayan HTTP agak besar - sehingga anda tidak dapat menjalankannya dengan mudah pada mikrokontroler tertanam seperti Arduino (sekurang-kurangnya, anda boleh, tetapi anda tidak akan mempunyai banyak memori yang tersisa untuk perkara lain ). MQTT sebaliknya ringan, jadi penghantaran mesej di rangkaian anda tidak akan tersumbat, dan mudah masuk ke ruang memori Arduino kecil kami.

Bagaimana MQTT Berfungsi?

MQTT memerlukan pelayan (disebut 'broker') dan satu atau lebih pelanggan. Pelayan bertindak sebagai orang tengah, menerima mesej dan menyiarkan semula mereka kepada pelanggan yang berminat.

Mari kita teruskan dengan Twitter-untuk-mesin analogi walaupun. Sama seperti pengguna Twitter yang dapat tweet 140 watak mereka sendiri yang tidak bermakna, dan pengguna dapat 'mengikuti' pengguna lain untuk melihat aliran siaran yang disusun, klien MQTT dapat melanggan saluran tertentu untuk menerima semua mesej dari sana, dan juga menerbitkan mesej mereka sendiri ke saluran itu. Corak penerbitan dan langganan ini disebut sebagai pub / sub , bertentangan dengan tradisi pelanggan / pelayan model HTTP.

HTTP menghendaki anda menghubungi mesin yang anda hubungi, katakan Hello, kemudian terus-menerus saling mengenali antara satu sama lain semasa anda mendapatkan atau memasukkan data. Dengan pub / sub, pelanggan yang melakukan penerbitan tidak perlu mengetahui pelanggan mana yang dilanggan: ia hanya mengeluarkan mesej, dan broker menyebarkannya semula kepada pelanggan yang dilanggan. Mana-mana pelanggan boleh menerbitkan, dan melanggan topik, seperti pengguna Twitter.

Tidak seperti Twitter, MQTT tidak terhad kepada 140 aksara. Ini data agnostik, jadi anda boleh menghantar nombor kecil atau blok teks besar, datagram berformat JSON, atau bahkan gambar dan fail binari.

Bukannya MQTT lebih baik daripada HTTP untuk segalanya - tetapi ia adalah lebih sesuai jika kita mempunyai banyak sensor di sekitar rumah, sentiasa melaporkan diri.

Juga penting untuk mengetahui bahawa OpenHAB tidak akan bertindak sebagai broker MQTT anda - kami akan membincangkannya kemudian. Walau bagaimanapun, OpenHAB akan bertindak sebagai pelanggan: kedua-duanya dapat menerbitkan log aktiviti OpenHAB anda, dan juga mengikat saluran tertentu ke peranti, jadi anda misalnya boleh mempunyai suis yang dikendalikan oleh pesan MQTT pada saluran tertentu. Ini sangat sesuai untuk mewujudkan rumah yang penuh dengan sensor.

Pasang Mosquitto pada Pi Anda

Walaupun OpenHAB merangkumi klien MQTT sehingga anda dapat melanggan topik dan juga menerbitkan mesej, itu tidak akan berfungsi sebagai pelayan. Untuk itu, anda perlu menggunakan broker MQTT berasaskan web (berbayar atau percuma), atau memasang perisian percuma pada Pi anda. Saya ingin menyimpan semuanya di rumah, jadi saya telah memasang Mosquitto di Pi.

Malangnya, versi yang tersedia melalui apt-get biasa sudah usang. Sebagai gantinya, mari tambah sumber terkini.

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

sudo apt-key tambah 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

Itu sahaja yang perlu kita lakukan untuk menghidupkan dan menjalankan pelayan MQTT di rangkaian tempatan. Broker anda beroperasi di port 1883 secara lalai.

Periksa pelayan MQTT anda berfungsi menggunakan MQTT.fx percuma, yang merangkumi platform. Klik ikon tetapan untuk membuat profil baru, dan masukkan alamat atau nama IP Raspberry Pi anda. Simpan, dan tekan sambung. Sekiranya lampu isyarat kecil di kanan atas berubah menjadi hijau, anda boleh pergi.

Untuk ujian pantas, klik pada tab 'langganan', dan taip dalamTopik / ke dalam kotak teks, kemudian tekan Langgan butang. Anda sekarang berlangganan untuk menerima mesej mengenai topik yang dinamakan dalamTopic, walaupun akan menunjukkan 0 mesej. Kembali ke tab terbitkan, taipkanTopik ke dalam kotak kecil, dan pesanan ringkas ke kotak teks besar di bawah. Pukul Menerbitkan beberapa kali dan melihat semula tab langganan. Anda akan melihat beberapa mesej muncul dalam topik itu.

Sebelum kita menambahkan beberapa sensor sebenar ke rangkaian kita, kita perlu belajar mengenai tahap topik, yang memungkinkan kita untuk menyusun dan menyaring rangkaian MQTT. Nama-nama topik peka huruf besar kecil, tidak boleh bermula dengan $, atau merangkumi spasi, atau watak-watak bukan ASCII - amalan pengaturcaraan standard untuk nama pembolehubah.

/ Pemisah menunjukkan tahap topik, yang bersifat hierarki, sebagai contoh berikut adalah semua peringkat topik yang sah.

dalamTopik / kecilSubdivisi / genapSmallerSubdivision

myHome / livingRoom / suhu

myHome / livingRoom / kelembapan

myRumah / dapur / suhu

myHome / dapur / kelembapan

Sudah tentu, anda pasti melihat bagaimana struktur pokok ini sesuai untuk rumah pintar yang penuh dengan sensor dan peranti. Amalan terbaik untuk digunakan dengan pelbagai sensor di satu bilik adalah menerbitkan setiap pemboleh ubah sensor kerana tahap topiknya sendiri - bercabang dengan lebih spesifik (seperti dalam contoh di atas) - daripada cuba menerbitkan beberapa jenis sensor ke saluran yang sama .

Pelanggan kemudian boleh menerbitkan atau melanggan sejumlah tahap topik individu, atau menggunakan beberapa watak wildcard khas untuk menyaring dari yang lebih tinggi di pohon.

+ Wildcard menggantikan mana-mana satu peringkat topik. Contohnya:

myHome / + / suhu

akan melanggan pelanggan untuk kedua-duanya

myHome / livingRoom / suhu

myRumah / dapur / suhu

... tetapi bukan tahap kelembapan.

# Adalah wildcard pelbagai peringkat, jadi anda boleh mengambil apa-apa dari array sensor LivingRoom dengan:

myHome / livingRoom / #

Secara teknikalnya, anda juga boleh melanggan level root # yang membuat anda benar-benar melakukan semua perkara melalui broker, tetapi itu seperti melekatkan selang api di wajah anda: agak keterlaluan. Cuba berhubung dengan broker MQTT awam dari HiveMQ dan melanggan #. Saya mendapat kira-kira 300 mesej dalam beberapa saat sebelum pelanggan saya hancur.

Petua Pemula MQTT: ' /rumah saya/' adalah topik yang berbeza dengan ' rumah saya/' - termasuk garis miring di awal membuat tahap topik kosong, yang walaupun secara teknis valid, tidak digalakkan kerana dapat membingungkan.

Sekarang setelah kita mengetahui teorinya, mari kita pergi dengan Arduino, Ethernet Shield, dan sensor suhu dan kelembapan DHT11 - anda mungkin mempunyai satu di starter kit anda, tetapi jika tidak, tukar sensor persekitaran untuk gerakan. sensor (atau pun butang).

Penerbitan MQTT Dari Arduino Dengan Sambungan Ethernet

Sekiranya anda mempunyai peranti serasi Arduino hibrid dengan Wi-Fi atau Ethernet terbina dalam, itu juga mesti berfungsi. Akhirnya kita mahukan cara komunikasi yang lebih baik / lebih murah yang harus menggunakan sambungan rangkaian di setiap ruangan, tetapi ini berfungsi untuk mempelajari asas-asasnya.

Mulakan dengan memuat turun perpustakaan pubsubclient dari Github . Sekiranya anda telah menggunakan butang 'Muat turun sebagai ZIP', strukturnya agak salah. Nyahzip, ubah nama folder menjadi pelanggan pub , kemudian keluarkan dua fail tersebut dari src folder dan pindahkan mereka ke satu tingkat ke akar folder yang dimuat turun. Kemudian pindahkan keseluruhan folder ke folder anda Arduino / perpustakaan direktori.

Inilah contoh kod saya yang boleh anda sesuaikan : output isyarat DHT11 ada pada pin 7. Tukar IP pelayan untuk Pi anda pada baris berikut:

client.setServer ('192.168.1.99', 1883);

Sayangnya, kami tidak dapat menggunakan nama yang mesra (OpenHAB.local dalam kes saya) kerana TCP / IP stack di Arduino sangat sederhana dan menambahkan kod untuk penamaan Bonjour akan menjadi banyak memori yang tidak ingin kita sia-siakan. Untuk menukar topik di mana data sensor disiarkan, tatal ke baris berikut:

penampan char [10];

dtostrf (t, 0, 0, penyangga);

client.publish ('openhab / himitsu / suhu', penyangga);

dtostrf (h, 0, 0, penyangga);

client.publish ('openhab / himitsu / kelembapan', penyangga);

Kod ini juga merangkumi langganan saluran arahan. Cari dan sesuaikan baris berikut:

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

Periksa kod di sekitar sana dan anda akan melihat bahawa anda boleh mengawal LED atau relay dengan mudah misalnya dengan menghantar arahan ke saluran tertentu. Dalam kod contoh, ia hanya menghantar kembali pesan yang mengakui penerimaan perintah.

Muat naik kod anda, pasangkan Arduino anda ke dalam rangkaian, dan gunakan MQTT.fx melanggan salah satu daripadanya # atau openhab / himitsu / # (atau apa sahaja yang anda ubah menjadi nama ruangan, tetapi jangan lupa untuk memasukkan # di akhir). Sebentar lagi anda akan melihat mesej masuk; dan jika anda menghantar AKTIF atau MATI ke topik arahan, anda juga akan melihat ucapan terima kasih.

Mengikat MQTT untuk OpenHAB

Langkah terakhir dalam persamaan adalah menghubungkannya ke OpenHAB. Untuk itu, sudah tentu kita memerlukan ikatan.

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

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

Dan edit fail konfigurasi untuk mengaktifkan pengikatan.

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

mqtt: broker.clientId = openhab

Mulakan semula OpenHAB

perkhidmatan sudo mulakan semula openhab

Kemudian mari tambah satu atau dua item:

/ * Sensor MQTT * /

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

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

Sekarang anda harus memahami formatnya; ia semakin Item nombor dari pengikatan MQTT, pada topik yang ditentukan. Ini adalah contoh mudah, anda mungkin ingin merujuk ke halaman wiki di mana ia berada boleh menjadi lebih kompleks .

Tahniah, anda sekarang mempunyai asas array sensor berasaskan Arduino yang murah. Kami akan mengkaji semula ini di masa depan dan meletakkan Arduino ke rangkaian RF mereka sendiri yang terpisah. Saya juga telah membuat versi yang serupa untuk papan Wizwiki 7500 sekiranya anda mempunyai salah satu daripadanya.

Ketekunan dan Data Grafik

Sekarang anda mungkin mempunyai sekumpulan sensor, sama ada dari Z-Wave atau Arduino khusus yang menjalankan MQTT - sehingga anda dapat melihat keadaan sensor tersebut pada bila-bila masa, dan anda juga harus bertindak balas terhadap nilai mereka dalam peraturan. Tetapi perkara yang menarik mengenai nilai sensor pada amnya ia berubah dari masa ke masa: di situlah kegigihan dan grafik masuk. Kegigihan dalam OpenHAB bermaksud menyimpan data dari masa ke masa. Mari maju dan siapkan RRD4J (Round Robin Database untuk Java), dipanggil kerana data disimpan dengan cara round robin - data lama dibuang untuk memampatkan ukuran pangkalan data.

Pasang pakej rrd4j dengan arahan berikut.

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

Kemudian buat fail baru yang dipanggil rrd4j.persist di dalam konfigurasi / kegigihan folder. Tampalkan perkara berikut:

Strategi {

everyMinute: '0 * * * *?'

setiapHari: '0 0 * * *?'

EveryDay: '0 0 0 * *?'

lalai = EveryChange

}

Item {

// bertahan semua ketika nilainya dikemas kini, hanya lalai, dan kembalikan dari pangkalan data pada permulaan

*: strategi = EveryChange, restoreOnStartup

// seterusnya kita menentukan strategi spesifik setiap Jam untuk apa sahaja dalam kumpulan Suhu, dan dan setiap minit untuk Kelembapan

cara menyemak mesej instagram di pc

Suhu *: strategi = setiap Jam

Kelembapan *: strategi = setiapMinute

// sebagai alternatif anda boleh menambahkan item tertentu di sini, seperti

// Bedroom_Humidity, JamesInOffice: strategi = setiapMinute

}

Pada bahagian pertama fail ini, kami menentukan strategi, yang bermaksud memberi nama untuk ungkapan CRON. Ini sama seperti yang telah kami lakukan dengan My.OpenHAB, tetapi kali ini kami membuat beberapa strategi baru yang dapat kami gunakan setiap hari, setiap jam dan setiap minit. Saya belum menggunakan semuanya, tetapi saya mungkin akan datang.

Pada separuh kedua fail, kami memberitahu rr4dj nilai data yang akan disimpan. Sebagai lalai, kami akan menyimpan semua perkara setiap kali kemas kini, tetapi saya juga telah menentukan beberapa strategi berdasarkan masa untuk sensor tertentu. Suhu yang saya tidak terlalu peduli, jadi saya menetapkannya untuk menyimpan setiapHari sahaja, tetapi kelembapan menjadi perhatian saya, jadi saya ingin melihat bagaimana ia berubah setiap minit. Sekiranya ada data lain yang ingin anda simpan pada waktu yang ditentukan, tambahkan data di sini sekarang atau sesuaikan mengikut keperluan.

Catatan: jika anda juga ingin membuat grafik data, anda HARUS menyimpannya sekurang-kurangnya sekali seminit. Tidak masalah jika data sensor anda dikemas kini dengan cepat, anda hanya perlu memberitahu rr4dj untuk menyimpannya sekali seminit.

Dengan yang ditentukan, anda harus mula melihat beberapa output debug yang memberitahu anda bahawa nilai sedang disimpan.

Seterusnya, mari buat beberapa grafik cantik dari semua data ini. Ia sangat mudah. Untuk membuat grafik sensor individu, tambahkan yang berikut ke peta laman web anda:

Item carta = Bilik Tidur_ Tempoh kelembapan = h

Itulah yang anda perlukan. Nilai yang sah untuk tempoh adalah h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; semestinya jelas maksudnya. Ia secara lalai untuk D untuk data sehari penuh jika tidak dinyatakan.

Untuk membuat graf dengan pelbagai item, hanya graf nama kumpulan sebagai gantinya:

Item carta = Tempoh kelembapan = h

Anda mungkin juga berminat untuk mengetahui bahawa anda boleh menggunakan grafik ini di tempat lain; ia menghasilkan gambar menggunakan URL berikut: http: // YOUROPENHABURL: 8080 / chart? kumpulan = Kelembapan & tempoh = h

Bagaimana Anda Sistem OpenHAB Akan Datang?

Itu sahaja untuk ansuran panduan ini, tetapi jangan harap ini akan menjadi yang terakhir anda dengar daripada kami mengenai OpenHAB. Semoga ini dan panduan pemula memberi anda landasan yang kukuh untuk mengembangkan sistem OpenHAB lengkap anda sendiri - tetapi ia adalah proses yang tidak pernah selesai sepenuhnya.

Syukurlah, OpenHAB dapat meningkatkan skala dari beberapa peranti hingga ratusan, dari kerumitan peraturan sederhana hingga automasi rumah yang paling mutakhir - jadi bagaimana sistem anda muncul? Peranti mana yang anda pilih? Apakah projek besar seterusnya yang akan anda atasi?

Mari berbincang dalam komen - dan sila, jika anda merasakan panduan ini berguna, klik butang kongsi tersebut untuk memberitahu rakan anda bagaimana mereka juga dapat menyiapkan sistem OpenHAB mereka sendiri.

Kami harap anda menyukai item yang kami cadangkan dan bincangkan! MUO mempunyai perkongsian afiliasi dan tajaan, jadi kami menerima bahagian hasil dari beberapa pembelian anda. Ini tidak akan mempengaruhi harga yang anda bayar dan membantu kami menawarkan cadangan produk terbaik.

Berkongsi Berkongsi Tweet E-mel Panduan Pemula untuk Animasi Ucapan

Animasi pertuturan boleh menjadi cabaran. Sekiranya anda sudah bersedia untuk mula menambahkan dialog ke projek anda, kami akan menguraikan proses untuk anda.

Baca Seterusnya
Topik-topik yang berkaitan
  • DIY
  • Rumah Pintar
  • Arduino
  • Automasi Rumah
  • Bentuk panjang
  • Panduan Bentuk Panjang
Mengenai Pengarang James Bruce(707 Artikel Diterbitkan)

James mempunyai BSc dalam Artificial Intelligence dan disahkan CompTIA A + dan Network +. Apabila dia tidak sibuk sebagai Editor Ulasan Perkakasan, dia menikmati permainan LEGO, VR, dan permainan papan. Sebelum menyertai MakeUseOf, dia adalah juruteknik pencahayaan, guru bahasa Inggeris, dan jurutera pusat data.

Lebih Banyak Dari James Bruce

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan