Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Hari ini, terima kasih kepada perkembangan pesat mikroelektronik, saluran komunikasi, teknologi Internet dan Kepintaran Buatan, topik rumah pintar menjadi semakin relevan. Perumahan manusia telah mengalami perubahan ketara sejak Zaman Batu dan dalam era Revolusi Perindustrian 4.0 dan Internet of Things, ia telah menjadi selesa, berfungsi dan selamat. Penyelesaian akan datang ke pasaran yang menjadikan sebuah apartmen atau rumah desa menjadi sistem maklumat kompleks yang dikawal dari mana-mana sahaja di dunia menggunakan telefon pintar. Selain itu, interaksi manusia-mesin tidak lagi memerlukan pengetahuan tentang bahasa pengaturcaraan - terima kasih kepada pengecaman pertuturan dan algoritma sintesis, seseorang bercakap dengan rumah pintar dalam bahasa ibunda mereka.

Beberapa sistem rumah pintar yang kini berada di pasaran adalah pembangunan logik sistem pengawasan video awan, yang mana pembangunnya menyedari keperluan untuk penyelesaian komprehensif bukan sahaja untuk pemantauan, tetapi juga untuk menguruskan objek jauh.

Kami membentangkan kepada perhatian anda satu siri tiga artikel, yang akan memberitahu anda tentang semua komponen utama sistem rumah pintar awan, dibangunkan secara peribadi oleh pengarang dan mula beroperasi. Artikel pertama ditumpukan kepada peralatan klien terminal yang dipasang di dalam rumah pintar, yang kedua kepada seni bina storan awan dan sistem pemprosesan data, dan akhirnya, yang ketiga kepada aplikasi klien untuk mengurus sistem pada peranti mudah alih dan pegun.

Peralatan rumah pintar

Pertama, mari kita bercakap tentang cara membuat rumah pintar daripada apartmen biasa, dacha atau kotej. Untuk melakukan ini, sebagai peraturan, perlu meletakkan peralatan berikut di rumah:

  1. sensor yang mengukur pelbagai parameter persekitaran;
  2. penggerak bertindak pada objek luaran;
  3. pengawal yang melakukan pengiraan mengikut ukuran sensor dan logik terbenam, dan mengeluarkan arahan kepada penggerak.

Rajah berikut menunjukkan rajah rumah pintar, di mana terdapat penderia kebocoran air (1) di bilik mandi, suhu (2) dan pencahayaan (3) di bilik tidur, soket pintar (4) di dapur dan kamera pengawasan video (5) di lorong.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Pada masa ini, penderia wayarles yang beroperasi menggunakan protokol RF433, Z-Wave, ZigBee, Bluetooth dan WiFi digunakan secara meluas. Kelebihan utama mereka adalah kemudahan pemasangan dan penggunaan, serta kos rendah dan kebolehpercayaan, kerana Pengilang sedang berusaha untuk membawa peranti mereka ke pasaran besar-besaran dan menjadikannya mudah diakses oleh pengguna biasa.

Penderia dan penggerak, sebagai peraturan, disambungkan melalui antara muka wayarles ke pengawal rumah pintar (6) - mikrokomputer khusus yang menggabungkan semua peranti ini ke dalam satu rangkaian dan mengawalnya.

Walau bagaimanapun, sesetengah penyelesaian boleh menggabungkan penderia, penggerak dan pengawal pada masa yang sama. Contohnya, palam pintar boleh diprogramkan untuk menghidupkan atau mematikan mengikut jadual, dan kamera pengawasan video awan boleh merakam video berdasarkan isyarat pengesan gerakan. Dalam kes paling mudah, anda boleh melakukannya tanpa pengawal yang berasingan, tetapi untuk mencipta sistem yang fleksibel dengan banyak senario, adalah perlu.

Untuk menyambungkan pengawal rumah pintar ke rangkaian global, penghala Internet biasa (7) boleh digunakan, yang telah lama menjadi perkakas rumah biasa di mana-mana rumah. Di sini terdapat satu lagi hujah yang memihak kepada pengawal rumah pintar - jika sambungan ke Internet terputus, rumah pintar akan terus beroperasi seperti biasa terima kasih kepada blok logik yang disimpan di dalam pengawal, dan bukan dalam perkhidmatan awan.

