
Hari ini, berkat perkembangan cepat mikroelektronika, saluran komunikasi, teknologi Internet dan Inteligensi Buatan, topik rumah pintar menjadi semakin relevan. Tempat tinggal manusia telah mengalami perubahan signifikan sejak Zaman Batu dan di era Revolusi Industri 4.0 dan Internet of Things menjadi nyaman, fungsional dan aman. Solusi datang ke pasar yang mengubah apartemen atau rumah pedesaan menjadi sistem informasi yang canggih, dikelola dari mana saja di dunia menggunakan smartphone. Selain itu, pengetahuan tentang bahasa pemrograman tidak lagi diperlukan untuk interaksi manusia-mesin - berkat pengenalan ucapan dan algoritma sintesis bicara, seseorang berbicara bahasa aslinya dengan rumah pintar.
Beberapa sistem rumah pintar yang saat ini ada di pasaran adalah pengembangan logis dari sistem pengawasan video berbasis cloud, pengembang yang menyadari perlunya solusi komprehensif tidak hanya untuk pemantauan, tetapi juga untuk mengelola objek jarak jauh.
Kami menawarkan kepada Anda serangkaian tiga artikel, yang akan memberi tahu Anda tentang semua komponen utama sistem rumah pintar cloud, yang dikembangkan secara pribadi oleh penulis dan dioperasikan. Artikel pertama dikhususkan untuk peralatan klien terminal yang dipasang di dalam rumah pintar, yang kedua untuk arsitektur penyimpanan awan dan sistem pemrosesan data, dan akhirnya, yang ketiga untuk aplikasi klien untuk mengelola sistem pada perangkat seluler dan alat-alat stasioner.
Peralatan Rumah Pintar
Pertama, mari kita bicara tentang cara membuat rumah pintar dari apartemen, pondok atau pondok biasa. Untuk ini, sebagai aturan, diperlukan untuk menempatkan peralatan berikut di rumah:
- sensor yang mengukur berbagai parameter lingkungan;
- aktuator yang bekerja pada objek eksternal;
- pengontrol yang melakukan perhitungan sesuai dengan pengukuran sensor dan logika tertanam, dan mengeluarkan perintah untuk aktuator.
Gambar berikut menunjukkan diagram rumah pintar, di mana ada sensor kebocoran air (1) di kamar mandi, suhu (2) dan pencahayaan (3) di kamar tidur, soket pintar (4) di dapur dan kamera video (5) di lorong.

Saat ini, sensor nirkabel yang beroperasi di bawah protokol RF433, Z-Wave, ZigBee, Bluetooth dan WiFi banyak digunakan. Keuntungan utama mereka adalah kemudahan instalasi dan penggunaan, serta biaya dan keandalan yang rendah, karena Produsen berusaha membawa perangkat mereka ke pasar massal dan membuatnya tersedia bagi pengguna rata-rata.
Sensor dan aktuator, sebagai suatu peraturan, terhubung melalui antarmuka nirkabel ke pengontrol rumah pintar (6) - komputer mikro khusus yang mengintegrasikan semua perangkat ini ke dalam satu jaringan dan mengendalikannya.
Namun, beberapa solusi dapat menggabungkan sensor, aktuator, dan pengontrol secara bersamaan. Misalnya, soket cerdas dapat diprogram untuk menghidupkan atau mematikan jadwal, dan kamera pengintai video berbasis cloud dapat merekam video berdasarkan sinyal dari detektor gerakan. Dalam kasus paling sederhana, Anda dapat melakukannya tanpa pengontrol terpisah, tetapi untuk membuat sistem yang fleksibel dengan banyak skenario, itu perlu.
Untuk menghubungkan pengontrol rumah pintar ke jaringan global, router Internet konvensional (7) dapat digunakan, yang telah lama menjadi alat rumah tangga yang akrab di rumah mana pun. Ada satu argumen lagi yang mendukung pengontrol rumah pintar - jika koneksi ke Internet terputus, rumah pintar akan terus beroperasi secara normal karena blok logika yang disimpan di dalam pengontrol, dan bukan di layanan cloud.
Pengontrol rumah pintar
Pengontrol untuk sistem rumah pintar cloud yang dibahas dalam artikel ini dikembangkan atas dasar mikrokomputer
B -board
model 3 + B Raspberry Pi , yang dirilis pada Maret 2018 dan memiliki sumber daya dan kinerja yang cukup untuk tugas-tugas rumah pintar. Ini terdiri dari prosesor Cortex-A53 quad-core dengan arsitektur ARMv8-A 64-bit dengan frekuensi clock 1,4 GHz, serta 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 dan adaptor gigabit Ethernet yang bekerja melalui bus USB 2.0.

