Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Saat ini, berkat pesatnya perkembangan mikroelektronika, saluran komunikasi, teknologi Internet, dan Kecerdasan Buatan, topik rumah pintar menjadi semakin relevan. Perumahan 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 kompleks yang dikendalikan dari mana saja di dunia menggunakan smartphone. Selain itu, interaksi manusia-mesin tidak lagi memerlukan pengetahuan tentang bahasa pemrograman - berkat pengenalan suara dan algoritma sintesis, seseorang berbicara ke rumah pintar dalam bahasa aslinya.

Beberapa sistem rumah pintar yang saat ini ada di pasaran merupakan pengembangan logis dari sistem pengawasan video cloud, yang pengembangnya menyadari perlunya solusi komprehensif tidak hanya untuk pemantauan, tetapi juga untuk mengelola objek jarak jauh.

Kami mempersembahkan 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, artikel kedua tentang arsitektur penyimpanan cloud dan sistem pemrosesan data, dan terakhir, artikel ketiga tentang aplikasi klien untuk mengelola sistem pada perangkat seluler dan stasioner.

Peralatan rumah pintar

Pertama, mari kita bicara tentang cara membuat rumah pintar dari apartemen, dacha, atau pondok biasa. Untuk melakukan ini, sebagai suatu peraturan, perlu menempatkan peralatan berikut di rumah:

  1. sensor yang mengukur berbagai parameter lingkungan;
  2. aktuator yang bekerja pada objek eksternal;
  3. pengontrol yang melakukan penghitungan sesuai dengan pengukuran sensor dan logika tertanam, dan mengeluarkan perintah ke aktuator.

Gambar berikut menunjukkan diagram rumah pintar yang didalamnya terdapat sensor kebocoran air (1) di kamar mandi, suhu (2) dan penerangan (3) di kamar tidur, stopkontak pintar (4) di dapur dan a kamera pengintai video (5) di lorong.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Saat ini, sensor nirkabel yang beroperasi menggunakan protokol RF433, Z-Wave, ZigBee, Bluetooth, dan WiFi banyak digunakan. Keuntungan utama mereka adalah kemudahan instalasi dan penggunaan, serta biaya rendah dan keandalan, karena Produsen berusaha untuk membawa perangkat mereka ke pasar massal dan membuatnya dapat diakses oleh rata-rata pengguna.

Sensor dan aktuator, biasanya, dihubungkan melalui antarmuka nirkabel ke pengontrol rumah pintar (6) - komputer mikro khusus yang menggabungkan semua perangkat ini ke dalam satu jaringan dan mengontrolnya.

Namun, beberapa solusi dapat menggabungkan sensor, aktuator, dan pengontrol secara bersamaan. Misalnya, smart plug dapat diprogram untuk hidup atau mati sesuai jadwal, dan kamera pengawasan video cloud dapat merekam video berdasarkan sinyal detektor gerakan. Dalam kasus yang paling sederhana, Anda dapat melakukannya tanpa pengontrol terpisah, tetapi untuk membuat sistem yang fleksibel dengan banyak skenario, hal ini diperlukan.

Untuk menghubungkan pengontrol rumah pintar ke jaringan global, Anda dapat menggunakan router Internet biasa (7), yang telah lama menjadi peralatan rumah tangga umum di rumah mana pun. Ada argumen lain yang mendukung pengontrol rumah pintar di sini - jika koneksi Internet terputus, rumah pintar akan terus beroperasi seperti biasa berkat 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 berdasarkan komputer mikro papan tunggal Raspberry Pi 3 model B+, yang dirilis pada Maret 2018 dan memiliki sumber daya serta kinerja yang memadai untuk tugas-tugas rumah pintar. Ini mencakup prosesor quad-core Cortex-A53 berdasarkan arsitektur ARMv64-A 8-bit, clock 1.4 GHz, serta RAM 1 GB, Wi-Fi 802.11ac, Bluetooth 4.2 dan adaptor gigabit Ethernet yang beroperasi melalui USB 2.0 .

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Merakit pengontrol sangat sederhana - komputer mikro (1) dipasang dalam wadah plastik (2), kemudian kartu memori 8 GB dalam format microSD dengan perangkat lunak (3) dan pengontrol jaringan USB Z-Wave (4) dipasang di slot yang sesuai. Pengontrol rumah pintar terhubung ke catu daya melalui adaptor daya 5V, 2.1A (5) dan kabel USB - micro-USB (6). Setiap pengontrol memiliki nomor identifikasi unik, yang tertulis dalam file konfigurasi saat pertama kali diluncurkan dan diperlukan untuk berinteraksi dengan layanan rumah pintar cloud.