Pengawal rumah pintar

Pengawal untuk sistem rumah pintar awan yang dibincangkan dalam artikel ini dibangunkan berdasarkan mikrokomputer papan tunggal Raspberry Pi 3 model B+, yang dikeluarkan pada Mac 2018 dan mempunyai sumber dan prestasi yang mencukupi untuk tugas rumah pintar. Ia termasuk pemproses quad-core Cortex-A53 berdasarkan seni bina ARMv64-A 8-bit, mencatat masa pada 1.4 GHz, serta 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 dan penyesuai Ethernet gigabit yang beroperasi melalui USB 2.0 .

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Memasang pengawal adalah sangat mudah - komputer mikro (1) dipasang dalam bekas plastik (2), kemudian kad memori 8 GB dalam format microSD dengan perisian (3) dan pengawal rangkaian USB Z-Wave (4) dipasang dalam slot yang sepadan. Pengawal rumah pintar disambungkan kepada bekalan kuasa melalui penyesuai kuasa 5V, 2.1A (5) dan kabel USB - mikro-USB (6). Setiap pengawal mempunyai nombor pengenalan unik, yang ditulis dalam fail konfigurasi apabila mula-mula dilancarkan dan diperlukan untuk berinteraksi dengan perkhidmatan rumah pintar awan.

Perisian pengawal rumah pintar telah dibangunkan oleh pengarang artikel ini berdasarkan sistem pengendalian Linux Raspbian Stretch. Ia terdiri daripada subsistem utama berikut:

  • proses pelayan untuk interaksi dengan peralatan rumah pintar dan awan;
  • antara muka pengguna grafik untuk menetapkan konfigurasi dan parameter operasi pengawal;
  • pangkalan data untuk menyimpan konfigurasi pengawal.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Pangkalan data pengawal rumah pintar dilaksanakan berdasarkan DBMS terbenam SQLite dan merupakan fail pada kad SD dengan perisian sistem. Ia berfungsi sebagai storan untuk konfigurasi pengawal - maklumat tentang peralatan yang disambungkan dan keadaan semasanya, blok peraturan pengeluaran logik, serta maklumat yang memerlukan pengindeksan (contohnya, nama fail arkib video tempatan). Apabila pengawal dibut semula, maklumat ini disimpan, menjadikannya mungkin untuk memulihkan pengawal sekiranya berlaku kegagalan kuasa.

Antara muka grafik pengawal rumah pintar dibangunkan dalam PHP 7 menggunakan rangka kerja mikro Nipis. Pelayan web bertanggungjawab untuk menjalankan aplikasi. lighttpd, sering digunakan dalam peranti terbenam kerana prestasinya yang baik dan keperluan sumber yang rendah.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia
(klik pada gambar untuk membukanya dalam resolusi yang lebih tinggi)

Fungsi utama antara muka grafik adalah untuk menyambungkan peralatan rumah pintar (kamera dan penderia pengawasan IP) kepada pengawal. Aplikasi web membaca konfigurasi dan keadaan semasa pengawal dan peranti yang disambungkan kepadanya daripada pangkalan data SQLite. Untuk menukar konfigurasi pengawal, ia menghantar arahan kawalan dalam format JSON melalui antara muka API RESTful proses pelayan.

Proses pelayan

Proses pelayan - komponen utama yang melaksanakan semua kerja utama untuk mengautomasikan proses maklumat yang membentuk asas rumah pintar: menerima dan memproses data deria, mengeluarkan tindakan kawalan bergantung pada logik terbenam. Tujuan proses pelayan adalah untuk berinteraksi dengan peralatan rumah pintar, melaksanakan peraturan logik pengeluaran, menerima dan memproses arahan daripada antara muka grafik dan awan. Proses pelayan dalam pengawal rumah pintar yang sedang dipertimbangkan dilaksanakan sebagai aplikasi berbilang benang yang dibangunkan dalam C++ dan dilancarkan sebagai perkhidmatan berasingan sistem sistem operasi Linux Raspbian.