Merakit pengontrol sangat sederhana - komputer mikro (1) dipasang di wadah plastik (2), kemudian kartu microSD 8 GB dengan perangkat lunak (3) dan pengontrol jaringan USB Z-Wave (4) dimasukkan ke dalam slot yang sesuai di dalamnya. Pengontrol rumah pintar terhubung ke listrik melalui adaptor daya 5V, 2.1A (5) dan kabel USB-mikro-USB (6). Setiap pengontrol memiliki nomor identifikasi unik, yang dicatat dalam file konfigurasi pada awal pertama dan diperlukan untuk interaksi dengan layanan cloud smart home.
Perangkat lunak pengontrol rumah pintar dikembangkan oleh penulis artikel ini berdasarkan sistem operasi
Linux Raspbian Stretch . Ini terdiri dari subsistem utama berikut:
- proses server untuk berinteraksi dengan peralatan rumah pintar dan cloud;
- antarmuka pengguna grafis untuk mengkonfigurasi parameter pengontrol dan operasi;
- Basis data untuk menyimpan konfigurasi pengontrol.
Basis data pengontrol rumah pintar didasarkan pada DBMS
SQLite tertanam dan merupakan file pada kartu SD dengan perangkat lunak sistem. Ini berfungsi sebagai repositori dari konfigurasi pengontrol - informasi tentang peralatan yang terhubung dan keadaan saat ini, blok aturan produksi logis, serta informasi yang memerlukan pengindeksan (misalnya, nama file arsip video lokal). Ketika controller dinyalakan kembali, informasi ini disimpan, yang memungkinkan untuk mengembalikan controller jika terjadi kegagalan daya.
Antarmuka grafis dari pengontrol rumah pintar dikembangkan dalam PHP 7 menggunakan
Slim microframework. Server web
lighttpd , yang sering digunakan dalam perangkat tertanam karena kinerjanya yang baik dan persyaratan sumber daya yang rendah, bertanggung jawab untuk pengoperasian aplikasi.
(klik pada gambar untuk membuka dalam resolusi yang lebih tinggi)Fungsi utama dari antarmuka grafis adalah untuk menghubungkan peralatan rumah pintar (IP-kamera dan sensor) ke controller. Aplikasi web membaca konfigurasi dan status pengontrol dan perangkat saat ini yang terhubung dari database SQLite. Untuk mengubah konfigurasi controller, ia mengirimkan perintah kontrol dalam format JSON melalui RESTful API dari proses server.
Proses server
Proses server adalah komponen kunci yang melakukan semua pekerjaan dasar mengotomatisasi proses informasi yang membentuk fondasi rumah pintar: menerima dan memproses data sensorik, mengeluarkan tindakan kontrol tergantung pada logika yang mendasarinya. Tujuan dari proses server adalah untuk berinteraksi dengan peralatan rumah pintar, mengikuti aturan logika produksi, menerima dan memproses perintah dari antarmuka grafis dan cloud. Proses server dalam pengontrol rumah pintar ini diimplementasikan sebagai aplikasi multi-ulir yang dikembangkan dalam C ++ dan diluncurkan sebagai layanan
systemd terpisah dari
sistem operasi
Linux Raspbian .
Blok utama dari proses server adalah:
- Pengelola Pesan
- Server kamera IP;
- Server perangkat Z-Wave;
- Aturan logika produksi server;
- Database konfigurasi pengontrol dan blok aturan logis;
- Server API yang tenang untuk berinteraksi dengan antarmuka grafis;
- Klien MQTT untuk berinteraksi dengan cloud.
Blok proses server diimplementasikan sebagai aliran terpisah, informasi di antaranya dikirimkan dalam bentuk pesan dalam format JSON (atau struktur data yang mewakili format ini dalam memori proses).

