Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Masiku ano, chifukwa chakukula kwachangu kwa ma microelectronics, njira zoyankhulirana, matekinoloje a pa intaneti ndi Artificial Intelligence, mutu wa nyumba zanzeru ukukulirakulira. Nyumba za anthu zasintha kwambiri kuyambira nthawi ya Stone Age komanso nthawi ya Industrial Revolution 4.0 ndi intaneti ya Zinthu, zakhala zomasuka, zogwira ntchito komanso zotetezeka. Mayankho akubwera kumsika omwe amatembenuza nyumba kapena nyumba ya dziko kukhala machitidwe ovuta azidziwitso olamulidwa kuchokera kulikonse padziko lapansi pogwiritsa ntchito foni yamakono. Komanso, kulumikizana kwa makina a anthu sikufunanso kudziwa zilankhulo zamapulogalamu - chifukwa cha kuzindikira kwamawu ndi ma aligorivimu kaphatikizidwe, munthu amalankhula ndi nyumba yanzeru m'chinenero chawo.

Machitidwe ena anzeru apanyumba omwe ali pamsika pano ndi chitukuko chomveka cha machitidwe owonetsetsa mavidiyo a mitambo, omwe okonzawo adazindikira kufunikira kwa njira yothetsera vutoli osati kuyang'anira kokha, komanso kuyang'anira zinthu zakutali.

Tikukuwonetsani mndandanda wankhani zitatu, zomwe zingakuuzeni za zigawo zonse zazikulu za pulogalamu yanyumba yamtambo, yopangidwa ndi wolemba ndikuyika ntchito. Nkhani yoyamba imaperekedwa ku zida zamakasitomala zomwe zimayikidwa mkati mwa nyumba yanzeru, yachiwiri ndi kamangidwe ka malo osungira mitambo ndi makina opangira ma data, ndipo pomaliza, yachitatu kwa kasitomala ntchito yoyang'anira dongosolo pazida zam'manja ndi zoyima.

Zida zanzeru zakunyumba

Choyamba, tiyeni tikambirane za momwe tingapangire nyumba yabwino kuchokera ku nyumba wamba, dacha kapena kanyumba. Kuti muchite izi, monga lamulo, ndikofunikira kuyika zida zotsatirazi m'nyumba:

  1. masensa omwe amayesa magawo osiyanasiyana a chilengedwe;
  2. actuators akuchita zinthu zakunja;
  3. wowongolera yemwe amawerengera molingana ndi miyeso ya sensa ndi malingaliro ophatikizidwa, ndikupereka malamulo kwa ma actuators.

Chithunzi chotsatirachi chikuwonetsa chithunzi cha nyumba yanzeru, yomwe ili ndi masensa amadzimadzi (1) m'bafa, kutentha (2) ndi kuyatsa (3) m'chipinda chogona, soketi yanzeru (4) kukhitchini ndi chipinda chochezera. kamera yowonera kanema (5) mumsewu.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Pakadali pano, masensa opanda zingwe omwe amagwiritsa ntchito ma protocol a RF433, Z-Wave, ZigBee, Bluetooth ndi WiFi amagwiritsidwa ntchito kwambiri. Ubwino wawo waukulu ndikusavuta kukhazikitsa ndikugwiritsa ntchito, komanso mtengo wotsika komanso kudalirika, chifukwa ... Opanga akuyesetsa kubweretsa zida zawo kumsika waukulu ndikupangitsa kuti zizitha kupezeka kwa ogwiritsa ntchito wamba.

Masensa ndi ma actuators, monga lamulo, amalumikizidwa kudzera pa mawonekedwe opanda zingwe kwa wowongolera nyumba wanzeru (6) - makina apakompyuta apadera omwe amaphatikiza zida zonsezi kukhala netiweki imodzi ndikuwongolera.

Komabe, mayankho ena amatha kuphatikiza sensor, actuator ndi controller nthawi yomweyo. Mwachitsanzo, pulagi yanzeru imatha kukonzedwa kuti iyatse kapena kuzimitsa malinga ndi ndandanda, ndipo kamera yowonera makanema amtambo imatha kujambula kanema pogwiritsa ntchito siginecha yoyendera. Muzochitika zosavuta, mungathe kuchita popanda wolamulira wosiyana, koma kupanga dongosolo losinthika ndi zochitika zambiri, ndikofunikira.

