Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Bu gün mikroelektronika, rabitə kanalları, internet texnologiyaları və Süni intellektin sürətli inkişafı sayəsində ağıllı evlər mövzusu getdikcə aktuallaşır. İnsan evi Daş dövründən bəri əhəmiyyətli dəyişikliklərə məruz qalmış və Sənaye İnqilabı 4.0 və Əşyaların İnterneti dövründə rahat, funksional və təhlükəsiz olmuşdur. Bir mənzili və ya bağ evini smartfon vasitəsilə dünyanın istənilən yerindən idarə olunan mürəkkəb informasiya sistemlərinə çevirən həllər bazara gəlir. Üstəlik, insan-maşın qarşılıqlı əlaqəsi üçün proqramlaşdırma dillərini bilmək artıq tələb olunmur - nitqin tanınması və sintez alqoritmləri sayəsində insan ağıllı evlə öz ana dilində danışır.

Hazırda bazarda olan bəzi ağıllı ev sistemləri bulud videomüşahidə sistemlərinin məntiqi inkişafıdır, onların tərtibatçıları təkcə monitorinq üçün deyil, həm də uzaq obyektlərin idarə edilməsi üçün hərtərəfli həllə ehtiyac olduğunu dərk etmişlər.

Diqqətiniz müəllif tərəfindən şəxsən hazırlanmış və istifadəyə verilmiş bulud ağıllı ev sisteminin bütün əsas komponentləri haqqında danışacaq üç məqalədən ibarət bir sıraya dəvət olunur. Birinci məqalə ağıllı evin daxilində quraşdırılmış terminal müştəri avadanlığına, ikincisi bulud saxlama və məlumatların emalı sisteminin arxitekturasına, nəhayət, üçüncüsü mobil telefonda sistemin idarə edilməsi üçün müştəri tətbiqinə həsr edilmişdir. və stasionar cihazlar.

Ağıllı ev avadanlığı

Birincisi, adi bir mənzildən, kottecdən və ya kottecdən ağıllı bir ev necə etmək barədə danışaq. Bunu etmək üçün, bir qayda olaraq, yaşayış yerində aşağıdakı avadanlıqların yerləşdirilməsi tələb olunur:

  1. xarici mühitin müxtəlif parametrlərini ölçən sensorlar;
  2. xarici obyektlərə təsir edən aktuatorlar;
  3. sensorların ölçülərinə və əsas məntiqə uyğun olaraq hesablamalar aparan və icraedicilərə əmrlər verən nəzarətçi.

Aşağıdakı şəkildə vanna otağında su sızması sensorları (1), yataq otağında temperatur (2) və işıqlandırma (3), mətbəxdə ağıllı rozetka (4) və video nəzarəti olan ağıllı evin diaqramı göstərilir. dəhlizdə kamera (5).

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Hazırda RF433, Z-Wave, ZigBee, Bluetooth və WiFi protokollarında işləyən simsiz sensorlar geniş istifadə olunur. Onların əsas üstünlükləri quraşdırma və istifadənin asanlığı, həmçinin aşağı qiymət və etibarlılıqdır. istehsalçılar öz cihazlarını kütləvi bazara çıxarmağa və adi istifadəçiyə təqdim etməyə çalışırlar.

Sensorlar və aktuatorlar, bir qayda olaraq, simsiz interfeys vasitəsilə ağıllı ev nəzarətçisinə (6) qoşulur - bütün bu cihazları vahid şəbəkədə birləşdirən və onlara nəzarət edən ixtisaslaşmış mikrokompüter.

Bununla belə, bəzi həllər eyni zamanda sensoru, aktuatoru və nəzarətçini birləşdirə bilər. Məsələn, ağıllı ştepsel cədvələ uyğun olaraq yandırmaq və ya söndürmək üçün proqramlaşdırıla bilər və bulud video-müşahidə kamerası hərəkət detektorunun siqnalında video yaza bilər. Ən sadə hallarda, ayrı bir nəzarətçi olmadan edə bilərsiniz, lakin bir çox ssenari ilə çevik bir sistem yaratmaq lazımdır.