Blok utama proses pelayan ialah:

  1. Pengurus Mesej;
  2. pelayan kamera IP;
  3. Pelayan peranti Z-Wave;
  4. Pelayan peraturan logik pengeluaran;
  5. Pangkalan data konfigurasi pengawal dan blok peraturan logik;
  6. Pelayan API RESTful untuk interaksi dengan antara muka grafik;
  7. Pelanggan MQTT untuk berinteraksi dengan awan.

Blok proses pelayan dilaksanakan sebagai utas berasingan, maklumat antaranya dipindahkan dalam bentuk mesej dalam format JSON (atau struktur data yang mewakili format ini dalam memori proses).

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Komponen utama proses pelayan ialah pengurus mesej, yang mengarahkan mesej JSON ke semua blok proses pelayan. Jenis medan maklumat mesej JSON dan nilai yang mereka boleh terima disenaraikan dalam jadual:

jenis peranti
protokol
jenis mesej
deviceState
arahan

kamera
onvif
sensorData
on
penstriman (Hidup/Mati)

sensor
zwave
arahan
off
rakaman (Hidup/Mati)

effector
mqtt
businessLogicRule
penstriman (Hidup/Mati)
evice(Tambah/Alih Keluar)

perniagaanLogik
configurationData
rakaman (Hidup/Mati)

Bluetooth
deviceState
kesilapan

WiFi

rf

Sebagai contoh, mesej daripada pengesan gerakan kamera kelihatan 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"
}

Logik pengeluaran

Untuk menerima atau menghantar mesej daripada penghantar, blok proses pelayan melanggan mesej jenis tertentu. Langganan ialah peraturan logik pengeluaran jenis β€œJika... maka...”, dibentangkan dalam format JSON dan pautan kepada pengendali mesej di dalam blok proses pelayan. Contohnya, untuk membenarkan pelayan kamera IP menerima arahan daripada GUI dan awan, anda perlu menambah peraturan berikut:

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

Jika syarat yang dinyatakan dalam anteseden (sebelah kiri) peraturan itu benar, barulah berpuas hati akibat (sebelah kanan) peraturan dan pengendali mendapat akses kepada badan mesej JSON. Anteseden menyokong pengendali logik yang membandingkan pasangan nilai kunci JSON:

  1. sama dengan "sama";
  2. tidak sama dengan "tidak_sama";
  3. kurang "kurang";
  4. lebih "lebih hebat";
  5. kurang daripada atau sama dengan "kurang_atau_sama";
  6. lebih besar daripada atau sama dengan "greater_or_equal".

Hasil perbandingan boleh dikaitkan antara satu sama lain menggunakan operator algebra Boolean:

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

Oleh itu, dengan menulis operator dan operan dalam notasi Poland, anda boleh mencipta keadaan yang agak kompleks dengan sejumlah besar parameter.

Mekanisme yang sama persis, berdasarkan mesej JSON dan peraturan pengeluaran dalam format JSON, digunakan dalam blok pelayan logik pengeluaran untuk mewakili pengetahuan dan menjalankan inferens logik menggunakan data deria daripada penderia rumah pintar.

Menggunakan aplikasi mudah alih, pengguna mencipta senario mengikut mana rumah pintar harus berfungsi. Sebagai contoh: "Jika sensor untuk membuka pintu depan dicetuskan, kemudian hidupkan lampu di lorong". Aplikasi ini membaca pengecam penderia (penderia pembukaan) dan penggerak (soket pintar atau lampu pintar) daripada pangkalan data dan menjana peraturan logik dalam format JSON, yang dihantar kepada pengawal rumah pintar. Mekanisme ini akan dibincangkan dengan lebih terperinci dalam artikel ketiga siri kami, di mana kami akan bercakap tentang aplikasi pelanggan untuk menguruskan rumah pintar.

Mekanisme logik pengeluaran yang dibincangkan di atas dilaksanakan menggunakan perpustakaan RapidJSON β€” Penghurai SAX untuk format JSON dalam C++. Pembacaan berurutan dan penghuraian tatasusunan peraturan pengeluaran membolehkan anda melaksanakan 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);
        }
    }
}