Kuti mulumikize wowongolera nyumba wanzeru ku netiweki yapadziko lonse lapansi, rauta yapaintaneti yokhazikika (7) ingagwiritsidwe ntchito, yomwe kwa nthawi yayitali yakhala chida chodziwika bwino m'nyumba iliyonse. Apa pali mkangano wina wokomera wowongolera nyumba wanzeru - ngati kulumikizidwa kwa intaneti kwatayika, nyumba yanzeru ipitiliza kugwira ntchito monga mwachizolowezi chifukwa cha block block yosungidwa mkati mwa wowongolera, osati muutumiki wamtambo.

Smart home controller

Wowongolera wa mtambo wanzeru wakunyumba womwe wafotokozedwa m'nkhaniyi wapangidwa kutengera kachipangizo kakang'ono ka bolodi limodzi Raspberry Pi 3 mtundu wa B+, yomwe idatulutsidwa mu Marichi 2018 ndipo ili ndi zida zokwanira komanso magwiridwe antchito anzeru zapakhomo. Mulinso purosesa ya quad-core Cortex-A53 yotengera kamangidwe ka 64-bit ARMv8-A, yokhala pa 1.4 GHz, komanso 1 GB ya RAM, Wi-Fi 802.11ac, Bluetooth 4.2 ndi adaputala ya gigabit Ethernet yomwe ikugwira ntchito kudzera pa USB 2.0 .

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Kusonkhanitsa wowongolera ndikosavuta - makina ang'onoang'ono (1) amayikidwa mu pulasitiki (2), ndiye 8 GB memory card mu microSD format (3) ndi USB Z-Wave network controller (4) imayikidwa mkati. mipata yolingana. Wowongolera kunyumba wanzeru amalumikizidwa ndi magetsi kudzera pa 5V, 2.1A adapter yamagetsi (5) ndi chingwe cha USB - yaying'ono-USB (6). Woyang'anira aliyense ali ndi nambala yapadera yozindikiritsa, yomwe imalembedwa mufayilo yosinthira pomwe idakhazikitsidwa koyamba ndipo ndikofunikira kulumikizana ndi mautumiki apanyumba amtambo.

Pulogalamu yanzeru yoyang'anira nyumba idapangidwa ndi wolemba nkhaniyi potengera makina ogwiritsira ntchito Linux Raspbian Stretch. Zili ndi ma subsystems awa:

  • njira ya seva yolumikizirana ndi zida zanzeru zakunyumba ndi mtambo;
  • mawonekedwe ogwiritsa ntchito poyika masinthidwe ndi magawo ogwiritsira ntchito owongolera;
  • database yosungirako kasinthidwe ka owongolera.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Nawonsomba smart home controller ikugwiritsidwa ntchito kutengera DBMS yophatikizidwa SQLite ndipo ndi wapamwamba pa Sd khadi ndi dongosolo mapulogalamu. Imakhala ngati malo osungirako kasinthidwe ka olamulira - zambiri za zida zolumikizidwa ndi momwe zilili pano, chipika cha malamulo omveka bwino opangira, komanso chidziwitso chomwe chimafunikira indexing (mwachitsanzo, mayina a mafayilo ankhokwe yamavidiyo akumaloko). Wowongolerayo akayambiranso, chidziwitsochi chimasungidwa, ndikupangitsa kuti zitheke kubwezeretsa wowongolera pakagwa mphamvu.

Zojambulajambula Wowongolera kunyumba wanzeru wopangidwa mu PHP 7 pogwiritsa ntchito microframework ang'ono. Seva yapaintaneti ili ndi udindo woyendetsa pulogalamuyi. lighttpd, yomwe nthawi zambiri imagwiritsidwa ntchito pazida zophatikizika chifukwa chakuchita bwino komanso zofunikira zochepa.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa
(dinani pachithunzichi kuti mutsegule kwambiri)