Perangkat lunak pengontrol rumah pintar dikembangkan oleh penulis artikel ini berdasarkan sistem operasi Peregangan Raspbian Linux. Ini terdiri dari subsistem utama berikut:

  • proses server untuk interaksi dengan peralatan rumah pintar dan cloud;
  • antarmuka pengguna grafis untuk mengatur konfigurasi dan parameter pengoperasian pengontrol;
  • database untuk menyimpan konfigurasi pengontrol.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Basis data pengontrol rumah pintar diimplementasikan berdasarkan DBMS tertanam SQLite dan merupakan file pada kartu SD dengan perangkat lunak sistem. Ini berfungsi sebagai penyimpanan untuk konfigurasi pengontrol - informasi tentang peralatan yang terhubung dan statusnya saat ini, blok aturan produksi logis, serta informasi yang memerlukan pengindeksan (misalnya, nama file arsip video lokal). Saat pengontrol di-boot ulang, informasi ini disimpan, sehingga memungkinkan untuk memulihkan pengontrol jika terjadi kegagalan daya.

GUI pengontrol rumah pintar yang dikembangkan di PHP 7 menggunakan microframework Ramping. Server web bertanggung jawab untuk menjalankan aplikasi. lighttpd, sering digunakan pada perangkat tertanam karena kinerjanya yang baik dan kebutuhan sumber daya yang rendah.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor
(klik pada gambar untuk membukanya dalam resolusi lebih tinggi)

Fungsi utama antarmuka grafis adalah untuk menghubungkan peralatan rumah pintar (kamera dan sensor pengawasan IP) ke pengontrol. Aplikasi web membaca konfigurasi dan status pengontrol serta perangkat yang terhubung dengannya dari database SQLite. Untuk mengubah konfigurasi pengontrol, ia mengirimkan perintah kontrol dalam format JSON melalui antarmuka RESTful API dari proses server.

Proses pelayan

Proses pelayan - komponen kunci yang melakukan semua pekerjaan utama dalam mengotomatisasi proses informasi yang menjadi dasar rumah pintar: menerima dan memproses data sensorik, mengeluarkan tindakan kontrol tergantung pada logika yang tertanam. Tujuan dari proses server adalah untuk berinteraksi dengan peralatan rumah pintar, menjalankan aturan logis produksi, menerima dan memproses perintah dari antarmuka grafis dan cloud. Proses server di pengontrol rumah pintar yang dipertimbangkan diimplementasikan sebagai aplikasi multi-thread yang dikembangkan dalam C++ dan diluncurkan sebagai layanan terpisah systemd sistem operasi Linux Raspbian.

Blok utama dari proses server adalah:

  1. Manajer Pesan;
  2. server kamera IP;
  3. Server perangkat Z-Wave;
  4. Server aturan logis produksi;
  5. Basis data konfigurasi pengontrol dan blok aturan logika;
  6. Server API RESTful untuk interaksi dengan antarmuka grafis;
  7. Klien MQTT untuk berinteraksi dengan cloud.

Blok proses server diimplementasikan sebagai utas terpisah, informasi di antaranya ditransfer dalam bentuk pesan dalam format JSON (atau struktur data yang mewakili format ini dalam memori proses).

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Komponen utama dari proses server adalah manajer pesan, yang merutekan pesan JSON ke semua blok proses server. Jenis bidang informasi pesan JSON dan nilai yang dapat diterima tercantum dalam tabel:

tipe perangkat
protokol
jenis pesan
status perangkat
Command

kamar
aktif
data sensor
on
streaming (Aktif/Mati)

Sensor
gelombang z
Command
lepas
rekaman (Hidup/Mati)

efektor
mqtt
Aturan Logika bisnis
streaming (Aktif/Mati)
perangkat (Tambah/Hapus)

logika bisnis
konfigurasiData
rekaman (Hidup/Mati)

Bluetooth
status perangkat
kesalahan

wifi

