ááá±á·áá±ááºááœááºá ááá¯ááºáááá¯á¡á®áááºáááœááºážáá
áºáá»á¬ážá áááºááœááºáá±ážáááºážááŒá±á¬ááºážáá»á¬ážá á¡ááºáá¬áááºáááºážááá¬áá»á¬ážááŸáá·áº Artificial Intelligence áá»á¬áž áá»ááºááŒááºá
áœá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºáá¬ááŸá¯ááŒá±á¬áá·áº á
áááºá¡áááºáá»á¬ážá áá±á«ááºážá
ááºááẠááá¯áááá¯ááááºááá¯ááºáá¬áá«áááºá áá°á·á¡áááºáá¬ááẠáá»á±á¬ááºáá±ááºááŸáá·áº á
ááºááŸá¯áá±á¬áºááŸááºáá±áž 4.0 ááŸáá·áº Internet of Things áá±ááºáá±á¬ááºááá¯ááºážááœáẠáááá¬áááºááŸá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒá¯á¶ááœá±á·áá²á·áááŒá®áž áááºážááẠáááºáá±á¬áá·áºáááºáá¬á áá¯ááºáá±á¬ááºááá¯ááºáᬠáá¯á¶ááŒá¯á¶áá¬áá«áááºá ááá¯ááºáááºážáá
áºáááºáž ááá¯á·ááá¯áẠá¡áááºáá
áºáá¯á¶ážááᯠá
áááºáá¯ááºážáá
áºáá¯á¶ážáá¯á¶ážááŒá®áž ááá¹áá¬áá
áºááŸááºážá០ááááºážáá»á¯ááºáá¬ážáá±á¬ ááŸá¯ááºááœá±ážáá±á¬ááááºážá¡áá»ááºá¡áááºá
áá
áºáá»á¬ážá¡ááŒá
ẠááŒá±á¬ááºážáá²áá±ážááá·áº ááŒá±ááŸááºážáá»ááºáá»á¬ážááẠá
á»á±ážááœááºááá¯á·áá±á¬ááºááŸááá¬áá±ááŒá®ááŒá
áºáááºá ááá¯á·á¡ááŒááºá áá°-á
ááºá¡ááŒááºá¡ááŸááºá¡ááŒááºá¡ááŸááºááŒá±á¬ááá¯ááŸá¯ááœáẠá
áá¬ážááŒá±á¬á¡ááá¡ááŸááºááŒá¯ááŸá¯ááŸáá·áº áá±á«ááºážá
ááºááŸá¯ááá¯ááºáᬠá¡ááºáááá¯áá®áááºáá»á¬ážááŒá±á¬áá·áº áá°áá
áºáŠážááẠáááºážááá¯á·ááááááºáá¬áá¬á
áá¬ážááŒáá·áº á
áááºá¡áááºáá
áºáá¯á¶ážááᯠááŒá±á¬ááá¯ááá·áº áááá¯ááááºáá¬áá¬á
áá¬ážáá»á¬ážááᯠá¡ááááá¬áááá¯á¡ááºáá±á¬á·áá«á
á á»á±ážááœááºááŸá á¡áá»áá¯á·áá±á¬ smart home á áá áºáá»á¬ážááẠá á±á¬áá·áºááŒáá·áºááŒááºážá¡ááœááºáá¬áá á¡áá±ážááŸá¡áá¬ááá¹áá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá¡ááœááºáááºáž ááŒáá·áºá á¯á¶áá±á¬ááŒá±ááŸááºážáá»ááºááá¯á¡ááºááŒá±á¬ááºáž developer áá»á¬ážá០ááá±á¬áá±á«ááºáá¬ážááá·áº cloud áá®áá®ááá¯á á±á¬áá·áºááŒáá·áºáá±ážá áá áºáá»á¬ážá áá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºá áœá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºáá¬áá«áááºá
á
á¬áá±ážááá¬á០ááá¯ááºááá¯ááºáá®ááœááºáááºáá®ážááŒá®áž áááºáááºáá¯ááºáá±á¬ááºááá·áº cloud smart home system á á¡áááá¡á
áááºá¡ááá¯ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒá±á¬ááŒááá·áº áá±á¬ááºážáá«ážáá¯á¶ážáá¯ááºááᯠááá·áºá¡á¬áá¯á¶ááᯠáá»áœááºá¯ááºááá¯á· áááºáááºáá¬ážáá«áááºá ááááá±á¬ááºážáá«ážááᯠsmart home ááœááºáááºáááºáá¬ážááá·áº terminal client á
ááºáá
á¹á
ááºážáá»á¬ážá áá¯ááááá±á¬ááºážáá«ážááẠcloud ááá¯ááŸá±á¬ááºááŸá¯ááŸáá·áº data processing system ááááá¯áá¬áááºáá¬ááŒá
áºááŒá®ážá áá±á¬ááºáá¯á¶ážááœááºá ááááá¡áá»ááºááŸá¬ mobile ááŸáá·áº stationary devices áá»á¬ážááœáẠsystem ááá¯á
á®áá¶ááá·áºááœá²áááºá¡ááœáẠclient application á¡ááœááºááŒá
áºáááºá
á áááºá¡áááºáá¯á¶ážáá á¹á ááºážáá»á¬áž
ááááŠážá áœá¬á áá¬áááºááá¯ááºáááºážá dacha ááá¯á·ááá¯áẠá¡áááºááœááºážá០á áááºá¡áááºáá áºáá¯á¶ážááᯠáááºááá¯á·ááŒá¯áá¯ááºááááºááᯠááœá±ážááœá±ážááŒáá«á áá¯á·á áá«ááá¯áá¯ááºááá¯á·á á ááºážáááºážá¡áá á¡áááºááŸá¬ á¡á±á¬ááºáá±á¬áºááŒáá« áá á¹á ááºážááœá±ááᯠáá¬ážááá¯á·ááá¯á¡ááºáá«áááºá
- á¡áá»áá¯ážáá»áá¯ážáá±á¬ áááºáááºážáá»ááºááá¯ááºáᬠááá·áºáááºáá»ááºáá»á¬ážááᯠááá¯ááºážáá¬áá±á¬ á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážá
- ááŒááºáá¡áá¬ááá¹áá¯áá»á¬ážáá±á«áºááœááºááá¯ááºáá±á¬ááºáá±á¬ actuators;
- á¡á¬áá¯á¶áᶠááá¯ááºážáá¬ááŸá¯áá»á¬ážááŸáá·áº ááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ áá¯áá¹ááááŸáá·áºá¡áá® ááœááºáá»ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº ááááºážáá»á¯ááºáááááá¬á ááŸáá·áº actuators áá»á¬ážááá¯á· á¡áááá·áºáá»á¬ážáá¯ááºáá±ážáááºá
á¡á±á¬ááºáá±á¬áºááŒáá«áá¯á¶ááœáẠáá±áá»áá¯ážáááºážá¡ááœááºáž áá±ááá¯á ááá·áºááŒááºážá¡ááœáẠá¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážáá«ááŸááá±á¬ á áááºá¡áááºá áá¯á¶áá áºáá¯á¶ááᯠááŒááá¬ážááŒá®áž á¡áááºáááºážá¡ááœááºáž á¡áá°áá»ááẠ(á) ááŸáá·áº áá®ážá¡áááºážáá±á¬áẠ(á)á áá®ážááá¯áá»á±á¬ááºááœáẠá áááºáá±á«ááºáá±á«áẠ(á) áá¯ááŸáá·áº á ááºá¹ááŒá¶ááœáẠáá®áá®ááᯠá á±á¬áá·áºááŒáá·áºáááºááᬠ(á ) áá¯á¶ážá
áááºááŸáááœáẠRF433á Z-Waveá ZigBeeá Bluetooth ááŸáá·áº WiFi áááá¯ááá¯áá±á¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºáááºáá±áá±á¬ ááŒáá¯ážáá²á·á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážááᯠááœááºáá»ááºá
áœá¬ á¡áá¯á¶ážááŒá¯áá»ááºááŸááááºá áááºážááá¯á·áá¡áááá¡á¬ážáá¬áá»ááºáá»á¬ážááŸá¬ áááºáááºááŒááºážááŸáá·áº á¡áá¯á¶ážááŒá¯áááœááºáá°ááŒááºážá¡ááŒáẠáá¯ááºáá»á
ááááºáááºáá¬ááŒááºážááŸáá·áº áá¯á¶ááŒááºá
áááºáá»áááŒááºážááá¯á·ááŒá±á¬áá·áºááŒá
áºáááºá áá¯ááºáá¯ááºáá°áá»á¬ážááẠáááºážááá¯á·á á
ááºáá
á¹á
ááºážáá»á¬ážááᯠá¡á
á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠá
á»á±ážááœááºááá¯á· áá°áá±á¬ááºáá¬áááºááŸáá·áº áá»ááºážáá»áŸá¡áá¯á¶ážááŒá¯áá°áᶠáááºááŸááºážáá®á
á±ááẠááŒáá¯ážáááºážáá±ááŒáááºá
á ááºážáááºážá¡áá á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážááŸáá·áº ááŸá¯á¶á·áá±á¬áºáááááá¬áá»á¬ážááᯠá áááºá¡áááºááááºážáááááᬠ(6) ááŸáá·áº ááŒáá¯ážáá²á·ááŒá¬ážáá¶á áá áºááŒáá·áº áá»áááºáááºáá¬ážááẠ- á€á ááºáá á¹á ááºážá¡á¬ážáá¯á¶ážááᯠááœááºáááºáá áºáá¯áááºážááá¯á· áá±á«ááºážá ááºáᬠááááºážáá»á¯ááºááá·áº á¡áá°ážááŒá¯ááá¯ááºáááá¯ááœááºáá»á°áá¬áá áºáá¯ááŒá áºáááºá
ááá¯á·áá±á¬áºá á¡áá»áá¯á·áá±á¬ááŒá±ááŸááºážáá»ááºáá»á¬ážááẠá¡á¬áá¯á¶áá¶áááááá¬á ááŸá¯á¶á·áá±á¬áºáááááá¬ááŸáá·áº ááááºážáá»á¯ááºáááááá¬ááᯠáá áºáá»áááºáááºážááœáẠáá±á«ááºážá ááºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá»áááºááá¬ážá¡á á¡ááœáá·áº ááá¯á·ááá¯áẠááááºááẠá áááºááááºáá áºáá¯á¡á¬áž áááá¯ááááºááŒá¯áá¯ááºááá¯ááºááŒá®áž cloud áá®áá®ááá¯á á±á¬áá·áºááŒáá·áºáááºááá¬ááẠááŸá¯ááºááŸá¬ážááŸá¯ detector á¡áá»ááºááŒááŸá¯á¡áá±á«áºá¡ááŒá±áá¶á áá®áá®ááá¯ááᯠááŸááºáááºážáááºááá¯ááºáááºá á¡ááá¯ážááŸááºážáá¯á¶ážááá á¹á áá»á¬ážááœáẠáááºááẠáá®ážááŒá¬áž controller ááá«áá² áá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºáž á¡ááŒá±á¡áá±áá»á¬ážá áœá¬ááŒáá·áº ááá¯ááºáá»á±á¬áá®ááœá±ááŸááá±á¬ á áá áºáá áºáá¯ááᯠáááºáá®ážááẠááá¯á¡ááºáá«áááºá
á áááºá¡ááẠááááºážáá»á¯ááºáááááá¬ááᯠááá¹áá¬áá¯á¶ážááá¯ááºáá¬ááœááºáááºááá¯á· áá»áááºáááºáááºá¡ááœááºá áá¯á¶ááŸááºá¡ááºáá¬áááºáá±á¬ááºáᬠ(á) áá¯ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž á¡áááºááá¯ááºážááœáẠááŒá¬ááŒáá·áºá áœá¬ á¡áá¯á¶ážáá»á¬ážáá±á¬ á¡áááºáá¯á¶ážáá á¹á ááºážááŒá áºáá¬áááºá á€áá±áá¬ááœáẠsmart home controller ááá»ááºááŸá¬áá¬áá±ážááá·áºáá±á¬ááºáááºá¡ááŒááºážá¡áá¯á¶áá áºáá¯ááŸááá«ááẠ- á¡ááºáá¬áááºááá¯á·áá»áááºáááºááŸá¯ááŒááºáá±á¬ááºááœá¬ážáá«áá smart home ááẠcontroller á¡ááœááºážááœááºááááºážáááºážáá¬ážáá±á¬ logic block ááŒá±á¬áá·áºááŒá áºááŒá®áž cloud service ááœááºááá¯ááºáá² cloud service ááœááºáá¯á¶ááŸááºá¡ááá¯ááºážáááºáááºáááºáááºáá±áááºááŒá áºáá«áááºá
á áááºá¡áááºááááºážáá»á¯ááºáááááá¬
á€áá±á¬ááºážáá«ážááœáẠááœá±ážááœá±ážáá¬ážáá±á¬ cloud smart home system á¡ááœáẠcontroller ááᯠsingle-board microcomputer áá±á«áºááœáẠá¡ááŒá±áá¶á áá®ááœááºáá¬ážáá«áááºá
ááááºážáá»á¯ááºáááááá¬ááᯠáááºáááºááŒááºážááẠá¡ááœááºááá¯ážááŸááºážáá«ááẠ- ááá¯ááºáááá¯ááœááºááŒá°áᬠ(á) ááᯠááááºá
áá
áºáá°áž (á) áá¯ááœáẠáááºáááºáá¬ážááŒá®ážá ááá¯á·áá±á¬áẠáá±á¬á·ááºáá²ááºááŒáá·áº microSD áá±á¬áºáááºááŸá 1 GB áááºááá¯áá®ááẠ(á) ááŸáá·áº USB Z-Wave ááœááºááẠááááºážáá»á¯ááºáááááᬠ(á) áá¯ááá¯á·ááᯠáááºáááºáá¬ážáááºá áááºááá¯ááºáᬠslot áá»á¬áž á
áááºá¡áááºááááºážáá»á¯ááºáááááá¬ááᯠ2Vá 8A áá«áá«á¡áááºáᬠ(3) ááŸáá·áº USB - ááá¯ááºáááᯠUSB ááŒáá¯áž (4) ááŸáá
áºááá·áº áá«áá«áá±á¬ááºáá¶á·ááŸá¯ááá¯á· áá»áááºáááºáá¬ážáááºá ááááºážáá»á¯ááºáááááá¬áá
áºáá¯á
á®ááœáẠááááá¯á¶ážá
áááºááá·áºá¡áá»áááºááœáẠááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááá¯ááºááœáẠáá±ážááŸááºáá¬ážááá·áº áá®ážááá·áº áááºáá±áá¶áá¶áá«ááºáá
áºáá¯ááŸáááŒá®áž cloud smart home áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááẠááá¯á¡ááºáá«áááºá
á áááºá¡ááẠááááºážáá»á¯ááºáááááá¬áá±á¬á·ááºáá²ááᯠáááºáááºááŸá¯á áá áºá¡áá±á«áº á¡ááŒá±áá¶á á€áá±á¬ááºážáá«ážáá±ážáá¬ážáá°á០áá®ááœááºáá²á·ááŒááºážááŒá áºáááºá Linux Raspbian Stretch. áááºážááœáẠá¡á±á¬ááºáá« á¡ááá á áá áºááœá²áá»á¬áž áá«áááºáááºá
- á áááºá¡áááºáá¯á¶ážáá á¹á ááºážáá»á¬ážááŸáá·áº cloud ááá¯á·ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯áááºá¡ááœáẠáá¬áá¬áá¯ááºáááºážá ááºá
- controller áááœá²á·á ááºážáá¯á¶ááŸáá·áºáááºáááºááŸá¯áá±á¬ááºáá»á¬ážááá¯áááºááŸááºáááºá¡ááœááºááááºáá áºá¡áá¯á¶ážááŒá¯áá°áá»ááºááŸá¬ááŒááºá
- controller configuration ááᯠááááºážáááºážáááºá¡ááœáẠáá±áá¬áá±á·á áºá
áá±áá¬áá±á·á
smart home controller ááᯠembedded DBMS ááᯠá¡ááŒá±áá¶á á¡áá±á¬ááºá¡áááºáá±á¬áºáá«áááºá
graphical interface áá
áºáᯠmicroframework ááᯠá¡áá¯á¶ážááŒá¯á PHP 7 ááœáẠsmart home controller ááᯠáá®ááœááºáá²á·áááºá
(áá¯á¶áá±á«áºááœáẠááá
áºááŸáááºá ááŒááºáááºááŒááºáá¬ážá
áœá¬ ááœáá·áºáááº)
ááááºáá Ạá¡ááºáá¬áá±á·á áºá á¡ááááá¯ááºáá±á¬ááºáá»ááºááŸá¬ á áááºá¡áááºáá¯á¶ážáá á¹á ááºážáá»á¬áž (IP á á±á¬áá·áºááŒáá·áºáááºááá¬áá»á¬ážááŸáá·áº á¡á¬áá¯á¶áá¶áááááá¬áá»á¬áž) ááᯠááááºážáá»á¯ááºáááááá¬ááá¯á· áá»áááºáááºáááºááŒá áºáááºá áááºá¡ááá®áá±ážááŸááºážááẠááááºážáá»á¯ááºáááááá¬áááœá²á·á ááºážáá¯á¶ááŸáá·áº áááºááŸáá¡ááŒá±á¡áá±ááá¯á·ááᯠSQLite áá±áá¬áá±á·á áºá០áááºážááŸáá·áºáá»áááºáááºáá¬ážáá±á¬ á ááºáá»á¬ážááᯠáááºáááºá ááááºážáá»á¯ááºáá°ááœá²á·á ááºážáá¯á¶áá¯á¶á á¶ááá¯ááŒá±á¬ááºážáá²áááºá áááºážááẠáá¬áá¬áá¯ááºáááºážá ááºá RESTful API áá»ááºááŸá¬ááŒááºááŸáá áºááá·áº JSON áá±á¬áºáááºááœáẠááááºážáá»á¯ááºááŸá¯á¡áááá·áºáá»á¬ážááᯠáá±ážááá¯á·áááºá
Server áá¯ááºáááºážá ááº
Server áá¯ááºáááºážá áẠ- á áááºá¡áááºáá áºáá¯á á¡ááŒá±áá¶á¡ááŒá Ạá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáá±ážááá·áº ááááºážá¡áá»ááºá¡áááºááá¯ááºáᬠáá¯ááºáááºážá ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááááá¯ááºáá±á¬ááºááá·áº á¡áááá¡á áááºá¡ááá¯ááºáž- á¡á¬áá¯á¶áá¶áá±áá¬ááᯠáááºáá¶ááŒááºážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá ááá·áºááœááºážáá¬ážáá±á¬ áá¯áá¹áááá±á«áºáá°áááºá ááááºážáá»á¯ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±ážááŒááºážá áá¬áᬠáá¯ááºáááºážá ááºá áááºááœááºáá»ááºááŸá¬ á áááºá¡áááºáá¯á¶áž áá á¹á ááºážáá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸáẠáá¯á¶á·ááŒááºáááºá áá¯ááºáá¯ááºááŸá¯ áá¯áá¹áááááºážá¥ááá±áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá ááááºáá Ạá¡ááºáá¬áá±á·á áºááŸáá·áº cloud ááá¯á·á០á¡áááá·áºáá»á¬ážááᯠáááºáá¶ááŒááºážááŸáá·áº á á®áá¶áá±á¬ááºááœááºááŒááºáž ááŒá áºáááºá ááá·áºááœááºážá ááºážá á¬ážáá¬ážááá·áº smart home controller ááŸá áá¬áᬠáá¯ááºáááºážá ááºááᯠC++ ááœáẠáááºáá®ážáá¬ážáá±á¬ multi-threaded application áá áºáá¯á¡ááŒá Ạá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®áž áá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯áá áºáá¯á¡ááŒá Ạá áááºáá±á¬ááºááœááºáá«áááºá systemd ááœááºáá»á°áá¬á ááºáááºáááºáá±ážá áá áºáááá¯áááẠLinux Raspbian.
áá¬áᬠáá¯ááºáááºážá ááºá á¡ááá ááá±á¬ááºáá»á¬ážááŸá¬-
- áááºáá±á·áá»áºáááºáá±áá»á¬;
- IP áááºááá¬áá¬áá¬;
- Z-Wave á ááºáá¬áá¬;
- áá¯ááºáá¯ááºááŸá¯ áá¯áá¹áááááºážá¥ááá±áá»á¬áž áá¬áá¬á
- ááááºážáá»á¯ááºáá°áááœá²á·á ááºážáá¯á¶ááŸáá·áº áá¯áá¹áááááºážá¥ááá±áá»á¬ážááááºááá¯á·ááŒááºážááá¯ááºáᬠáá±áá¬áá±á·á áºá
- ááááºáá áºá¡ááºáá¬áá±á·á áºááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯á¡ááœáẠRESTful API áá¬áá¬á
- cloud ááŸáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºáááºá¡ááœáẠMQTT client
áá¬áá¬áá¯ááºáááºážá ááºááááºááá¯á·ááŒááºážááᯠJSON áá±á¬áºáááºááŸá áááºáá±á·áá»áºáá¯á¶á á¶ááŒáá·áº ááœáŸá²ááŒá±á¬ááºážáá±ážááá·áºááŒá¬ážá០á¡áá»ááºá¡áááºáá»á¬ážááᯠáá®ážááŒá¬ážááœá²áá»á¬ážá¡ááŒá Ạáá¯ááºáá±á¬ááºááẠ(ááá¯á·ááá¯áẠáá¯ááºáááºážá ááºááŸááºáá¬ááºááœáẠá€áá±á¬áºáááºááᯠááá¯ááºá á¬ážááŒá¯ááá·áº áá±áá¬ááœá²á·á ááºážáá¯á¶áá»á¬áž)á
áá¬áᬠáá¯ááºáááºážá
ááºá á¡ááá á¡á
áááºá¡ááá¯ááºážááŸá¬ áááºáá±á·ááºá»áááºáá±áá»á¬JSON áááºáá±á·áá»áºáá»á¬ážááᯠáá¬áá¬áá¯ááºáááºážá
ááºááááºááá¯á·ááŒááºážáá»á¬ážá¡á¬ážáá¯á¶ážááá¯á· áááºážááŒá±á¬ááºážáá±ážáááºá JSON áááºáá±á·ááºá»á¡áá»ááºá¡ááẠá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááŸáá·áº áááºážááá¯á·áááºáá¶ááá¯ááºáá±á¬ áááºááá¯ážáá»á¬ážááᯠááá¬ážááœáẠáá±á¬áºááŒáá¬ážáá«áááºá
á
ááºá¡áá»áá¯ážá¡á
á¬áž
protocol ááá¯
áááºáá±á·ááºá»á¡áá»áá¯ážá¡á
á¬áž
deviceState
á¡áááá·áº
áááºááá¬á
á
á¡á¬áá¯á¶áá¶áá±áá¬
on
ááá¯ááºááá¯ááºáá¯ááºááœáŸáá·áºááŒááºáž(ááœáá·áº/ááááº)
á¡á¬áá¯á¶áá¶áááááá¬
zwave
á¡áááá·áº
ááœá¬áž
á¡áá¶ááœááºážááŒááºáž(ááœáá·áº/ááááº)
effector
mqtt
businessLogicRule
ááá¯ááºááá¯ááºáá¯ááºááœáŸáá·áºááŒááºáž(ááœáá·áº/ááááº)
evice(ááá·áºáááº/áááºááŸá¬ážáááº)
businessLogic
ááœá²á·á
ááºážááŸá¯áá±áá¬
á¡áá¶ááœááºážááŒááºáž(ááœáá·áº/ááááº)
ááá°ážáá¯ááº
deviceState
á¡ááŸá¬áž
ááá¯ááºááá¯ááº
rf
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááá¬ááœá±á·áá»á¬ážááŸá¯ detector á០áááºáá±á·áá»áºááẠá€áá²á·ááá¯á· ááŒá áºáááº-
{
"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 áá±á¬áºáááºááŒáá·áº ááŒááá¬ážááŒá®áž áá¬áá¬áá¯ááºáááºážá ááºááááºááá¯á·ááŒááºážá¡ááœááºáž áááºáá±á·áá»áºááá¯ááºááœááºáá°áá¶ááá¯á· ááá·áºááºáá áºáá¯á á¥ááá¬á¡á¬ážááŒáá·áºá IP áááºááá¬áá¬áá¬á¡á¬áž GUI ááŸáá·áº cloud ááá¯á·á០á¡áááá·áºáá»á¬ážáááºáá¶ááá°áááºá á¡á±á¬ááºáá«á ááºážáá»ááºážááᯠááá·áºááœááºážááẠááá¯á¡ááºáááº-
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
áááºááŸááºáá¬ážáá²á· á¡ááŒá±á¡áá±ááœá±ááŸááááºá ááŸá±ážá (áááºáá²áááº) áááá¹áá¬áá¯ááºááŸááºáá»áŸáẠáá»á±áááºáááºá á¡áá»áá¯ážááẠ(áá¬áááºááŒááºáž) á ááºážáá»ááºážáá»á¬ážááŒá áºááŒá®áž ááá¯ááºááœááºáá°ááẠJSON áááºáá±á·áá»áºá á á¬ááá¯ááºááá¯á· áááºáá±á¬ááºááœáá·áº áááŸááááºá JSON áá±á¬á·áá»ááº-áááºááá¯ážá¡ááœá²áá»á¬ážááᯠááŸáá¯ááºážááŸááºááá·áº áá¯áá¹áááááºáá±á¬ á¡á±á¬áºááá±áá¬áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááº-
- áááºážáá° "áá®áá»áŸ";
- "not_equal" ááŸáá·áº ááá®áá»áŸáá«á
- "áááºáž" áááºáž;
- ááᯠ"ááŒá®ážááŒááº";
- "less_or_equal" ááẠáááºážááẠááá¯á·ááá¯áẠáá®áá»áŸáááº;
- ááŒá®ážááẠááá¯á·ááá¯áẠ"greater_or_equal" áááºááŒá®ážáááºá
ááŸáá¯ááºážááŸááºááŸá¯ááááºáá»á¬ážááẠBoolean á¡áá¹ááá¬áááºá¹áá»á¬á¡á±á¬áºááá±áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž áá áºáá¯ááŸáá·áºáá áºáᯠáááºá ááºááá¯ááºáááº-
- "ááŸáá·áº"
- ááá¯á·ááá¯áẠ"ááá¯á·ááá¯ááº";
- ááá¯ááºáá°áž "ááá¯ááºáá°áž"
ááá¯á·ááŒá±á¬áá·áºá ááá¯áááºá¡ááŸááºá¡áá¬ážááœáẠá¡á±á¬áºááá±áá¬áá»á¬ážááŸáá·áº á¡á±á¬áºááá±áá¬áá»á¬ážááᯠáá±ážáá¬ážááŒááºážááŒáá·áºá áááºááẠááá·áºáááºáá»ááºáá»á¬ážá¡áá»á¬ážá¡ááŒá¬ážááŒáá·áº á¡áá±á¬áºáá±ážááŸá¯ááºááœá±ážáá±á¬á¡ááŒá±á¡áá±áá»á¬ážááᯠáááºáá®ážááá¯ááºáááºá
JSON áááºáá±á·áá»áºáá»á¬ážááŸáá·áº JSON áá±á¬áºáááºááŸá áá¯ááºáá¯ááºááŸá¯á ááºážáá»ááºážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á áá°áá®ááá·áº ááá¹ááá¬ážá¡á¬áž á¡ááááá¬ááᯠááá¯ááºá á¬ážááŒá¯ááŒá®áž smart home á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážá០á¡á¬áá¯á¶áá¶á¡áá»ááºá¡áááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá¯áá¹áááá±áááá¯ááºáᬠáá±á¬ááºáá»ááºáá»ááŸá¯ááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá¯ááºáá¯ááºáá±ážáá¯áá¹áááá¬áá¬ááááºááá¯á·ááŒááºážááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
ááá¯ááá¯ááºážá¡ááºááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯á á¡áá¯á¶ážááŒá¯áá°ááẠá áááºá¡áááºááœáẠáá¯ááºáá±á¬ááºááá·áºááá·áº á¡ááŒá±á¡áá±áá»á¬ážááᯠáááºáá®ážáááºá á¥ááá¬á¡á¬ážááŒááºá·: âá¡áááºááŸá±á·áá¶áá«ážááá¯ááœáá·áºááá¯á· á¡á¬áá¯á¶áá¶áááááá¬á á¡á áá»áá¯ážáá±áááºááá¯ááẠá ááºá¹ááŒá¶ááŸá¬ áá®ážááœáá·áºááá¯ááºáá«â. á¡ááá®áá±ážááŸááºážááẠáá±áá¬áá±á·á áºá០á¡á¬áá¯á¶áá¶áááááá¬áá»á¬áž (á¡ááœáá·áºá¡á¬áá¯á¶áá¶áááááá¬) ááŸáá·áº actuators (smart socket ááá¯á·ááá¯áẠá áááºáá®ážá¡áááº) ááá¯áááºááŒá®áž smart home controller ááá¯á·áá±ážááá¯á·ááá·áº 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_á ááºážáááºážáá»á¬áž - áá¯ááºáá¯ááºááŸá¯á ááºážáá»ááºážáá»á¬áž string arrayá á¡áááºáááºáá±á·áá»áºááŸáá·áº áá¯ááºáá¯ááºááŸá¯á ááºážáá»ááºážááá¯á·ááᯠááŸáá¯ááºážááŸááºááŒááºážá¡á¬áž áá¯ááºáá±á¬ááºááŸá¯ááœáẠáá¯ááºáá±á¬ááºáááºá reader.Parse(ruleStreamá ruleHandler)áááºááŸá¬ ruleHandler Boolean ááŸáá·áº ááŸáá¯ááºážááŸááºá¡á±á¬áºááá±áá¬áá»á¬ážá áá¯áá¹áááá«áááºááá·áº á¡áá¬ááá¹áá¯áá áºáá¯ááŒá áºáááºá sRuleId â smart home controller áá±áá¬áá±á·á áºá¡ááœááºáž á ááºážáá»ááºážáá»á¬ážááᯠááááºážáááºážááŒá®áž áááºážááŒááºááá¯ááºáá±á¬ááŒá±á¬áá·áº áá°ážááŒá¬ážáá±á¬ á ááºážáá»ááºážáááºááŸááºááŸá¯á áá áºá m_pActions â áá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºáá±á¬ á¡áá¯á áááºááááºáá»á¬ážáá«ááŸááá±á¬ á¡áááºážá¡áá»ááºážáá áºáá¯- á ááºážáá»ááºážá¡ááŒá±áá¶á០á¡áá»áá¯ážáááºáá»á¬ážáá«ááŸááá±á¬ JSON áááºáá±á·áá»áºáá»á¬ážááᯠá á¬áááºážááœááºážáá°á á¬ááœá²áá»á¬áž áá¯ááºáá±á¬ááºááá¯ááºá á±áááºá¡ááœáẠáááºáá±á·áá»áºáááºáá±áá»á¬áᶠáááºáá¶áá±ážááá¯á·áá«á
RapidJSON á áœááºážáá±á¬ááºáááºááẠáá¯ááºáá±á¬ááºáá»ááºááŸáá·áº ááŸáá¯ááºážááŸááºááá¯ááºáááºá strlen()ááŸáá·áº á¡áááá·áºáá¯á¶áž á áá áºáááºážááŒá Ạááá¯á¡ááºáá»ááºáá»á¬ážááẠááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ á ááºáá»á¬ážááœáẠá€á á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááºá JSON áá±á¬áºáááºááŸá áááºáá±á·áá»áºáá»á¬ážááŸáá·áº áá¯áá¹áááááºážá¥ááá±áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠsmart home controller á á¡á áááºá¡ááá¯ááºážá¡á¬ážáá¯á¶ážááŒá¬ážááœáẠááá¯ááºáá»á±á¬áá®ááœá±ááŸááá±á¬ á¡áá»ááºá¡áááºáááŸááºááŸá¯á áá áºáá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºá á±áá«áááºá
Z-Wave á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážááŸáá·áº ááœááºážá¡á¬ážáá±ážáááááá¬áá»á¬áž
á
áááºá¡áááºá á¡áááá¡á¬ážáá¬áá»ááºááŸá¬ ááŒááºááááºáááºážáá»ááºá áá±á¬ááºáá»á¬ážááᯠááœááºáááºá
áœá¬ááá¯ááºážáá¬ááá¯ááºááŒá®áž á¡ááŒá±á¡áá±áá±á«áºáá°áááºá á¡áá¯á¶ážáááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááŒááºážááŒá
áºáááºá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážááŸáá·áº ááŸá¯á¶á·áá±á¬áºáááááá¬áá»á¬ážááᯠá
áááºá¡áááºááááºážáá»á¯ááºáááááá¬ááá¯á· áá»áááºáááºáá¬ážáááºá áááºááŸááá¬ážááŸááºážááœááºá áááºážááá¯á·ááẠáááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºáá±ááá·áº ááŒáá¯ážáá²á·á
ááºáá
á¹á
ááºážáá»á¬ážááŒá
áºáááºá
ááá¯á¡áá«ááœáẠá
á»á±ážááœááºááœáẠááá°áá®áá±á¬ Z-Wave áááááᬠá¡áá»á¬ážá¡ááŒá¬ážááᯠáááºááŸá¬ááœá±ááá¯ááºáá«ááŒá®á á¥ááá¬á¡áá»áá¯á·ááᯠááŒáá·áºááŒáá«á
áá¯á·á
- Zipato PAN16 smart socket ááẠá¡á±á¬ááºáá±á¬áºááŒáá« ááá·áºáááºáá»ááºáá»á¬ážááᯠááá¯ááºážáá¬ááá¯ááºáááº- áá»áŸááºá á áºáá¯á¶ážá áœá²ááŸá¯ (kWh), áá«áá« (W), ááá¯á·á¡á¬áž (V) ááŸáá·áº áá»áŸááºá á áºááœááºááẠ(A) ááá¯á·ááŒá áºáááºá áááºážááœáẠáá»áááºáááºáá¬ážáá±á¬ áá»áŸááºá á áºáá á¹á ááºážáá»á¬ážááᯠáááºááááºážáá»á¯ááºááá¯ááºááá·áº built-in ááá¯ááºáá áºáá¯áá«ááŸááááºá
- Neo Coolcam ááá¯á ááá·áºááŸá¯á¡á¬áá¯á¶áá¶áááááá¬ááẠá¡áá±ážááááºážáááááá¬áá¡áááºá¡ááœááºáá»á¬ážááá¯ááááºááŒááºážááŒáá·áº ááááºá ááºáá¬áá±á¬á¡áááºáá»á¬ážááŸááá±ááŒááºážááᯠáá±á¬ááºááŸááºážá á áºáá±ážáááºá
- Zipato PH-PSG01 áá®ážááá¯ážá¡á¬áá¯á¶áá¶áááááá¬ááẠáá¬ááºááœá±á·ááœá²ááŒááºážá áááºááŒá¬áááºážáá²ááá¯á· áá®ážááá¯ážááŸá¯ááºáá»á¬ážáááºáá±á¬ááºááá·áºá¡áá« á¡á áá»áá¯ážáááºá
- Neo Coolcam ááŸá¯ááºááŸá¬ážááŸá¯á¡á¬áá¯á¶áá¶áááááá¬ááẠáá°á·ááá¹áá¬ááá¯ááºá á¡áá®á¡á±á¬ááºáá±á¬ááºááŒááºááᯠááá¯ááºážááŒá¬ážá áááºááŒá¬áááºá ááá¯á·á¡ááŒáẠá¡áááºážá¡á¬áá¯á¶áá¶áááááᬠ(Lx);
- Multisensor Philio PST02-A ááẠá¡áá°áá»ááẠ(°C)á á¡áááºážáá±á¬áẠ(%)á áá¶áá«ážááœáá·áºááŒááºážá á¡áááºážáá²ááœáẠáá°áá áºáŠážááŸááá±ááŒááºážááᯠááá¯ááºážáá¬áááºá
- á¡á¬áá¯á¶áá¶áááááá¬áá»á¬áž áá»áááºáááºáá¬ážááá·áº Z-Wave USB Stick ZME E UZB1 ááœááºááẠááááºážáá»á¯ááºáááááá¬á
á ááºáá á¹á ááºážáá»á¬ážááŸáá·áº ááááºážáá»á¯ááºáááááá¬áá»á¬ážááẠáá°áá®áá±á¬ááŒáááºááŸá¯ááºážááœáẠáá¯ááºáá±á¬ááºááẠá¡ááœááºá¡áá±ážááŒá®ážáá«áááºá ááá¯ááºáá«á áááºážááá¯á·ááẠáá»áááºáááºáá±áá»áááºááœáẠáá áºáá¯ááŸáá·áºáá áºáᯠáááœá±á·ááá±á¬á·áá«á ááá¯ááºáááºáž ááá¯á·ááá¯áẠáá»á±ážáááºá¡áááºáá áºáá¯á¡ááœáẠáá¯á¶áá±á¬ááºááá·áº Z-Wave ááœááºáááºááááºážáá»á¯ááºáááááá¬áá áºáá¯ááá¯á· á áẠ232 áá¯á¡áá áá»áááºáááºááá¯ááºáááºá á¡áááºááœááºáž ááœááºáááºááœáŸááºážááŒá¯á¶ááŸá¯á§áááá¬ááᯠáá»á²á·ááœááºáááºá á ááẠáá±á«ááºáá±á«ááºááᯠá¡áá»ááºááŒááŸá¯ áááºáá«áááºáá«á¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
ááááºá
á¬ááá¯ááºááœáẠááœá±ážááœá±ážáá¬ážáá±á¬ smart home controller server áá¯ááºáááºážá
ááºááœááºá 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 ááœááºááẠUSB ááááºážáá»á¯ááºáááááá¬ááá¯á· áá±ážááá¯á·áá±ážááá·áº Z-Wave áá¬áá¬ááá¯á· ááœá¬ážáá«áááºá ááá¯á·áá±á¬áẠáááºážááá¯á·ááẠáááºáááºážáá»ááºá¡áá¬ááá¹áá¯áá»á¬ážá á¡ááŒá±á¡áá±ááᯠááŒá±á¬ááºážáá²áá±ážááá·áº actuator áá²ááá¯á· áááºáá±á¬ááºáᬠá áááºá¡áááºááẠá¡áá¯á¶ážáááºáá±á¬ á¡áá¯ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá
(áá¯á¶áá±á«áºááœáẠááá
áºááŸáááºá ááŒááºáááºááŒááºáá¬ážá
áœá¬ ááœáá·áºáááº)
Z-Wave á ááºáá»á¬ážááᯠáá»áááºáááºááŒááºážááẠsmart home controller á graphical interface ááœáẠáá¯ááºáá±á¬ááºáá«áááºá áááºážááá¯áá¯ááºáá±á¬ááºáááºá á ááºáá»á¬ážá á¬áááºážáá«ááŸááá±á¬á á¬áá»ááºááŸá¬ááá¯á·ááœá¬ážá "Add" ááá¯ááºááá¯ááŸáááºáá«á RESTful API á¡ááºáá¬áá±á·á áºááŸáá áºááá·áº áá±á«ááºážááá·áºááá·áºá¡áááá·áºááẠáá¬áá¬áá¯ááºáááºážá ááºáá²ááá¯á· áááºáá±á¬ááºááŒá®áž áááááá¬áá»á¬ážááᯠáá±á«ááºážááá·áºáááºá¡ááœáẠá¡áá°ážáá¯ááºáá áºáá¯á¡ááŒá ẠZ-Wave áá¬áá¬ááá¯á· áááºáá±á·áá»áºáááºáá±áá»á¬á០áá±ážááá¯á·áááºá ááá¯á·áá±á¬ááºá Z-Wave á ááºááœáẠáááºáá±á¬ááºááŸá¯ááá¯ááºá á¡ááŒááºááŸáááºááŒááºáž (á ááŒááẠá.á á áá¹ááá·áºá¡ááœááºáž) á¡ááŒááºááŸáááºááẠááá¯á¡ááºáááºá USB ááááºážáá»á¯ááºáááááá¬ááẠá ááºáá á¹á ááºážá¡á¬áž ááœááºáááºááŸáá·áº áá»áááºáááºááŒá®áž áááºážááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠZ-Wave áá¬áá¬ááá¯á· áá±ážááá¯á·áááºá áááºážááẠá ááºá¡áá áºá ááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº SQLite áá±áá¬áá±á·á áºááœáẠá¡áá áºáááºáá±á¬ááºááŸá¯ááᯠáááºáá®ážáá±ážáááºá áááºááŸááºáá¬ážáá±á¬á¡áá»áááºááŒá¬ážáá¬ááá áºáá¯ááŒá®ážáá±á¬ááºá ááááºáá áºá¡ááºáá¬áá±á·á áºááẠZ-Wave á ááºáá á¹á ááºážá á¬áááºážá á¬áá»ááºááŸá¬ááá¯á·ááŒááºááœá¬ážáᬠáá±áá¬áá±á·á áºááŸá¡áá»ááºá¡áááºáá»á¬ážááá¯áááºááŸá¯ááŒá®ážá á¬áááºážá¡ááœááºážááŸáá ááºáá á¹á ááºážá¡áá áºááá¯ááŒááááºá á ááºáá á¹á ááºážáá áºáá¯á á®ááẠáá¯ááºáá¯ááºááŸá¯á¡áá¯áá¬áá ááºážáá»ááºážáá»á¬ážááŸáá·áº cloud ááœááºá¡áá¯ááºáá¯ááºááá·áºá¡áá«ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº áááºážáááá¯ááºááá¯ááºá¡ááŸááºá¡áá¬ážááᯠáááºáá¶áááŸááá«áááºá ဠalgorithm ááá¯ááºáá±á¬ááºáá»ááºááᯠUML áá¯á¶ááœááºááŒáá¬ážáááº-
(áá¯á¶áá±á«áºááœáẠááá
áºááŸáááºá ááŒááºáááºááŒááºáá¬ážá
áœá¬ ááœáá·áºáááº)
IP áááºááá¬áá»á¬ážááᯠáá»áááºáááºááŒááºážá
á€áá±á¬ááºážáá«ážááœáẠááœá±ážááœá±ážáá¬ážáá±á¬ cloud smart home system ááẠá á»á±ážááœááºááœáẠááŸá áºá¡áá±á¬áºááŒá¬ááŒá¬ áááºáááºáá¬ážááŒá®áž áá¯ááŸá¬ážááœáẠáááºáááºááŸá¯áá»á¬ážá áœá¬ááŸáááá·áº á á¬áá±ážáá°ááŸáááºáž áá®ááœááºáá¬ážááá·áº cloud áá®áá®ááá¯á á±á¬áá·áºááŒáá·áºáá±ážá áá áºá á¡ááá·áºááŒáŸáá·áºáááºááŸá¯áá áºáá¯ááŒá áºáááºá
cloud áá®áá®ááá¯á á±á¬áá·áºááŒáá·áºáá±ážá áá áºáá»á¬ážá¡ááœááºá ááŒááºážáááºáá±á¬ááŒá¿áá¬áá»á¬ážáá²ááŸáá áºáá¯ááẠáá±á«ááºážá ááºáá¯ááºáá±á¬ááºááá¯ááºááá·áº á ááºáááááá¬áá»á¬ážá ááá·áºáááºááœá±ážáá»ááºááŸá¯ááŒá áºáááºá Cloud ááŸáá·áº áá»áááºáááºááẠáá¬áááºááŸáááá·áºáá±á¬á·ááºáá²ááºááᯠáá®áá®ááá¯áááºááá¬á¡ááœááºážááœáẠááá·áºááœááºážáá¬ážááŒá®áž áááºážááẠáááºážááá¬á·ááºáá²ááŒá áºááá·áº áááá¯áááºáá¬ááŸáá·áº á¡ááá²á·áááºááá¯áá®ááá¬áááá¯á·ááᯠáá»ááºáá»ááºážáá±ážáá±á¬ááºáááºá áááºážááẠáá¯á¶ááŸáẠIP áááºááá¬áá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á cloud CCTV áááºááá¬áá»á¬ážá á á»á±ážááŸá¯ááºážááŒáá·áºáá¬ážááŸá¯ááᯠá¡áááá¡á¬ážááŒáá·áº ááŸááºážááŒáááºá ááá¯á·á¡ááŒáẠCCTV áááºááá¬áá¯ááºáá¯ááºááá·áºáá¯áá¹ááá®áá»á¬ážááŸáá·áº á á±á·á ááºááŸáááŸáá¯ááºážááŸá¯áá»á¬ážááẠáááºááá¬ááá¯ááºá áá áºááŸáá·áº ááá¯á¡ááºáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáááááá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯á¶ážá áœá²ááœáá·áºáááŸáááẠááá¯á¡ááºáá«áááºá
á¡ááŒá¬ážáá
áºáááºááœááºá áá±ááºáá® IP áááºááá¬áá»á¬ážá¡á¬ážáá¯á¶ážááœáẠá¡ááŒá¬ážá
ááºáá
á¹á
ááºážáá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáááºáá¶áááºá¡ááœáẠá
á¶áááá¯ááá¯áá±á¬áá»á¬áž (á¡áá°ážáááŒáá·áº áá®áá®ááá¯á¡áá¶áááºážá
ááºáá»á¬áž) ááŸááááºá ááá¯á·ááŒá±á¬áá·áºá á
á¶áááá¯ááá¯áá±á¬ááŸáá
áºááá·áº áá»áááºáááºááŒá®áž IP áááºááá¬áá»á¬ážá០áá®áá®ááá¯á
á®ážááŒá±á¬ááºážáá»á¬ážááᯠcloud ááá¯á· áá¯ááºááœáŸáá·áºááá·áº áá®ážááŒá¬ážááááºážáá»á¯ááºáááááá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠcloud áá®áá®ááá¯á
á±á¬áá·áºááŒáá·áºáá±ážá
áá
áºáá»á¬ážá¡ááœáẠáááá¬áááºááŸá¬ážáá±á¬ á¡ááŒáá¯ááºá¡ááá¯áẠá¡á¬ážáá¬áá»ááºáá»á¬ážááᯠáá±ážáá«áááºá ááá¯á·á¡ááŒááºá á¡áááºá áá¯á¶ážá
áœá²áá°ááẠááá¯ážááŸááºážáá±á¬ IP áááºááá¬áá»á¬ážááᯠá¡ááŒá±áá¶á áá®áá®ááá¯á
á±á¬áá·áºááŒáá·áºáá±ážá
áá
áºááᯠáááºáááºáá¬ážááŒá®ážááŒá
áºáá«á áááºážááᯠáá»á²á·ááœááºááŒá®áž áááºážááᯠááŒáá·áºá
á¯á¶áá±á¬ cloud smart home á¡ááŒá
ẠááŒá±á¬ááºážáá²ááá¯ááºáááºááŒá
áºáááºá
ááŒáœááºážáá»ááºáááŸááá² IP áááºááá¬áá¯ááºáá¯ááºáá°á¡á¬ážáá¯á¶ážááŸáá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ 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
ááááºá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠC++ ááŸá áá±á«ááºážá á®áž â*.hâ ááŸáá·áº á¡áááºážá¡ááŒá Ạâ*.cppâ ááá¯ááºáá»á¬ážááᯠá¡ááá®áá±ážááŸááºážáá áºáᯠááá¯á·ááá¯áẠáá®ážááŒá¬ážá á¬ááŒáá·áºááá¯ááºáá áºáá¯ááá¯á· ááá¯ááºááá¯ááºááá·áºááá¯ááºááŒá®áž GCC á á¯á ááºážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á á á¯á ááºážááá¯ááºáááºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áœá¬ááŒá±á¬áá·áºá áá¯ááºááẠááŒá®ážáá¬ážááŒá®áž ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááẠááá¯á¡ááºáá«áááºá Raspberry Pi 3 áá±á¬áºááẠB+ ááá¯ááºáááá¯ááœááºááŒá°áá¬ááœáẠá€áá¯ááºááᯠáá¯ááºáá±á¬ááºááẠáá¯á¶áá±á¬ááºáá±á¬ á áœááºážáá±á¬ááºáááºááŸáááŒá®ážá ááá¯á·áá±á¬áº áá¯ááºááᯠá¡ááŒá¬ážááááºáá±á¬ááºážááá¯á· ááá¯á·ááẠááá¯á¡ááºáá«áá ááŸááºáááºáá±á¬ áááá¯áááºáá¬áááá¯áá¬ááŸáá·áº á áá áºá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááœá±ážáá»ááºááẠááá¯á¡ááºáá«áááºá
ONVIF á
á¶ááŸá¯ááºážááᯠáá¶á·ááá¯ážáá±ážááá·áº IP áááºááá¬áá»á¬ážááẠáá±áááœááºáž ááœááºáááºáá
áºáá¯áá±á«áºááœáẠáá¯ááºáá±á¬ááºááá·áºá¡áá«ááœáẠááááºá
á¬ááŸáá·áºá¡áá° á¡áá°áž multicast á¡ááœá²á·ááŸáá·áº áá»áááºáááºáá¬ážáááºá 239.255.255.250. áááá¯ááá¯áá±á¬áá
áºáá¯ááŸááááºá
á áááºá¡ááẠááááºážáá»á¯ááºáááááá¬á ááááºáá Ạá¡ááºáá¬áá±á·á áºááẠPHP ááŸá IP áááºááá¬áá»á¬ážá¡ááœáẠááŸá¬ááœá±ááŸá¯áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáá±ážáááºá áááºážááẠXML áááºáá±á·áá»áºáá»á¬ážááŸáá áºááá·áº áááºáááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºááá·áºá¡áá« á¡ááœááºá¡áááºááŒá±áááºá áá®áá°ážáá á¹á ááºážáá»á¬ážááá¯ááœá±ážáá»ááºáá±á¬á¡áá« á ááºáá á¹á ááºážáá»á¬áž > IP áááºááá¬áá»á¬áž > á áááºáááºááŒááºážá IP áááºááá¬áá»á¬ážááᯠááŸá¬ááœá±ááŒááºážá¡ááœáẠá¡ááºáááá¯áá®áááºááᯠá áááºáá²á·ááŒá®áž ááááºá¡á¬áž ááá¬ážáá¯á¶á á¶ááŒáá·áº ááŒááááº-
(áá¯á¶áá±á«áºááœáẠááá
áºááŸáááºá ááŒááºáááºááŒááºáá¬ážá
áœá¬ ááœáá·áºáááº)
ááááºážáá»á¯ááºáááááá¬ááá¯á· áááºááá¬áá áºáá¯á¶ážááá·áºáá±á¬á¡áá«á áááºážááẠcloud ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááá·áº áááºáááºáá»á¬ážááᯠáááºááŸááºááá¯ááºáááºá á€á¡ááá·áºááœááºá áááºážááᯠáá±á¬ááºááá¯ááºážááœáẠcloud á¡ááœááºážááœáẠá¡ááœááºááá° ááœá²ááŒá¬ážááááŸáááá¯ááºá á±ááá·áº áá°ážááŒá¬ážááá·áºáááááᬠidentifier áá áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬áẠáááºááŸááºáá±ážáá«áááºá
ááá¯á·áá±á¬ááºá ááá·áºááœááºážáá¬ážáá±á¬áááºááá¬á ááá·áºáááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá«áááºáá±á¬ JSON áá±á¬áºáááºááŒáá·áº áá¯ááºáá±ážááŒá®áž RESTful API ááœáŸááºááŒá¬ážáá»ááºááŸáá
áºááá·áº áááºááá¬áá«áá¬áá®áá¬áá»á¬ážááᯠá¡ááœááºážááá¯ááºáž SQLite áá±áá¬áá±á·á
áºááœáẠááááºážáááºážáá¬ážáá¬á á
áááºá¡áááºááááºážáá»á¯ááºáááááá¬á áá¬áá¬áá¯ááºáááºážá
ááºááá¯á· áá±ážááá¯á·áááºá á¡á±á¬ááºáá±á¬áºááŒáá« áá¯ááºáááºážá
ááºáá»á¬ážááᯠá
áááºáááºáááºáž á¡áá¯á¶ážááŒá¯áááº-
- áá®áá®ááá¯ááŸáá·áº á¡áá¶á á®ážááŒá±á¬ááºážáá»á¬ážááᯠáááºáá¶áááŸáááẠRTSP áá»áááºáááºááŸá¯áá áºáᯠáá°áá±á¬ááºááŒááºážá
- G.711 mu-Lawá G.711 A-Lawá G.723 á áááºááŒáá·áº áá±á¬áºáááºáá»á¬ážá០á¡áá¶ááᯠáá°ážááŒá±á¬ááºážááŒááºážá AAC áá±á¬áºáááºááá¯á·á
- áá®áá®ááá¯á á®ážááŒá±á¬ááºážáá»á¬ážááᯠH.264 áá±á¬áºáááºááŸáá·áº AAC áá±á¬áºáááºááŒáá·áº FLV ááœááºááááºáá¬á¡ááŒá áºááá¯á· áá°ážááŒá±á¬ááºážááŒá®áž RTMP áááá¯ááá¯áá±á¬ááŸáá áºááá·áº ááááºááá¯ááºááá¯á· áá¯ááºááœáŸáá·áºááŒááºážá
- ONVIF áááá¯ááá¯áá±á¬ááŸáá áºááá·áº IP áááºááᬠááœá±á·áá»á¬ážááŸá¯ááŸá¬ááœá±áá±ážáááááá¬á á¡áá¯á¶ážááŸááºááŸáá·áº áá»áááºáááºááŸá¯áá áºáá¯ááᯠáá°áá±á¬ááºááŒá®áž áááºážááᯠá¡áá«á¡á¬ážáá»á±á¬áºá áœá¬ áá²ááœááºááŒááºážá
- áá¯á¶áá±áž á¡á ááºážááŒáá·áºáá¯á¶ááᯠá¡áá«á¡á¬ážáá»á±á¬áºá áœá¬ áááºáá®ážááŒá®áž MQTT áááá¯ááá¯áá±á¬ááŸáá áºááá·áº cloud ááá¯á· áá±ážááá¯á·ááŒááºážá
- á áááºá¡áááºááááºážáááááá¬á SD ááá¯á·ááá¯áẠFlash áááºáá±á«áºááœáẠáá®ážááŒá¬ážááá¯ááºáá»á¬áž MP4 áá±á¬áºáááºááŒáá·áº áá®áá®ááá¯ááŸáá·áº á¡áá¶áá¯ááºááœáŸáá·áºááŸá¯áá»á¬ážááᯠáá±áááœááºáž ááŸááºáááºážáááºááŒááºážá
áá¬áá¬áá¯ááºáááºážá
ááºááœáẠáááºááá¬áá»á¬ážá transcodeá áá¯ááºáááºážá
ááºááŸáá·áº áá®áá®ááá¯á
á®ážááŒá±á¬ááºážáá»á¬ážááᯠááŸááºáááºážáááºáááºá¡ááœáẠá
á¬ááŒáá·áºááá¯ááºá០áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
á áœááºážáá±á¬ááºáááºá ááºážáááºááŸá¯ á ááºážáááºááŸá¯ááœáẠáááºááᬠá áá¯á¶ážááᯠááááºážáá»á¯ááºáááááá¬ááá¯á· áá»áááºáááºáá¬ážáááº-
- HiWatch DS-I114W (áá¯á¶ááááºááŒááºáá¬ážááŸá¯ - 720pá áá»á¯á¶á·áá±á¬áºááẠ- H.264á áá áºááŸá¯ááºáž - 1 Mb/sá á¡áᶠG.711 mu-Law);
- Microdigital MDC-M6290FTD-1 (áá¯á¶ááááºááŒááºáá¬ážááŸá¯ - 1080pá áá»á¯á¶á·áá±á¬áºááẠ- H.264á áá áºááŸá¯ááºáž - 1 Mb/sá á¡áá¶áááŸá);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (áá¯á¶ááááºááŒááºáá¬ážááŸá¯ - 1080pá áá»á¯á¶á·áá±á¬áºááẠ- H.264á áá áºááŸá¯ááºáž - 1.5 Mb/sá AAC á¡áá¶)á
áá¯ááºááœáŸáá·áºááŸá¯ áá¯á¶ážáá¯á
áá¯á¶ážááᯠcloud ááá¯á· áá
áºááŒáá¯ááºááẠáá¯ááºáá±ážáá²á·ááŒá®ážá áááºááá¬áá
áºáá¯á¶ážáááºážá០á¡áá¶áá°ážááŒá±á¬ááºážááŸá¯ááᯠáá¯ááºáá±á¬ááºáá²á·ááŒá®áž áá±áááœááºáž ááŸááºáááºážááááºážáááºážááŸá¯ááᯠááááºáá¬ážáááºá CPU load ááẠááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº 5%, RAM á¡áá¯á¶ážááŒá¯ááŸá¯ááẠ32 MB (áá¯ááºáááºážá
ááºáá
áºáá¯áá»áŸááº), 56 MB (OS á¡áá«á¡ááẠá
á¯á
á¯áá±á«ááºáž) ááŒá
áºáááºá
ááá¯á·ááŒá±á¬áá·áºá ááá·áºááŸááºážááŒá± áááºááᬠ20 á០30 ááá·áºááᯠsmart home controller (resolution ááŸáá·áº bitrate áá±á«áºáá°áááºá) áá»áááºáááºááá¯ááºááŒá®áž áá¯á¶ážáááºá¡áááºááœááºáž ááá¯á·ááá¯áẠááá¯áá±á«ááºáááºáá áºáá¯á¡ááœáẠáá®áá®ááá¯á á±á¬áá·áºááŒáá·áºáá±ážá áá áºá¡ááœáẠáá¯á¶áá±á¬ááºáá«áááºá ááá¯ááŒá®ážáá±á¬á áœááºážáá±á¬ááºáááºááá¯á¡ááºááá·áºá¡áá¯ááºáá»á¬ážá¡ááœáẠáááºááẠmulti-core Intel processor ááŸáá·áº Linux Debian Sarge OS áá«ááŸááá±á¬ nettop ááá¯áá¯á¶ážááá¯ááºáááºá ááááºážáá»á¯ááºáááááá¬ááẠáááºááŸáááœáẠá¡á ááºážáá¯ááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºáá±ááŒá®áž áááºážáá áœááºážáá±á¬ááºáááºááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážááᯠá¡ááºááááºáá¯ááºáááºááŒá áºáááºá
ááá¯ááºážááááºááŸáá·áºá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯
cloud-based smart home ááẠá¡áá¯á¶ážááŒá¯áá°áá±áᬠ(áá®áá®ááá¯ááŸáá·áº á¡á¬áá¯á¶áá¶ááá¯ááºážáá¬ááŸá¯áá»á¬áž) ááᯠcloud ááœáẠááááºážáááºážáá«áááºá áá»áœááºá¯ááºááá¯á·áá á®ážáá®ážááŸá cloud ááá¯ááŸá±á¬ááºááŸá¯ááááá¯áá¬áááºáá¬ááᯠáá±á¬ááºáá±á¬ááºážáá«ážááœáẠá¡áá±ážá áááºááœá±ážááœá±ážáá«áááºá ááᯠsmart home controller á០cloud ááá¯á· á¡áá»ááºá¡áááºáááºáá±á·áá»áºáá»á¬áž áá±ážááá¯á·ááŒááºážá¡ááœáẠá¡ááºáá¬áá±á·á áºá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá«á áá¯á·á
áá»áááºáááºáá¬ážáá±á¬ á
ááºáá
á¹á
ááºážáá»á¬ážá á¡ááŒá±á¡áá±áá»á¬ážááŸáá·áº á¡á¬áá¯á¶áá¶áááááᬠááá¯ááºážáá¬ááŸá¯áá»á¬ážááᯠáááá¯ááá¯áá±á¬ááŸáá
áºááá·áº áá¯ááºááœáŸáá·áºáááºá
- QoS 0 - á¡áá»á¬ážáá¯á¶ážáá áºááŒááẠ(ááá¯á·áá±á¬ááºááŸá¯á¡á¬ááá¶áá»ááºáááŸááá«);
- QoS 1 - á¡áááºážáá¯á¶ážáá áºááŒááẠ(áá±ážááá¯á·ááŸá¯á¡áááºááŒá¯áá»ááºááŸáá·áºá¡áá°);
- QoS 2 - áá áºááŒáááºáááá (á¡ááá¯áá±ážááá¯á·ááŸá¯á¡áááºááŒá¯áá»ááºááŸáá·áºá¡áá°)á
áá»áœááºá¯ááºááá¯á·áááá
á¹á
ááœááºá áá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯áááºá
á
áááºá¡ááẠááááºážáá»á¯ááºáááááá¬á á¡ááŒá±á¡áá±ááᯠá¡ááŒá±á¬ááºážááŒá¯á áááºáá±á·áá»áºáá»á¬áž ááá¯á·áááºá ááááºážáááºážáá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážá ááá¹ááá¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá
á
á¬ááŒáá·áºááá¯áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á MQTT áá¯á¶ážá
áœá²áá°ááᯠáá®ááœááºáá²á·áááºá
H.264 + AAC áá®áá®áá¬á á®ážááŒá±á¬ááºážáá»á¬ážááᯠRTMP áááá¯ááá¯áá±á¬ááŸáá áºááá·áº cloud ááá¯á· áá±ážááá¯á·ááŒá®áž áááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºáááºááŸáá·áº ááááºážáááºážáááºá¡ááœáẠáá®áá®áá¬áá¬áá¬áá»á¬áž á¡á á¯á¡áá±ážáá áºáá¯á០áá¬áááºáá°áá«áááºá á¡á á¯á¡áá±ážá¡ááœááºáž áááºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒáá·áºáá±ááŒá®áž á¡áááºážáá¯á¶áž loaded media server ááá¯ááœá±ážáá»ááºáááºá smart home controller ááẠcloud load balancer ááá¯á· ááá¬ááá±á¬ááºážááá¯áá»ááºáá áºáá¯ááŒá¯áá¯ááºááŒá®áž áááºážááŸáá¬áá»áŸáẠmedia stream ááᯠáá±ážááá¯á·áá«áááºá
áá±á¬ááºáá»ááº
áá±á¬ááºážáá«ážááẠRaspberry Pi 3 B+ ááá¯ááºáááá¯ááœááºááŒá°áá¬ááᯠá¡ááŒá±áá¶á á áááºá¡áááºááááºážáá»á¯ááºáááááá¬á áá®ážááŒá¬ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠZ-Wave áááá¯ááá¯áá±á¬ááŸáá áºááá·áº ááááºážá¡áá»ááºá¡áááºááŸáá·áº ááááºážáá»á¯ááºááá·áºáááááá¬áá»á¬ážááᯠáááºáá¶ááá¯ááºá áá¯ááºáá±á¬ááºááá¯ááºá ááááºážáá»á¯ááºááá¯ááºáá±á¬á ONVIF áááá¯ááá¯áá±á¬ááŸáá áºááá·áº IP áááºááá¬áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááá¯ááºááá·áºá¡ááŒáẠáá±áá¬áááŸááºááŒááºážááŸáá·áºáááºáž áááŸááºááá¯ááºáááºá MQTT ááŸáá·áº RTMP áááá¯ááá¯áá±á¬áá»á¬ážááŸáá áºááá·áº cloud áááºáá±á¬ááºááŸá¯ááŒáá·áº á¡áááá·áºáá±ážáááºá JSON áá±á¬áºáááºááœáẠáá±á¬áºááŒáá¬ážáá±á¬ áá¯áá¹áááááºážá¥ááá±áá»á¬ážááŸáá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠááŸáá¯ááºážááŸááºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á áá¯ááºáá¯ááºááŸá¯ áá±á¬á·áá»á áºá¡ááºáá»ááºááᯠáá®ááœááºáá¬ážáá«áááºá
á áááºá¡áááºááááºážáá»á¯ááºáááááá¬ááẠáá±á¬áºá ááá¯ááŸáá·áº áá±á¬áºá ááá¯áá±áááŸá áá±áá¬á¡áá»á¬ážá¡ááŒá¬ážááœáẠá ááºážáááºáááºáááºááŸá¯ááᯠáá¯ááºáá±á¬ááºáá±áááºá
ááááºážáá»á¯ááºáááááá¬á áá±á¬ááºáá¬ážááŸááºážááẠá¡ááŒá¬ážá
ááºáá
á¹á
ááºážá¡áá»áá¯ážá¡á
á¬ážáá»á¬áž (RFá Bluetoothá WiFiá ááŒáá¯ážáááº) ááá¯á·ááᯠáá»áááºáááºááẠá
á®á
ááºáá¬ážáááºá áá¯á¶ážá
áœá²áá°áá»á¬ážá á¡áááºááŒá±á
á±áááºá¡ááœááºá á¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážááŸáá·áº IP áááºááá¬áá»á¬áž áá»áááºáááºááŒááºážááá¯ááºáᬠáá¯ááºáá¯á¶ážáá¯ááºáááºážááᯠááá¯ááá¯ááºážá¡ááá®áá±ážááŸááºážááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáááºááŒá
áºáááºá áá¬áá¬áá¯ááºáááºážá
ááºáá¯ááºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬ááºáá¯ááºááŒá®áž áá±á¬á·ááºáá²ááºááᯠáááºáááºááŸá¯á
áá
áºááá¯á· áááºáá±á¬ááºááŒááºážá¡ááœáẠá¡ááŒá¶áá¬ááºáá»á¬ážáááºáž ááŸááá«áááºá
source: www.habr.com