Ntchito yayikulu ya mawonekedwe ojambulira ndikulumikiza zida zanzeru zapanyumba (makamera owunikira a IP ndi masensa) kwa wowongolera. Pulogalamu yapaintaneti imawerengera masinthidwe ndi momwe zinthu zilili panopa za wowongolera ndi zida zolumikizidwa nazo kuchokera ku database ya SQLite. Kuti musinthe kasinthidwe ka owongolera, imatumiza malamulo owongolera mumtundu wa JSON kudzera mu mawonekedwe a RESTful API a seva.

Njira ya seva

Njira ya seva - gawo lofunikira lomwe limagwira ntchito yonse yayikulu pakudzipangira zidziwitso zomwe zimapanga maziko a nyumba yanzeru: kulandira ndi kukonza zidziwitso zamalingaliro, kupereka zowongolera kutengera malingaliro ophatikizidwa. Cholinga cha seva ndikulumikizana ndi zida zanzeru zapanyumba, kuchita malamulo omveka opangira, kulandira ndi kukonza malamulo kuchokera pazithunzi ndi mtambo. Njira ya seva mu olamulira anzeru akunyumba yomwe ikuganiziridwa imayendetsedwa ngati pulogalamu yamitundu yambiri yopangidwa mu C ++ ndikukhazikitsidwa ngati ntchito yosiyana. systemd opareting'i sisitimu Linux Raspbian.

Mipiringidzo yayikulu ya machitidwe a seva ndi:

  1. Woyang'anira Mauthenga;
  2. IP kamera seva;
  3. Z-Wave chipangizo seva;
  4. Seva ya kupanga malamulo zomveka;
  5. Nawonsotha wa kasinthidwe wolamulira ndi chipika cha malamulo zomveka;
  6. Seva ya RESTful API yolumikizana ndi mawonekedwe azithunzi;
  7. MQTT kasitomala polumikizana ndi mtambo.

Ma block process a seva amakhazikitsidwa ngati ulusi wosiyana, zambiri zomwe zimasamutsidwa ngati mauthenga mumtundu wa JSON (kapena mawonekedwe a data omwe akuyimira mtundu uwu mu memory memory).

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Chigawo chachikulu cha ndondomeko ya seva ndi meseji woyang'anira, yomwe imatumiza mauthenga a JSON ku ma block onse a seva. Mitundu yazidziwitso za uthenga wa JSON ndi zomwe angavomereze zalembedwa patebulo:

chipangizoType
Protocol
messageType
deviceState
lamulo

kamera
onvif
sensorData
on
kukhamukira (Kuyatsa/Kuzimitsa)

sensa
mve
lamulo
pa
kujambula (Kuyatsa/Kuzimitsa)

woyambitsa
mqtt
businessLogicRule
kukhamukira (Kuyatsa/Kuzimitsa)
evice (Onjezani/Chotsani)

BusinessLogic
configurationData
kujambula (Kuyatsa/Kuzimitsa)

bulutufi
deviceState
cholakwa

Wifi

rf

Mwachitsanzo, uthenga wochokera ku chojambulira cha kamera umawoneka motere:

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

Kupanga logic

Kuti mulandire kapena kutumiza uthenga kuchokera kwa dispatcher, chipika cha seva chimalembetsa mauthenga amtundu wina. Kulembetsa ndi lamulo lomveka bwino la mtunduwo "Ngati ... ndiye ...", yoperekedwa mumtundu wa JSON, ndi ulalo kwa wothandizira uthenga mkati mwa chipika cha seva. Mwachitsanzo, kuti mulole seva ya IP kamera kuti ilandire malamulo kuchokera ku GUI ndi mtambo, muyenera kuwonjezera lamulo ili:

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

Ngati zikhalidwe zomwe zafotokozedwa mu wotsatira (mbali yakumanzere) malamulo ndi owona, ndiye zakhutitsidwa zotsatira (mbali yakumanja) amalamulira, ndipo wogwirizira amapeza mwayi wofikira ku uthenga wa JSON. Choyimiracho chimathandizira ogwiritsa ntchito momveka bwino omwe amafanizira awiriawiri amtengo wapatali a JSON:

  1. zofanana "zofanana";
  2. osafanana ndi "osati_ofanana";
  3. zochepa "zochepa";
  4. zambiri "zazikulu";
  5. zochepa kuposa kapena zofanana ndi "zochepa_kapena_zofanana";
  6. wamkulu kuposa kapena wofanana ndi "greater_or_equal".