ia adalah pFakta β€” struktur yang mengandungi pasangan nilai kunci daripada mesej JSON, m_Peraturan β€” tatasusunan rentetan peraturan pengeluaran. Perbandingan mesej masuk dan peraturan pengeluaran dijalankan dalam fungsi reader.Parse(ruleStream, ruleHandler)Jika pengendali peraturan ialah objek yang mengandungi logik Boolean dan pengendali perbandingan. sRuleId β€” pengecam peraturan unik, yang membolehkan anda menyimpan dan mengedit peraturan di dalam pangkalan data pengawal rumah pintar. m_pActions β€” tatasusunan dengan hasil inferens logik: Mesej JSON yang mengandungi akibat daripada asas peraturan dan dihantar lebih jauh kepada pengurus mesej supaya urutan pelanggan boleh memprosesnya.

Prestasi RapidJSON adalah setanding dengan fungsi strlen (), dan keperluan sumber sistem minimum membenarkan penggunaan pustaka ini dalam peranti terbenam. Penggunaan mesej dan peraturan logik dalam format JSON membolehkan anda melaksanakan sistem pertukaran maklumat yang fleksibel antara semua komponen pengawal rumah pintar.

Penderia dan Penggerak Gelombang Z

Kelebihan utama rumah pintar ialah ia boleh mengukur pelbagai parameter persekitaran luaran secara bebas dan melaksanakan fungsi yang berguna bergantung pada keadaan. Untuk melakukan ini, penderia dan penggerak disambungkan kepada pengawal rumah pintar. Dalam versi semasa, ini adalah peranti wayarles yang beroperasi menggunakan protokol Z-Gelombang pada frekuensi yang diperuntukkan khas 869 MHz Untuk Rusia. Untuk beroperasi, ia digabungkan ke dalam rangkaian mesh, yang mengandungi pengulang isyarat untuk meningkatkan kawasan liputan. Peranti ini juga mempunyai mod penjimatan tenaga khas - ia menghabiskan kebanyakan masa dalam mod tidur dan menghantar maklumat hanya apabila keadaannya berubah, yang boleh memanjangkan hayat bateri terbina dalam dengan ketara.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Anda kini boleh menemui sejumlah besar peranti Z-Wave yang berbeza di pasaran. Mari kita lihat beberapa contoh:

  1. Soket pintar Zipato PAN16 boleh mengukur parameter berikut: penggunaan elektrik (kWj), kuasa (W), voltan (V) dan arus (A) dalam rangkaian elektrik. Ia juga mempunyai suis terbina dalam yang dengannya anda boleh mengawal perkakas elektrik yang disambungkan;
  2. Sensor kebocoran Neo Coolcam mengesan kehadiran cecair yang tertumpah dengan menutup sesentuh probe jauh;
  3. Sensor asap Zipato PH-PSG01 dicetuskan apabila zarah asap memasuki ruang penganalisis gas;
  4. Penderia gerakan Neo Coolcam menganalisis sinaran inframerah badan manusia. Selain itu terdapat sensor cahaya (Lx);
  5. Multisensor Philio PST02-A mengukur suhu (Β°C), cahaya (%), pembukaan pintu, kehadiran seseorang di dalam bilik;
  6. Z-Wave USB Stick ZME E UZB1 pengawal rangkaian, yang mana penderia disambungkan.

Adalah sangat penting bahawa peranti dan pengawal beroperasi pada frekuensi yang sama, jika tidak, mereka tidak akan melihat satu sama lain pada saat sambungan. Sehingga 232 peranti boleh disambungkan kepada satu pengawal rangkaian Z-Wave, yang cukup untuk sebuah apartmen atau rumah desa. Untuk mengembangkan kawasan liputan rangkaian di dalam rumah, soket pintar boleh digunakan sebagai pengulang isyarat.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Dalam proses pelayan pengawal rumah pintar yang dibincangkan dalam perenggan sebelumnya, pelayan Z-Wave bertanggungjawab untuk berinteraksi dengan peranti Z-Wave. Ia menggunakan perpustakaan untuk menerima maklumat daripada penderia OpenZWave dalam C++, yang menyediakan antara muka untuk berinteraksi dengan pengawal USB rangkaian Z-Wave dan berfungsi dengan pelbagai penderia dan penggerak. Nilai parameter persekitaran yang diukur oleh sensor direkodkan oleh pelayan Z-Wave dalam bentuk mesej 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"
}