rf

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 operator, blok proses server berlangganan pesan jenis tertentu. Berlangganan adalah jenis aturan logis produksi "Jika kemudian...", disajikan dalam format JSON, dan tautan ke pengendali pesan di dalam blok proses server. Misalnya, untuk mengizinkan server kamera IP 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 ditentukan dalam mendahului (sisi kiri) aturannya benar, maka puas akibat (sisi kanan) aturan, dan pengendali mendapatkan akses ke isi pesan JSON. Antesedennya mendukung operator logika yang membandingkan pasangan nilai kunci JSON:

  1. sama dengan "sama";
  2. tidak sama dengan "tidak_sama";
  3. kurang "kurang";
  4. lebih "lebih besar";
  5. kurang dari atau sama dengan "kurang_atau_sama";
  6. lebih besar dari atau sama dengan "lebih besar_atau_sama".

Hasil perbandingannya dapat dihubungkan satu sama lain menggunakan operator aljabar Boolean:

  1. Dan dan"
  2. ATAU "atau";
  3. BUKAN "tidak".

Jadi, dengan menulis operator dan operan dalam notasi Polandia, Anda dapat membuat kondisi yang cukup kompleks dengan jumlah parameter yang banyak.

Mekanisme yang persis sama, berdasarkan pesan JSON dan aturan produksi dalam format JSON, digunakan di blok server logika produksi untuk mewakili pengetahuan dan melakukan inferensi logis menggunakan data sensorik dari sensor rumah pintar.

Dengan menggunakan aplikasi seluler, pengguna membuat skenario yang sesuai dengan fungsi rumah pintar. Misalnya: “Jika sensor untuk membuka pintu depan terpicu, 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 lebih detail di artikel ketiga seri kami, di mana kami akan membahas tentang aplikasi klien untuk mengelola rumah pintar.

Mekanisme logika produksi yang dibahas di atas diimplementasikan menggunakan perpustakaan RapidJSON — Pengurai SAX untuk format JSON dalam C++. Pembacaan dan penguraian serangkaian aturan produksi secara berurutan memungkinkan Anda mengimplementasikan fungsi perbandingan data dengan mudah di 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 fakta — struktur yang berisi pasangan nilai kunci dari pesan JSON, m_Aturan — serangkaian aturan produksi. Perbandingan pesan masuk dan aturan produksi dilakukan dalam fungsi tersebut pembaca.Parse(ruleStream, ruleHandler)Dimana ruleHandler adalah objek yang berisi logika Boolean dan operator perbandingan. sRuleId — pengidentifikasi aturan unik, yang memungkinkan untuk menyimpan dan mengedit aturan di dalam database pengontrol rumah pintar. m_pActions — array dengan hasil inferensi logis: pesan JSON berisi konsekuensi dari basis aturan dan dikirim lebih lanjut ke pengelola pesan sehingga thread pelanggan dapat memprosesnya.

Performa RapidJSON sebanding dengan fungsinya strlen(), dan persyaratan sumber daya sistem minimum memungkinkan penggunaan perpustakaan ini di perangkat yang disematkan. Penggunaan pesan dan aturan logis dalam format JSON memungkinkan Anda menerapkan sistem pertukaran informasi yang fleksibel antara semua komponen pengontrol rumah pintar.

Sensor dan Aktuator Z-Wave

Keuntungan utama rumah pintar adalah ia dapat secara mandiri mengukur berbagai parameter lingkungan eksternal dan menjalankan fungsi-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 menggunakan protokol Z-Wave pada frekuensi yang dialokasikan secara khusus 869 MHz Untuk Rusia. Untuk beroperasi, mereka digabungkan menjadi jaringan mesh, yang berisi repeater sinyal untuk meningkatkan area jangkauan. Perangkat ini juga memiliki mode hemat energi khusus - perangkat menghabiskan sebagian besar waktunya dalam mode tidur dan mengirimkan informasi hanya ketika statusnya berubah, yang secara signifikan dapat memperpanjang umur baterai internal.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Sekarang Anda dapat menemukan sejumlah besar perangkat Z-Wave yang berbeda di pasaran. Mari kita lihat beberapa contoh:

  1. Soket pintar Zipato PAN16 dapat mengukur parameter berikut: konsumsi listrik (kWh), daya (W), tegangan (V) dan arus (A) pada jaringan listrik. Ia juga memiliki saklar internal yang dapat digunakan untuk mengontrol peralatan listrik yang terhubung;
  2. Sensor kebocoran Neo Coolcam mendeteksi keberadaan cairan yang tumpah dengan menutup kontak probe jarak jauh;
  3. Sensor asap Zipato PH-PSG01 terpicu ketika partikel asap memasuki ruang penganalisis gas;
  4. Sensor gerak Neo Coolcam menganalisis radiasi infra merah tubuh manusia. Selain itu terdapat sensor cahaya (Lx);
  5. Multisensor Philio PST02-A mengukur suhu (°C), cahaya (%), bukaan pintu, keberadaan seseorang di dalam ruangan;
  6. Pengontrol jaringan Z-Wave USB Stick ZME E UZB1, yang sensornya terhubung.