Zotsatira zofananitsa zitha kulumikizidwa wina ndi mnzake pogwiritsa ntchito ma opareta a Boolean algebra:

  1. Ndipo "ndi"
  2. OR "kapena";
  3. OSATI "ayi".

Chifukwa chake, polemba opareshoni ndi ma operands mu Polish notation, mutha kupanga zinthu zovuta kwambiri ndi magawo ambiri.

Njira yomweyi, yotengera mauthenga a JSON ndi malamulo opangira mu mtundu wa JSON, imagwiritsidwa ntchito mu block logic server block kuyimira chidziwitso ndikuchita malingaliro omveka pogwiritsa ntchito chidziwitso chochokera ku masensa anzeru akunyumba.

Pogwiritsa ntchito foni yam'manja, wogwiritsa ntchito amapanga zochitika malinga ndi zomwe nyumba yanzeru iyenera kugwira ntchito. Mwachitsanzo: "Ngati sensa yotsegulira khomo lakutsogolo yayambika, ndiye yatsani nyali mumsewu". Pulogalamuyi imawerengera zozindikiritsa za masensa (sensor yotsegulira) ndi ma actuators (smart socket kapena smart nyale) kuchokera ku database ndikupanga lamulo lomveka bwino mumtundu wa JSON, womwe umatumizidwa kwa wowongolera kunyumba wanzeru. Makinawa adzakambidwa mwatsatanetsatane m'nkhani yachitatu ya mndandanda wathu, pomwe tikambirana za pulogalamu yamakasitomala yoyang'anira nyumba yanzeru.

Njira yopangira zida zomwe takambirana pamwambapa ikugwiritsidwa ntchito pogwiritsa ntchito laibulale RapidJSON - SAX parser ya mtundu wa JSON mu C ++. Kuwerenga motsatizana ndi kugawa malamulo angapo opanga kumakupatsani mwayi wogwiritsa ntchito kufananitsa deta mkati mwa zoyambira:

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

ndi pZowona - kapangidwe kamene kali ndi mawiri awiri amtengo wapatali kuchokera ku uthenga wa JSON, m_Malamulo - Mndandanda wa malamulo opangira. Kuyerekeza kwa uthenga womwe ukubwera ndi lamulo la kupanga likuchitika mu ntchitoyi reader.Parse(ruleStream, ruleHandler)kumene ruleHandler ndi chinthu chomwe chili ndi malingaliro a Boolean ndi ofananitsa. sRuleId - chizindikiritso cha malamulo apadera, chifukwa ndizotheka kusunga ndikusintha malamulo mkati mwankhokwe yanzeru yowongolera nyumba. m_pZochita - mndandanda wokhala ndi zotsatira zomveka bwino: Mauthenga a JSON omwe ali ndi zotsatira kuchokera ku lamulo ndikutumizidwa kwa woyang'anira mauthenga kuti olembetsa azitha kuwakonza.

Kuchita kwa RapidJSON ndikufanana ndi ntchitoyi strlen (), ndi zofunika zochepa dongosolo gwero amafuna kugwiritsa ntchito laibulale mu zipangizo ophatikizidwa. Kugwiritsa ntchito mauthenga ndi malamulo omveka mumtundu wa JSON kumakupatsani mwayi wogwiritsa ntchito njira yosinthira yosinthira zidziwitso pakati pa zigawo zonse za woyang'anira nyumba wanzeru.

Z-Wave Sensors ndi Actuators