Ia kemudiannya dimajukan kepada pengurus mesej proses pelayan supaya urutan pelanggan boleh menerimanya. Pelanggan utama ialah pelayan logik pengeluaran, yang sepadan dengan nilai medan mesej dalam anteseden peraturan logik. Keputusan inferens yang mengandungi arahan kawalan dihantar semula kepada pengurus mesej dan dari sana pergi ke pelayan Z-Wave, yang menyahkodnya dan menghantarnya ke pengawal USB rangkaian Z-Wave. Kemudian mereka memasuki penggerak, yang mengubah keadaan objek persekitaran, dan rumah pintar itu melakukan kerja yang berguna.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia
(klik pada gambar untuk membukanya dalam resolusi yang lebih tinggi)

Menyambung peranti Z-Wave dilakukan dalam antara muka grafik pengawal rumah pintar. Untuk melakukan ini, pergi ke halaman dengan senarai peranti dan klik butang "Tambah". Perintah tambah melalui antara muka API RESTful memasuki proses pelayan dan kemudian dihantar oleh pengurus mesej ke pelayan Z-Wave, yang meletakkan pengawal USB rangkaian Z-Wave ke dalam mod khas untuk menambah peranti. Seterusnya, pada peranti Z-Wave anda perlu membuat satu siri tekan pantas (3 tekan dalam masa 1,5 saat) daripada butang servis. Pengawal USB menyambungkan peranti ke rangkaian dan menghantar maklumat mengenainya ke pelayan Z-Wave. Itu, seterusnya, mencipta entri baharu dalam pangkalan data SQLite dengan parameter peranti baharu. Selepas selang masa yang ditentukan, antara muka grafik kembali ke halaman senarai peranti Z-Wave, membaca maklumat daripada pangkalan data dan memaparkan peranti baharu dalam senarai. Setiap peranti menerima pengecam uniknya sendiri, yang digunakan dalam peraturan inferens pengeluaran dan semasa bekerja dalam awan. Operasi algoritma ini ditunjukkan dalam rajah UML:

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia
(klik pada gambar untuk membukanya dalam resolusi yang lebih tinggi)

Menyambungkan kamera IP

Sistem rumah pintar awan yang dibincangkan dalam artikel ini ialah peningkatan sistem pengawasan video awan, juga dibangunkan oleh pengarang, yang telah berada di pasaran selama beberapa tahun dan mempunyai banyak pemasangan di Rusia.

Untuk sistem pengawasan video awan, salah satu masalah akut ialah pemilihan peralatan yang terhad untuk penyepaduan boleh dilakukan. Perisian yang bertanggungjawab untuk menyambung ke awan dipasang di dalam kamera video, yang segera meletakkan permintaan serius pada perkakasannya - pemproses dan jumlah memori percuma. Ini menjelaskan terutamanya harga kamera CCTV awan yang lebih tinggi berbanding kamera IP biasa. Di samping itu, peringkat rundingan yang panjang dengan syarikat pengeluar kamera CCTV diperlukan untuk mendapatkan akses kepada sistem fail kamera dan semua alat pembangunan yang diperlukan.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Sebaliknya, semua kamera IP moden mempunyai protokol standard untuk interaksi dengan peralatan lain (khususnya, perakam video). Oleh itu, penggunaan pengawal berasingan yang bersambung melalui protokol standard dan menyiarkan aliran video daripada kamera IP ke awan memberikan kelebihan daya saing yang ketara untuk sistem pengawasan video awan. Lebih-lebih lagi, jika pelanggan telah memasang sistem pengawasan video berdasarkan kamera IP mudah, maka ia menjadi mungkin untuk mengembangkannya dan mengubahnya menjadi rumah pintar awan sepenuhnya.

