Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Heddiw, diolch i ddatblygiad cyflym microelectroneg, sianeli cyfathrebu, technolegau Rhyngrwyd a Deallusrwydd Artiffisial, mae pwnc cartrefi smart yn dod yn fwy a mwy perthnasol. Mae tai dynol wedi cael newidiadau sylweddol ers Oes y Cerrig ac yn oes y Chwyldro Diwydiannol 4.0 a Rhyngrwyd Pethau, mae wedi dod yn gyfforddus, yn ymarferol ac yn ddiogel. Mae atebion yn dod i'r farchnad sy'n troi fflat neu dŷ gwledig yn systemau gwybodaeth cymhleth a reolir o unrhyw le yn y byd gan ddefnyddio ffôn clyfar. Ar ben hynny, nid yw rhyngweithio dynol-peiriant bellach yn gofyn am wybodaeth o ieithoedd rhaglennu - diolch i algorithmau adnabod lleferydd a synthesis, mae person yn siarad â chartref craff yn eu hiaith frodorol.

Mae rhai systemau cartref craff sydd ar y farchnad ar hyn o bryd yn ddatblygiad rhesymegol o systemau gwyliadwriaeth fideo cwmwl, a sylweddolodd datblygwyr yr angen am ateb cynhwysfawr nid yn unig ar gyfer monitro, ond hefyd ar gyfer rheoli gwrthrychau anghysbell.

Rydym yn cyflwyno i'ch sylw gyfres o dair erthygl, a fydd yn dweud wrthych am holl brif gydrannau system cartref smart cwmwl, a ddatblygwyd yn bersonol gan yr awdur a'i roi ar waith. Mae'r erthygl gyntaf wedi'i neilltuo i'r offer terfynell cleient sydd wedi'i osod y tu mewn i gartref craff, yr ail i bensaernïaeth y system storio cwmwl a phrosesu data, ac yn olaf, y trydydd i'r cais cleient ar gyfer rheoli'r system ar ddyfeisiau symudol a llonydd.

Offer cartref craff

Yn gyntaf, gadewch i ni siarad am sut i wneud cartref smart allan o fflat, dacha neu fwthyn cyffredin. I wneud hyn, fel rheol, mae angen gosod yr offer canlynol yn y cartref:

  1. synwyryddion sy'n mesur paramedrau amgylcheddol amrywiol;
  2. actiwadyddion yn gweithredu ar wrthrychau allanol;
  3. rheolydd sy'n gwneud cyfrifiadau yn unol â mesuriadau synhwyrydd a rhesymeg fewnosodedig, ac yn rhoi gorchmynion i actiwadyddion.

Mae'r ffigur canlynol yn dangos diagram o gartref craff, lle mae synwyryddion dŵr yn gollwng (1) yn yr ystafell ymolchi, tymheredd (2) a goleuo (3) yn yr ystafell wely, soced smart (4) yn y gegin a camera gwyliadwriaeth fideo (5) yn y cyntedd.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Ar hyn o bryd, defnyddir synwyryddion diwifr sy'n gweithredu gan ddefnyddio'r protocolau RF433, Z-Wave, ZigBee, Bluetooth a WiFi yn eang. Eu prif fanteision yw rhwyddineb gosod a defnyddio, yn ogystal â chost isel a dibynadwyedd, oherwydd Mae gweithgynhyrchwyr yn ymdrechu i ddod â'u dyfeisiau i'r farchnad dorfol a'u gwneud yn hygyrch i'r defnyddiwr cyffredin.

Mae synwyryddion ac actiwadyddion, fel rheol, wedi'u cysylltu trwy ryngwyneb diwifr â rheolydd cartref craff (6) - microgyfrifiadur arbenigol sy'n cyfuno'r holl ddyfeisiau hyn yn un rhwydwaith ac yn eu rheoli.

Fodd bynnag, gall rhai atebion gyfuno synhwyrydd, actuator a rheolydd ar yr un pryd. Er enghraifft, gellir rhaglennu plwg smart i'w droi ymlaen neu i ffwrdd yn unol ag amserlen, a gall camera gwyliadwriaeth fideo cwmwl recordio fideo yn seiliedig ar signal synhwyrydd symud. Yn yr achosion symlaf, gallwch chi wneud heb reolwr ar wahân, ond i greu system hyblyg gyda llawer o senarios, mae angen.