Ubwino waukulu wa nyumba yanzeru ndikuti imatha kuyeza magawo osiyanasiyana akunja ndikuchita ntchito zothandiza kutengera momwe zinthu ziliri. Kuti muchite izi, masensa ndi ma actuators amalumikizidwa ndi woyang'anira nyumba wanzeru. Mu mtundu wamakono, izi ndi zida zopanda zingwe zomwe zimagwiritsa ntchito protocol Z-Wave pafupipafupi mwapadera 869 MHz Za Russia. Kuti agwire ntchito, amaphatikizidwa kukhala maukonde a mauna, omwe amakhala ndi zobwerezabwereza kuti awonjezere malo ofikira. Zipangizozi zimakhalanso ndi njira yapadera yopulumutsira mphamvu - nthawi zambiri amathera nthawi yogona ndikutumiza chidziwitso pokhapokha pamene dziko lawo likusintha, zomwe zingathe kuwonjezera moyo wa batri yomangidwa.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Tsopano mutha kupeza zida zambiri za Z-Wave pamsika. Tiyeni tione zitsanzo zingapo:

  1. Soketi yanzeru ya Zipato PAN16 imatha kuyeza magawo otsatirawa: kugwiritsa ntchito magetsi (kWh), mphamvu (W), voliyumu (V) ndi pano (A) mumaneti amagetsi. Ilinso ndi chosinthira chokhazikika chomwe mutha kuwongolera chida cholumikizidwa chamagetsi;
  2. Neo Coolcam leak sensor imazindikira kupezeka kwa madzi otayika potseka zolumikizana ndi kafukufuku wakutali;
  3. Sensa ya utsi ya Zipato PH-PSG01 imayambitsidwa pamene tinthu ta utsi timalowa m'chipinda chowunikira mpweya;
  4. Neo Coolcam motion sensor imasanthula ma radiation a infrared m'thupi la munthu. Kuphatikiza apo pali sensor yowala (Lx);
  5. Multisensor Philio PST02-A amayesa kutentha (Β°C), kuwala (%), kutsegula chitseko, kukhalapo kwa munthu m'chipindamo;
  6. Z-Wave USB Stick ZME E UZB1 network controller, komwe masensa amalumikizidwa.

Ndikofunikira kwambiri kuti zida ndi wowongolera azigwira ntchito pafupipafupi, apo ayi sangawonane wina ndi mnzake panthawi yolumikizana. Kufikira zida za 232 zitha kulumikizidwa ndi woyang'anira maukonde a Z-Wave, omwe ndi okwanira m'nyumba kapena nyumba yakumidzi. Kuti muwonjezere malo opangira ma netiweki m'nyumba, soketi yanzeru ingagwiritsidwe ntchito ngati chobwereza chizindikiro.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Mu njira ya seva yoyang'anira nyumba yanzeru yomwe takambirana m'ndime yapitayi, seva ya Z-Wave ili ndi udindo wolumikizana ndi zida za Z-Wave. Imagwiritsa ntchito laibulale kuti ilandire zambiri kuchokera ku masensa OpenZWave mu C ++, yomwe imapereka mawonekedwe olumikizirana ndi Z-Wave network USB controller ndipo imagwira ntchito ndi masensa osiyanasiyana ndi ma actuators. Mtengo wa gawo la chilengedwe loyezedwa ndi sensa limalembedwa ndi seva ya Z-Wave ngati uthenga wa 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"
}

Kenako imatumizidwa kwa manejala wa uthenga wa seva kuti olembetsa alandire. Wolembetsa wamkulu ndi seva yopangira ma logic, yomwe imafanana ndi zomwe zili mugawo lauthenga muzotsatira za malamulo omveka. Zotsatira zomwe zili ndi malamulo owongolera zimatumizidwa kwa woyang'anira uthenga ndipo kuchokera pamenepo pitani ku seva ya Z-Wave, yomwe imawamasulira ndikutumiza kwa wowongolera wa Z-Wave network USB. Kenako amalowa mu actuator, yomwe imasintha mawonekedwe a zinthu zachilengedwe, ndipo nyumba yanzeru imagwira ntchito yothandiza.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa
(dinani pachithunzichi kuti mutsegule kwambiri)

Kulumikiza zida za Z-Wave kumachitika pamawonekedwe azithunzi za wowongolera nyumba wanzeru. Kuti muchite izi, pitani patsamba lomwe lili ndi mndandanda wa zida ndikudina batani la "Add". Lamulo lowonjezera kudzera pa RESTful API mawonekedwe amalowa mu ndondomeko ya seva ndipo amatumizidwa ndi woyang'anira uthenga ku seva ya Z-Wave, yomwe imayika Z-Wave network USB controller mu njira yapadera yowonjezera zipangizo. Kenako, pa chipangizo cha Z-Wave muyenera kupanga makina osindikizira mwachangu (makina atatu mkati mwa masekondi 3) kuchokera pa batani lautumiki. Wowongolera wa USB amalumikiza chipangizocho ku netiweki ndikutumiza zambiri za izo ku seva ya Z-Wave. Izi, zimapanganso cholowa chatsopano mu database ya SQLite ndi magawo a chipangizo chatsopano. Pambuyo pa nthawi yodziwika, mawonekedwe owonetsera amabwerera ku tsamba lazipangizo za Z-Wave, amawerenga zambiri kuchokera ku database ndikuwonetsa chipangizo chatsopano pamndandanda. Chida chilichonse chimalandira chizindikiritso chake chapadera, chomwe chimagwiritsidwa ntchito popanga malamulo opangira komanso pogwira ntchito mumtambo. Kugwira ntchito kwa algorithm iyi kukuwonetsedwa pazithunzi za UML:

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa
(dinani pachithunzichi kuti mutsegule kwambiri)