Protokol paling popular untuk sistem pengawasan video IP, kini disokong oleh semua pengeluar kamera IP tanpa pengecualian, ialah Profil ONVIF S, yang spesifikasinya wujud dalam bahasa penerangan perkhidmatan web wsdl. Menggunakan utiliti daripada kit alat gSOAP Anda boleh menjana kod sumber untuk perkhidmatan yang berfungsi 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, kami mendapat satu set pengepala "*.h" dan sumber "*.cpp" fail dalam C++, yang boleh diletakkan terus ke dalam aplikasi atau pustaka berasingan dan disusun menggunakan pengkompil GCC. Oleh kerana banyak fungsi, kod itu besar dan memerlukan pengoptimuman tambahan. Komputer mikro Raspberry Pi 3 model B+ mempunyai prestasi yang mencukupi untuk melaksanakan kod ini, tetapi jika terdapat keperluan untuk memindahkan kod ke platform lain, adalah perlu untuk memilih seni bina pemproses dan sumber sistem yang betul.

Kamera IP yang menyokong standard ONVIF, apabila beroperasi pada rangkaian tempatan, disambungkan kepada kumpulan berbilang siaran khas dengan alamat 239.255.255.250. Terdapat protokol WS-Penemuan, yang membolehkan anda mengautomasikan carian untuk peranti pada rangkaian tempatan.

Antara muka grafik pengawal rumah pintar melaksanakan fungsi carian untuk kamera IP dalam PHP, yang sangat mudah apabila berinteraksi dengan perkhidmatan web melalui mesej XML. Apabila memilih item menu Peranti > Kamera IP > Mengimbas Algoritma untuk mencari kamera IP dilancarkan, memaparkan hasilnya dalam bentuk jadual:

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia
(klik pada gambar untuk membukanya dalam resolusi yang lebih tinggi)

Apabila anda menambah kamera pada pengawal, anda boleh menentukan tetapan mengikut mana ia akan berinteraksi dengan awan. Juga pada peringkat ini, ia secara automatik diberikan pengecam peranti unik, yang kemudiannya boleh dikenal pasti dengan mudah dalam awan.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Seterusnya, mesej dijana dalam format JSON yang mengandungi semua parameter kamera tambahan dan dihantar ke proses pelayan pengawal rumah pintar melalui arahan API RESTful, di mana parameter kamera dinyahkod dan disimpan dalam pangkalan data SQLite dalaman, dan juga digunakan untuk melancarkan benang pemprosesan berikut:

  1. mewujudkan sambungan RTSP untuk menerima aliran video dan audio;
  2. transkod audio daripada format G.711 mu-Law, G.711 A-Law, G.723, dsb. kepada format AAC;
  3. mentranskodkan strim video dalam format H.264 dan audio dalam format AAC ke dalam bekas FLV dan menghantarnya ke awan melalui protokol RTMP;
  4. mewujudkan sambungan dengan titik akhir pengesan gerakan kamera IP melalui protokol ONVIF dan mengundinya secara berkala;
  5. menjana imej pratonton lakaran kecil secara berkala dan menghantarnya ke awan melalui protokol MQTT;
  6. rakaman tempatan strim video dan audio dalam bentuk fail berasingan dalam format MP4 pada kad SD atau Flash pengawal rumah pintar.

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Untuk mewujudkan sambungan dengan kamera, transkod, memproses dan merakam aliran video dalam proses pelayan, fungsi daripada perpustakaan digunakan FFmpeg 4.1.0.