Sangat penting bahwa perangkat dan pengontrol beroperasi pada frekuensi yang sama, jika tidak, mereka tidak akan melihat satu sama lain pada saat penyambungan. Hingga 232 perangkat dapat dihubungkan ke satu pengontrol jaringan Z-Wave, yang cukup untuk apartemen atau rumah pedesaan. Untuk memperluas area jangkauan jaringan di dalam ruangan, smart socket dapat digunakan sebagai pengulang sinyal.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Dalam proses server pengontrol rumah pintar yang dibahas di paragraf sebelumnya, server Z-Wave bertanggung jawab untuk berinteraksi dengan perangkat Z-Wave. Ia menggunakan perpustakaan untuk menerima informasi dari sensor BukaZWave dalam C++, yang menyediakan antarmuka untuk berinteraksi dengan pengontrol USB jaringan Z-Wave dan bekerja dengan berbagai sensor dan aktuator. Nilai parameter lingkungan yang diukur oleh sensor dicatat 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"
}

Hal ini kemudian diteruskan ke manajer pesan proses server sehingga thread pelanggan dapat menerimanya. Pelanggan utama adalah server logika produksi, yang cocok dengan nilai bidang pesan di anteseden aturan logika. Hasil inferensi yang berisi perintah kontrol dikirim kembali ke pengelola pesan dan dari sana menuju ke server Z-Wave, yang menerjemahkan kodenya dan mengirimkannya ke pengontrol USB jaringan Z-Wave. Kemudian mereka memasuki aktuator, yang mengubah keadaan objek lingkungan, dan rumah pintar melakukan pekerjaan yang bermanfaat.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor
(klik pada gambar untuk membukanya dalam resolusi lebih tinggi)

Menghubungkan perangkat Z-Wave dilakukan di antarmuka grafis pengontrol rumah pintar. Untuk melakukan ini, buka halaman dengan daftar perangkat dan klik tombol “Tambah”. Perintah add melalui antarmuka RESTful API memasuki proses server dan kemudian dikirim oleh manajer pesan ke server Z-Wave, yang menempatkan pengontrol USB jaringan Z-Wave ke mode khusus untuk menambahkan perangkat. Selanjutnya, pada perangkat Z-Wave Anda perlu melakukan serangkaian penekanan cepat (3 penekanan dalam 1,5 detik) pada tombol layanan. Pengontrol USB menghubungkan perangkat ke jaringan dan mengirimkan informasi tentangnya ke server Z-Wave. Hal ini, pada gilirannya, membuat entri baru dalam database SQLite dengan parameter perangkat baru. Setelah interval waktu tertentu, antarmuka grafis kembali ke halaman daftar perangkat Z-Wave, membaca informasi dari database dan menampilkan perangkat baru dalam daftar. Setiap perangkat menerima pengidentifikasi uniknya sendiri, yang digunakan dalam aturan inferensi produksi dan saat bekerja di cloud. Pengoperasian algoritma ini ditunjukkan pada diagram UML:

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor
(klik pada gambar untuk membukanya dalam resolusi lebih tinggi)

Menghubungkan kamera IP

Sistem rumah pintar cloud yang dibahas dalam artikel ini merupakan peningkatan dari sistem pengawasan video cloud, juga dikembangkan oleh penulis, yang telah dipasarkan selama beberapa tahun dan memiliki banyak instalasi di Rusia.

Untuk sistem pengawasan video cloud, salah satu masalah akutnya adalah terbatasnya pilihan peralatan yang dapat digunakan untuk melakukan integrasi. Perangkat lunak yang bertanggung jawab untuk menghubungkan ke cloud dipasang di dalam kamera video, yang segera memberikan tuntutan serius pada perangkat kerasnya - prosesor dan jumlah memori bebas. Hal ini terutama menjelaskan harga kamera CCTV cloud yang lebih tinggi dibandingkan dengan kamera IP biasa. Selain itu, diperlukan tahap negosiasi yang panjang dengan perusahaan pembuat kamera CCTV untuk mendapatkan akses ke sistem file kamera dan semua alat pengembangan yang diperlukan.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Di sisi lain, semua kamera IP modern memiliki protokol standar untuk berinteraksi dengan peralatan lain (khususnya perekam video). Dengan demikian, penggunaan pengontrol terpisah yang terhubung melalui protokol standar dan menyiarkan aliran video 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 memperluasnya dan mengubahnya menjadi rumah pintar cloud yang lengkap.