Kulumikiza makamera a IP

Dongosolo lanyumba lamtambo lamtambo lomwe lafotokozedwa m'nkhaniyi ndikukweza makina owonera makanema amtambo, omwe adapangidwanso ndi wolemba, omwe akhala pamsika kwa zaka zingapo ndipo ali ndi makhazikitsidwe ambiri ku Russia.

Kwa machitidwe owonetsetsa mavidiyo amtambo, imodzi mwazovuta kwambiri ndi kusankha kochepa kwa zipangizo zomwe kugwirizanitsa kungathe kuchitidwa. Mapulogalamu omwe amalumikizana ndi mtambo amaikidwa mkati mwa kamera ya kanema, yomwe nthawi yomweyo imayika zofunikira pa hardware yake - purosesa ndi kuchuluka kwa kukumbukira kwaulere. Izi makamaka zikufotokozera mtengo wapamwamba wa makamera amtambo a CCTV poyerekeza ndi makamera anthawi zonse a IP. Kuphatikiza apo, gawo lalitali la zokambirana ndi makampani opanga makamera a CCTV akufunika kuti apeze mwayi wofikira pamafayilo a kamera ndi zida zonse zofunika zakukulitsa.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Kumbali ina, makamera onse amakono a IP ali ndi ma protocol ogwirizana ndi zida zina (makamaka zojambulira makanema). Chifukwa chake, kugwiritsa ntchito kowongolera kosiyana komwe kumalumikizana kudzera pa protocol yokhazikika ndikuwulutsa makanema apakanema kuchokera ku makamera a IP kupita kumtambo kumapereka mwayi wopikisana nawo pamakina owonera makanema amtambo. Kuphatikiza apo, ngati kasitomala wayika kale makina owonera makanema pogwiritsa ntchito makamera osavuta a IP, ndiye kuti zimakhala zotheka kukulitsa ndikusintha kukhala nyumba yanzeru yamtambo yodzaza ndi mitambo.

Protocol yotchuka kwambiri yamakina owonera makanema a IP, omwe tsopano amathandizidwa ndi opanga makamera onse a IP popanda kupatula, ndi Mbiri ya ONVIF S, omwe zofotokozera zake zimapezeka muchilankhulo chofotokozera za mautumiki apa intaneti Mtengo WSDL. Kugwiritsa ntchito zida zapakhomo gSOAP Ndizotheka kupanga magwero azinthu zomwe zimagwira ntchito ndi makamera a 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

Chotsatira chake, timapeza seti ya mutu wa "*.h" ndi gwero la "*.cpp" mafayilo mu C ++, omwe angathe kuikidwa mwachindunji mu pulogalamu kapena laibulale yosiyana ndikupangidwa pogwiritsa ntchito GCC compiler. Chifukwa cha ntchito zambiri, code ndi yaikulu ndipo imafuna kukhathamiritsa kwina. Raspberry Pi 3 model B+ microcomputer ili ndi ntchito yokwanira kuti igwiritse ntchito code iyi, koma ngati pakufunika kuyika kachidindo ku nsanja ina, m'pofunika kusankha kamangidwe koyenera ka purosesa ndi zipangizo zamakina.

Makamera a IP omwe amathandizira muyezo wa ONVIF, akamagwira ntchito pa netiweki yakomweko, amalumikizidwa ndi gulu lapadera la multicast lomwe lili ndi adilesi. 239.255.255.250. Pali protocol Kupezeka kwa WS, zomwe zimakulolani kuti musinthe kusaka kwa zida pamaneti am'deralo.