Er mwyn cysylltu'r rheolydd cartref craff â'r rhwydwaith byd-eang, gellir defnyddio llwybrydd Rhyngrwyd rheolaidd (7), sydd wedi dod yn offer cartref cyffredin mewn unrhyw gartref ers amser maith. Yma mae dadl arall o blaid rheolwr cartref smart - os bydd y cysylltiad â'r Rhyngrwyd yn cael ei golli, bydd y cartref smart yn parhau i weithredu fel arfer diolch i'r bloc rhesymeg sydd wedi'i storio y tu mewn i'r rheolydd, ac nid yn y gwasanaeth cwmwl.

Rheolydd cartref smart

Mae'r rheolydd ar gyfer y system cartref smart cwmwl a drafodir yn yr erthygl hon yn cael ei ddatblygu yn seiliedig ar ficrogyfrifiadur un bwrdd Raspberry Pi 3 model B+, a ryddhawyd ym mis Mawrth 2018 ac mae ganddo ddigon o adnoddau a pherfformiad ar gyfer tasgau cartref smart. Mae'n cynnwys prosesydd Cortex-A53 cwad-craidd yn seiliedig ar bensaernïaeth ARMv64-A 8-did, wedi'i glocio ar 1.4 GHz, yn ogystal ag 1 GB o RAM, Wi-Fi 802.11ac, Bluetooth 4.2 ac addasydd Ethernet gigabit sy'n gweithredu trwy USB 2.0 .

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Mae cydosod y rheolydd yn syml iawn - mae'r microgyfrifiadur (1) wedi'i osod mewn cas plastig (2), yna mae cerdyn cof 8 GB mewn fformat microSD gyda meddalwedd (3) a rheolydd rhwydwaith USB Z-Wave (4) yn cael eu gosod yn y slotiau cyfatebol. Mae'r rheolydd cartref craff wedi'i gysylltu â'r cyflenwad pŵer trwy addasydd pŵer 5V, 2.1A (5) a chebl USB - micro-USB (6). Mae gan bob rheolydd rif adnabod unigryw, sydd wedi'i ysgrifennu yn y ffeil ffurfweddu pan gaiff ei lansio gyntaf ac sy'n angenrheidiol i ryngweithio â gwasanaethau cartref smart cwmwl.

Datblygwyd y meddalwedd rheolydd cartref craff gan awdur yr erthygl hon yn seiliedig ar y system weithredu Linux Raspbian Stretch. Mae'n cynnwys y prif is-systemau canlynol:

  • proses gweinydd ar gyfer rhyngweithio ag offer cartref smart a'r cwmwl;
  • rhyngwyneb defnyddiwr graffigol ar gyfer gosod cyfluniad a pharamedrau gweithredu'r rheolydd;
  • cronfa ddata ar gyfer storio cyfluniad rheolydd.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Cronfa Ddata gweithredir rheolydd cartref craff yn seiliedig ar DBMS wedi'i fewnosod SQLite ac mae'n ffeil ar gerdyn SD gyda meddalwedd system. Mae'n storfa ar gyfer cyfluniad y rheolydd - gwybodaeth am yr offer cysylltiedig a'i gyflwr presennol, bloc o reolau cynhyrchu rhesymegol, yn ogystal â gwybodaeth sy'n gofyn am fynegeio (er enghraifft, enwau ffeiliau archif fideo lleol). Pan fydd y rheolydd yn cael ei ailgychwyn, mae'r wybodaeth hon yn cael ei chadw, gan ei gwneud hi'n bosibl adfer y rheolydd pe bai pŵer yn methu.