Komponen utama dari proses server adalah
manajer pesan , yang merutekan pesan dalam format JSON untuk semua blok proses server. Jenis bidang informasi pesan JSON dan nilai yang dapat mereka terima tercantum dalam tabel:
Misalnya, pesan dari pendeteksi gerakan kamera terlihat seperti ini:
{ "vendor": "*****", "version": "3.0.0", "timestampMs": "1566293475475", "clientType": "gateway", "deviceId": "1616453d-30cd-44b7-9bf0-************", "deviceType": "camera", "protocol": "onvif", "messageType": "sensorData", "sensorType": "camera", "label": "motionDetector", "sensorData": "on" }
Logika produksi
Untuk menerima atau mengirim pesan dari dispatcher, blok proses server berlangganan pesan dari jenis tertentu. Berlangganan adalah aturan logis produksi dari jenis
"Jika ... lalu ..." , disajikan dalam format JSON, dan tautan ke penangan pesan di dalam blok proses server. Misalnya, agar server kamera IP dapat menerima perintah dari GUI dan cloud, Anda perlu menambahkan aturan berikut:
{ "if": { "and": [{ "equal": { "deviceId": "1616453d-30cd-44b7-9bf0-************" } }, { "equal": { "messageType": "command" } } ] }, "then": { "result": "true" } }
Jika kondisi yang ditentukan dalam
anteseden (sisi kiri) dari aturan adalah benar, maka
aturan (sisi kanan) dari aturan dijalankan, dan pawang mendapatkan akses ke isi pesan JSON. Anteseden mendukung operator logis yang melakukan perbandingan pasangan nilai kunci JSON:
- sama dengan "sama";
- tidak sama dengan "not_equal";
- kurang "kurang";
- lebih "lebih besar";
- kurang dari atau sama dengan "less_or_equal";
- lebih besar dari atau sama dengan better_or_equal.
Hasil perbandingan dapat dihubungkan bersama menggunakan operator aljabar Boolean:
- Dan "dan";
- ATAU "atau";
- TIDAK "tidak".
Jadi, menulis operator dan operan dalam notasi Polandia, adalah mungkin untuk membentuk kondisi yang cukup kompleks dengan sejumlah besar parameter.
Mekanisme yang sama persis, berdasarkan pesan JSON dan aturan produksi dalam format JSON, digunakan dalam blok server logika produksi untuk mewakili pengetahuan dan membuat inferensi logis menggunakan data sensorik dari sensor rumah pintar.
Menggunakan aplikasi seluler, pengguna membuat skrip yang menurutnya rumah pintar harus berfungsi. Misalnya:
"Jika sensor untuk membuka pintu depan telah berfungsi, maka nyalakan lampu di lorong .
" Aplikasi membaca pengidentifikasi sensor (sensor pembuka) dan aktuator (soket pintar atau lampu pintar) dari database dan menghasilkan aturan logis dalam format JSON, yang dikirim ke pengontrol rumah pintar. Mekanisme ini akan dibahas secara lebih rinci dalam artikel ketiga dari seri kami, di mana kami akan berbicara tentang aplikasi klien untuk mengelola rumah pintar.
Mekanisme logika produksi yang dibahas di atas diimplementasikan menggunakan perpustakaan
RapidJSON , parser SAX dari format JSON dalam C ++. Membaca dan parsing array aturan produksi yang konsisten membuatnya mudah untuk mengimplementasikan fungsi pencocokan data dalam anteseden:
void CRuleEngine::Process(PProperties pFact) { m_pActions->clear(); rapidjson::Reader reader; for(TStringMap::value_type& rRule : m_Rules) { std::string sRuleId = rRule.first; std::string sRuleBody = rRule.second; CRuleHandler ruleHandler(pFact); rapidjson::StringStream ruleStream(sRuleBody.c_str()); rapidjson::ParseResult parseResult = reader.Parse(ruleStream, ruleHandler); if(!parseResult) { m_Logger.LogMessage( NLogger2::ePriorityLevelError, std::string("JSON parse error"), "CRuleEngine::Process()", std::string("RuleId: ") + sRuleId); } PProperties pAction = ruleHandler.GetAction(); if(pAction) { pAction->Set("ruleId", sRuleId); m_pActions->push_back(pAction); } } }
Di sini
pFact adalah struktur yang berisi pasangan nilai kunci dari pesan JSON,
m_Rules adalah array string aturan produksi. Perbandingan pesan masuk dan aturan produksi dilakukan di fungsi
reader.Parse (ruleStream, ruleHandler) , di mana
ruleHandler adalah objek yang berisi logika operator Boolean dan operator perbandingan.
sRuleId adalah pengidentifikasi aturan yang unik, karena itu dimungkinkan untuk menyimpan dan mengedit aturan di dalam database pengontrol rumah pintar.
m_pActions - array dengan hasil inferensi logis: pesan JSON yang berisi konsistensi dari basis aturan dan diteruskan ke manajer pesan sehingga aliran pelanggan dapat memprosesnya.
Kinerja RapidJSON sebanding dengan fungsi
strlen () , dan persyaratan sumber daya sistem minimum memungkinkan perpustakaan ini untuk digunakan dalam perangkat yang disematkan. Menggunakan pesan dan aturan logis dalam format JSON memungkinkan Anda menerapkan sistem pertukaran informasi yang fleksibel antara semua komponen pengendali rumah pintar.
Sensor dan Aktuator Z-Wave
Keuntungan utama dari rumah pintar adalah dapat secara mandiri mengukur berbagai parameter lingkungan dan melakukan fungsi yang berguna tergantung pada situasinya. Untuk melakukan ini, sensor dan aktuator terhubung ke pengontrol rumah pintar. Dalam versi saat ini, ini adalah perangkat nirkabel yang beroperasi sesuai dengan protokol
Z-Wave pada frekuensi yang dialokasikan khusus
869 MHz untuk Rusia. Untuk pekerjaan mereka, mereka digabungkan ke dalam jaringan mesh, di mana pengulang sinyal hadir untuk meningkatkan area jangkauan. Perangkat juga memiliki mode hemat energi khusus - mereka menghabiskan sebagian besar waktu dalam mode tidur dan mengirim informasi hanya ketika keadaannya berubah, yang secara signifikan dapat memperpanjang usia baterai built-in.