Protokol paling populer untuk sistem pengawasan video IP, yang sekarang didukung oleh semua produsen kamera IP tanpa kecuali, adalah Profil ONVIF S, yang spesifikasinya ada dalam bahasa deskripsi layanan web wsdl. Menggunakan utilitas dari toolkit gSOAP Dimungkinkan untuk menghasilkan kode sumber untuk 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

Hasilnya, kita mendapatkan satu set file header “*.h” dan sumber “*.cpp” di C++, yang dapat ditempatkan langsung ke dalam aplikasi atau perpustakaan terpisah dan dikompilasi menggunakan kompiler GCC. Karena banyaknya fungsi, kodenya besar dan memerlukan optimasi tambahan. Komputer mikro Raspberry Pi 3 model B+ memiliki kinerja yang cukup untuk mengeksekusi kode ini, tetapi jika ada kebutuhan untuk mem-porting kode ke platform lain, maka perlu memilih arsitektur prosesor dan sumber daya sistem yang benar.

Kamera IP yang mendukung standar ONVIF, ketika beroperasi di jaringan lokal, terhubung ke grup multicast khusus dengan alamat 239.255.255.250. Ada protokolnya WS Discovery, yang memungkinkan Anda mengotomatiskan pencarian perangkat di jaringan lokal.

Antarmuka grafis pengontrol rumah pintar mengimplementasikan fungsi pencarian kamera IP dalam PHP, yang sangat nyaman saat berinteraksi dengan layanan web melalui pesan XML. Saat memilih item menu Perangkat > Kamera IP > Pemindaian Algoritma pencarian kamera IP diluncurkan, menampilkan hasilnya dalam bentuk tabel:

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor
(klik pada gambar untuk membukanya dalam resolusi lebih tinggi)

Saat Anda menambahkan kamera ke pengontrol, Anda dapat menentukan pengaturan yang akan digunakan untuk berinteraksi dengan cloud. Juga pada tahap ini, secara otomatis diberi pengidentifikasi perangkat unik, yang nantinya dapat dengan mudah diidentifikasi di dalam cloud.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Selanjutnya, pesan dibuat dalam format JSON yang berisi semua parameter kamera yang ditambahkan dan dikirim ke proses server pengontrol rumah pintar melalui perintah RESTful API, di mana parameter kamera didekodekan dan disimpan dalam database SQLite internal, dan juga digunakan untuk meluncurkan thread pemrosesan berikut:

  1. membuat koneksi RTSP untuk menerima streaming video dan audio;
  2. transcoding audio dari format G.711 mu-Law, G.711 A-Law, G.723, dll. ke format AAC;
  3. transcoding aliran video dalam format H.264 dan audio dalam format AAC ke dalam wadah FLV dan mentransmisikannya ke cloud melalui protokol RTMP;
  4. membuat koneksi dengan titik akhir detektor gerakan kamera IP melalui protokol ONVIF dan melakukan polling secara berkala;
  5. secara berkala membuat gambar pratinjau thumbnail dan mengirimkannya ke cloud melalui protokol MQTT;
  6. rekaman lokal aliran video dan audio dalam bentuk file terpisah dalam format MP4 ke kartu SD atau Flash pengontrol rumah pintar.

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Untuk membuat koneksi dengan kamera, mentranskode, memproses dan merekam aliran video dalam proses server, fungsi dari perpustakaan digunakan FFmpeg 4.1.0.