Ağıllı ev nəzarətçisini qlobal şəbəkəyə qoşmaq üçün uzun müddətdir istənilən evdə tanış məişət texnikasına çevrilmiş adi İnternet marşrutlaşdırıcısından (7) istifadə etmək olar. Ağıllı ev nəzarətçisinin lehinə daha bir arqument var - internetə qoşulma kəsilərsə, o zaman smart ev bulud xidmətində deyil, nəzarətçinin daxilində saxlanılan məntiq bloku sayəsində normal işləməyə davam edəcək.

ağıllı ev nəzarətçisi

Bu məqalədə müzakirə olunan bulud ağıllı ev sistemi üçün nəzarətçi bir lövhəli mikrokompüter əsasında hazırlanmışdır. Raspberry Pi 3 modeli B+, 2018-ci ilin mart ayında buraxılmış və ağıllı ev tapşırıqları üçün kifayət qədər resurs və performansa malikdir. Buraya 53 bitlik ARMv64-A arxitekturasında, 8 GHz tezliyində dördnüvəli Cortex-A1.4 prosessoru, həmçinin 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 və USB 2.0 vasitəsilə işləyən gigabit Ethernet adapteri daxildir. avtobus.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Nəzarətçinin yığılması çox sadədir - mikrokompüter (1) plastik qutuda (2) quraşdırılır, sonra proqram təminatı ilə 8 GB microSD yaddaş kartı (3) və USB Z-Wave şəbəkə nəzarətçisi (4) quraşdırılır. uyğun yuvalar. Ağıllı ev nəzarətçisi 5V, 2.1A güc adapteri (5) və USB-mikro-USB kabeli (6) vasitəsilə elektrik şəbəkəsinə qoşulur. Hər bir nəzarətçi ilk başlanğıcda konfiqurasiya faylında yazılan və bulud ağıllı ev xidmətləri ilə qarşılıqlı əlaqədə olmaq üçün tələb olunan unikal identifikasiya nömrəsinə malikdir.

Ağıllı ev nəzarətçi proqramı bu məqalənin müəllifi tərəfindən əməliyyat sistemi əsasında hazırlanmışdır Linux Raspbian Stretch. O, aşağıdakı əsas alt sistemlərdən ibarətdir:

  • ağıllı ev avadanlığı və bulud ilə qarşılıqlı əlaqə üçün server prosesi;
  • nəzarətçinin konfiqurasiyasını və iş parametrlərini təyin etmək üçün qrafik istifadəçi interfeysi;
  • nəzarətçi konfiqurasiyasını saxlamaq üçün verilənlər bazası.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Verilənlər bazası ağıllı ev nəzarətçisi quraşdırılmış DBMS əsasında həyata keçirilir SQLite və sistem proqramı ilə SD kartdakı fayldır. O, nəzarətçi konfiqurasiya anbarı kimi xidmət edir - qoşulmuş avadanlıq və onun cari vəziyyəti haqqında məlumat, məntiqi istehsal qaydaları bloku, həmçinin indeksləşdirmə tələb edən məlumatlar (məsələn, yerli video arxiv fayl adları). Nəzarətçi yenidən işə salındıqda, bu məlumat saxlanılır ki, bu da elektrik enerjisi kəsildikdə nəzarətçinin funksionallığını bərpa etməyə imkan verir.

Qrafik interfeys Ağıllı ev nəzarətçisi PHP 7-də mikroçərçivədən istifadə etməklə hazırlanmışdır incə. Veb server proqramın işləməsinə cavabdehdir. lighttpd, yaxşı performans və aşağı resurs tələblərinə görə tez-tez quraşdırılmış cihazlarda istifadə olunur.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar
(böyük ayırdetmədə açmaq üçün şəklin üzərinə klikləyin)

GUI-nin əsas funksiyası ağıllı ev avadanlıqlarını (IP kameralar və sensorlar) nəzarətçiyə qoşmaqdır. Veb proqram nəzarətçinin və ona qoşulmuş cihazların konfiqurasiyasını və cari vəziyyətini SQLite verilənlər bazasından oxuyur. Nəzarətçinin konfiqurasiyasını dəyişdirmək üçün o, server prosesinin RESTful API vasitəsilə JSON formatında idarəetmə əmrlərini göndərir.