Rhyngwyneb graffigol rheolwr cartref smart a ddatblygwyd yn PHP 7 gan ddefnyddio microfframwaith Slim. Y gweinydd gwe sy'n gyfrifol am redeg y rhaglen. lighttpd, a ddefnyddir yn aml mewn dyfeisiau gwreiddio oherwydd ei berfformiad da a gofynion adnoddau isel.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion
(cliciwch ar y llun i'w agor mewn cydraniad uwch)

Prif swyddogaeth y rhyngwyneb graffigol yw cysylltu offer cartref craff (camerâu gwyliadwriaeth IP a synwyryddion) â'r rheolydd. Mae'r rhaglen we yn darllen ffurfweddiad a chyflwr cyfredol y rheolydd a'r dyfeisiau sy'n gysylltiedig ag ef o gronfa ddata SQLite. I newid cyfluniad y rheolydd, mae'n anfon gorchmynion rheoli mewn fformat JSON trwy ryngwyneb API RESTful y broses gweinydd.

Proses gweinydd

Proses gweinydd - elfen allweddol sy'n cyflawni'r holl brif waith ar awtomeiddio'r prosesau gwybodaeth sy'n sail i gartref craff: derbyn a phrosesu data synhwyraidd, cyhoeddi camau rheoli yn dibynnu ar y rhesymeg wreiddio. Pwrpas y broses gweinydd yw rhyngweithio ag offer cartref craff, gweithredu rheolau rhesymegol cynhyrchu, derbyn a phrosesu gorchmynion o'r rhyngwyneb graffigol a'r cwmwl. Mae'r broses gweinydd yn y rheolydd cartref craff dan sylw yn cael ei gweithredu fel cymhwysiad aml-edau a ddatblygwyd yn C ++ a'i lansio fel gwasanaeth ar wahân systemd system weithredu Linux Raspbian.

Prif flociau proses y gweinydd yw:

  1. Rheolwr Neges;
  2. gweinydd camera IP;
  3. gweinydd dyfais Z-Wave;
  4. Gweinydd rheolau rhesymegol cynhyrchu;
  5. Cronfa ddata o gyfluniad y rheolydd a bloc o reolau rhesymegol;
  6. Gweinydd API RESTful ar gyfer rhyngweithio â'r rhyngwyneb graffigol;
  7. Cleient MQTT ar gyfer rhyngweithio â'r cwmwl.

Mae blociau proses gweinydd yn cael eu gweithredu fel edafedd ar wahân, a throsglwyddir gwybodaeth rhyngddynt ar ffurf negeseuon mewn fformat JSON (neu strwythurau data sy'n cynrychioli'r fformat hwn yng nghof y broses).

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Prif gydran y broses gweinydd yw rheolwr neges, sy'n llwybro negeseuon JSON i holl flociau proses y gweinydd. Mae'r mathau o feysydd gwybodaeth neges JSON a'r gwerthoedd y gallant eu derbyn wedi'u rhestru yn y tabl:

dyfais Math
protocol
math neges
dyfaisGwladwriaeth
gorchymyn

camera
onvif
synhwyryddData
on
ffrydio (ymlaen / i ffwrdd)

synhwyrydd
zwave
gorchymyn
oddi ar
recordiad (ymlaen/i ffwrdd)

effaithydd
mqtt
businessLogicRule
ffrydio (ymlaen / i ffwrdd)
dyfais (Ychwanegu/Dileu)

busnesLogic
ffurfweddiadData
recordiad (ymlaen/i ffwrdd)

Bluetooth
dyfaisGwladwriaeth
gwall

wifi

rf

Er enghraifft, mae neges gan synhwyrydd symud camera yn edrych fel hyn:

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

Rhesymeg cynhyrchu

I dderbyn neu anfon neges gan yr anfonwr, mae bloc proses y gweinydd yn tanysgrifio i negeseuon o fath penodol. Mae tanysgrifiad yn rheol resymegol cynhyrchu o'r math “Os... yna….”, wedi'i gyflwyno mewn fformat JSON, a dolen i'r triniwr neges y tu mewn i'r bloc proses gweinydd. Er enghraifft, er mwyn caniatáu i'r gweinydd camera IP dderbyn gorchmynion gan y GUI a'r cwmwl, mae angen ichi ychwanegu'r rheol ganlynol:

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

Os bydd yr amodau a nodir yn rhagflaenol (ochr chwith) mae'r rheolau yn wir, yna mae'n fodlon canlyniadol rheolau (ochr dde), ac mae'r triniwr yn cael mynediad i gorff y neges JSON. Mae'r rhagflaenydd yn cefnogi gweithredwyr rhesymegol sy'n cymharu parau gwerth bysell JSON:

  1. yn hafal i "equal";
  2. ddim yn hafal i "not_equal";
  3. llai "llai";
  4. mwy "mwy";
  5. llai na neu'n hafal i "less_or_equal";
  6. yn fwy na neu'n hafal i "greater_or_equal".

Gellir cysylltu canlyniadau’r gymhariaeth â’i gilydd gan ddefnyddio gweithredwyr algebra Boole:

  1. Ac "a"
  2. NEU "neu";
  3. NID "ddim".

Felly, trwy ysgrifennu gweithredwyr a operands mewn nodiant Pwyleg, gallwch greu amodau eithaf cymhleth gyda nifer fawr o baramedrau.

Defnyddir yr un mecanwaith yn union, yn seiliedig ar negeseuon JSON a rheolau cynhyrchu mewn fformat JSON, yn y bloc gweinydd rhesymeg cynhyrchu i gynrychioli gwybodaeth a chynnal casgliad rhesymegol gan ddefnyddio data synhwyraidd o synwyryddion cartref craff.

Gan ddefnyddio cymhwysiad symudol, mae'r defnyddiwr yn creu senarios y dylai'r cartref craff weithredu yn unol â nhw. Er enghraifft: “Os yw'r synhwyrydd ar gyfer agor y drws ffrynt yn cael ei ysgogi, yna trowch y golau ymlaen yn y cyntedd”. Mae'r cymhwysiad yn darllen dynodwyr synwyryddion (synhwyrydd agor) ac actuators (soced smart neu lamp smart) o'r gronfa ddata ac yn cynhyrchu rheol resymegol ar ffurf JSON, a anfonir at y rheolwr cartref craff. Bydd y mecanwaith hwn yn cael ei drafod yn fanylach yn nhrydedd erthygl ein cyfres, lle byddwn yn siarad am gais y cleient ar gyfer rheoli cartref craff.

Mae'r mecanwaith rhesymeg cynhyrchu a drafodir uchod yn cael ei weithredu gan ddefnyddio'r llyfrgell CyflymJSON — Parser SAX ar gyfer fformat JSON yn C ++. Mae darllen dilyniannol a dosrannu amrywiaeth o reolau cynhyrchu yn caniatáu ichi weithredu'r swyddogaeth cymharu data y tu mewn i ragflaenwyr yn hawdd:

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

Yma p Ffaith — strwythur sy'n cynnwys parau gwerth allweddol o neges JSON, m_Rheolau — amrywiaeth llinynnol o reolau cynhyrchu. Mae cymhariaeth y neges sy'n dod i mewn a'r rheol cynhyrchu yn cael ei wneud yn y swyddogaeth darllenydd.Pars(ruleStream,rheolwr rheol)lle Rheolydd yn wrthrych sy'n cynnwys rhesymeg Boole a gweithredwyr cymharu. sRuleId - dynodwr rheol unigryw, y mae'n bosibl storio a golygu rheolau y tu mewn i gronfa ddata rheolwyr cartref craff iddo. m_pGweithredoedd — amrywiaeth gyda chanlyniadau casgliad rhesymegol: Negeseuon JSON yn cynnwys canlyniadau o sylfaen y rheolau ac yn cael eu hanfon ymhellach at y rheolwr negeseuon fel y gall edafedd y tanysgrifiwr eu prosesu.

Mae perfformiad RapidJSON yn debyg i'r swyddogaeth strlen (), ac mae'r gofynion adnoddau system lleiaf yn caniatáu defnyddio'r llyfrgell hon mewn dyfeisiau wedi'u mewnosod. Mae'r defnydd o negeseuon a rheolau rhesymegol ar ffurf JSON yn caniatáu ichi weithredu system hyblyg o gyfnewid gwybodaeth rhwng holl gydrannau'r rheolydd cartref craff.

Synwyryddion Z-Wave ac Actuators

Prif fantais cartref craff yw y gall fesur paramedrau amrywiol yr amgylchedd allanol yn annibynnol a chyflawni swyddogaethau defnyddiol yn dibynnu ar y sefyllfa. I wneud hyn, mae synwyryddion ac actiwadyddion wedi'u cysylltu â'r rheolydd cartref craff. Yn y fersiwn gyfredol, dyfeisiau diwifr yw'r rhain sy'n gweithredu gan ddefnyddio'r protocol Z-Ton ar amlder a neilltuwyd yn arbennig 869 MHz Ar gyfer Rwsia. Er mwyn gweithredu, fe'u cyfunir yn rhwydwaith rhwyll, sy'n cynnwys ailadroddwyr signal i gynyddu'r ardal ddarlledu. Mae gan y dyfeisiau fodd arbed ynni arbennig hefyd - maen nhw'n treulio'r rhan fwyaf o'r amser yn y modd cysgu ac yn anfon gwybodaeth dim ond pan fydd eu cyflwr yn newid, a all ymestyn bywyd y batri adeiledig yn sylweddol.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Nawr gallwch chi ddod o hyd i nifer eithaf mawr o wahanol ddyfeisiau Z-Wave ar y farchnad. Gadewch i ni edrych ar ychydig o enghreifftiau:

  1. Gall soced smart Zipato PAN16 fesur y paramedrau canlynol: defnydd trydan (kWh), pŵer (W), foltedd (V) a cherrynt (A) yn y rhwydwaith trydanol. Mae ganddo hefyd switsh adeiledig y gallwch reoli'r offer trydanol cysylltiedig ag ef;
  2. Mae synhwyrydd gollwng Neo Coolcam yn canfod presenoldeb hylif wedi'i ollwng trwy gau cysylltiadau'r stiliwr o bell;
  3. Mae synhwyrydd mwg Zipato PH-PSG01 yn cael ei sbarduno pan fydd gronynnau mwg yn mynd i mewn i'r siambr dadansoddwr nwy;
  4. Mae synhwyrydd mudiant Neo Coolcam yn dadansoddi ymbelydredd isgoch y corff dynol. Yn ogystal mae synhwyrydd golau (Lx);
  5. Mae amlsynhwyrydd Philio PST02-A yn mesur tymheredd (°C), golau (%), agoriad drws, presenoldeb person yn yr ystafell;
  6. Rheolydd rhwydwaith Z-Wave USB Stick ZME E UZB1, y mae synwyryddion wedi'u cysylltu ag ef.

Mae'n bwysig iawn bod y dyfeisiau a'r rheolydd yn gweithredu ar yr un amledd, fel arall ni fyddant yn gweld ei gilydd ar hyn o bryd o gysylltiad. Gellir cysylltu hyd at 232 o ddyfeisiau ag un rheolydd rhwydwaith Z-Wave, sy'n ddigon ar gyfer fflat neu blasty gwledig. Er mwyn ehangu ardal sylw'r rhwydwaith dan do, gellir defnyddio soced smart fel ailadroddydd signal.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Yn y broses gweinyddwr cartref smart a drafodwyd yn y paragraff blaenorol, mae'r gweinydd Z-Wave yn gyfrifol am ryngweithio â dyfeisiau Z-Wave. Mae'n defnyddio llyfrgell i dderbyn gwybodaeth gan synwyryddion AgorZWave yn C ++, sy'n darparu rhyngwyneb ar gyfer rhyngweithio â rheolydd USB rhwydwaith Z-Wave ac yn gweithio gydag amrywiaeth o synwyryddion ac actiwadyddion. Mae gwerth y paramedr amgylcheddol a fesurir gan y synhwyrydd yn cael ei gofnodi gan y gweinydd Z-Wave ar ffurf neges 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"
}