Dalam percobaan pengujian kinerja, 3 kamera dihubungkan ke pengontrol:

  1. HiWatch DS-I114W (resolusi - 720p, format kompresi - H.264, bitrate - 1 Mb/s, suara G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (resolusi - 1080p, format kompresi - H.264, bitrate - 1 Mb/s, tanpa suara);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (resolusi - 1080p, format kompresi - H.264, bitrate - 1.5 Mb/s, audio AAC).

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Ketiga aliran tersebut secara bersamaan dikeluarkan ke cloud, transcoding audio dilakukan hanya dari satu kamera, dan perekaman arsip lokal dinonaktifkan. Beban CPU sekitar 5%, penggunaan RAM 32 MB (per proses), 56 MB (total termasuk OS).

Jadi, sekitar 20 - 30 kamera dapat dihubungkan ke pengontrol rumah pintar (tergantung resolusi dan bitrate), yang cukup untuk sistem pengawasan video untuk pondok tiga lantai atau gudang kecil. Untuk tugas-tugas yang membutuhkan performa lebih besar, Anda dapat menggunakan nettop dengan prosesor Intel multi-core dan OS Linux Debian Sarge. Pengontrol saat ini sedang menjalani operasi uji coba, dan data kinerjanya akan diperbarui.

Interaksi dengan awan

Rumah pintar berbasis cloud menyimpan data pengguna (pengukuran video dan sensor) di cloud. Arsitektur penyimpanan cloud akan dibahas lebih detail pada artikel berikutnya di seri kami. Sekarang mari kita bicara tentang antarmuka untuk mengirimkan pesan informasi dari pengontrol rumah pintar ke cloud.

Status perangkat yang terhubung dan pengukuran sensor ditransmisikan melalui protokol MQTT, yang sering digunakan dalam proyek Internet of Things karena kesederhanaan dan efisiensi energinya. MQTT menggunakan model client-server, di mana klien berlangganan topik tertentu dalam broker dan mempublikasikan pesan mereka. Broker mengirimkan pesan ke semua pelanggan sesuai aturan yang ditentukan oleh tingkat QoS (Quality of Service):

  • QoS 0 - maksimal satu kali (tidak ada jaminan pengiriman);
  • QoS 1 - setidaknya sekali (dengan konfirmasi pengiriman);
  • QoS 2 - tepat satu kali (dengan konfirmasi pengiriman tambahan).

Dalam kasus kami, kami menggunakan Nyamuk Gerhana. Nama topik adalah pengidentifikasi unik pengontrol rumah pintar. Klien MQTT di dalam proses server berlangganan topik ini dan menerjemahkan pesan JSON yang berasal dari pengelola pesan ke dalamnya. Sebaliknya, pesan dari broker MQTT diteruskan ke manajer pesan, yang kemudian menggandakannya ke pelanggannya di dalam proses server:

Rumah Cerdas Cloud. Bagian 1: Pengontrol dan sensor

Untuk mengirimkan pesan tentang status pengontrol rumah pintar, mekanisme pesan tersimpan digunakan pesan yang disimpan Protokol MQTT. Hal ini memungkinkan Anda memantau dengan benar waktu penyambungan kembali saat listrik padam.

Klien MQTT dikembangkan berdasarkan implementasi perpustakaan Gerhana Paho dalam bahasa C++.

Aliran media H.264+AAC dikirim ke cloud melalui protokol RTMP, di mana sekelompok server media bertanggung jawab untuk memproses dan menyimpannya. Untuk mendistribusikan beban secara optimal di cluster dan memilih server media yang paling sedikit memuatnya, pengontrol rumah pintar membuat permintaan awal ke penyeimbang beban cloud dan hanya setelah itu mengirimkan aliran media.

Kesimpulan

Artikel ini membahas satu implementasi spesifik pengontrol rumah pintar berdasarkan komputer mikro Raspberry Pi 3 B+, ​​yang dapat menerima, memproses informasi dan mengontrol peralatan melalui protokol Z-Wave, berinteraksi dengan kamera IP melalui protokol ONVIF, dan juga bertukar data dan perintah dengan layanan cloud melalui protokol MQTT dan RTMP. Mesin logika produksi telah dikembangkan berdasarkan perbandingan aturan logis dan fakta yang disajikan dalam format JSON.

Pengontrol rumah pintar saat ini sedang menjalani uji coba operasi di beberapa lokasi di Moskow dan wilayah Moskow.

Versi pengontrol berikutnya berencana untuk menghubungkan perangkat jenis lain (RF, Bluetooth, WiFi, kabel). Demi kenyamanan pengguna, prosedur menghubungkan sensor dan kamera IP akan ditransfer ke aplikasi seluler. Ada juga ide untuk mengoptimalkan kode proses server dan mem-porting perangkat lunak ke sistem operasi BukaWrt. Ini akan memungkinkan Anda menghemat pengontrol terpisah dan mentransfer fungsionalitas rumah pintar ke router rumah tangga biasa.

Sumber: www.habr.com

Tambah komentar