Server prosesi

Server prosesi - ağıllı evin əsasını təşkil edən informasiya proseslərinin avtomatlaşdırılması üzrə bütün əsas işləri yerinə yetirən əsas komponent: sensor məlumatların qəbulu və emalı, əsas məntiqdən asılı olaraq nəzarət hərəkətlərinin verilməsi. Server prosesinin məqsədi ağıllı ev avadanlığı ilə qarşılıqlı əlaqə yaratmaq, istehsal məntiqi qaydalarını yerinə yetirmək, qrafik interfeys və buluddan əmrləri qəbul etmək və emal etməkdir. Nəzərə alınan ağıllı ev nəzarətçisində server prosesi C++-da hazırlanmış və ayrıca bir xidmət kimi işə salınan çox yivli proqram kimi həyata keçirilir. systemd əməliyyat sistemi Linux Raspbian.

Server prosesinin əsas blokları bunlardır:

  1. Mesaj meneceri;
  2. IP kamera serveri;
  3. Z-Wave cihaz serveri;
  4. İstehsalın məntiqi qaydaları serveri;
  5. Nəzarətçinin konfiqurasiya verilənlər bazası və məntiqi qaydalar bloku;
  6. Qrafik interfeys ilə qarşılıqlı əlaqə üçün RESTful API serveri;
  7. Bulud ilə qarşılıqlı əlaqə üçün MQTT müştərisi.

Server proses blokları ayrı-ayrı axınlar kimi həyata keçirilir, onların arasında məlumatlar JSON formatında mesajlar şəklində ötürülür (və ya proses yaddaşında bu formatı təmsil edən məlumat strukturları).

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Server prosesinin əsas komponentidir mesaj meneceri, JSON mesajlarını server prosesindəki bütün bloklara yönləndirir. JSON mesajındakı məlumat sahələrinin növləri və onların ala biləcəyi dəyərlər cədvəldə verilmişdir:

cihaz növü
protokol
mesaj növü
cihaz vəziyyəti
komanda

kamera
onvif
sensorData
on
axın (Açıq/Söndürmə)

sensoru
zwave
komanda
off
qeyd (Açıq/Söndürmə)

efor
mqtt
businessLogicRule
axın (Açıq/Söndürmə)
cihaz (Əlavə/Sil)

businessLogic
konfiqurasiya məlumatları
qeyd (Açıq/Söndürmə)

Bluetooth
cihaz vəziyyəti
səhv

wifi

rf

Məsələn, kamera hərəkət detektorundan gələn mesaj belə görünür:

{
	"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"
}

İstehsal məntiqi

Dispetçerdən mesaj almaq və ya göndərmək üçün server proses bloku müəyyən tipli mesajlara abunə olur. Abunəlik növün istehsal məntiqi qaydasıdır "Əgər... onda...", JSON formatında təmsil olunur və server proses blokunun daxilində mesaj işləyicisinə keçid. Məsələn, IP kamera serverinin GUI və buluddan əmrlər alması üçün aşağıdakı qaydanı əlavə etməlisiniz:

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

bəndində göstərilən şərtlər varsa qabaqcıl (sol tərəfdə) qaydalar doğrudur, onda nəticəli (sağ tərəfdə) qaydalar və işləyici JSON mesajının mətninə giriş əldə edir. Öncəki JSON açar-dəyər cütlərini müqayisə edən məntiqi operatorları dəstəkləyir:

  1. "bərabər"ə bərabərdir;
  2. "bərabər deyil"ə bərabər deyil;
  3. "az"dan az;
  4. daha çox "daha böyük";
  5. "az_və ya bərabər"dən az və ya ona bərabər;
  6. "böyük_və ya_bərabər"dən böyük və ya ona bərabərdir.

Müqayisə nəticələrini Boolean cəbr operatorlarından istifadə etməklə əlaqələndirmək olar:

  1. Və "və";
  2. OR "və ya";
  3. "yox" DEYİL.