Yna caiff ei anfon ymlaen at reolwr negeseuon proses y gweinydd fel y gall edafedd tanysgrifiwr ei dderbyn. Y prif danysgrifiwr yw'r gweinydd rhesymeg cynhyrchu, sy'n cyfateb i'r gwerthoedd maes neges yn rhagflaenyddion y rheolau rhesymeg. Mae'r canlyniadau casgliad sy'n cynnwys gorchmynion rheoli yn cael eu hanfon yn ôl at y rheolwr negeseuon ac oddi yno ewch i'r gweinydd Z-Wave, sy'n eu dadgodio a'u hanfon at reolwr USB rhwydwaith Z-Wave. Yna maent yn mynd i mewn i'r actuator, sy'n newid cyflwr gwrthrychau amgylcheddol, ac mae'r cartref craff felly'n perfformio gwaith defnyddiol.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion
(cliciwch ar y llun i'w agor mewn cydraniad uwch)

Mae cysylltu dyfeisiau Z-Wave yn cael ei wneud yn rhyngwyneb graffigol y rheolwr cartref craff. I wneud hyn, ewch i'r dudalen gyda rhestr o ddyfeisiau a chliciwch ar y botwm "Ychwanegu". Mae'r gorchymyn ychwanegu trwy ryngwyneb RESTful API yn mynd i mewn i'r broses gweinydd ac yna'n cael ei anfon gan y rheolwr negeseuon i'r gweinydd Z-Wave, sy'n rhoi rheolydd USB rhwydwaith Z-Wave mewn modd arbennig ar gyfer ychwanegu dyfeisiau. Nesaf, ar y ddyfais Z-Wave mae angen i chi wneud cyfres o wasgiau cyflym (3 gwasg o fewn 1,5 eiliad) o'r botwm gwasanaeth. Mae'r rheolydd USB yn cysylltu'r ddyfais â'r rhwydwaith ac yn anfon gwybodaeth amdano i'r gweinydd Z-Wave. Mae hynny, yn ei dro, yn creu cofnod newydd yng nghronfa ddata SQLite gyda pharamedrau'r ddyfais newydd. Ar ôl cyfnod penodol o amser, mae'r rhyngwyneb graffigol yn dychwelyd i dudalen rhestr dyfeisiau Z-Wave, yn darllen gwybodaeth o'r gronfa ddata ac yn dangos y ddyfais newydd yn y rhestr. Mae pob dyfais yn derbyn ei dynodwr unigryw ei hun, a ddefnyddir mewn rheolau casgliad cynhyrchu ac wrth weithio yn y cwmwl. Dangosir gweithrediad yr algorithm hwn yn y diagram UML:

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion
(cliciwch ar y llun i'w agor mewn cydraniad uwch)

Cysylltu camerâu IP

Mae'r system cartref smart cwmwl a drafodir yn yr erthygl hon yn uwchraddiad o'r system gwyliadwriaeth fideo cwmwl, a ddatblygwyd hefyd gan yr awdur, sydd wedi bod ar y farchnad ers sawl blwyddyn ac sydd â llawer o osodiadau yn Rwsia.

Ar gyfer systemau gwyliadwriaeth fideo cwmwl, un o'r problemau difrifol yw'r dewis cyfyngedig o offer y gellir eu hintegreiddio. Mae'r meddalwedd sy'n gyfrifol am gysylltu â'r cwmwl wedi'i osod y tu mewn i'r camera fideo, sy'n gosod gofynion difrifol ar ei galedwedd ar unwaith - y prosesydd a faint o gof am ddim. Mae hyn yn bennaf yn esbonio pris uwch camerâu teledu cylch cyfyng o'i gymharu â chamerâu IP rheolaidd. Yn ogystal, mae angen cyfnod hir o drafodaethau gyda chwmnïau cynhyrchu camerâu teledu cylch cyfyng i gael mynediad i'r system ffeiliau camera a'r holl offer datblygu angenrheidiol.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Ar y llaw arall, mae gan bob camera IP modern brotocolau safonol ar gyfer rhyngweithio ag offer arall (yn arbennig, recordwyr fideo). Felly, mae defnyddio rheolydd ar wahân sy'n cysylltu trwy brotocol safonol ac yn darlledu ffrydiau fideo o gamerâu IP i'r cwmwl yn darparu manteision cystadleuol sylweddol ar gyfer systemau gwyliadwriaeth fideo cwmwl. Ar ben hynny, os yw'r cleient eisoes wedi gosod system gwyliadwriaeth fideo yn seiliedig ar gamerâu IP syml, yna mae'n dod yn bosibl ei ehangu a'i droi'n gartref smart cwmwl llawn.

Y protocol mwyaf poblogaidd ar gyfer systemau gwyliadwriaeth fideo IP, sydd bellach yn cael ei gefnogi gan yr holl weithgynhyrchwyr camera IP yn ddieithriad, yw Proffil ONVIF S., y mae ei fanylebau yn bodoli mewn iaith disgrifio gwasanaethau gwe wsdl. Defnyddio cyfleustodau o'r pecyn cymorth gSOAP Mae'n bosibl cynhyrchu cod ffynhonnell ar gyfer gwasanaethau sy'n gweithio gyda chamerâu 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

O ganlyniad, rydym yn cael set o ffeiliau pennawd “*.h” a ffynhonnell “*.cpp” yn C++, y gellir eu gosod yn uniongyrchol mewn cymhwysiad neu lyfrgell ar wahân a’u llunio gan ddefnyddio casglwr GCC. Oherwydd y nifer o swyddogaethau, mae'r cod yn fawr ac mae angen optimeiddio ychwanegol. Mae gan y microgyfrifiadur model B+ Raspberry Pi 3 berfformiad digonol i weithredu'r cod hwn, ond os oes angen trosglwyddo'r cod i blatfform arall, mae angen dewis y bensaernïaeth prosesydd gywir ac adnoddau'r system.

Mae camerâu IP sy'n cefnogi safon ONVIF, wrth weithredu ar rwydwaith lleol, wedi'u cysylltu â grŵp aml-ddarlledu arbennig gyda'r cyfeiriad 239.255.255.250. Mae protocol Darganfod WS, sy'n eich galluogi i awtomeiddio'r chwiliad am ddyfeisiau ar y rhwydwaith lleol.

Mae rhyngwyneb graffigol y rheolydd cartref craff yn gweithredu swyddogaeth chwilio ar gyfer camerâu IP yn PHP, sy'n gyfleus iawn wrth ryngweithio â gwasanaethau gwe trwy negeseuon XML. Wrth ddewis eitemau dewislen Dyfeisiau > Camerâu IP > Sganio Mae'r algorithm ar gyfer chwilio am gamerâu IP yn cael ei lansio, gan arddangos y canlyniad ar ffurf tabl:

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion
(cliciwch ar y llun i'w agor mewn cydraniad uwch)

Pan fyddwch chi'n ychwanegu camera at y rheolydd, gallwch chi nodi'r gosodiadau y bydd yn rhyngweithio â'r cwmwl yn unol â nhw. Hefyd ar y cam hwn, caiff dynodwr dyfais unigryw ei neilltuo'n awtomatig, y gellir ei adnabod yn hawdd yn y cwmwl yn ddiweddarach.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Nesaf, cynhyrchir neges mewn fformat JSON sy'n cynnwys holl baramedrau'r camera ychwanegol a'i hanfon at broses gweinydd y rheolydd cartref craff trwy'r gorchymyn RESTful API, lle mae paramedrau'r camera yn cael eu dadgodio a'u cadw yng nghronfa ddata fewnol SQLite, ac yn cael eu hefyd yn cael ei ddefnyddio i lansio'r edafedd prosesu canlynol:

  1. sefydlu cysylltiad RTSP i dderbyn ffrydiau fideo a sain;
  2. transcoding sain o G.711 mu-Law, G.711 A-Law, G.723, ac ati fformatau. i fformat AAC;
  3. trawsgodio ffrydiau fideo mewn fformat H.264 a sain mewn fformat AAC i mewn i gynhwysydd FLV a'i drosglwyddo i'r cwmwl trwy'r protocol RTMP;
  4. sefydlu cysylltiad â phwynt terfyn y synhwyrydd mudiant camera IP trwy brotocol ONVIF a'i bleidleisio o bryd i'w gilydd;
  5. cynhyrchu delwedd rhagolwg bawd o bryd i'w gilydd a'i hanfon i'r cwmwl trwy'r protocol MQTT;
  6. recordiad lleol o ffrydiau fideo a sain ar ffurf ffeiliau ar wahân mewn fformat MP4 ar gerdyn SD neu Flash o reolwr cartref craff.

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

I sefydlu cysylltiad â chamerâu, trawsgodio, prosesu a recordio ffrydiau fideo yn y broses gweinydd, defnyddir swyddogaethau o'r llyfrgell FFmpeg 4.1.0.

Yn yr arbrawf profi perfformiad, cysylltwyd 3 chamera â'r rheolydd:

  1. HiWatch DS-I114W (datrysiad - 720p, fformat cywasgu - H.264, bitrate - 1 Mb/s, sain G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (datrysiad - 1080p, fformat cywasgu - H.264, bitrate - 1 Mb/s, dim sain);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (datrysiad - 1080p, fformat cywasgu - H.264, cyfradd didau - 1.5 Mb/s, sain AAC).

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

Roedd y tair ffrwd yn cael eu hallbynnu i'r cwmwl ar yr un pryd, roedd trawsgodio sain yn cael ei wneud o un camera yn unig, ac roedd recordiad archif lleol wedi'i analluogi. Roedd llwyth CPU oddeutu 5%, defnydd RAM oedd 32 MB (fesul proses), 56 MB (cyfanswm gan gynnwys OS).

Felly, gellir cysylltu tua 20 - 30 o gamerâu â'r rheolydd cartref craff (yn dibynnu ar ddatrysiad a bitrate), sy'n ddigon ar gyfer system gwyliadwriaeth fideo ar gyfer bwthyn tair stori neu warws bach. Ar gyfer tasgau sy'n gofyn am fwy o berfformiad, gallwch ddefnyddio nettop gyda phrosesydd Intel aml-graidd a Linux Debian Sarge OS. Mae'r rheolydd yn cael ei dreialu ar hyn o bryd, a bydd data ar ei berfformiad yn cael ei ddiweddaru.

Rhyngweithio â'r cwmwl

Mae cartref craff yn y cwmwl yn storio data defnyddwyr (mesuriadau fideo a synhwyrydd) yn y cwmwl. Bydd pensaernïaeth storio cwmwl yn cael ei drafod yn fanylach yn yr erthygl nesaf yn ein cyfres. Nawr, gadewch i ni siarad am y rhyngwyneb ar gyfer trosglwyddo negeseuon gwybodaeth o'r rheolwr cartref craff i'r cwmwl.

Mae cyflwr dyfeisiau cysylltiedig a mesuriadau synhwyrydd yn cael eu trosglwyddo trwy'r protocol Mqtt, a ddefnyddir yn aml mewn prosiectau Rhyngrwyd Pethau oherwydd ei symlrwydd a'i effeithlonrwydd ynni. Mae MQTT yn defnyddio model cleient-gweinydd, lle mae cleientiaid yn tanysgrifio i bynciau penodol o fewn y brocer ac yn cyhoeddi eu negeseuon. Mae'r brocer yn anfon negeseuon at bob tanysgrifiwr yn unol â'r rheolau a bennir gan y lefel QoS (Ansawdd Gwasanaeth):

  • QoS 0 - uchafswm unwaith (dim gwarant dosbarthu);
  • QoS 1 - o leiaf unwaith (gyda chadarnhad danfon);
  • QoS 2 - union unwaith (gyda chadarnhad danfoniad ychwanegol).

Yn ein hachos ni, rydym yn defnyddio Mosgito Eclipse. Enw'r pwnc yw dynodwr unigryw'r rheolydd cartref craff. Mae'r cleient MQTT y tu mewn i'r broses gweinydd yn tanysgrifio i'r pwnc hwn ac yn cyfieithu negeseuon JSON sy'n dod o'r rheolwr negeseuon i mewn iddo. I'r gwrthwyneb, mae negeseuon gan y brocer MQTT yn cael eu hanfon ymlaen ganddo at y rheolwr negeseuon, sydd wedyn yn eu amlblecsu i'w danysgrifwyr y tu mewn i'r broses gweinydd:

Cartref Cwmwl Smart. Rhan 1: Rheolydd a synwyryddion

I drosglwyddo negeseuon am statws y rheolwr cartref craff, defnyddir mecanwaith negeseuon sydd wedi'u cadw negeseuon a gadwyd Protocol MQTT. Mae hyn yn caniatáu ichi fonitro amseriad ailgysylltu yn gywir yn ystod methiannau pŵer.

Datblygwyd y cleient MQTT yn seiliedig ar weithrediad y llyfrgell Eclipse Paho yn iaith C++.

Anfonir ffrydiau cyfryngau H.264 + AAC i'r cwmwl trwy'r protocol RTMP, lle mae clwstwr o weinyddion cyfryngau yn gyfrifol am eu prosesu a'u storio. Er mwyn dosbarthu'r llwyth yn y clwstwr yn optimaidd a dewis y gweinydd cyfryngau sydd wedi'i lwytho leiaf, mae'r rheolwr cartref craff yn gwneud cais rhagarweiniol i'r cydbwysedd llwyth cwmwl a dim ond ar ôl hynny mae'n anfon y llif cyfryngau.

Casgliad

Archwiliodd yr erthygl un gweithrediad penodol o reolwr cartref craff yn seiliedig ar ficrogyfrifiadur Raspberry Pi 3 B+, ​​a all dderbyn, prosesu gwybodaeth a rheoli offer trwy'r protocol Z-Wave, rhyngweithio â chamerâu IP trwy'r protocol ONVIF, a hefyd cyfnewid data a gorchmynion gyda'r cwmwl gwasanaeth trwy brotocolau MQTT a RTMP. Mae peiriant rhesymeg cynhyrchu wedi'i ddatblygu yn seiliedig ar gymhariaeth o reolau rhesymegol a ffeithiau a gyflwynir ar ffurf JSON.

Mae'r rheolwr cartref craff ar hyn o bryd yn cael ei dreialu ar sawl safle ym Moscow a rhanbarth Moscow.

Mae fersiwn nesaf y rheolydd yn bwriadu cysylltu mathau eraill o ddyfeisiau (RF, Bluetooth, WiFi, gwifrau). Er hwylustod defnyddwyr, bydd y weithdrefn ar gyfer cysylltu synwyryddion a chamerâu IP yn cael ei drosglwyddo i'r cymhwysiad symudol. Mae yna hefyd syniadau ar gyfer optimeiddio cod proses y gweinydd a throsglwyddo'r feddalwedd i'r system weithredu AgoredWrt. Bydd hyn yn caniatáu ichi arbed ar reolwr ar wahân a throsglwyddo ymarferoldeb cartref craff i lwybrydd cartref arferol.

Ffynhonnell: hab.com

Ychwanegu sylw