I kēia lā, mahalo i ka hoʻomohala wikiwiki ʻana o nā microelectronics, nā ala kamaʻilio, nā ʻenehana pūnaewele a me Artificial Intelligence, ke ulu nei ke kumuhana o nā hale akamai. Ua hoʻololi koʻikoʻi ka hale kanaka mai ka wā Pōhaku a i ke au o Industrial Revolution 4.0 a me ka Pūnaewele o nā Mea, ua lilo ia i mea ʻoluʻolu, hana a palekana. Ke hele mai nei nā hopena i ka mākeke e hoʻohuli i kahi keʻena a i ʻole hale ʻāina i mau ʻōnaehana ʻike paʻakikī e hoʻomalu ʻia mai nā wahi a pau o ka honua me ka hoʻohana ʻana i kahi kelepona. Eia kekahi, ʻaʻole koi hou ka pilina kanaka-mīkini i ka ʻike o nā ʻōlelo papahana - mahalo i ka ʻike ʻōlelo a me nā algorithm synthesis, ʻōlelo kekahi kanaka i kahi home akamai i kā lākou ʻōlelo ʻōiwi.
ʻO kekahi mau ʻōnaehana home akamai i kēia manawa ma ka mākeke kahi hoʻomohala kūpono o nā ʻōnaehana wikiō wikiō, nā mea hoʻomohala i ʻike i ka pono o kahi hoʻonā piha ʻaʻole wale no ka nānā ʻana, akā no ka mālama ʻana i nā mea mamao.
Ke hōʻike aku nei mākou iā ʻoe i kahi ʻatikala o ʻekolu mau ʻatikala, e haʻi iā ʻoe e pili ana i nā mea nui āpau o kahi ʻōnaehana home smart cloud, i hoʻomohala pilikino e ka mea kākau a hoʻokomo ʻia. Hoʻolaʻa ʻia ka ʻatikala mua i nā lako mea kūʻai aku i hoʻokomo ʻia i loko o kahi home akamai, ʻo ka lua i ka hoʻolālā ʻana o ka mālama ʻana i ke ao a me ka ʻōnaehana ʻikepili, a ʻo ka hope, ʻo ke kolu i ka noi mea kūʻai aku no ka hoʻokele ʻana i ka ʻōnaehana ma nā polokalamu kelepona a me nā mea paʻa.
Na lako hale akamai
ʻO ka mea mua, e kamaʻilio e pili ana i ka hana ʻana i kahi home akamai mai kahi hale maʻamau, dacha a i ʻole cottage. No ka hana ʻana i kēia, ma ke ʻano he kānāwai, pono e kau i nā mea hana ma ka home:
- nā mea ʻike e ana i nā ʻāpana like ʻole;
- nā mea hana e hana ana i nā mea o waho;
- he mea hoʻoponopono e hana ana i nā helu ʻana e like me nā ana sensor a me ka loiloi i hoʻopili ʻia, a hoʻopuka i nā kauoha i nā mea hoʻokele.
Hōʻike ka kiʻi ma lalo nei i kahi kiʻi o kahi home akamai, aia ma luna o nā mea ʻike no ka leaka wai (1) i loko o ka lumi ʻauʻau, ka mahana (2) a me nā kukui (3) i loko o ka lumi moe, kahi kumu akamai (4) i ka lumi kuke a me kahi. kiʻi kiʻi wikiō (5) ma ke alaloa.
I kēia manawa, hoʻohana nui ʻia nā mea kani uila me ka RF433, Z-Wave, ZigBee, Bluetooth a me WiFi. ʻO kā lākou mau pono nui he maʻalahi o ka hoʻokomoʻana a me ka hoʻohanaʻana, a me ka uku haʻahaʻa a me ka hilinaʻi, no ka mea Ke hoʻoikaika nei nā mea hana e lawe i kā lākou mau mea hana i ka mākeke nui a hiki iā lākou ke loaʻa i ka mea hoʻohana maʻamau.
ʻO nā sensor a me nā mea hana, ma ke ʻano he lula, ua hoʻopili ʻia ma o ke kelepona uila i kahi mea hoʻokele home akamai (6) - kahi microcomputer kūikawā e hoʻohui i kēia mau mea āpau i hoʻokahi pūnaewele a hoʻokele iā lākou.
Eia naʻe, hiki i kekahi mau hoʻonā ke hoʻohui i kahi sensor, kahi mea hoʻokele a me kahi mea hoʻoponopono i ka manawa like. No ka laʻana, hiki ke hoʻolālā ʻia kahi plug akamai e hoʻā a hoʻopau paha e like me ka papa kuhikuhi, a hiki i kahi pahupaʻi kiʻi wikiō ao ke hoʻopaʻa i ka wikiō ma muli o ka hōʻailona ʻike neʻe. I nā hihia maʻalahi, hiki iā ʻoe ke hana me ka ʻole o kahi kaʻawale kaʻawale, akā no ka hana ʻana i kahi ʻōnaehana maʻalahi me nā hiʻohiʻona he nui, pono ia.
No ka hoʻopili ʻana i ka mea hoʻoponopono home akamai i ka pūnaewele puni honua, hiki ke hoʻohana ʻia kahi mea hoʻokele pūnaewele maʻamau (7), i lilo i mea hana hale maʻamau i kēlā me kēia home. Eia kekahi hoʻopaʻapaʻa e pili ana i kahi mea hoʻoponopono home akamai - inā nalowale ka pilina i ka Pūnaewele, e hoʻomau ka home akamai i ka hoʻomaikaʻi maʻamau i ka poloka logic i mālama ʻia i loko o ka mea hoʻoponopono, ʻaʻole i ka lawelawe ao.
Hoʻoponopono home akamai
Hoʻokumu ʻia ka mea hoʻoponopono no ka ʻōnaehana home smart cloud i kūkākūkā ʻia ma kēia ʻatikala ma muli o kahi microcomputer papa hoʻokahi
He mea maʻalahi loa ka hoʻohui ʻana i ka mea hoʻoponopono - ua hoʻokomo ʻia ka microcomputer (1) i loko o kahi pahu plastik (2), a laila hoʻokomo ʻia kahi kāleka hoʻomanaʻo 8 GB i ka format microSD me ka lako polokalamu (3) a me kahi mea hoʻokele pūnaewele Z-Wave USB (4). nā ʻāpana pili. Hoʻopili ʻia ka mea hoʻoponopono home akamai i ka lako mana ma o kahi 5V, 2.1A mana adapter (5) a me kahi USB - micro-USB cable (6). Loaʻa i kēlā me kēia mea hoʻoponopono kahi helu ʻike kūʻokoʻa, i kākau ʻia ma ka faila hoʻonohonoho i ka wā i hoʻomaka mua ʻia a pono e launa pū me nā lawelawe home smart cloud.
Ua hoʻomohala ʻia ka polokalamu hoʻokele home akamai e ka mea kākau o kēia ʻatikala e pili ana i ka ʻōnaehana hana Linux Raspbian Stretch. Loaʻa iā ia nā subsystems nui:
- kaʻina kikowaena no ka launa pū ʻana me nā lako home akamai a me ke ao;
- hoʻohana kiʻi kiʻi no ka hoʻonohonoho ʻana i ka hoʻonohonoho a me nā ʻāpana hana o ka mea hoʻokele;
- waihona no ka mālama ʻana i ka hoʻonohonoho hoʻonohonoho.
Database Hoʻokomo ʻia ka mea hoʻokele home akamai ma muli o kahi DBMS i hoʻopili ʻia
GUI Ua hoʻomohala ʻia ka mea hoʻokele home akamai ma PHP 7 me ka microframework
(e kaomi ma luna o ke kiʻi e wehe ia ma ka hoʻonā kiʻekiʻe)
ʻO ka hana nui o ke kiʻi kiʻi ʻo ka hoʻopili ʻana i nā lako home akamai (nā kāmela nānā IP a me nā mea ʻike) i ka mea hoʻoponopono. Heluhelu ka palapala noi pūnaewele i ka hoʻonohonoho ʻana a me ke kūlana o kēia manawa o ka mea hoʻoponopono a me nā mea e pili ana iā ia mai ka waihona SQLite. No ka hoʻololi ʻana i ka hoʻonohonoho hoʻoponopono, hoʻouna ʻo ia i nā kauoha hoʻomalu i ka format JSON ma o ka RESTful API interface o ke kaʻina kikowaena.
Kaʻina kikowaena
Kaʻina kikowaena - he ʻāpana koʻikoʻi e hana ana i nā hana nui a pau i ka hoʻomaʻamaʻa ʻana i nā kaʻina ʻike e hoʻokumu i ke kumu o kahi home akamai: ka loaʻa ʻana a me ka hoʻoili ʻana i ka ʻikepili sensory, ka hoʻopuka ʻana i nā hana mana e pili ana i ka logic i hoʻopili ʻia. ʻO ke kumu o ke kaʻina hana kikowaena e launa pū me nā lako home akamai, e hoʻokō i nā lula noʻonoʻo hana, loaʻa a hana i nā kauoha mai ke kiʻi kiʻi a me ke ao. Hoʻokō ʻia ke kaʻina hana kikowaena ma ka mea hoʻokele home akamai e noʻonoʻo ʻia e like me kahi noi multi-threaded i hoʻomohala ʻia ma C ++ a hoʻokuʻu ʻia ma ke ʻano he lawelawe ʻokoʻa. 'ōnaehana ʻōnaehana Linux Raspbian.
ʻO nā poloka nui o ke kaʻina kikowaena:
- Luna Hoʻokele;
- Kahua pahu kiʻi IP;
- Z-Wave mea kikowaena;
- Server o ka hana logical rules;
- ʻIkepili o ka hoʻonohonoho ʻana o ka mea hoʻoponopono a me ka poloka o nā lula pili;
- RESTful API kikowaena no ka launa pū ʻana me ke kiʻi kiʻi;
- Mea kūʻai MQTT no ka launa pū ʻana me ke ao.
Hoʻokomo ʻia nā poloka kaʻina hana ma ke ʻano he mau kaula kaʻawale, ka ʻike ma waena o ia mea i hoʻoili ʻia ma ke ʻano o nā memo ma ke ʻano JSON (a i ʻole nā hale ʻikepili e hōʻike ana i kēia ʻano i ka hoʻomanaʻo kaʻina hana).
ʻO ka mea nui o ke kaʻina kikowaena luna memo, ka mea e alakaʻi ai i nā memo JSON i nā poloka kaʻina hana kikowaena āpau. Ua helu ʻia nā ʻano o nā kahua ʻike memo JSON a me nā waiwai i hiki iā lākou ke ʻae i ka papa:
ʻano mea hana
Hana ma'amau
messageType
deviceState
kauoha
pahupaʻiwikiō
onvif
sensorData
on
ke kahe ana
mīkiniʻimi
zwave
kauoha
aku
ka hoʻopaʻa ʻana (Hā/Paʻa)
mea hoʻihoʻi
mqtt
businessLogicRule
ke kahe ana
evice(Hoʻohui/Wehe)
pāʻoihanaLogic
configurationData
ka hoʻopaʻa ʻana (Hā/Paʻa)
Bluetooth
deviceState
kikowaena
Wifi
rf
No ka laʻana, he memo mai kahi mea ʻike neʻe pahupaʻikiʻi e like me kēia:
{
"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"
}
ʻO ka loina hana
No ka loaʻa ʻana a hoʻouna ʻana paha i kahi leka mai ka mea hoʻouna, hoʻopaʻa inoa ka poloka kaʻina kikowaena i nā memo o kekahi ʻano. ʻO ka hoʻopaʻa inoa ʻana he lula noʻonoʻo hana o ke ʻano "Inā ... a laila...", hōʻike ʻia ma ke ʻano JSON, a me kahi loulou i ka mea lawe leka i loko o ka poloka kaʻina hana kikowaena. No ka laʻana, no ka ʻae ʻana i ka server IP camera e loaʻa nā kauoha mai ka GUI a me ke ao, pono ʻoe e hoʻohui i kēia lula:
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
Inā nā kūlana i kuhikuhi ʻia ma mua (ʻaoʻao hema) ʻoiaʻiʻo nā lula, a laila ua māʻona hopena (ʻaoʻao ʻākau) nā lula, a hiki i ka mea lawelawe ke komo i ke kino o ka leka JSON. Kākoʻo ka antecedent i nā mea hoʻohana loiloi e hoʻohālikelike i nā hui waiwai kī JSON:
- like "equal";
- ʻaʻole like me "not_equal";
- emi "emi";
- ʻoi aku ka "nui";
- emi iho a like paha me ka "emi_a like paha";
- ʻoi aku ka nui a i ʻole like me "greater_or_equal".
Hiki ke hoʻopili ʻia nā hopena hoʻohālikelike i kekahi me ka hoʻohana ʻana i nā mea hoʻohana algebra Boolean:
- A "a"
- A I ʻole "a";
- ʻAʻole "ʻaʻole".
No laila, ma ke kākau ʻana i nā mea hana a me nā operand ma ka notation Polish, hiki iā ʻoe ke hana i nā kūlana paʻakikī me ka nui o nā ʻāpana.
Hoʻohana ʻia ke ʻano hana like, e pili ana i nā leka JSON a me nā lula hana ma ke ʻano JSON, i hoʻohana ʻia i ka poloka server logic production e hōʻike i ka ʻike a hoʻokō i ka inference logical me ka hoʻohana ʻana i ka ʻikepili sensory mai nā ʻike home akamai.
Ke hoʻohana nei i kahi polokalamu kelepona, hana ka mea hoʻohana i nā hiʻohiʻona e like me ka hana o ka home akamai. ʻo kahi laʻana: "Inā hoʻomaka ka sensor no ka wehe ʻana i ka puka mua, a laila e hoʻā i ke kukui ma ke alahele". Heluhelu ka palapala noi i nā mea ʻike o nā sensor (sensor wehe) a me nā mea hana (smart socket a i ʻole ke kukui akamai) mai ka waihona a hoʻopuka i kahi lula pili i ka format JSON, i hoʻouna ʻia i ka mea hoʻokele home akamai. E kūkākūkā nui ʻia kēia ʻano hana ma ka ʻatikala ʻekolu o kā mākou moʻo, kahi e kamaʻilio ai mākou e pili ana i ka noi o ka mea kūʻai aku no ka mālama ʻana i kahi home akamai.
Hoʻohana ʻia ka mīkini hana loiloi i kūkākūkā ʻia ma luna me ka hoʻohana ʻana i ka waihona
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);
}
}
}
he mea pFact - kahi hale i loaʻa nā hui waiwai kī mai kahi leka JSON, m_Rula — string array of production rules. Hana ʻia ka hoʻohālikelike o ka memo e hiki mai ana a me ka lula hana i ka hana heluhelu.Parse(ruleStream, ruleHandler)kahi ruleHandler he mea i loaʻa ka manaʻo o Boolean a me nā mea hoʻohālikelike. sRuleId - kahi ʻike kānāwai kūʻokoʻa, mahalo i ka mea hiki ke mālama a hoʻoponopono i nā lula i loko o ka ʻikepili hoʻokele home akamai. m_pActions - he hui me nā hopena o ka hoʻohālikelike kūpono: Nā memo JSON i loaʻa nā hopena mai ke kumu lula a hoʻouna hou ʻia i ka luna memo i hiki i nā mea kākau inoa ke hana iā lākou.
Hoʻohālikelike ka hana RapidJSON i ka hana strlen(), a ʻo nā koi kumu waiwai ʻōnaehana liʻiliʻi e ʻae i ka hoʻohana ʻana i kēia waihona i nā mea i hoʻopili ʻia. ʻO ka hoʻohana ʻana i nā memo a me nā lula pili i ka format JSON e hiki ai iā ʻoe ke hoʻokō i kahi ʻōnaehana maʻalahi o ka hoʻololi ʻana i ka ʻike ma waena o nā mea āpau o ka mea hoʻokele home akamai.
Nā Nalu Z-Wave a me nā mea hana
ʻO ka pōmaikaʻi nui o kahi home akamai ʻo ia ka hiki ke ana kūʻokoʻa i nā ʻāpana like ʻole o ke kaiapuni o waho a hana i nā hana pono e pili ana i ke kūlana. No ka hana ʻana i kēia, hoʻopili ʻia nā mea ʻike a me nā mea hana i ka mea hoʻokele home akamai. I ka mana o kēia manawa, ʻo ia nā mea uila e hoʻohana ana i ka protocol
Hiki iā ʻoe ke ʻike i kahi helu nui o nā mea Z-Wave like ʻole ma ka mākeke. E nānā kākou i kekahi mau laʻana:
- Hiki i ka Zipato PAN16 smart socket ke ana i kēia mau ʻāpana: ka hoʻohana uila (kWh), ka mana (W), ka uila (V) a me ka manawa (A) i ka pūnaewele uila. Loaʻa iā ia kahi hoʻololi i kūkulu ʻia e hiki ai iā ʻoe ke hoʻomalu i ka mea uila pili;
- ʻIke ka Neo Coolcam leak sensor i ka hele ʻana o ka wai i kahe ʻia ma ka pani ʻana i nā pilina o ka ʻimi mamao;
- ʻO ka Zipato PH-PSG01 uahi sensor ke hoʻoulu ʻia i ka wā e komo ai nā ʻāpana uahi i ke keʻena loiloi kinoea;
- Hoʻopili ka Neo Coolcam motion sensor i ka radiation infrared o ke kino kanaka. Eia kekahi, aia kahi ʻike kukui (Lx);
- ʻO Multisensor Philio PST02-A e ana i ka mahana (°C), ka māmā (%), ka wehe ʻana o ka puka, ka noho ʻana o ke kanaka i loko o ka lumi;
- Z-Wave USB Stick ZME E UZB1 mea hoʻoponopono pūnaewele, kahi e hoʻopili ʻia ai nā ʻike.
He mea koʻikoʻi ka hana ʻana o nā hāmeʻa a me ka mea hoʻoponopono i ka like pinepine, inā ʻaʻole lākou e ʻike i kekahi i kekahi i ka manawa o ka pilina. Hiki ke hoʻopili ʻia a hiki i 232 mau mea hoʻohana i hoʻokahi mea hoʻokele pūnaewele Z-Wave, i lawa loa no kahi keʻena a i ʻole hale ʻāina. No ka hoʻonui ʻana i ka ʻāpana o ka ʻoihana pūnaewele i loko o ka hale, hiki ke hoʻohana ʻia kahi kumu akamai ma ke ʻano he hōʻailona hōʻailona.
Ma ke kaʻina hana kikowaena home control i kūkākūkā ʻia ma ka paukū mua, aia ke kuleana o ka server Z-Wave no ka launa pū ʻana me nā polokalamu Z-Wave. Hoʻohana ia i kahi waihona e loaʻa ai ka ʻike mai nā mea ʻike
{
"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"
}
A laila, hoʻouna ʻia i ka luna memo o ke kaʻina kikowaena i loaʻa i nā loina mea kākau. ʻO ka mea kākau inoa nui ka server logic production, e pili ana i nā koina kahua memo i nā antecedents o nā lula logic. Hoʻouna ʻia nā hopena inference e loaʻa ana nā kauoha mana i ka luna memo a mai laila e hele i ka Z-Wave server, nāna e hoʻokaʻawale iā lākou a hoʻouna iā lākou i ka Z-Wave network USB controller. A laila komo lākou i ka actuator, e hoʻololi i ke kūlana o nā mea kaiapuni, a hana ka home akamai i nā hana pono.
(e kaomi ma luna o ke kiʻi e wehe ia ma ka hoʻonā kiʻekiʻe)
Hoʻohui ʻia nā mea hana Z-Wave ma ke kiʻi kiʻi o ka mea hoʻokele home akamai. No ka hana ʻana i kēia, e hele i ka ʻaoʻao me kahi papa inoa o nā mea hana a kaomi i ka pihi "Add". Hoʻokomo ke kauoha hoʻohui ma o ka RESTful API interface i ke kaʻina kikowaena a laila hoʻouna ʻia e ka luna memo i ka Z-Wave server, kahi e hoʻokomo ai i ka mana USB network Z-Wave i kahi ʻano kūikawā no ka hoʻohui ʻana i nā polokalamu. A laila, ma ka polokalamu Z-Wave pono ʻoe e hana i kahi ʻano o nā kaomi wikiwiki (3 kaomi i loko o 1,5 kekona) o ke pihi lawelawe. Hoʻopili ka mea hoʻokele USB i ka hāmeʻa i ka pūnaewele a hoʻouna i ka ʻike e pili ana iā ia i ke kikowaena Z-Wave. ʻO ia, e hana i kahi komo hou i ka waihona SQLite me nā ʻāpana o ka mea hou. Ma hope o ka manawa i ʻōlelo ʻia, e hoʻi ka ʻaoʻao kiʻi i ka ʻaoʻao papa inoa mea Z-Wave, heluhelu i ka ʻike mai ka waihona a hōʻike i ka mea hou i ka papa inoa. Loaʻa i kēlā me kēia hāmeʻa kona ʻike ponoʻī, i hoʻohana ʻia i nā lula inference hana a i ka wā e hana ai i ke ao. Hōʻike ʻia ka hana o kēia algorithm ma ke kiʻi UML:
(e kaomi ma luna o ke kiʻi e wehe ia ma ka hoʻonā kiʻekiʻe)
Hoʻopili i nā kāmeʻa IP
ʻO ka ʻōnaehana home smart cloud i kūkākūkā ʻia ma kēia ʻatikala he hoʻomaikaʻi ʻana i ka ʻōnaehana nānā wikiō kapua, i hoʻomohala ʻia e ka mea kākau, aia ma ka mākeke no kekahi mau makahiki a he nui nā hoʻonohonoho ma Rusia.
No nā ʻōnaehana nānā wikiō kapua, ʻo kekahi o nā pilikia koʻikoʻi ʻo ke koho palena ʻole o nā mea hana e hiki ai ke hoʻohui ʻia. Hoʻokomo ʻia ka polokalamu pono no ka hoʻopili ʻana i ke ao i loko o ka pahupaʻiwikiō, kahi e koi koke ai i nā koi koʻikoʻi ma kāna lako - ka mea hana a me ka nui o ka hoʻomanaʻo manuahi. ʻO kēia ka wehewehe nui ʻana i ke kumukūʻai kiʻekiʻe o nā kāmela CCTV kapua i hoʻohālikelike ʻia me nā kāmela IP maʻamau. Eia kekahi, he manawa lōʻihi o ke kūkākūkā ʻana me nā ʻoihana hana kiʻi kiʻi kiʻi CCTV e koi ʻia e kiʻi i ka ʻōnaehana faila kamera a me nā mea hana pono āpau.
Ma ka ʻaoʻao ʻē aʻe, loaʻa i nā kāmela IP hou nā protocol maʻamau no ka launa pū ʻana me nā mea hana ʻē aʻe (ʻo ia hoʻi, nā mea hoʻopaʻa wikiō). No laila, ʻo ka hoʻohana ʻana i kahi mea hoʻokele kaʻawale e hoʻopili ai ma o kahi protocol maʻamau a hoʻolaha i nā kahawai wikiō mai nā kāmeʻa IP a i ke ao e hāʻawi i nā pono hoʻokūkū koʻikoʻi no nā ʻōnaehana nānā wikiō kapua. Eia kekahi, inā ua hoʻokomo mua ka mea kūʻai aku i kahi ʻōnaehana nānā wikiō e pili ana i nā kāmela IP maʻalahi, a laila hiki ke hoʻonui a hoʻololi iā ia i kahi home smart cloud piha.
ʻO ka protocol kaulana loa no nā ʻōnaehana nānā wikiō IP, i kākoʻo ʻia e nā mea hana kiʻi kiʻi IP āpau me ka ʻole
$ 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 ka hopena, loaʻa iā mākou kahi pūʻulu poʻomanaʻo "*.h" a me nā faila "*.cpp" i C++, hiki ke waiho pololei ʻia i loko o kahi noi a i ʻole kahi waihona ʻokoʻa a hōʻuluʻulu ʻia me ka hoʻohana ʻana i ka GCC compiler. Ma muli o ka nui o nā hana, ua nui ke code a pono i ka hoʻonui ʻana. Ua lawa ka hana o ka Raspberry Pi 3 model B+ microcomputer no ka hoʻokō ʻana i kēia code, akā inā pono e hoʻokomo i ke code i kahi kahua ʻē aʻe, pono e koho i ka hoʻolālā ʻōnaehana kūpono a me nā kumuwaiwai ʻōnaehana.
ʻO nā kāmela IP e kākoʻo ana i ka maʻamau ONVIF, i ka wā e hana ana ma kahi pūnaewele kūloko, pili ʻia i kahi hui multicast kūikawā me ka helu wahi. 239.255.255.250. Aia kahi protocol
Hoʻokomo ka ʻaoʻao kiʻi kiʻi o ka mea hoʻokele home akamai i kahi hana huli no nā kāmera IP ma PHP, kahi mea maʻalahi loa i ka wā e launa pū me nā lawelawe pūnaewele ma o nā memo XML. Ke koho ʻana i nā mea papa kuhikuhi Nā lakohana > nā kāmeʻa IP > ka nānā ʻana Hoʻokuʻu ʻia ka algorithm no ka ʻimi ʻana i nā kāmera IP, e hōʻike ana i ka hopena ma ke ʻano o kahi papaʻaina:
(e kaomi ma luna o ke kiʻi e wehe ia ma ka hoʻonā kiʻekiʻe)
Ke hoʻohui ʻoe i kahi kamera i ka mea hoʻoponopono, hiki iā ʻoe ke kuhikuhi i nā hoʻonohonoho e like me ka mea e launa pū ai me ke ao. I kēia manawa hoʻi, hāʻawi ʻia ʻo ia i kahi mea ʻike ponoʻī, kahi e hiki ai ke ʻike maʻalahi i loko o ke ao.
A laila, hoʻopuka ʻia kahi leka ma JSON format e loaʻa ana nā ʻāpana āpau o ke kāmela i hoʻohui ʻia a hoʻouna ʻia i ke kaʻina kikowaena o ka mea hoʻokele home akamai ma o ke kauoha RESTful API, kahi i hoʻokaʻawale ʻia ai nā ʻāpana kamera a mālama ʻia i loko o ka waihona SQLite kūloko, a ua hoʻohana pū ʻia no ka hoʻomaka ʻana i nā pae hana e pili ana:
- hoʻokumu i kahi pilina RTSP e loaʻa i nā kahawai wikiō a me nā leo;
- transcoding leo mai G.711 mu-Law, G.711 A-Law, G.723, etc. formats. i ka format AAC;
- ka hoʻololi ʻana i nā kahawai wikiō ma ke ʻano H.264 a me ka leo ma ke ʻano AAC i loko o kahi pahu FLV a hoʻouna iā ia i ke ao ma o ka protocol RTMP;
- ka hoʻokumu ʻana i kahi pilina me ka hope o ka mea ʻike neʻe ka pahu kiʻi IP ma o ka protocol ONVIF a koho i kēlā me kēia manawa;
- hana i kekahi manawa i kahi kiʻi nānā kiʻi liʻiliʻi a hoʻouna iā ia i ke ao ma o ka protocol MQTT;
- ka hoʻopaʻa ʻana i nā wikiō a me nā kahawai leo ma ke ʻano o nā faila ʻokoʻa i ka MP4 format ma kahi kāleka SD a Flash paha o kahi mea hoʻokele home akamai.
No ka hoʻokumu ʻana i kahi pilina me nā kāmela, transcode, kaʻina a me ka hoʻopaʻa ʻana i nā kahawai wikiō i ke kaʻina kikowaena, hoʻohana ʻia nā hana mai ka waihona.
I ka hoʻokolohua hoʻokolohua hana, ua hoʻopili ʻia nā kāmela 3 i ka mea hoʻoponopono:
- HiWatch DS-I114W (hoʻonā - 720p, hōʻano kōmike - H.264, bitrate - 1 Mb/s, kani G.711 mu-Law);
- ʻO Microdigital MDC-M6290FTD-1 (ka hoʻonā - 1080p, hōʻano kōmike - H.264, bitrate - 1 Mb/s, ʻaʻohe kani);
- ʻO Dahua DH-IPC-HDW4231EMP-AS-0360B (ka hoʻonā - 1080p, hōʻano kōmike - H.264, bitrate - 1.5 Mb/s, leo AAC).
Hoʻopuka ʻia nā kahawai ʻekolu a pau i ke ao, lawe ʻia ka transcoding leo mai hoʻokahi pahupaʻiwikiō, a ua pio ka hoʻopaʻa waihona kūloko. ʻO ka ukana CPU ma kahi o 5%, ʻo ka hoʻohana ʻana o RAM he 32 MB (no kēlā me kēia kaʻina hana), 56 MB (ka huina me ka OS).
No laila, ma kahi o 20 - 30 mau kāmeʻa hiki ke hoʻopili ʻia i ka mea hoʻokele home akamai (e pili ana i ka hoʻonā a me ka bitrate), lawa ia no kahi ʻōnaehana nānā wikiō no kahi hale hale ʻekolu a i ʻole kahi hale kūʻai liʻiliʻi. No nā hana e koi ana i ka hana ʻoi aku ka maikaʻi, hiki iā ʻoe ke hoʻohana i ka nettop me kahi kaʻina Intel multi-core a me Linux Debian Sarge OS. Ke ho'āʻo nei ka mea hoʻoponopono i kēia manawa, a e hōʻano hou ʻia ka ʻikepili i kāna hana.
Ka launa pū me ke ao
Mālama ka home akamai i ke ao i ka ʻikepili o ka mea hoʻohana (nā ana wikiō a me nā ana sensor) ma ke ao. E kūkākūkā hou ʻia ke ʻano o ka mālama ʻana i ke ao ma ka ʻatikala aʻe i kā mākou moʻo. I kēia manawa, e kamaʻilio e pili ana i ke kikowaena no ka hoʻouna ʻana i nā leka ʻike mai ka mea hoʻokele home akamai i ke ao.
Hoʻouna ʻia nā mokuʻāina o nā mea pili a me nā ana sensor ma o ka protocol
- QoS 0 - ka lōʻihi hoʻokahi (ʻaʻohe hōʻoia hoʻouna);
- QoS 1 - ma ka liʻiliʻi hoʻokahi (me ka hōʻoia o ka lawe ʻana);
- QoS 2 - pololei hoʻokahi (me ka hōʻoia hoʻouna hou aku).
I kā mākou hihia, hoʻohana mākou
No ka hoʻouna ʻana i nā leka e pili ana i ke kūlana o ka mea hoʻokele home akamai, hoʻohana ʻia ke ʻano o nā memo i mālama ʻia
Hoʻokumu ʻia ka mea kūʻai aku MQTT ma muli o ka hoʻokō waihona
Hoʻouna ʻia nā kahawai media H.264 + AAC i ke ao ma o ka protocol RTMP, kahi i kuleana ai ka pūʻulu o nā kikowaena media no ka hana ʻana a me ka mālama ʻana iā lākou. No ka puunaue maikaʻi i ka ukana i loko o ka puʻupuʻu a koho i ka mea hoʻolaha media liʻiliʻi loa, hana ka mea hoʻoponopono home akamai i kahi noi mua i ka mea kaulike o ke ao a ma hope wale nō o ka hoʻouna ʻana i ke kahawai media.
hopena
Ua nānā ka ʻatikala i hoʻokahi hoʻokō kikoʻī o kahi mea hoʻokele home akamai e pili ana i ka microcomputer Raspberry Pi 3 B+, hiki ke loaʻa, kaʻina hana ʻike a me nā mea hoʻokele ma o ka protocol Z-Wave, e launa pū me nā kāmera IP ma o ka protocol ONVIF, a me ka hoʻololi ʻana i ka ʻikepili a nā kauoha me ke ao. lawelawe ma o nā protocol MQTT a me RTMP. Ua hoʻomohala ʻia kahi mīkini loiloi hana ma muli o ka hoʻohālikelike ʻana i nā lula loiloi a me nā ʻoiaʻiʻo i hōʻike ʻia ma ke ʻano JSON.
Ke ho'āʻo nei ka mea hoʻokele home akamai i kēia manawa ma kekahi mau wahi ma Moscow a me ka ʻāina ʻo Moscow.
Hoʻolālā ka mana hou o ka mea hoʻokele e hoʻopili i nā ʻano mea like ʻole (RF, Bluetooth, WiFi, wired). No ka ʻoluʻolu o nā mea hoʻohana, e hoʻoneʻe ʻia ke kaʻina hana no ka hoʻopili ʻana i nā sensor a me nā kāmera IP i ka polokalamu kelepona. Aia kekahi mau manaʻo no ka hoʻonui ʻana i ke code kaʻina kikowaena a me ka lawe ʻana i ka polokalamu i ka ʻōnaehana hana
Source: www.habr.com