Beləliklə, operatorları və operandları polyak notasında yazmaqla çoxlu sayda parametrlərlə kifayət qədər mürəkkəb şərtlər yaratmaq olar.

JSON mesajlarına və JSON formatında istehsal qaydalarına əsaslanan eyni mexanizm istehsal məntiqi server blokunda bilikləri təmsil etmək və ağıllı ev sensorlarından sensor məlumatlarından istifadə edərək nəticə çıxarmaq üçün istifadə olunur.

İstifadəçi mobil proqramdan istifadə edərək, ağıllı evin işləməli olduğu ssenarilər yaradır. Misal üçün: "Əgər ön qapını açmaq üçün sensor işə salınıbsa, koridorda işığı yandırın". Tətbiq verilənlər bazasından sensorların (açma sensoru) və aktuatorların (ağıllı rozetka və ya smart lampa) identifikatorlarını oxuyur və ağıllı ev nəzarətçisinə göndərilən JSON formatında məntiqi qayda yaradır. Bu mexanizm dövrümüzün üçüncü məqaləsində daha ətraflı müzakirə ediləcək, burada ağıllı bir evi idarə etmək üçün müştəri tətbiqi haqqında danışacağıq.

Yuxarıda müzakirə olunan istehsal məntiqi mexanizmi kitabxanadan istifadə etməklə həyata keçirilir Sürətli JSON — C++ dilində JSON formatının SAX-parser. İstehsal qaydaları massivinin ardıcıl oxunması və təhlili əvvəlkilər daxilində məlumatların uyğunlaşdırılması funksiyasını həyata keçirməyi asanlaşdırır:

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);
        }
    }
}

Burada pFakt - JSON mesajından açar-dəyər cütlərini ehtiva edən struktur, m_Qaydalar — istehsal qaydalarının sətir massivi. Daxil olan mesajın və istehsal qaydasının uyğunluğu funksiyada həyata keçirilir reader.Parse(ruleStream, ruleHandler)Hara ruleHandler boolean operatorların və müqayisə operatorlarının məntiqini ehtiva edən obyektdir. sRuleId - unikal qayda identifikatoru, onun sayəsində qaydaları ağıllı ev nəzarətçisi verilənlər bazasında saxlamaq və redaktə etmək mümkündür. m_pActions - nəticə çıxaran massiv: qaydalar bazasından nəticələri ehtiva edən və abunəçi mövzularının onları emal edə bilməsi üçün mesaj menecerinə göndərilən JSON mesajları.

RapidJSON-un performansı funksiya ilə müqayisə edilə bilər strlen(), və minimum sistem resursu tələbləri bu kitabxanadan daxil edilmiş cihazlarda istifadə etməyə imkan verir. JSON formatında mesajların və məntiqi qaydaların istifadəsi ağıllı ev nəzarətçisinin bütün komponentləri arasında çevik məlumat mübadiləsi sistemini həyata keçirməyə imkan verir.

Sensorlar və aktuatorlar Z-Wave