Mawonekedwe azithunzi za owongolera kunyumba anzeru amagwiritsa ntchito kusaka makamera a IP mu PHP, yomwe ndi yabwino kwambiri mukamachita mawebusayiti kudzera pa mauthenga a XML. Posankha zinthu menyu Zipangizo> Makamera a IP> Kusanthula Algorithm yofufuzira makamera a IP imayambitsidwa, kuwonetsa zotsatira zake ngati tebulo:

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa
(dinani pachithunzichi kuti mutsegule kwambiri)

Mukawonjezera kamera kwa wowongolera, mutha kufotokozera zosintha zomwe zingagwirizane ndi mtambo. Komanso panthawiyi, imapatsidwa chizindikiritso chapadera cha chipangizo, chomwe chimatha kudziwika mosavuta mumtambo.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Kenako, uthenga umapangidwa mumtundu wa JSON wokhala ndi magawo onse a kamera yowonjezeredwa ndikutumizidwa ku seva ya wolamulira wanzeru wakunyumba kudzera pa lamulo la RESTful API, pomwe magawo a kamera amasinthidwa ndikusungidwa mu nkhokwe yamkati ya SQLite, ndipo ali. adagwiritsidwanso ntchito kuyambitsa ulusi wotsatirawu:

  1. kukhazikitsa kulumikizana kwa RTSP kuti mulandire makanema ndi makanema;
  2. transcoding audio from G.711 mu-Law, G.711 A-Law, G.723, etc. formats. ku mtundu wa AAC;
  3. ma transcoding mavidiyo mumtundu wa H.264 ndi ma audio mu mtundu wa AAC mu chidebe cha FLV ndikutumiza kumtambo kudzera pa protocol ya RTMP;
  4. kukhazikitsa kugwirizana ndi mapeto a IP camera motion detector kudzera mu protocol ya ONVIF ndikuyiyika nthawi ndi nthawi;
  5. nthawi ndi nthawi kupanga chithunzithunzi chowoneratu ndikutumiza kumtambo kudzera pa protocol ya MQTT;
  6. kujambula kwanuko kwamakanema ndi makanema amawu ngati mafayilo osiyana mumtundu wa MP4 pa SD kapena Flash khadi ya wowongolera kunyumba wanzeru.

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Kukhazikitsa kulumikizana ndi makamera, ma transcode, sinthani ndikujambulitsa mitsinje yamakanema mumayendedwe a seva, ntchito zochokera ku library zimagwiritsidwa ntchito. FFmpeg 4.1.0.

Pakuyesa kuyesa magwiridwe antchito, makamera atatu adalumikizidwa ndi wowongolera:

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

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Mitsinje yonse itatu idatulutsidwa nthawi imodzi pamtambo, ma transcoding amamveka kuchokera ku kamera imodzi yokha, ndipo kujambula zakale kudayimitsidwa. Kulemera kwa CPU kunali pafupifupi 5%, kugwiritsa ntchito RAM kunali 32 MB (pa ndondomeko), 56 MB (yonse kuphatikizapo OS).

Chifukwa chake, makamera pafupifupi 20 - 30 amatha kulumikizidwa ndi woyang'anira nyumba wanzeru (malingana ndi kusamvana ndi bitrate), zomwe ndi zokwanira kuti pakhale kanema wowonera kanyumba kakang'ono ka nsanjika zitatu kapena nyumba yosungiramo zinthu zazing'ono. Pantchito zomwe zimafunikira magwiridwe antchito kwambiri, mutha kugwiritsa ntchito nettop yokhala ndi purosesa ya Intel yamitundu yambiri ndi Linux Debian Sarge OS. Woyang'anira pakali pano akuyesa kuyesa, ndipo deta yokhudzana ndi momwe amagwirira ntchito idzasinthidwa.

Kuyanjana ndi mtambo

Nyumba yanzeru yozikidwa pamtambo imasunga zidziwitso za ogwiritsa ntchito (miyezo yamavidiyo ndi masensa) mumtambo. Zomangamanga za kusungirako mitambo zidzakambidwa mwatsatanetsatane m'nkhani yotsatira mndandanda wathu. Tsopano tiyeni tiyankhule za mawonekedwe otumizira mauthenga kuchokera kwa wolamulira kunyumba wanzeru kupita kumtambo.