Di pasaran sekarang Anda dapat menemukan sejumlah besar perangkat Z-Wave yang berbeda. Sebagai contoh, pertimbangkan beberapa:
- Soket pintar Zipato PAN16 dapat mengukur parameter berikut: konsumsi daya (kW / jam), daya (W), tegangan (V) dan arus (A) di listrik. Ini juga memiliki sakelar bawaan yang dapat digunakan untuk mengontrol alat listrik yang terhubung;
- Sensor kebocoran Neo Coolcam mendeteksi keberadaan cairan yang tumpah dengan menutup kontak probe jarak jauh;
- Detektor asap Zipato PH-PSG01 dipicu ketika partikel-partikel asap memasuki ruang analisis gas;
- Sensor gerak Neo Coolcam menganalisis radiasi inframerah dari tubuh manusia. Selain itu ada sensor cahaya (Lx);
- Philio PST02-A multisensor mengukur suhu (° C), pencahayaan (%), bukaan pintu, keberadaan seseorang di ruangan;
- Z-Wave USB Stick ZME E UZB1 pengontrol jaringan, yang terhubung dengan sensor.
Sangat penting bahwa perangkat dan pengontrol bekerja pada frekuensi yang sama, jika tidak mereka tidak akan melihat satu sama lain pada saat koneksi. Hingga 232 perangkat dapat dihubungkan ke satu pengontrol jaringan Z-Wave, yang cukup untuk sebuah apartemen atau rumah pedesaan. Untuk memperluas area jangkauan di dalam ruangan jaringan, smart socket dapat digunakan sebagai pengulang sinyal.