Ağıllı evin əsas üstünlüyü ondan ibarətdir ki, o, müstəqil olaraq xarici mühitin müxtəlif parametrlərini ölçə və vəziyyətdən asılı olaraq faydalı funksiyaları yerinə yetirə bilər. Bunun üçün sensorlar və aktuatorlar ağıllı ev nəzarətçisinə qoşulur. Cari versiyada bunlar protokol altında işləyən simsiz cihazlardır Z-dalğa xüsusi tezlikdə 869 MHz Rusiya üçün. İşlərinə görə onlar əhatə dairəsini artırmaq üçün siqnal təkrarlayıcıların olduğu bir mesh şəbəkəsinə birləşdirilir. Qurğular həmçinin xüsusi enerjiyə qənaət rejiminə malikdirlər - onlar vaxtlarının çox hissəsini yuxu rejimində keçirirlər və məlumatı yalnız vəziyyətləri dəyişdikdə göndərirlər ki, bu da quraşdırılmış batareyanın ömrünü xeyli uzada bilər.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Bu gün bazarda kifayət qədər müxtəlif Z-Wave cihazları var. Nümunə olaraq bir neçəsini nəzərdən keçirək:

  1. Zipato PAN16 smart rozetkası aşağıdakı parametrləri ölçə bilər: elektrik enerjisi istehlakı (kVt/saat), güc (Vt), elektrik şəbəkəsində gərginlik (V) və cərəyan (A). O, həmçinin quraşdırılmış açara malikdir, onun köməyi ilə qoşulmuş elektrik cihazını idarə edə bilərsiniz;
  2. Neo Coolcam sızma sensoru uzaqdan zondun kontaktlarını bağlayaraq tökülmüş mayenin mövcudluğunu aşkar edir;
  3. Zipato PH-PSG01 tüstü detektoru tüstü hissəcikləri qaz analizatorunun kamerasına daxil olduqda işə salınır;
  4. Neo Coolcam hərəkət sensoru insan bədəninin infraqırmızı radiasiyasını təhlil edir. Əlavə olaraq, işıq sensoru (Lx) var;
  5. Multisensor Philio PST02-A temperaturu (°C), işıqlandırmanı (%), qapının açılmasını, otaqda insanın olmasını ölçür;
  6. Şəbəkə nəzarətçisi Z-Wave USB Stick ZME E UZB1, sensorların qoşulduğu.

Cihazların və nəzarətçinin eyni tezlikdə işləməsi çox vacibdir, əks halda onlar, sadə bir şəkildə, əlaqə zamanı bir-birlərini görməyəcəklər. Bir Z-Wave şəbəkə nəzarətçisinə 232-yə qədər cihaz qoşula bilər ki, bu da bir mənzil və ya bir ölkə evi üçün kifayətdir. Şəbəkənin əhatə dairəsini qapalı məkanda genişləndirmək üçün siqnal təkrarlayıcı kimi smart rozetkadan istifadə etmək olar.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Əvvəlki paraqrafda müzakirə edilən ağıllı ev nəzarətçi serveri prosesində Z-Wave serveri Z-Wave cihazları ilə qarşılıqlı əlaqəyə cavabdehdir. Sensorlardan məlumat almaq üçün kitabxanadan istifadə edir OpenZWave Z-Wave şəbəkə USB nəzarətçi ilə qarşılıqlı əlaqə üçün interfeysi təmin edən və müxtəlif sensorlar və aktuatorlarla işləyən C++ dilində. Sensor tərəfindən ölçülən ətraf mühit parametrinin dəyəri Z-Wave serveri tərəfindən JSON mesajı kimi yazılır:

{
	"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"
}

Daha sonra o, server prosesinin mesaj menecerinə göndərilir ki, abunəçi başlıqları onu qəbul edə bilsin. Əsas abunəçi, məntiq qaydalarının öncüllərindəki mesaj sahəsinin dəyərlərinə uyğun gələn istehsal məntiqi serveridir. Nəzarət əmrlərini ehtiva edən nəticələr mesaj menecerinə və oradan onları deşifrə edən və Z-Wave şəbəkə USB nəzarətçisinə göndərən Z-Wave serverinə göndərilir. Sonra onlar xarici mühitdəki obyektlərin vəziyyətini dəyişdirən icraedici qurğuya daxil olurlar və ağıllı ev beləliklə faydalı işlər görür.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar
(böyük ayırdetmədə açmaq üçün şəklin üzərinə klikləyin)

Z-Wave cihazlarının qoşulması ağıllı ev nəzarətçisinin qrafik interfeysində həyata keçirilir. Bunu etmək üçün cihazların siyahısı olan səhifəyə keçin və "Əlavə et" düyməsini basın. RESTful API interfeysi vasitəsilə əlavə etmə əmri server prosesinə daxil olur və daha sonra mesaj meneceri tərəfindən Z-Wave USB şəbəkə nəzarətçisini cihazlar əlavə etmək üçün xüsusi rejimə keçirən Z-Wave serverinə göndərilir. Bundan sonra, Z-Wave cihazında xidmət düyməsinin bir sıra sürətli basışlarını (3 saniyə ərzində 1,5 dəfə basmaq) etməlisiniz. USB kontroller cihazı şəbəkəyə qoşur və onun haqqında məlumatı Z-Wave serverinə göndərir. Bu da öz növbəsində SQLite verilənlər bazasında yeni cihazın parametrləri ilə yeni rekord yaradır. Göstərilən vaxt intervalından sonra qrafik interfeys Z-Wave cihaz siyahısı səhifəsinə qayıdır, verilənlər bazasından məlumatları oxuyur və siyahıda yeni cihazı göstərir. Eyni zamanda, hər bir cihaz istehsal nəticələrinin qaydalarında və buludda işləyərkən istifadə olunan özünəməxsus identifikatorunu alır. Bu alqoritmin işi UML diaqramında göstərilmişdir:

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar
(böyük ayırdetmədə açmaq üçün şəklin üzərinə klikləyin)