Mayiko a zida zolumikizidwa ndi kuyeza kwa sensa amafalitsidwa kudzera mu protocol MQTT, yomwe imagwiritsidwa ntchito nthawi zambiri pamapulojekiti a intaneti a Zinthu chifukwa cha kuphweka kwake komanso kugwiritsa ntchito mphamvu zamagetsi. MQTT imagwiritsa ntchito mtundu wa kasitomala-seva, pomwe makasitomala amalembetsa mitu yeniyeni mkati mwa broker ndikusindikiza mauthenga awo. Wogulitsayo amatumiza mauthenga kwa onse olembetsa malinga ndi malamulo omwe amakhazikitsidwa ndi mulingo wa QoS (Quality of Service):

  • QoS 0 - pazipita kamodzi (palibe chitsimikizo chobweretsa);
  • QoS 1 - osachepera kamodzi (ndi chitsimikiziro chobweretsa);
  • QoS 2 - ndendende kamodzi (ndi chitsimikizo chowonjezera).

M'malo athu, timagwiritsa ntchito Udzudzu wa Eclipse. Dzina la mutuwo ndi chizindikiritso chapadera cha woyang'anira nyumba wanzeru. Makasitomala a MQTT mkati mwa seva amalembetsa pamutuwu ndikumasulira mauthenga a JSON kuchokera kwa woyang'anira uthenga kulowa. Mosiyana ndi zimenezi, mauthenga ochokera kwa MQTT broker amatumizidwa kwa woyang'anira mauthenga, omwe amawachulukitsa kwa olembetsa ake mkati mwa seva:

Cloud Smart Home. Gawo 1: Wowongolera ndi masensa

Kuti mutumize mauthenga okhudza momwe woyang'anira nyumba aliri, njira ya mauthenga osungidwa imagwiritsidwa ntchito mauthenga osungidwa Pulogalamu ya MQTT. Izi zimakuthandizani kuti muzitha kuyang'anira bwino nthawi yolumikiziranso nthawi yamagetsi.

Makasitomala a MQTT adapangidwa kutengera kukhazikitsidwa kwa library Eclipse Paho m'chinenero cha C ++.

H.264 + AAC media mitsinje imatumizidwa kumtambo kudzera pa protocol ya RTMP, pomwe gulu la ma seva atolankhani ali ndi udindo wowakonza ndikusunga. Kuti mugawire bwino katunduyo mgululi ndikusankha seva yosakanizidwa pang'ono, woyang'anira nyumba wanzeru amapanga pempho loyambirira kwa mtambo wowongolera mtambo ndipo pambuyo pake amatumiza media.

Pomaliza

Nkhaniyi idawunikiranso kukhazikitsidwa kwapadera kwa wowongolera nyumba wanzeru kutengera Raspberry Pi 3 B + microcomputer, yomwe imatha kulandira, kukonza zidziwitso ndi zida zowongolera kudzera pa Z-Wave protocol, kulumikizana ndi makamera a IP kudzera pa protocol ya ONVIF, komanso kusinthanitsa deta amalamulira ndi mtambo.service kudzera MQTT ndi RTMP protocol. Injini yopangira logic yapangidwa kutengera kuyerekeza kwa malamulo omveka ndi mfundo zoperekedwa mumtundu wa JSON.

Woyang'anira nyumba wanzeru pakali pano akuyesa kuyesa malo angapo ku Moscow ndi dera la Moscow.

Mtundu wotsatira wa wowongolera ukukonzekera kulumikiza zida zina (RF, Bluetooth, WiFi, waya). Kuti ogwiritsa ntchito athe kugwiritsa ntchito, njira yolumikizira masensa ndi makamera a IP idzasamutsidwa ku pulogalamu yam'manja. Palinso malingaliro okongoletsa ma code process a seva ndikuyika pulogalamuyo kumakina ogwiritsira ntchito OpenWrt. Izi zikuthandizani kuti musunge pa chowongolera chosiyana ndikusintha magwiridwe antchito a nyumba yanzeru kupita ku rauta wamba wamba.

Source: www.habr.com

Kuwonjezera ndemanga