Dalam proses server pengendali rumah pintar, yang dibahas dalam paragraf sebelumnya, server Z-Wave bertanggung jawab untuk berinteraksi dengan perangkat Z-Wave. Untuk mendapatkan informasi dari sensor, ia menggunakan perpustakaan
OpenZWave di C ++, yang menyediakan antarmuka untuk interaksi dengan pengontrol USB dari jaringan Z-Wave dan bekerja dengan banyak sensor dan aktuator. Nilai parameter lingkungan yang diukur oleh sensor direkam oleh server Z-Wave dalam bentuk pesan JSON:
{ "vendor": "*****", "version": "3.0.0", "timestampMs": "1566479791290", "clientType": "gateway", "deviceId": "20873eb0-dd5e-4213-a175-************", "deviceType": "sensor", "protocol": "zwave", "messageType": "sensorData", "homeId": "0xefa0cfa7", "nodeId": "20", "sensorType": "METER", "label": "Voltage", "sensorData": "229.3", "units": "V" }
Ini kemudian diteruskan ke manajer proses pesan server sehingga utas pelanggan dapat menerimanya. Pelanggan utama adalah server logika produksi, yang membandingkan nilai bidang pesan dalam anteseden aturan logis. Hasil dari output logis yang berisi perintah kontrol dikirim kembali ke manajer pesan dan dari sana mereka pergi ke server Z-Wave, yang menerjemahkan mereka dan mengirimkannya ke pengontrol USB dari jaringan Z-Wave. Kemudian mereka jatuh ke dalam perangkat eksekutif, yang mengubah keadaan lingkungan, dan rumah pintar, dengan demikian, melakukan pekerjaan yang bermanfaat.
(klik pada gambar untuk membuka dalam resolusi yang lebih tinggi)Perangkat Z-Wave terhubung dalam antarmuka grafis pengontrol rumah pintar. Untuk melakukan ini, buka halaman dengan daftar perangkat dan klik tombol "Tambah". Perintah add melalui RESTful API masuk ke proses server dan, kemudian, dikirim oleh manajer pesan ke server Z-Wave, yang menempatkan Z-Wave USB controller dalam mode penambahan perangkat khusus. Selanjutnya, pada perangkat Z-Wave, Anda perlu melakukan serangkaian penekanan cepat (3 penekanan dalam 1,5 detik) dari tombol layanan. Pengontrol USB menghubungkan perangkat ke jaringan dan mengirimkan informasi tentangnya ke server Z-Wave. Itu, pada gilirannya, menciptakan catatan baru dalam database SQLite dengan parameter perangkat baru. Setelah interval waktu yang telah ditentukan, antarmuka grafis kembali ke halaman daftar perangkat Z-Wave, membaca informasi dari database dan menampilkan perangkat baru dalam daftar. Pada saat yang sama, setiap perangkat menerima pengenal uniknya sendiri, yang digunakan dalam aturan inferensi produksi dan ketika bekerja di cloud. Pengoperasian algoritma ini ditunjukkan dalam diagram UML:
(klik pada gambar untuk membuka dalam resolusi yang lebih tinggi)Koneksi kamera IP
Sistem cloud smart home yang dibahas dalam artikel ini adalah modernisasi dari sistem pengawasan video cloud, juga dikembangkan oleh penulis, yang telah ada di pasaran selama beberapa tahun dan memiliki banyak instalasi di Rusia.
Untuk sistem pengawasan video cloud, salah satu masalah akut adalah terbatasnya pilihan peralatan yang dapat digunakan integrasi. Perangkat lunak yang bertanggung jawab untuk menghubungkan ke cloud dipasang di dalam camcorder, yang segera membuat tuntutan serius pada perangkat kerasnya - prosesor dan jumlah memori bebas. Ini terutama menjelaskan harga yang lebih tinggi dari kamera pengintai video berbasis cloud dibandingkan dengan kamera IP konvensional. Selain itu, tahap negosiasi yang panjang dengan produsen kamera CCTV diperlukan untuk mendapatkan akses ke sistem file kamera dan semua alat pengembangan yang diperlukan.