IP kameraların qoşulması

Bu məqalədə müzakirə olunan buludlu ağıllı ev sistemi, bir neçə ildir bazarda olan və Rusiyada bir çox qurğuya malik olan müəllif tərəfindən hazırlanmış bulud video nəzarət sisteminin təkmilləşdirilməsidir.

Bulud video nəzarət sistemləri üçün kəskin problemlərdən biri inteqrasiya oluna bilən avadanlıqların məhdud seçimidir. Buluda qoşulmağa cavabdeh olan proqram videokamera daxilində quraşdırılıb ki, bu da onun aparat doldurulmasına - prosessor və boş yaddaşın miqdarına dərhal ciddi tələblər qoyur. Bu, əsasən bulud nəzarət kameralarının adi IP kameralarla müqayisədə daha yüksək qiymətini izah edir. Bundan əlavə, kameranın fayl sisteminə və bütün lazımi inkişaf alətlərinə çıxış əldə etmək üçün CCTV kamera şirkətləri ilə uzun danışıqlar mərhələsi tələb olunur.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Digər tərəfdən, bütün müasir İP kameralar digər avadanlıqlarla (xüsusən də video yazıcılar) qarşılıqlı əlaqə üçün standart protokollara malikdir. Beləliklə, standart protokol vasitəsilə birləşdirən və video axınlarını İP kameralardan buluda yayımlayan ayrıca nəzarətçinin istifadəsi bulud videomüşahidə sistemləri üçün əhəmiyyətli rəqabət üstünlükləri təmin edir. Üstəlik, əgər müştəri artıq sadə İP kameralara əsaslanan videomüşahidə sistemini quraşdırıbsa, onda onu genişləndirmək və tam hüquqlu buludlu ağıllı evə çevirmək mümkün olur.

İndi istisnasız olaraq bütün IP kamera istehsalçıları tərəfindən dəstəklənən IP video nəzarət sistemləri üçün ən populyar protokoldur. ONVIF profil Sspesifikasiyalar Veb Xidmətlərinin Təsviri Dilində mövcud olan wsdl. Alətlər dəstindəki yardım proqramlarından istifadə gSOAP IP kameralarla işləyən xidmətlərin mənbə kodunu yaratmaq mümkündür:

$ 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

Nəticədə biz C++ dilində “*.h” başlığı və mənbə “*.cpp” faylları toplusunu əldə edirik ki, onlar birbaşa proqrama və ya ayrıca kitabxanaya yerləşdirilə və GCC kompilyatorundan istifadə etməklə tərtib edilə bilər. Bir çox funksiyaya görə kod böyükdür və əlavə optimallaşdırma tələb edir. Raspberry Pi 3 model B+ mikrokompüteri bu kodu yerinə yetirmək üçün kifayət qədər performansa malikdir, lakin kodu başqa platformaya köçürmək zərurəti yaranarsa, düzgün prosessor arxitekturasını və sistem resurslarını seçmək lazımdır.

ONVIF standartını dəstəkləyən IP kameralar, yerli şəbəkədə işləyərkən, ünvanı olan xüsusi multicast qrupuna qoşulur. 239.255.255.250. Protokol var WS-Kəşf, bu, yerli şəbəkədə cihazların axtarışını avtomatlaşdırmağa imkan verir.

