ááŹ, ááááᎠá¤áááľáŽáááľ, á¨áááá ááľááŽá˝, á¨á áááá¨áĽ á´áááááá˝ áĽá á áá˛ááťá á˘áá°ááááľ ááŁá áĽáľááľ ááľáá áááŁáá á¨áľáááľ á¤áśá˝ áááľ á¨áá áá° áá áĽá¨á¨áᨠááĽáˇá. á¨á°á áááŞáŤ á¤áľ á¨áľááá ááá ááᎠáĽá á á˘ááąáľáľáŞ á áĽáŽáľ 4.0 áĽá á¨áááŽá˝ á áááá¨áĽ áá
áľ á¨áá°á áááŚá˝ áłáá°áá ᣠáᚠᣠá°ááŁáŤá áĽá á°á
áááą á¨á°á á áᢠáľáááľáá á áá áá á¨á¨áľááá á¨ááá ááá ááĽáĽá á¨áá°á¨áá áľ á áááľáááľ ááá á¨á áá á¤áľ áá° ááľáĽáľáĽ á¨áá¨á áĽáááśá˝ á¨áááአáááľááá˝ áá° áá ፠áĽá¨áᥠááᢠá á°á¨ááŞá ᣠá¨á°á-áá˝á ááľá°ááĽá á¨á áá á áá á¨ááŽááŤá ááááá˝á ááááľ á áá áá
á - ááááá ááá፠áĽá áľáá° ááá ááľáá áááŁáá á ááľ á°á á á á áááť áááá áá° áĽáá
á¤áľ ááááŤáá˘
á á áá áá á áá ፠áá áŤá á ááłááľ áááá á¨á¤áľ ááľáĽ áľáááśá˝ á¨áłáá áŞá˛áŽ ááľáľá áľáááśá˝ á ááááŽá á áĽáľááľ áá¸á ᣠááá˘ááš áááľáľá áĽáť áłááá á¨áááľ áááá˝á áááľá°áłá°á á á ááá áááľá áĽáá°ááŤáľááá á°áááá áá á˘
áľá á°áá áľáááľ á¤áľ áľáááľ áá áá áááá˝ áá á¨ááááŠááľá á°á¨áłáłá áśáľáľ ááŁáĽáá˝á ááĽááľá áľáŠá¨áľ áĽááááŁááᢠá¨áááááŤá ááŁáĽá á áľáááľ á¤áľ ááľáĽ áá°áŤááľ á°áááá á¨á°áá á ááłáŞáŤáá˝áŁ ááá°áá á¨á°áá áá¨ááť áĽá á¨áá¨á ááááŁá áŞáŤ áľáááľ á ááá´áá¸á áĽá á áá¨á¨áťáᣠáśáľá°áá áľáááąá á ááŁáá áĽá á áááááłááľ ááłáŞáŤáá˝ áá áááľá°áłá°á á¨á°áá áá áá°áá áŞáŤ ááá˘
áááá á¨á¤áľ áĽááá˝
á ááááŞáŤ ᣠá¨á°áŤ á áááłá ᣠáłáŤ ááá áá á¤áľ áĽáá´áľ áĽáἠá¤áľ áĽáá´áľ áĽáá°áá°áŤ áĽááááá ᢠáá áá áááľá¨á áĽáá° á ááľ á°áἠá¨áá¨á°ááľá ááłáŞáŤáá˝ á á¤áľ ááľáĽ ááľááἠá áľááá áá.
- á¨á°ááŤáŠ á¨á áŤáŁá˘ áááŞáŤáá˝á á¨ááአáłáłážá˝;
- á ááŤá áááŽá˝ áá á¨áá°áŠ á áááłáážá˝;
- á á´áá°áŽá˝ áááŞáŤáá˝ áĽá á á°á¨á°á° á áááᎠáá á¨áľ áľááśá˝á á¨ááŤá¨ááá á°ááŁáŁáŞ áĽá áá ááááá˝ áľáááá˝á áá°áŁáá˘
á¨áá¨á°áá ááľá á¨áľáááľ á¤áľá ááľá áŤáłáŤá ᣠá áá áá á¨áá ááá°áľ áłáłážá˝ (1) á ááłá á˘áŤ á¤áľ ááľáĽ ᣠá áááł ááá ááľáĽ á¨áááľ áá á (2) áĽá ááĽáŤáľ (3) ᣠá áŠá˝á ááľáĽ áľáááľ áśáŹáľ (4) áĽá á áŽáŞá°áŠ ááľáĽ á¨áŞá˛áŽ ááľáľá áŤá፠(5)á˘
á á áá áá RF433ᣠZ-WaveᣠZigBeeᣠáĽááąá áĽá áááá ááŽáśáŽáá˝á á áá áá á¨áá°áŠ á˝áŚ á áᣠáłáłážá˝ á áľááľ áĽá
á áá ááááᢠááááš áĽá
ááťá¸á á¨ááľá¨á áĽá á¨á á ááá áááááľ, áĽáá˛áá áá
á°á áá áĽá á áľá°áááááľ áá¸á, ááááŤáąá á ááŤážá˝ ááŁáŞáŤááťá¸áá áá° á°á áá ፠ááááŁáľ áĽá áá ááŤá á°á áá áĽáá˛áá áááľá¨á áĽá¨áŁáŠ ááá˘
áłáłážá˝ áĽá á áááłáážá˝, áĽáá° á ááľ á°ááĽ, á áááľ á áᣠá áááá˝ á áŠá áá° áááá á¨á¤áľ áááŁá áŞáŤ (6) - áĽááá á áá ááłáŞáŤáá˝ áá° á ááľ á ááłá¨ áá¨áĽ á ááŁáá áĽá áĽááąá á¨áááŁá á¨á áአáááᎠáŽáááŠá°á.
ááá áĽáá á ááłááľ áááľááá˝ áłáłá˝, á áááłáá˝ áĽá á°ááŁáŁáŞá á á ááľ áá ááŤáŁáአáá˝áá. áááłáᣠáľáááľ áśáŹ á áá áááááĽá áá á¨áľ áĽáá˛á ፠ááá áĽáá˛á á ááŽááŤá áá°á¨á áá˝ááᣠáĽá á¨á°áá áŞá˛áŽ ááľáľá áŤá፠á áĽáá áľáá´ ááá á˛ááá áá á°ááľááś áŞá˛áŽ áá áłáľ áá˝ááᢠá áŁá ááá á áá ááłáŽá˝ áá, áŤá á¨á°áᨠá°ááŁáŁáŞ ááľá¨á áá˝áá, ááá áá áĽá áááłáá˝ áŤááľ á°áááá áľáááľ áááá á, á áľááá áá.
áááá á¨á¤áľ áááŁá áŞáŤáá á¨á ááá áá á ááłá¨áá¨áĽ áá ááááááľ áá°á á á¨á áááá¨áĽ áŤáá°á (7) áá áá ááťáá, áá á á ááááá á¤áľ ááľáĽ áá¨á á áá á¨á°ááá° á¨á¤áľ ááľáĽ áááá፠ááá. áĽáá áá á ááľ áááá á¨á¤áľ áááŁá áŞáŤá á¨áá°áá áá áááá á á - á¨á áááá¨áĄ áá áŤáá áááááľ á¨á á, ááááá á¤áľ á áááŁá áŞáŤá ááľáĽ áá°á¨áḠá áááᎠááá ááľáá áááŁáá á á°áá á áááááľ ááľáĽ á áá°áá.
áľáááľ á¨á¤áľ áááŁá áŞáŤ
á áá
á˝áá ááľáĽ á¨á°áĽáŤáŤá á¨á°áá áľáááľ á¤áľ áľáááľ á°ááŁáŁáŞá á¨á°áááŁá á á ááľ-áŚááľ áááᎠáŽáááŠá°á áá ááá˘
áááŁá áŞáŤáá áá°áĽá°áĽ á áŁá ááá áá - áááᎠáŽáááŠá°áŠ (1) á áááľá˛á ááŤáŁ (2) ááľáĽ á°ááá, á¨ááŤá 8 áᢠáá
á°á¨ áľááľáł áŤááľ á áááᎠá¤áľá˛ á
áá¸áľ á áśááľáá (3) áĽá á áŠá¤áľá˘ ááľ-áááľ ááľááá áááŁá áŞáŤ (4) ááľáĽ á°áááá. á°ááłá áŚáłáá˝. ááááá á¨á¤áľ áááŁá áŞáŤ á¨ááá á á
ááŚáľ áá á 5V, 2.1A power adapter (5) áĽá á áŠá¤áľá˘ - ááááŽ-áŠá¤áľá˘ áááľ (6) á áŠá á°áŤááá. áĽáŤááłááą á°ááŁáŁáŞ áአáá፠ááĽá á ááᣠáĽáąá á ááááŞáŤ á˛ááá á ááááŞáŤá ááá ááľáĽ á¨á°áťá áĽá á¨Cloud smart home á áááááśá˝ áá ááľá°ááĽá áááá á á áľááá ááá˘
ááááá á¨á¤áľ áááŁá áŞáŤ áśááľáá á áľááá° áááá áá á áááľá¨áľ á áá á˝áá á°áŤá˛ á°ááá áˇá ááááľ Raspbian ááá. áĽáą á¨áá¨á°ááľá áá áá áľáááśá˝á áŤáá áá-
- á¨áááá á¨á¤áľ áááá˝ áĽá á°áá áá ááľá°ááĽá á¨á áááá áá°áľ;
- á¨áááŁá áŞáŤáá áá á¨áľ áĽá á¨á á áŤá áááŞáŤáá˝ ááááááľ áľááá á¨á°á áá á áááá˝;
- á¨áááŁá áŞáŤ áá á¨áľá ááá¨áá¸áľ á¨ááἠááł.
á¨ááἠááł áĽáἠá¨á¤áľ áááŁá áŞáŤ á¨á°á°á¨áá DBMS áá°á¨áľ á ááľá¨á ááá˘
ááŤáá á áááá˝ áááᎠááŹá áľáŤá á áá áá á PHP 7 á¨á°á°áŤ áľáááľ á¨á¤áľ áááŁá áŞáŤ
(á á¨áá°á áĽáŤáľ áááááľ ááľáá á á
áŤáľáá)
á¨ááŤáá á áááá˝ áá á°ááŁá áááá á¨á¤áľ áááá˝á (IP á¨áľáá áŤááŤáá˝á áĽá áłáłážá˝á) á¨áááŁá áŞáŤá áá áááááľ áá. á¨áľá á áááŹá˝á á¨áááŁá áŞáŤáá áĽá á¨áĽáą áá á¨á°ááááľá ááłáŞáŤáá˝ áá á¨áľ áĽá áá áłá áááł á¨SQLite áłáłá¤á áŤááŁáᢠá¨áááŁá áŞáŤáá áá á¨áľ áááááĽáŁ á¨ááĽáĽá áľáááá˝á á JSON á áá¸áľ á á áááአáá°áľ RESTful API á áááá˝ áááŤáá˘
á¨á áááá áá°áľ
á¨á áááá áá°áľ - áĽáἠá¤áľ áá á¨áľ á¨áááľá á¨áá¨á áá°áśá˝á á áŤáľ-á°á áááŤááľ áááá áá áĽáŤ á¨ááŤá¨ááá ááá á áŤá-á¨áľááľ á ááłáľá ááá á áĽá áááá á ᣠá á°á¨á°á°á á áááᎠáá á áááľá¨áľ á¨ááĽáĽá áĽááááá˝á ááľá áľá˘ á¨á áááአáá°áľ ááá á¨áááá á¨á¤áľ áááá˝ áá ááľá°ááĽá ááá á ᣠá¨áááľ á ááááŽá á á áá˝á ááá¸á ᣠá¨ááŤáá á áááá˝ áĽá á¨á°ááá áľáááá˝á ááá á áĽá ááľáŹáľ ááᢠá ááááá á¨á¤áľ áááŁá áŞáŤ ááľáĽ áŤáá á¨á áááá áá°áľ á C++ ááľáĽ á°ááá áś áĽáá° á¨á°áᨠá áááááľ áĽáá° áŁá áĽá áá áá°áá áŞáŤ á°á°ááĽáŻá áľáááľ á¨á á°áŤá áá°áľ ááááľ Raspbian.
á¨á áááአáá°áľ áá áĽááŽá˝áĄ-
- á¨áááĽááľ á áľá°áłáłáŞ;
- á¨á áá áŤá፠á áááá;
- Z-Wave ááŁáŞáŤ á áááá;
- á¨áááľ á ááááŽá á á°ááŚá˝ á áááá;
- á¨áááŁá áŞáŤá áá á á¨ááἠááł áĽá á¨ááá á°ááŚá˝ áĽááł;
- RESTful API á áááá á¨ááŤáá á áááá˝ áá ááľá°ááĽá;
- á¨á°ááá áá ááááŁáŁáľ á¨MQTT á°áá áá˘
á¨á áááá áá°áľ áĽááŽá˝ áĽáá° á¨á°áᨠááŽá˝ áá°áá áŤá ᣠá ááŤá¨áá¸á áŤáá áá¨á á JSON á áá¸áľ á áááĽááľ ááá á¨áá°ááá (ááá áá áá á áá¸áľ á áá°áľ áá á°á¨ áľááľáł ááľáĽ á¨áááá á¨ááἠá ááááŽá˝)á˘
á¨á áááአáá°áľ áá á áŤá ááᢠáááĽááľ á áľá°áłáłáŞá¨JSON áááááśá˝á áá° ááá á¨á áááá áá°áľ áĽááŽá˝ á¨ááŤá°áá°áᢠá¨JSON áááĽááľ áá¨á ááľáŽá˝ ááááśá˝ áĽá ááá áá¸á á¨áá˝áá¸á áĽá´áśá˝ á á°áá á¨áĽ ááľáĽ á°áááá¨áááĄ-
á¨ááłáŞáŤ ááááľ
ááŽáśáŽá
áááĽááľ ááááľ
á¨ááŁáŞáŤ áááľ
áľáĽáá
áŤááŤ
áŚááŞá
sensorData
on
áĽá¨áľ (ááĽáŤáľ / á ááˇá)
áłáłá˝
ááá
áľáĽáá
á ááˇá
áá
áłáľ (ááĽáŤáľ / á ááˇá)
áĽáŤ ááŁáŞ
mtt
businessLogicRule
áĽá¨áľ (ááĽáŤáľ / á ááˇá)
á˘áŞ (á áá/á áľáááľ)
businessLogic
á¨áá
á¨áľ áááĽ
áá
áłáľ (ááĽáŤáľ / á ááˇá)
áĽááąá
á¨ááŁáŞáŤ áááľ
áľáá°áľ
áááá
rf
áááłáᣠá¨áŤá፠áĽáá áľáá´ áłáłá˝ á¨á°áᨠáááĽááľ áá á áááľááá˘
{
"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"
}
á¨áááľ á ááááŽ
á¨ááŞá áááĽááľ áááá á ááá ááááᣠá¨á áááአáá°áľ áĽááłá áá ááľ ááááľ áááĽááľ áááááŁáᢠá¨á°áá áááľ áááᣠá¨á áááą á¨áááľ á ááááŽá á á á ááᢠâá¨áá⌠á¨ááŤâŚâᣠá JSON á áá¸áľ á¨áá¨á áĽá á á áááአáá°áľ ááľáĽ áŤáá áááĽááľ á°ááŁáŁáŞ áá á¨áááá á áááᢠáááłáᣠá¨á áá áŤá፠á áááá ᨠGUI áĽá á°áá áľáááá˝á áĽáá˛áá á áááááľ á¨áá¨á°ááá á á áá¨á á ááĽááľá˘
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
ááľáĽ á¨á°ááášáľ áááłáá˝ áá°ááľ (á á፠á áŠá) á°ááŚáš áĽáááľ áá¸á, á¨ááŤá áá¨áŤá á áá á ááááŤáľ (á áá á áŠá) ááá˝áŁ áĽá á°ááŁáŁáŞá á¨JSON áááĽááľ á áŤá ááłá¨áť áŤáááᢠááłáá á°á á¨JSON ááá-áĽá´áľ áĽááśá˝á á¨ááŤááłáľáŠ áááŤá áŚááŹá°áŽá˝á áá°ááááĄ-
- áĽáŠá "áĽáŠá";
- á¨"áĽáŠá_á áá°áá" áá áĽáŠá á áá°áá;
- áŤáá° "áŤáá°";
- á¨á áá "á¨á áá ";
- á¨"áŤáá°_ááá_áĽáŠá" áŤáá° ááá áĽáŠáá¤
- á¨"áłáá _ááá_áĽáŠá" á¨áá áἠááá áĽáŠá ááá˘
á¨áá˝á˝á áá¤áśáš á¨áĄááŤá á áááĽáŤ áŚááŹá°áŽá˝á á áá áá áĽááľ á ááľ ááááą áá˝áááĄ
- áĽá "áĽá"
- ááá "ááá";
- "á á" á áá°áá.
áľááá áŚááŹá°áŽá˝á áĽá áŚááŹá°áŽá˝á á ááááľ ááľ á ááá ᣠáĽá ááŹáśá˝á á áá áá á áŁá ááľáĽáľáĽ áááłáá˝á ááá á áá˝ááá˘
á áľááá á°ááłáłá áá´áŁ á JSON áááĽááśá˝ áĽá á¨áááľ ááá˝ á JSON á áá¸áľáŁ á ááŽáłáá˝á á áááᎠá áááá áĽáá ááľáĽ áĽáááľá áááá¨á áĽá á¨áľáááľ á¨á¤áľ á´áá°áŽá˝ á¨á°áá á¨áľááľ á ááłáľ áá¨áá á áá áá á ááááŽá á ááá áááľá áľ áĽá á áá ááááá˘
á¨ááŁáá á áááŹá˝á á áá áá á°á ááá ááááá á¤áľ ááľáŤáľ áŤáá áľá áááłáá˝á áááĽáŤáᢠáááłá: "á¨ááľ á áŠá áááááľ áłáłá˝ á¨á°áá°áá° á áŽáŞá°áŠ ááľáĽ ááĽáŤáąá áŤáĽáŠ". á áááŹá˝á á¨áá¨á ááą ááľáĽ á¨á°áá°áŽá˝á (á¨ááááť áłáłá˝) áĽá á áááłáážá˝á (áľáááľ áśáŹáľ ááá áľáááľ áááľá) áŤááŁá áĽá á JSON á áá¸áľ á ááááŽá á á áá áŤáááŤáᣠáá á áá° áľáááľ á¨á¤áľ áááŁá áŞáŤ áááŤáᢠáá áá´ á áŚáľá°áá á°á¨áłáłá á˝ááá˝á ááľáĽ á¨á áá á áááá ááĽáŤáŤá ᣠáľá áĽáá á¤áľ áááľá°áłá°á áľá á°áá á áá°áá áŞáŤ áĽáááááŤáá á˘
á¨áá á¨á°áĽáŤáŤá á¨áááľ á áááᎠáá´ á¤á°-áá˝áááľá á áá áá áá°áá áŤá
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);
}
}
}
áá áá pFact - á¨JSON áááĽááľ ááá-áĽá´áľ áĽááśá˝á á¨áŤá ááá á ᣠm_á°ááŚá˝ - á¨áááľ á áá˝ áľáĽáľáĽá˘ á¨ááŞáá áááĽááľ áá á á áĽá á¨áááľ á°áᥠá áľáŤá ááľáĽ áá¨áááá á ááŁá˘á˘ áľááłá (áŠleStreamᣠruleHandler)á¨áľ ruleHandler á¨áŚááŤá áĽá á¨áá á á áŚááŹá°áŽá˝á á áááᎠá¨áŤá ááá ááᢠsRuleID â áአá¨á°áἠááŞáŁ ááá á ááľáá áááŁáá á°ááŚá˝á á áááá á¨á¤áľ á°ááŁáŁáŞ áłáłá¤á ááľáĽ áá¨áá¸áľ áĽá áááľá ááťááᢠm_páľáááľ - á¨áááŤá áá¨á áá¤áľ áŤáá á á°áŤá°áᥠá¨JSON áááĽááśá˝ á¨á°áᥠáá°á¨áľ á¨ááᥠáá¤áśá˝á á¨áŤá áĽá á°á¨á᪠áá° á¨áááááľ á áľá°áłáłáŞá á°áá¨áá áľááá á á¨á°áá áááľ á°áááᢠááŽá˝ áĽáá˛á°áŤá¸áá˘
á¨RapidJSON á ááťá¸á á¨á°ááŁáŠ áá á°ááŁáŁá ááᢠstrlen()áĽá áá á°áá á¨áľáááľ áááá፠ááľáááśá˝ áá áá á¤á°-áá˝áááľ á á°áŤá°áą ááłáŞáŤáá˝ ááľáĽ áá ááá ááá áłáᢠá JSON á áááľ á¨áááĽááśá˝á áĽá á ááááŽá á á áá˝á áá áá á ááá á¨áľáááľ á¤áľ á°ááŁáŁáŞ á áŤááľ ááŤá¨á á°áááá á¨áá¨á áááἠáľáááľá á°ááŁáŤá áááľá¨á áŤáľá˝áááłáá˘
á¨ááľ áááľ áłáłážá˝ áĽá á áááłáážá˝
á¨áľáááľ á¤áľ áááá á áááł á¨áááá á áŤáŁá˘ á¨á°ááŤáŠ áááááá˝ á á°ááĽá áááŤáľ áĽá áĽáá° áááłá ââá áá á°ááŁáŤáľá áá¨ááá áá˝áá ᢠáá
áá áááľá¨á, áłáłážá˝ áĽá á áááłáážá˝ á¨ááááá á¨á¤áľ áááŁá áŞáŤ áá á°áááá°áá. á áá áŁáá áľáŞáľ áĽááá
ááŽáśáŽáá á áá áá á¨áá°áŠ á˝áŚ á áᣠááłáŞáŤáá˝ áá¸áá˘
á áá áĽá ááĽá áŤáá¸á á¨á°ááŤáŠ á¨Z-Wave ááłáŞáŤáá˝á á áá ፠áá ááááľ áá˝ááᢠáĽááľ ááłááá˝á áĽáááá¨áľáĄ-
- á¨áááś PAN16 áľáááľ áśáŹáľ á¨áá¨á°ááľá áááááá˝ áá፠áá˝áá-á¨á¤áááľáŞá áááł (kWh), ááá (W), áŽáá´á (V) áĽá áá áłá (A) á á¤áááľáŞá á ááłá ááľáĽ. áĽáá˛áá á¨á°ááááá á¨á¤áááľáŞá ááłáŞáŤ áááŁá á á¨áá˝áá áľ á áĽáŽ á¨á°á°áŤ ááĽáŞáŤ / ááĽá፠á áá;
- á¨áᎠCoolcam áá áłáłá˝ á¨áááľ ááá°áťáá áĽáááŤáá˝ á ááááľ á¨áá°á° ááłá˝ áááŠá áŤáłáŤáá˘
- á¨áááś áá¤á˝-áá¤áľá01 á¨ááľ áłáłá˝ á¨ááá°áá°á á¨ááľ á ááŁáśá˝ áá° áá áá°áá°á ááá á˛áᥠááá˘
- á¨áᎠCoolcam áĽáá áľáá´ áłáłá˝ á¨á°á á áŤá á˘áááŤáŹáľ á¨á¨áŽá˝á ááá¨ááŤáᢠá á°á¨ááŞá á¨áĽááá áłáłá˝ (Lx) á á;
- ááá˛á´áá°á ááᎠPST02-A á¨áááľ áá á (° á´) ᣠáĽááá (%) ᣠá¨á á áááᝠᣠá ááá ááľáĽ áŤá á°á ááá;
- á¨Z-Wave USB Stick ZME E UZB1 á ááłá¨ áá¨áĽ áááŁá áŞáŤáŁ áłáłážá˝ á¨á°áááá áľá˘
ááłáŞáŤááš áĽá á°ááŁáŁáŞá á á°ááłáłá áľáááá˝ áĽáá˛á°áŠ á áŁá á áľááá áá, á áá áá፠áá á ááááá áľ áá á ááá á áá°áŤáŠá. áĽáľá¨ 232 á¨áá°ááą ááłáŞáŤáá˝ á¨á áᾠᨠZ-Wave á ááłá¨ áá¨áĽ áááŁá áŞáŤ áá áááá áá˝áá, áá á áá áááłá ááá áá áá á¤áľ á á áá. á¨á¤áľ ááľáĽ á¨á ááłá¨ áá¨áĽ á˝áá áŚáłá áááľááľ, áľáááľ áśáŹáľ áĽáá° ááááľ á°á°ááá áá áá ááťáá.
áŁááá á ááá
áá á á°áĽáŤáŤá á¨áľáááľ á¨á¤áľ á°ááŁáŁáŞ á áááá áá°áľ á¨Z-Wave á áááአá¨Z-Wave ááłáŞáŤáá˝ áá á¨áááááľ áááááľ á áá áľá˘ á¨á´áá°áŽá˝ áá¨á áááá á á¤á°-áá˝áááľá áá ááá
{
"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"
}
á¨ááŤá á¨á°áá áááľ á°áááᢠááŽá˝ áĽáá˛áá ááľ áá° á áááአáá°áľ áááĽááľ á áľá°áłáłáŞ áá°ááááᢠááá á¨á°áá áááľ á°áááᢠá¨áááľ á áááᎠá áááá áá ᣠáĽáąá á ááá á áá˝ á áľá-áááłáá˝ ááľáĽ áŤáá á¨áááĽááľ ááľá áĽá´áśá˝ áá á¨ááááľá˘ á¨ááĽáĽá áľáááá˝á á¨áŤá á¨ááŁááť áá¤áśá˝ áá° áááĽááľ á áááŁáŞ áááŤá áĽá á¨á፠áá° Z-Wave á áááá ááṠᣠáĽáąá áĽááąá áááłáľ áĽá áá° Z-Wave á ááłá¨ áá¨áĽ áŠá¤áľá˘ áááŁá áŞáŤ áááŤáᢠá¨ááŤá áá° á áááłááš ááľáĽ áááŁá, áá á á¨á áŤáŁá˘á áááŽá˝ áááł ááááŁá, áĽá áĽáἠá¤áľ á áá ááááľ á áá áľáŤáá˝á áŤá¨áááá.
(á á¨áá°á áĽáŤáľ áááááľ ááľáá á á
áŤáľáá)
á¨Z-Wave ááłáŞáŤáá˝á áááááľ á¨áá¨áááá á áľáááľ á¨á¤áľ áááŁá áŞáŤá á ááŤáá á áááá˝ ááᢠáá áá áááľá¨á á¨ááłáŞáŤáá˝ áááá áá áá° ááš áááą áĽá "á áá" áááá á á áŤáľáá. á RESTful API á áááá˝ á áŠá áŤáá á¨á áá áľááá á¨á áááá áá°áľ ááľáĽ áááŁá áĽá á¨ááŤá á áááááľ á áľá°áłáłáŞ áá° Z-Wave á áááá áááŤá, áá á ᨠZ-Wave á ááłá¨ áá¨áĽ áŠá¤áľá˘ áááŁá áŞáŤ ááłáŞáŤáá˝á ááá¨áá áአáááłá áŤá°áááá. á ááá á á Z-Wave ááŁáŞáŤ áá á¨á áááááľ á ááŤáŠ ááľáĽ á°á¨áłáłá ááŁá áá°ááŤáá˝ (á 3 á°á¨ááľ ááľáĽ 1,5 ááŹáľ) ááľá¨á áŤáľáááááłá. á¨áŠá¤áľá˘ áááŁá áŞáŤ ááłáŞáŤáá á¨á ááłá¨ áá¨áĄ áá áŤááááá áĽá áľááą áá¨á áá° Z-Wave á áááá áááŤá. áŤ, á á°áŤá, á¨á á˛áą ááŁáŞáŤ áááŞáŤáá˝ áá á SQLite á¨ááἠááł ááľáĽ á á˛áľ áá¤áľ áááĽáŤá. á¨á°á áá°á á¨áá ááá°áľ á áá, á¨ááŤáá á áááá˝ áá° Z-Wave ááŁáŞáŤ áááá áá˝ ááááłá, á¨áá¨á ááą áá¨áá áŤááŁá áĽá á áááአááľáĽ á á˛áąá ááłáŞáŤ áŤáłáŤá. áĽáŤááłááą ááłáŞáŤ á¨áŤáą á¨áá áአáá፠ááá áá, áá á á áááľ á˘ááŹáá˝á á°ááŚá˝ áĽá á á°áá ááľáĽ á˛á°áŤ áĽá á áá áááá. á¨áá á áááŞáá á á áŤá á UML á˛áŤááŤá ááľáĽ ááłáŤá-
(á á¨áá°á áĽáŤáľ áááááľ ááľáá á á
áŤáľáá)
á¨á áá áŤááŤáá˝á á áááááľ áá
á áá á˝áá ááľáĽ á¨á°áĽáŤáŤá á¨á°áá áľáááľ á¤áľ áľáááľ á¨á°áá áŞá˛áŽ ááľáľá áľáááľá ááťáťá áá ᣠáĽáá˛áá á á°áŤá˛á á¨á°ááᣠᣠááĽá áááłáľ á áá ፠áá á¨áá ᨠáĽá á áŠá˛áŤ ááľáĽ áĽá áááśá˝ á ááľá˘
ááłáá áŞá˛áŽ á¨ááľáľá áľáááśá˝áŁ á¨á˝ááŽáš ááľáĽ á ááą áá á°áľ á¨ááŤááľáŁá¸á ááłáŞáŤáá˝ ááąá áá፠ááᢠá¨á°áá áá á¨áááááľ áááááľ áŤáá áśááľáá á áŞá˛áŽ áŤá፠ááľáĽ á°ááá ᣠáá á áá˛áŤáá á áááľáá áá á¨áŁáľ ááááśá˝á - ááŽá°á°á áĽá á¨áá áá á°á¨ áľááľáł áá áᢠáá á ááááľ á¨á°áá CCTV áŤááŤáá˝á á¨áá°á á á¨á áá áŤááŤáá˝ áá á˛ááłá°á áŤááá á¨áá°á áá áŤáĽáŤáŤáᢠá á°á¨ááŞá á¨áŤá፠ááá áľáááąá áĽá áááá á áľááá á¨áááľ ááłáŞáŤáá˝á áááááľ á¨á˛á˛á˛áŞ áŤá፠ááá¨áť áŠáŁááŤáá˝ áá á¨áá áŤá á¨áľááľá á°á¨á áŤáľááááá˘
á áá á áŠá ááá áááá á¨á áá áŤááŤáá˝ á¨ááá˝ ááłáŞáŤáá˝ (á á°ááá á¨áŞá˛áŽ áá
á¨áŤáá˝) áá ááááŁáŁáľ áá°á á ááŽáśáŽáá˝ á áá¸á. áľááá
, á áá°á á ááŽáśáŽá á áŠá á¨ááŤááá áĽá á¨áŞá˛áŽ áĽá¨áśá˝á á¨á áá áŤááŤáá˝ áá° á°áá á¨ááŤá°áŤá á¨á°áᨠáááŁá áŞáŤ áá áá áá°áá áŞá˛áŽ ááľáľá áľáááśá˝ á¨áá°á á¨ááľáľá áĽá
áá˝á áá°áŁáᢠá¨áá
á á áá á°áá áá áá°á á˛á á ááá á¨á áá áŤááŤáá˝ áá á¨á°áá°á¨á° á¨áŞá˛áŽ ááľáľá áľáááľá á¨áŤá, á¨ááŤá ááľááľ áĽá áá° áá á¨á°áá áľáááľ á¤áľ ááá¨á ááťáá.
á áá á ááá á¨á áá áŤá፠á ááŤážá˝ áŤá ááá ááŠááľ á¨áá°ááá áá áá áŞá˛áŽ ááľáľá áľáááśá˝ á áŁá áłááá ááŽáśáŽá áá
$ 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
á áá¤áąá, á C ++ ááľáĽ á¨áŤáľá "*.h" áĽá ááá "*.cpp" áááá˝á áĽááááá, áá á á ááĽáł áá° áá°áá áŞáŤ ááá á¨á°áᨠá¤á°-áá˝áááľ ááľáĽ áááἠáĽá á¨áá˛á˛ áááá áŞáŤá á áá áá. á áĽá á°ááŁáŤáľ ááááŤáľ, áŽáą áľáá áá áĽá á°á¨á᪠áááťá¸áľ áŤáľááááá. Raspberry Pi 3 áá´á B+ áááᎠáŽáááŠá°á áá á áŽáľ áááľáá¸á á á á ááťá¸á á áá, ááá áá áŽáąá áá° áá á¨ááłáŞáŤ áľáááľ ááá áŤáľááá áľáááááá á¨á áááŁáŁáŞ á ááá´áá¸á áĽá á¨áľáááľ ááĽáśá˝á ááá¨áĽ á áľááá áá.
ᨠONVIF á°á¨áá á¨áá°áá á¨á áá áŤááŤáá˝ á á áŤáŁá˘áŤá á ááłá¨áá¨áĽ áá á˛á°áŠ á áľáŤáťá áŤáá áአá¨áĽáá-áŤáľáľ áĄáľá áá á°áááá°áá 239.255.255.250. ááŽáśáŽá á á
á¨áľáááľ á¨á¤áľ á°ááŁáŁáŞá ááŤáá á áááá˝ áá áá áŤááŤáá˝ á PHP ááľáĽ á¨ááá á°ááŁáá áá°ááĽáŤá ᣠáá á á á¤ááľá¤áá¤á áááááśá˝ á¨áľá á áááááśá˝ áá á˛ááá á áŁá ááš ááᢠá¨ááá ááĽáá˝á á ááááĄá áľ áá ááłáŞáŤáá˝ > á áá áŤááŤáá˝ > ááááľ á¨á áá áŤááŤáá˝á ááááá áľáá° ááá á°áááŻá ᣠáá¤áąá á á áá á¨áĽ ááá áŤáłáŤá-
(á á¨áá°á áĽáŤáľ áááááľ ááľáá á á
áŤáľáá)
áŤááŤá áá° áááŁá áŞáŤá á˛á¨áአá¨á°ááá áá ááľá°ááĽá á¨áááĽáá áľá ááźáľ áááá˝ áá˝ááᢠáĽáá˛áá á áá á°á¨á, á áŤáľ-á°á áአááŁáŞáŤ áá፠ááá°áŁá, á áá áá á á°áá ááľáĽ á ááá ááłáá áá˝áá.
á ááá á áááĽááľ á JSON á
áá¸áľ á¨á°á¨áá¨á áŤá፠áááá áááááá˝ á¨áŤá áá áĽá áá° áľáááľ á¤áľ á°ááŁáŁáŞá á áááá áá°áľ á RESTful API áľááá áááŤá ᣠá¨áŤá፠áááŞáŤáá˝ á˛áŽáľ á¨á°á°á¨á áĽá á ááľáĽ SQLite áłáłá¤á ááľáĽ ááááŁá áĽá áĽáá˛áá á¨áá¨á°ááľá á¨ááľáŹá ááŽá˝ áááľááá áĽá
á áá ááááá˘
- á¨áŞá˛áŽ áĽá á¨áľáá˝ áĽá¨áśá˝á áááá á ᨠRTSP áááááľ áááľá¨áľ;
- á¨áľáá˝ á á ᨠG.711 mu-LawᣠG.711 A-LawᣠG.723ᣠááá° á áá¸áśá˝á˘ áá° AAC á áá¸áľ;
- á¨áŞá˛áŽ áĽá¨áśá˝á á H.264 á áá¸áľ áĽá áŚá˛áŽá á á¤á¤á˛ á áá¸áľ áá° FLV áŽáá´ááá áááἠáĽá á RTMP ááŽáśáŽá áá° á°ááá ááľá°ááá;
- á ONVIF ááŽáśáŽá á áŠá á¨á áá áŤá፠áĽáá áľáá´ á áá á¨áá¨á¨áť ááĽáĽ áá áááááľ áááľá¨áľ áĽá á á¨ááá áľáá˝ ááľá áľ áŁ
- áľááᏠá áľá áĽááł ááľá á á¨ááá á áááá¨áľ áĽá á MQTT ááŽáśáŽá áá° á°ááá áááá¤
- á¨á áŤáŁá˘ á¨áŞá˛áŽ áĽá á¨áľáá˝ áĽá¨áśá˝á á á°ááŤáŠ áááá˝ á MP4 á áá¸áľ áá° á¤áľá˛ ááá áĽáἠá¨á¤áľ áááŁá áŞáŤ ááá˝ áŤááľ áá áłáľá˘
á¨áŤááŤáá˝ áá áááááľ ááááľá¨áľáŁ áľáŤááľ áŽáľáŁ áá°áľ áĽá á¨áŞá˛áŽ áĽá¨áśá˝á á á áááአáá°áľ ááľáĽ ááá
áłáľáŁ á¨á¤á°-áá˝áááľ á°ááŁáŤáľ áĽá
á áá áááá
á á ááťá¸á áá¨áŤá ááľáĽáŁ 3 áŤááŤáá˝ á¨áááŁá áŞáŤá áá á°áááá°áááĄ-
- HiWatch DS-I114W (áĽáŤáľ - 720 á, á¨áá¨áá፠á áá¸áľ - H.264, á˘áľáŹáľ - 1 áᣠ/ á°, áľáá˝ G.711 mu-Law);
- ááááŽá˛ááłá MDC-M6290FTD-1 (áĽáŤáľ - 1080 á, á¨áá¨áá፠á áá¸áľ - H.264, á˘áľáŹáľ - 1 áᣠ/ á°, áľáá˝ á¨áá);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (áĽáŤáľ - 1080 áᣠá¨ááá፠á áá¸áľ - H.264ᣠá˘áľáŹáľ - 1.5 ááŁ/á°áŁ AAC áŚá˛áŽ)á˘
áŚáľáąá áĽá¨áśá˝ á á ááľ áá áá° á°áá ááĄáŁ á¨áľáá˝ áľáŤááľáŽá˛áá á¨á°á°á¨áá á¨á ááľ áŤá፠áĽáť ááᣠáĽá á¨á áŤáŁá˘ áá
á°á áá¨áť á°á°ááááᢠá¨á˛áአáááľ á áááľ 5% áá áᣠᨠRAM á á ááá 32 áᣠ(á á¨áá°áą)ᣠ56 áᣠ(á á ááá áľááá° áááá á¨ááŽ) áá áá˘
áľááá á áááľ 20 - 30 áŤááŤáá˝ á¨áľáááľ á¤áľ áááŁá áŞáŤ áá áááá áá˝áá (áĽáá° áĽáŤáľ áĽá á˘áľáŹáľ) ᣠááśáľáľ áá áá ááá áľáá˝ áááá ááŞá˛áŽ ááĽáĽá áľáááľ á á ááᢠá¨áá á ááťá¸á ááá áá á°ááŁáŤáľáŁ áŁá áĽá áŽá á˘áá´á ááŽá°á°á áĽá ááááľ á´á˘áŤá áłáá áŚá¤áľ áŤáá ááľáśá áá áá áá˝ááᢠá°ááŁáŁáŞá á á áá áá á áá¨áŤ áľáŤ áá ááᣠáĽá á á áááá áá áŤáá áá¨á áááááá˘
á¨á°áá áá ááľá°ááĽá
á á°áá áá á¨á°áá°á¨á° áľáááľ á¤áľ á¨á°á áá ááἠ(áŞá˛áŽ áĽá áłáłá˝ áááŞáŤáá˝) á á°áá ááľáĽ áŤá¨ááťáᢠá¨á°áá áá¨ááť á ááá´áá¸á á áááĽáá áááľ ááľáĽ á áááá ááĽáŤáŤáᢠá áá á¨áá¨á áááĽááśá˝á á¨áľáááľ á¤áľ áááŁá áŞáŤ áá° á°áá áááľá°ááá áľá á áááá˝ áĽááááá á˘
á¨á°ááá ááŁáŞáŤáá˝ áĽá áłáłá˝ áááŞáŤáá˝ á ááŽáśáŽá á áŠá áá°áááá
- QoS 0 - á¨áá°áá á ááľ áá (ááá á¨áááŞáŤ ááľáľá á¨áá);
- QoS 1 - á˘áŤááľ á ááľ áá (á¨áá á¨á˘áŤ áá¨áá፠áá);
- QoS 2 - á áľááá á ááľ áá (á¨á°á¨á᪠á¨áááŞáŤ áá¨áá፠áá)á˘
á áĽá áááł, áĽáá áááá
áľá áĽáἠá¤áľ áááŁá áŞáŤ áááł áááááśá˝á áááľá°ááá á¨á°ááᥠáááááśá˝ áá´ áĽá
á áá áááá
á¨MQTT á°áá á á¨á°áááŁá á á¤á° ááá
ááľ á á°ááŁá á áá á áááľá¨áľ ááá˘
H.264 + AAC á¨áá˛áŤ áĽá¨áśá˝ áá° á°ááá á RTMP ááŽáśáŽá á áŠá áááŤáᣠá¨áá á°á¨ áá¨á á°áá¨áŽá˝ áááľá°á áĽááąá á¨ááľáŹáľ áĽá á¨áá¨áá¸áľ áááááľ á áá áľá˘ áááąá á áĽáŠ áááł á áááľá°á ááľáĽ ááá°áŤá¨áľ áĽá á ááľá°á á¨á°áŤááá á¨áá˛áŤ á áááá áááá¨áĽ áľáááľ á¨á¤áľ áááŁá áŞáŤá áá°áá ááľ ááá á¨ááááŞáŤ áĽáŤá áŤáááŁá áĽá á¨á፠á áá áĽáť á¨áá˛áŤ áĽá¨áąá áááŤáá˘
áá°áá°ááŤ
á˝áá á Raspberry Pi 3 B+ áááᎠáŽáááŠá°á áá á¨á°áá°á¨á° á ááľ áአá¨áľáááľ á¨á¤áľ á°ááŁáŁáŞ á á°ááŁá áá ááááŻáᣠáá á áá¨áá á Z-Wave ááŽáśáŽá ááá á áĽá áááŁá á á¨áá˝áᣠá¨á áá áŤááŤáá˝ áá á ONVIF ááŽáśáŽá ááľá°ááĽá ááá á áĽá áĽáá˛áá áá¨áá ááááἠáĽá á¨á°áá áá áŤáá á áááááľ á MQTT áĽá á RTMP ááŽáśáŽáá˝á˘ á JSON á áááľ á¨áá¨áĄáľá áááŤá á áá˝ áĽá áĽáááłáá˝ á ááááá áá á¨á°áá°á¨á° á¨áááľ á áááᎠáá°á á°ááá áˇáá˘
áľáááľ á¨á¤áľ á°ááŁáŁáŞá á á áá áá á ááľáŽ áĽá á ááľáŽ ááá ááľáĽ á ááá á ááŤáł áŁá˘áŤáá˝ á¨áá¨áŤ áľáŤ áĽá¨á°áŤ ááá˘
á¨áááŁá áŞáŤá ááŁáŠ áľáŞáľ ááá˝ ááłáŞáŤáá˝á (RF, áĽááąá, áááá, áŁááááľ) ááááááľ á á
áˇá. áá°á áááá˝ áážáľ áłáłážá˝á áĽá á¨á áá áŤááŤáá˝á á¨áááááľ áá°áľ áá° ááŁáá áá°áá áŞáŤ áá°ááááᢠáĽáá˛áá á¨á ááááŠá áá°áľ áŽáľ ááááťá¸áľ áĽá áśááľááŠá áá° áŚááŹá˛áá á˛áľá°á áááľá¨áľ ááłáŚá˝á á áá˘
ááá: hab.com