Di sisi lain, semua kamera IP modern memiliki protokol standar untuk berinteraksi dengan peralatan lain (khususnya, DVR). Dengan demikian, penggunaan pengontrol terpisah yang menghubungkan menggunakan protokol standar dan mengalirkan video stream dari kamera IP ke cloud memberikan keunggulan kompetitif yang signifikan untuk sistem pengawasan video cloud. Selain itu, jika klien telah menginstal sistem pengawasan video berdasarkan kamera IP sederhana, maka dimungkinkan untuk mengembangkannya dan mengubahnya menjadi rumah pintar berawan penuh.
Protokol yang paling populer untuk sistem pengawasan video-IP, yang sekarang didukung oleh semua produsen kamera-IP tanpa kecuali, adalah
ONVIF Profile S , spesifikasi yang ada dalam bahasa deskripsi layanan web
WSDL . Dengan menggunakan utilitas dari toolkit
gSOAP , dimungkinkan untuk menghasilkan kode sumber layanan yang bekerja dengan kamera IP:
$ wsdl2h -o onvif.h \ https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl \ https://www.onvif.org/ver10/events/wsdl/event.wsdl \ https://www.onvif.org/ver10/media/wsdl/media.wsdl \ https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl $ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h
Sebagai hasilnya, kita mendapatkan satu set header "* .h" dan sumber "* .cpp" file dalam C ++, yang dapat ditempatkan langsung di aplikasi atau pustaka yang terpisah dan dikompilasi menggunakan kompiler GCC. Karena banyak fungsi, kodenya besar dan membutuhkan optimasi tambahan. Komputer mikro Raspberry Pi 3 model B + memiliki kinerja yang cukup untuk mengeksekusi kode ini, tetapi jika ada kebutuhan untuk port kode ke platform lain, perlu untuk memilih arsitektur prosesor dan sumber daya sistem dengan benar.
Kamera IP yang mendukung standar ONVIF, ketika beroperasi pada jaringan lokal, terhubung ke grup multicast khusus dengan alamat
239.255.255.250 . Ada protokol
WS-Discovery , yang memungkinkan Anda mengotomatiskan pencarian perangkat di jaringan lokal.
Antarmuka pintar pengontrol rumah pintar menerapkan fungsi pencarian untuk kamera IP dalam bahasa PHP, yang sangat nyaman saat berinteraksi dengan layanan web melalui pesan XML. Ketika Anda memilih item menu
Perangkat> Kamera IP> Pindai , algoritma pencarian untuk kamera IP dimulai, menampilkan hasilnya dalam tabel:
(klik pada gambar untuk membuka dalam resolusi yang lebih tinggi)Saat menambahkan kamera ke pengontrol, Anda dapat menentukan pengaturan yang akan berinteraksi dengan cloud. Juga pada tahap ini, secara otomatis ditetapkan pengenal perangkat yang unik, yang dengannya dapat dengan mudah diidentifikasi di masa depan di dalam cloud.

Selanjutnya, pesan dihasilkan dalam format JSON yang berisi semua parameter kamera yang ditambahkan, dan dikirim ke proses server pengendali rumah pintar melalui perintah RESTful API, di mana parameter kamera diterjemahkan dan disimpan dalam database SQLite internal, dan juga digunakan untuk memulai utas pemrosesan berikut:
- membangun koneksi RTSP untuk menerima streaming video dan audio;
- transcoding audio dari format G.711 mu-Law, G.711 A-Law, G.723, dll. ke format AAC;
- transcoding video H.264 dan stream audio AAC ke wadah FLV dan mentransmisikannya ke cloud menggunakan RTMP;
- membangun koneksi dengan titik akhir detektor gerak kamera IP melalui protokol ONVIF dan pemungutan suara berkala;
- secara berkala menghasilkan gambar pratinjau gambar kecil dan mengirimkannya ke cloud menggunakan protokol MQTT;
- rekaman lokal aliran video dan audio dalam bentuk file terpisah dalam format MP4 pada kartu SD atau Flash pengendali rumah pintar.

Untuk membuat koneksi dengan kamera, transcoding, pemrosesan dan perekaman stream video dalam proses server, fungsi dari perpustakaan
FFmpeg 4.1.0 digunakan.
Dalam percobaan pengujian kinerja, 3 kamera terhubung ke controller:
- HiWatch DS-I114W (resolusi - 720p, format kompresi - H.264, bitrate - 1 Mb / s, sound G.711 mu-Law);
- Microdigital MDC-M6290FTD-1 (resolusi - 1080p, format kompresi - H.264, bitrate - 1 Mb / s, tanpa suara);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (resolusi - 1080p, format kompresi - H.264, bitrate - 1,5 Mb / s, suara AAC).