Ağıllı ev nəzarətçisinin qrafik interfeysində PHP dilində IP kameraların axtarışı funksiyası həyata keçirilir ki, bu da XML mesajları vasitəsilə veb-xidmətlərlə qarşılıqlı əlaqə zamanı çox rahatdır. Menyu elementlərini seçərkən Cihazlar > IP Kameralar > Skan Nəticəni cədvəl şəklində göstərən IP kameraların axtarışı üçün alqoritm işə salındı:

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar
(böyük ayırdetmədə açmaq üçün şəklin üzərinə klikləyin)

Nəzarətçiyə kamera əlavə edərkən, onun buludla qarşılıqlı əlaqə quracağı parametrləri təyin edə bilərsiniz. Həmçinin bu mərhələdə ona avtomatik olaraq unikal cihaz identifikatoru təyin edilir ki, onun vasitəsilə gələcəkdə buludda asanlıqla müəyyən edilə bilər.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Sonra, əlavə edilmiş kameranın bütün parametrlərini ehtiva edən JSON formatında mesaj yaradılır və RESTful API əmri vasitəsilə ağıllı ev nəzarətçisinin server prosesinə göndərilir, burada kamera parametrləri deşifrə edilir və daxili SQLite verilənlər bazasında saxlanılır və həmçinin aşağıdakı emal iplərini işə salmaq üçün istifadə olunur:

  1. video və audio axınları qəbul etmək üçün RTSP bağlantısının yaradılması;
  2. G.711 mu-Law, G.711 A-Law, G.723 və s.-dən audio transkodlaşdırma. AAC formatına;
  3. H.264 formatında video axınlarının və AAC formatında audionun FLV konteynerinə çevrilməsi və RTMP protokolu vasitəsilə buluda ötürülməsi;
  4. ONVIF protokolundan istifadə edərək İP kameranın hərəkət detektorunun son nöqtəsi ilə əlaqə yaratmaq və vaxtaşırı sorğu keçirmək;
  5. vaxtaşırı miniatür önizləmə şəklini (preview) yaratmaq və MQTT protokolundan istifadə edərək onu buludlara göndərmək;
  6. Ağıllı ev nəzarətçisinin SD və ya Flash kartında MP4 formatında ayrı-ayrı fayllar kimi video və audio axınlarının yerli qeydi.

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Kameralarla əlaqə yaratmaq, server prosesində video axınlarını kodlaşdırmaq, emal etmək və qeyd etmək üçün kitabxananın funksiyalarından istifadə olunur. FFmpeg 4.1.0.