Dalam percubaan ujian prestasi, 3 kamera telah disambungkan kepada pengawal:

  1. HiWatch DS-I114W (resolusi - 720p, format mampatan - H.264, kadar bit - 1 Mb/s, bunyi G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (resolusi - 1080p, format mampatan - H.264, kadar bit - 1 Mb/s, tiada bunyi);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (peleraian - 1080p, format mampatan - H.264, kadar bit - 1.5 Mb/s, audio AAC).

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Ketiga-tiga strim dikeluarkan secara serentak ke awan, transkod audio dijalankan daripada hanya satu kamera, dan rakaman arkib tempatan dilumpuhkan. Muatan CPU adalah kira-kira 5%, penggunaan RAM ialah 32 MB (setiap proses), 56 MB (jumlah termasuk OS).

Oleh itu, kira-kira 20 - 30 kamera boleh disambungkan ke pengawal rumah pintar (bergantung pada resolusi dan kadar bit), yang cukup untuk sistem pengawasan video untuk kotej tiga tingkat atau gudang kecil. Untuk tugasan yang memerlukan prestasi yang lebih tinggi, anda boleh menggunakan nettop dengan pemproses Intel berbilang teras dan Linux Debian Sarge OS. Pengawal sedang menjalani operasi percubaan dan data tentang prestasinya akan dikemas kini.

Interaksi dengan awan

Rumah pintar berasaskan awan menyimpan data pengguna (ukuran video dan penderia) dalam awan. Seni bina storan awan akan dibincangkan dengan lebih terperinci dalam artikel seterusnya dalam siri kami. Sekarang mari kita bercakap tentang antara muka untuk menghantar mesej maklumat daripada pengawal rumah pintar ke awan.

Keadaan peranti yang disambungkan dan ukuran sensor dihantar melalui protokol MQTT, yang sering digunakan dalam projek Internet of Things kerana kesederhanaan dan kecekapan tenaganya. MQTT menggunakan model pelayan pelanggan, di mana pelanggan melanggan topik tertentu dalam broker dan menerbitkan mesej mereka. Broker menghantar mesej kepada semua pelanggan mengikut peraturan yang ditentukan oleh tahap QoS (Kualiti Perkhidmatan):

  • QoS 0 - maksimum sekali (tiada jaminan penghantaran);
  • QoS 1 - sekurang-kurangnya sekali (dengan pengesahan penghantaran);
  • QoS 2 - tepat sekali (dengan pengesahan penghantaran tambahan).

Dalam kes kami, kami menggunakan Nyamuk Gerhana. Nama topik ialah pengecam unik pengawal rumah pintar. Klien MQTT dalam proses pelayan melanggan topik ini dan menterjemahkan mesej JSON yang datang daripada pengurus mesej ke dalamnya. Sebaliknya, mesej daripada broker MQTT dimajukan olehnya kepada pengurus mesej, yang kemudiannya memultiplekskannya kepada pelanggannya dalam proses pelayan:

Rumah Pintar Awan. Bahagian 1: Pengawal dan penderia

Untuk menghantar mesej tentang status pengawal rumah pintar, mekanisme mesej yang disimpan digunakan mesej yang disimpan Protokol MQTT. Ini membolehkan anda memantau dengan betul masa penyambungan semula semasa kegagalan kuasa.

Pelanggan MQTT telah dibangunkan berdasarkan pelaksanaan perpustakaan Gerhana Paho dalam bahasa C++.

Strim media H.264 + AAC dihantar ke awan melalui protokol RTMP, di mana sekumpulan pelayan media bertanggungjawab untuk memproses dan menyimpannya. Untuk mengagihkan beban secara optimum dalam kluster dan memilih pelayan media yang paling sedikit dimuatkan, pengawal rumah pintar membuat permintaan awal kepada pengimbang beban awan dan hanya selepas itu menghantar strim media.

Kesimpulan

Artikel itu mengkaji satu pelaksanaan khusus pengawal rumah pintar berdasarkan mikrokomputer Raspberry Pi 3 B+, ​​yang boleh menerima, memproses maklumat dan peralatan kawalan melalui protokol Z-Wave, berinteraksi dengan kamera IP melalui protokol ONVIF, dan juga bertukar data dan arahan dengan perkhidmatan awan melalui protokol MQTT dan RTMP. Enjin logik pengeluaran telah dibangunkan berdasarkan perbandingan peraturan logik dan fakta yang dibentangkan dalam format JSON.

Pengawal rumah pintar kini sedang menjalani operasi percubaan di beberapa tapak di Moscow dan wilayah Moscow.

Versi pengawal seterusnya merancang untuk menyambungkan jenis peranti lain (RF, Bluetooth, WiFi, berwayar). Untuk kemudahan pengguna, prosedur untuk menyambungkan sensor dan kamera IP akan dipindahkan ke aplikasi mudah alih. Terdapat juga idea untuk mengoptimumkan kod proses pelayan dan mengalihkan perisian ke sistem pengendalian OpenWrt. Ini akan membolehkan anda menjimatkan pengawal berasingan dan memindahkan fungsi rumah pintar kepada penghala isi rumah biasa.

Sumber: www.habr.com

Tambah komen