Ketiga aliran secara bersamaan dikeluarkan ke cloud, transcoding suara dilakukan hanya dari satu kamera, rekaman arsip lokal dinonaktifkan. Pemanfaatan CPU adalah sekitar 5%, penggunaan RAM adalah 32 MB (per proses), 56 MB (total dengan OS).
Dengan demikian, sekitar 20 hingga 30 kamera (tergantung pada resolusi dan bit rate) dapat dihubungkan ke pengontrol rumah pintar, yang cukup untuk sistem pengawasan video pondok tiga lantai atau gudang kecil. Dalam tugas-tugas di mana kinerja tinggi diperlukan, Anda dapat menggunakan nettop dengan prosesor multi-core Intel dan Linux Debian Sarge OS. Saat ini, controller sedang menjalani operasi percobaan, dan data kinerjanya akan diperbarui.
Interaksi Cloud
Cloud smart home menyimpan data pengguna (pengukuran video dan sensor) di cloud. Arsitektur penyimpanan awan akan dibahas secara lebih rinci di artikel berikutnya dalam seri kami. Sekarang mari kita bicara tentang antarmuka untuk mengirimkan pesan informasi dari pengontrol rumah pintar ke cloud.
Keadaan perangkat yang terhubung dan pengukuran sensor ditransmisikan menggunakan protokol
MQTT , yang sering digunakan dalam proyek IoT karena kesederhanaan dan efisiensi energinya. MQTT menggunakan model server-klien ketika klien berlangganan topik tertentu dalam broker dan mempublikasikan pesan mereka. Pialang mengirim pesan ke semua pelanggan sesuai dengan aturan yang ditentukan oleh tingkat QoS (Kualitas Layanan):
- QoS 0 - paling banyak sekali (tidak ada jaminan pengiriman);
- QoS 1 - setidaknya sekali (dengan konfirmasi pengiriman);
- QoS 2 - tepat sekali (dengan konfirmasi pengiriman tambahan).
Dalam kasus kami,
Eclipse Mosquitto digunakan sebagai broker MQTT. Nama topik adalah pengidentifikasi unik pengontrol rumah pintar. Klien MQTT di dalam proses server berlangganan ke topik ini dan menerjemahkan pesan JSON yang datang dari manajer pesan ke dalamnya. Dan, sebaliknya, pesan dari broker MQTT dikirim kepada mereka di manajer pesan, yang kemudian multipleks ke pelanggan dalam proses server:

Untuk mengirim pesan tentang keadaan pengendali rumah pintar, mekanisme pesan tersimpan
menyimpan pesan dari protokol MQTT digunakan. Ini memungkinkan Anda untuk memonitor momen-momen koneksi kembali dengan benar saat listrik mati.
Klien MQTT dikembangkan berdasarkan implementasi perpustakaan
Eclipse Paho di C ++.
H.264 + Streaming media AAC dikirim ke cloud menggunakan protokol RTMP, di mana sekelompok server media bertanggung jawab atas pemrosesan dan penyimpanannya. Untuk mendistribusikan beban secara optimal dalam kluster dan memilih server media yang paling sedikit dimuat, pengontrol rumah pintar membuat permintaan awal ke penyeimbang beban cloud dan baru kemudian mengirim aliran media.
Kesimpulan
Artikel ini meneliti satu implementasi spesifik dari pengontrol rumah pintar yang didasarkan pada komputer mikro Raspberry Pi 3 B +, yang dapat menerima, memproses informasi dan mengelola peralatan menggunakan protokol Z-Wave, berinteraksi dengan kamera IP menggunakan protokol ONVIF, dan juga bertukar data dan perintah dengan cloud Layanan protokol MQTT dan RTMP. Mesin logika produksi telah dikembangkan berdasarkan perbandingan aturan logis dan fakta yang disajikan dalam format JSON.
Sekarang pengendali rumah pintar sedang menjalani operasi uji coba di beberapa fasilitas di Moskow dan wilayah Moskow.
Versi pengendali berikutnya berencana untuk menghubungkan jenis perangkat lain (RF, Bluetooth, WiFi, berkabel). Untuk kenyamanan pengguna, prosedur untuk menghubungkan sensor dan kamera IP akan ditransfer ke aplikasi mobile. Ada juga ide-ide untuk mengoptimalkan kode proses server dan porting perangkat lunak ke sistem operasi
OpenWrt . Ini akan menghemat pengontrol terpisah dan mentransfer fungsionalitas rumah pintar ke router rumah tangga biasa.