Performans testi təcrübəsində nəzarətçiyə 3 kamera qoşuldu:

  1. HiWatch DS-I114W (qətnamə - 720p, sıxılma formatı - H.264, bit sürəti - 1 Mb / s, səs G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (qətnamə - 1080p, sıxılma formatı - H.264, bit sürəti - 1 Mb / s, səs yoxdur);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (qətnamə - 1080p, sıxılma formatı - H.264, bit sürəti - 1.5 Mb/s, AAC audio).

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Hər üç axın eyni vaxtda buludda buraxıldı, audio yalnız bir kameradan kodlaşdırıldı və yerli arxiv qeydi deaktiv edildi. CPU yükü təxminən 5%, RAM istifadəsi 32 MB (bir proses), 56 MB (ƏS ilə cəmi) idi.

Beləliklə, ağıllı ev nəzarətçisinə təxminən 20 - 30 kamera qoşula bilər (qətnamə və bit sürətindən asılı olaraq), bu üç mərtəbəli kottecin və ya kiçik bir anbarın video nəzarət sistemi üçün kifayətdir. Yüksək performans tələb olunan tapşırıqlarda çox nüvəli Intel prosessoru və Linux Debian Sarge ilə nettopdan istifadə edə bilərsiniz. Hazırda nəzarətçi sınaq əməliyyatından keçir və onun işinin icrası ilə bağlı məlumatlar dəqiqləşdiriləcək.

Buludla qarşılıqlı əlaqə

Cloud smart home istifadəçi məlumatlarını (video və sensor ölçmələri) buludda saxlayır. Bulud saxlama arxitekturası seriyamızın növbəti məqaləsində daha ətraflı müzakirə olunacaq. İndi ağıllı ev nəzarətçisindən buluda məlumat mesajlarının ötürülməsi üçün interfeys haqqında danışaq.

Qoşulmuş cihazların vəziyyəti və sensor ölçmələri protokol vasitəsilə ötürülür MQTT, sadəliyi və enerji səmərəliliyi səbəbindən Əşyaların İnterneti layihələrində tez-tez istifadə olunur. MQTT müştərilərin broker daxilində müəyyən mövzulara abunə olduqları və mesajlarını dərc etdikləri müştəri-server modelindən istifadə edir. Broker QoS (Xidmət Keyfiyyəti) səviyyəsi ilə müəyyən edilmiş qaydalara uyğun olaraq bütün abunəçilərə mesaj göndərir:

  • QoS 0 - maksimum bir dəfə (çatdırılma zəmanəti yoxdur);
  • QoS 1 - ən azı bir dəfə (çatdırılma təsdiqi ilə);
  • QoS 2 - tam bir dəfə (çatdırılmanın əlavə təsdiqi ilə).

Bizim vəziyyətimizdə MQTT brokeridir Eclipse Ağcaqanad. Mövzu adı ağıllı ev nəzarətçisinin unikal identifikatorudur. Server prosesindəki MQTT müştərisi bu mövzuya abunə olur və mesaj dispetçerindən gələn JSON mesajlarını ona tərcümə edir. Və əksinə, MQTT brokerindən gələn mesajlar mesaj menecerinə ötürülür, sonra isə onları server prosesində öz abunəçilərinə multipleksləşdirir:

Bulud Ağıllı Ev. 1-ci hissə: Nəzarətçi və sensorlar

Ağıllı ev nəzarətçisinin statusu haqqında mesaj göndərmək üçün saxlanılan mesajların mexanizmindən istifadə edilir. saxlanılan mesajlar MQTT protokolu. Bu, elektrik enerjisinin kəsilməsi halında yenidən qoşulma anlarını düzgün izləməyə imkan verir.

MQTT müştərisi kitabxananın tətbiqi əsasında hazırlanmışdır Tutulma Paho C++ dilində.

H.264 + AAC media axınları RTMP protokolu vasitəsilə buluda göndərilir, burada media serverlərinin çoxluğu onların işlənməsi və saxlanmasına cavabdehdir. Klasterdə optimal yük paylanması və ən az yüklənmiş media serverinin seçilməsi üçün ağıllı ev nəzarətçisi bulud yükü balanslaşdırıcısına ilkin sorğu edir və yalnız bundan sonra media axını göndərir.

Nəticə

Məqalədə Raspberry Pi 3 B+ mikrokompüterinə əsaslanan, Z-Wave protokolundan istifadə edərək məlumatı qəbul edə, emal edə və avadanlığı idarə edə, ONVIF protokolundan istifadə edərək İP kameralarla qarşılıqlı əlaqə qura bilən, həmçinin məlumat mübadiləsi apara bilən ağıllı ev nəzarətçisinin xüsusi tətbiqi nəzərdən keçirilir. MQTT və RTMP protokolları vasitəsilə bulud xidməti ilə əmrlər. JSON formatında təqdim olunan məntiqi qaydaların və faktların müqayisəsi əsasında istehsal məntiqi mühərriki hazırlanmışdır.

İndi ağıllı ev nəzarətçisi Moskva və Moskva vilayətində bir neçə obyektdə sınaq əməliyyatından keçir.

Nəzarətçinin növbəti versiyasında digər növ cihazların (RF, Bluetooth, WiFi, simli) birləşdirilməsi planlaşdırılır. İstifadəçilərin rahatlığı üçün sensorlar və İP kameraların qoşulması proseduru mobil proqrama köçürüləcək. Server proses kodunun optimallaşdırılması və proqram təminatının əməliyyat sisteminə köçürülməsi üçün də ideyalar var openwrt. Bu, ayrı bir nəzarətçiyə qənaət edəcək və ağıllı evin funksionallığını adi məişət marşrutlaşdırıcısına ötürəcək.

Mənbə: www.habr.com

Добавить комментарий