рдмрд╛рджрд▓ рдореЗрдВ рдХреВрджреЛред NodeMCU + Azure IoT рд╣рдм рдкрд░ рдПрдХ рдмрдЬрдЯ IoT рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг

IoT рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЧрдВрддрд╡реНрдп рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЖрдЬ рддрдХ, рдХреНрд▓рд╛рдЙрдб IoT рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреАрдорддреЗрдВ рдЗрддрдиреА рдХрдо рд╣реЛ рдЧрдИ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреА рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЬ рд╣рдо Lua рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ NodeMCU рдмреЛрд░реНрдб рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред



рдиреЛрдЯ: рд╣рдо рд╣реИрдХрд░ рдкрддреНрд░рд┐рдХрд╛ рд╕реЗ рд▓реЗрдЦреЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдЦрдХ рдХреА рд╡рд░реНрддрдиреА рдФрд░ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рд╕рд╣реЗрдЬреЗ рдЧрдПред


рдореИрдВ рд▓реЗрдЦрдХ рдХреЛ рдордВрдЬрд┐рд▓ рджреЗрддрд╛ рд╣реВрдВред


рдЪреВрдВрдХрд┐ рдореИрдВ Microsoft рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ IoT рд╕рдорд╛рдзрд╛рди рдХреЗ рдХреНрд▓рд╛рдЙрдб рднрд╛рдЧ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Azure Functions рдФрд░ Table Storage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди NodeMCU рдФрд░ Lua рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ PoC рдХрд╛ рдЙрдкрдпреЛрдЧ IoT рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЬрд╛рдирдХрд╛рд░реА


Expressif NodeMCU рд╡рд╛рдИ-рдлрд╛рдИ, рдорд╛рдЗрдХреНрд░реЛ рдпреВрдПрд╕рдмреА рдФрд░ рдСрди-рдмреЛрд░реНрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд╕реНрддреА рдорджрд░рдмреЛрд░реНрдб рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ ESP8266 рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рджреВрд╕рд░реА рдкреАрдврд╝реА рдХреЗ рдмреЛрд░реНрдб рдХреЛ рд▓рдЧрднрдЧ 6-7 рдбреЙрд▓рд░ рдореЗрдВ рдЦрд░реАрджрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк Arduino IDE рд╕реЗ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб рд▓реБрдЖ рдирд╛рдордХ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдкреБрд░реНрддрдЧрд╛рд▓реА рд╕реЗ "рдЪрдВрджреНрд░рдорд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд)ред


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рд▓рд┐рдВрдХ рд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: CP210x USB рд╕реЗ UART рдмреНрд░рд┐рдЬ VK рдбреНрд░рд╛рдЗрд╡рд░


рдорд╛рдирдХ NodeMCU рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреА рдЧрддрд┐ 115'200bps рд╣реИред рдЖрдк рдПрдХ рдЕрд▓рдЧ рдЧрддрд┐ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкрд╣рд▓реЗ рд░реАрд╕реЗрдЯ рдкрд░ рдпрд╣ 115200 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЪрд╛рд▓рдХ рдареАрдХ рдЙрд╕реА рдЧрддрд┐ рдкрд░ рд╕реЗрдЯ рд╣реЛ:



рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЪрдордХрддреА рд╣реИред рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдореЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ , рдбреЙрдХрд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕рд▓рд╛рд╣ рднреА рджреЗрддрд╛ рд╣реВрдВред


рдпрджрд┐ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ SNTP, MQTT, HTTP (рд╡рд╛рдИрдлрд╛рдИ, рдЯрд╛рдЗрдорд░, рдлрд╝рд╛рдЗрд▓, GPIO, рдиреЗрдЯ, рдиреЛрдб, UART рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ)ред рд╡рд┐рд╡рд┐рдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ TLS / SSL рд╕рдорд░реНрдерди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рдмрд┐рди рдлрд╛рдЗрд▓ рд╡рд╛рд▓рд╛ рд▓рд┐рдВрдХ рдореЗрд▓ рдкрд░ рдЖрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 2 рд▓рд┐рдВрдХ рддреБрд░рдВрдд рдЖрддреЗ рд╣реИрдВред рдПрдХ рдРрд╕реА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдЬреЛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдЧреИрд░-рд╕рд╣рд╛рдпрдХ рдХреЗ рд╕рд╛рдеред


ESP8266 рдЪрдордХрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдореЛрдб рдореЗрдВ рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдЕрд▓рдЧ FLASH рдмрдЯрди рд╣реИред рдкрд╛рд╡рд░-рдЕрдк рдпрд╛ рд░реАрд╕реЗрдЯ рд░реАрд╕реЗрдЯ рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рджрдмрд╛рдиреЗ рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмреВрдЯрд▓реЛрдбрд░ рдореЛрдб рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдмреЛрд░реНрдб рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдмрдЯрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ GPIO0 рдХреЛ GND рдФрд░ рдкреНрд░реЗрд╕ рд░реАрд╕реЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ рд╡рд┐рдзрд┐ ESP-12 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ)ред


рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ PyFlasher рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд╛рдо рдореЗрдВ Py рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди Python рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдиреЛрдбреЛрдбрд╕реНрдХреВ-рдлреНрд▓реИрд╢рд░ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред


PyFlasher рд╡рд┐рдВрдбреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:



рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕ рдмреЛрд░реНрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлреНрд▓реИрд╢ рдореЛрдб рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред ESP8266 ESP-12 рдФрд░ ESP32 рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдорджрд░рдмреЛрд░реНрдб DIO рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред ESP8266 01 рд╕реЗ 07 рддреЗрдЬ QIO рдореЛрдб рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддрд╛ рд╣реИред DOUT рдХрд╛ рдЙрдкрдпреЛрдЧ ESP8285 рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЖрдИрдбреАрдИ рд╕реЗрдЯрдЕрдк


ESPlorer рд▓рд┐рдВрдХ рдкрд░ рдореБрдлреНрдд IDE рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ ZeroBrane Studio рд╣реИ ред рдореБрдЭреЗ ESPlorer рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдБред ESPlorer рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ



рдмрд╛рдИрдВ рдУрд░ рдХреЛрдб, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рджрд╛рдИрдВ рдУрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХрдорд╛рдВрдб рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓реЗрдВ, рдкреЛрд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЙрд╕ рдЧрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдирд┐рдордп рд╣реЛрдЧрд╛ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ 115200 рд╣реИ) рдФрд░ рдУрдкрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред



рд╡рд╛рд░реНрдо рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрд▓рдИрдбреА рдХреЗ рд╕рд╛рде рдЪрдордХрддреА рд╣реИ:


LED = 0 gpio.mode(LED, gpio.OUTPUT) function flash_led() gpio.write(LED, gpio.LOW) tmr.delay(500000) gpio.write(LED, gpio.HIGH) end tmr.alarm(1, 1000, tmr.ALARM_AUTO, flash_led) 

рдпрджрд┐ рдЖрдкрдХреЗ рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрд▓рдИрдбреА рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрд▓рдИрдбреА рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдердХ рдЧрдП рд╣реИрдВ =), рддреЛ рдЖрдк рдПрдХ рдФрд░ рднреА рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓рд╛рдЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:


 print("Hello from Lua!") 

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ .lua рдлрд╝рд╛рдЗрд▓ (test.lua рдХрд╣рддреЗ рд╣реИрдВ) рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬреЗрдВ, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЛрд░реНрдЯ рдЦреЛрд▓реЗрдВ (рдУрдкрди рдмрдЯрди) рдирд╣реАрдВ рд╣реИ рддреЛ рдЕрдкрд▓реЛрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдк рдЗрд╕реЗ рдЙрди рдмрдЯрдиреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдХреЗ рдиреАрдЪреЗ (рдмрд╛рдИрдВ рдУрд░) рд╕реНрдерд┐рдд рд╣реИрдВред


рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рднреЗрдЬрдХрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 dofile("test.lua") 

рдореЙрдирд┐рдЯрд░ рдХреЗ рдиреАрдЪреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рдирд┐рдЪрд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдпрджрд┐ рдЖрдк рдХреЛрдИ рдкрд╛рда рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд░реАрд▓реЛрдб рдмрдЯрди (рджрд╛рдИрдВ рдУрд░ рдмрдЯрди рдХреА рдЪрд░рдо рдкрдВрдХреНрддрд┐) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдмреЛрд░реНрдб рдкрд░ рд▓реЛрдб .lua рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдмрдЯрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рд╣реЛ рдЬрд╛рдПрдЧреАред


рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмреЛрд░реНрдб рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдлрд╝рд╛рдЗрд▓ рд╢реБрд░реВ рд╣реЛ, рддреЛ init.lua рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рднрд╛рдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдЖрдЗрдП рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдбрдмрд▓ рдмрдирд╛рдПрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рдПрдЬрд╝реНрдпреЛрд░ рдкреЛрд░реНрдЯрд▓ рдкрд░ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдбрдмрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред IoT рд╣рдм рд╕реЗрдЯрд┐рдВрдЧ рд╕рдореВрд╣ рдореЗрдВ рдЦреЛрдЬрдХрд░реНрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ IoT рдбрд┐рд╡рд╛рдЗрд╕реЗрд╕ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ "+ рдЬреЛрдбрд╝реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ IoT рд╣рдм рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ SAS (рд╕рд╛рдЭрд╛ рдПрдХреНрд╕реЗрд╕ рд╕рд┐рдЧреНрдиреЗрдЪрд░) рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрд╕рдПрдПрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдбрдмрд▓ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░, рдЖрдИрдУрдердм-рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░, рдПрдЬрд╝реНрдпреЛрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлреЙрд░ рдПрдЬрд╝реНрдпреЛрд░ рд╕реАрдПрд▓рдЖрдИ 2.0) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ IoT рд╣рдм -> IoT рдбрд┐рд╡рд╛рдЗрд╕реЗрд╕ рдкрд░ рдЬрд╛рдХрд░ Azure рдкреЛрд░реНрдЯрд▓ рдкрд░ рдПрдХ рд╣реА рдЬрдЧрд╣ рдкрд░ рдЪрд╛рдмреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред



рдПрд╕рдПрдПрд╕ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрд╕рдПрдПрд╕ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдХреЛрдб рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рджреЛрд╣рд░реА рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред



рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдПрд╕рдПрдПрд╕ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИред рдпрджрд┐ рдЖрдк рд╕реЗрд╡рд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдЕрдиреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ: рдЪрд▓реЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рджреЛрд╣рд░реА рдХреБрдВрдЬреА рдХреЗ рдПрдЬрд╝реНрдпреЛрд░ рд╣реИрд╢ рдХреЛ рдмрдЪрд╛рдПрдВред рдФрд░ рд╕реЗрд╡рд╛ рдХреЛрдб рдореЗрдВ, рдПрд╕рдПрдПрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реИрд╢ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╣реИрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд╕рдПрдПрд╕ рдХреЛ рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд╛рдо рдФрд░ рдЗрд╕рдХреА рдХреБрдВрдЬреА рдХреЗ рд╣реИрд╢ рдХреЛ рдЬрд╛рдирдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред


рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрд╕рдПрдПрд╕ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЪреВрдВрдХрд┐, рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдПрд╕рдПрдПрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрдЯрд╛рдЦрд╛ рдХреЗрд╡рд▓ рдПрд╕рдПрдПрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рд╕реАрдорд┐рдд рд╣реИред


рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣реИрдХрд░ рдХреЗ рдкрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡реАрдкреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрд╢рди рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рднреА рдпрд╣рд╛рдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЪреИрдирд▓ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЪреИрдирд▓ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, NodeMCU, Arduino, рдЖрджрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ / рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдХрдо рд▓рд╛рдЧрдд рд╡рд╛рд▓реЗ IoT рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдХреЛ рдирдИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рдПрд╕рдПрдПрд╕ рдЬреЗрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдЬрд╝реНрдпреЛрд░ рдлрдВрдХреНрд╢рди рдмрдирд╛рдирд╛


рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдЬрд╝реНрдпреЛрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдпреЗ рдЕрджреНрд╡рд┐рддреАрдп рд╕реНрдирд┐рдкреЗрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рдкреЛрд░реНрдЯрд▓ рдкрд░ рддреБрд░рдВрдд рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдордЬрд╛рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдордЬрд╛рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдЖрдк рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реЗ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд░реВрдк рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред


рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдп рдХреБрдЫ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрд╕реИрд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ (рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд┐рджреНрдзрд╛рдВрдд)ред


рдЖрдк рд╢реЙрд░реНрдЯ рдлреЙрд░реНрдо рднрд░рдХрд░ рдкреЛрд░реНрдЯрд▓ рдкрд░ рдПрдХ рдПрдЬрд╝реНрдпреЛрд░ рдлрдВрдХреНрд╢рди рдРрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ



рдЙрдкрднреЛрдЧ рдпреЛрдЬрдирд╛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрди рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдПрдХ рдорд┐рд▓рд┐рдпрди рдлреАрдЪрд░ рдХреЙрд▓ рдореБрдлреНрдд рд╣реИрдВред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рд╣рд╛рдпрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ (рд╕рдВрдЧреНрд░рд╣рдг) рднреА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдлрд╝рдВрдХреНрд╢рди рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ Webhook + API рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ), рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб </> рдлрд╝рдВрдХреНрд╢рди URL рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд┐рдВрдбреЛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ C # рдкрд╕рдВрдж рд╣реИред


 using System.Net; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Common.Security; using System.Globalization; using System.Security.Cryptography; using System.Text; public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { string deviceid = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "deviceid", true, CultureInfo.InvariantCulture) == 0).Value; string hash = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "hash", true, CultureInfo.InvariantCulture) == 0).Value; if (String.IsNullOrEmpty(deviceid)) return req.CreateResponse(HttpStatusCode.BadRequest, "device id missing"); if (String.IsNullOrEmpty(hash)) return req.CreateResponse(HttpStatusCode.BadRequest, "hash missing"); var resourceUri ="ArduinoDemoHub.azure-devices.net/devices/"+deviceid; // taken from IoT Hub user with Connect devices rights (not from Device Explorer) var connectionString = "HostName=ArduinoDemoHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=cuYBKc42lfJr4oSRGQGQ8IiKWxGQkLre7rprZDZ/ths="; var registryManager = RegistryManager.CreateFromConnectionString(connectionString); var device = await registryManager.GetDeviceAsync(deviceid); var key = device.Authentication.SymmetricKey.PrimaryKey; HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes("somerandomkeyKJBWyfy4gski")); var hashedkey = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(key))); if (hashedkey!=hash) return req.CreateResponse(HttpStatusCode.BadRequest, "wrong hash"); SharedAccessSignatureBuilder sasBuilder = new SharedAccessSignatureBuilder() { Key = key, Target = resourceUri, TimeToLive = TimeSpan.FromDays(Convert.ToDouble(7)) }; var SAS = sasBuilder.ToSignature(); return req.CreateResponse(HttpStatusCode.OK, SAS); } 

рд╣рдо project.json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:


 { "frameworks": { "net46":{ "dependencies": { "Microsoft.Azure.Devices": "1.4.1" } } } } 

рдХреЛрдб IoT рд╣рдм рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд╛рдХрд┐ рдЖрдк рднреНрд░рдорд┐рдд рди рд╣реЛрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдбрд┐рд╡рд╛рдЗрд╕ рдХрдиреЗрдХреНрдЯ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреЙрд▓рд┐рд╕реА рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛, рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред



рдФрд░ рд╡рд╣рд╛рдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреЛрд░ рд╕реЗ "рдкреНрд░рд╛рдкреНрдд" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 ConfigurationManager.ConnectionStrings["___"].ConnectionString 

рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░, рд╣рдореЗрдВ рд╣реИрд╢рдбреЗрдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред HttpUtility.UrlEncode System.eb рд╕реНрдкреЗрд╕ рд╕реЗ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред


 hashedkey = HttpUtility.UrlEncode(hashedkey); 

рд╣рдо рдЧреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХреНрд▓рд╛рдЙрдб рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛


рдореИрдВрдиреЗ Lua рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдб рдХреНрд▓рд╛рдЙрдб рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ PoC рдерд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
2 init.lua рдФрд░ SendDataToCloud.lua рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ
рдкрд╣рд▓реЗ рдХреА рд╕рд╛рдордЧреНрд░реА:


 --    print('init.lua ver 1.2') wifi.setmode(wifi.STATION) print('set mode=STATION (mode='..wifi.getmode()..')') print('MAC: '..wifi.sta.getmac()) print('chip: '..node.chipid()) print('heap: '..node.heap()) --  Wifi station_cfg={} station_cfg.ssid="_SSID" station_cfg.pwd="___" station_cfg.save=false wifi.sta.config(station_cfg) wifi_status_codes = { [0] = "Idle", [1] = "Connecting", [2] = "Wrong Password", [3] = "No AP Found", [4] = "Connection Failed", [5] = "Got IP" } sntp_connect_status_codes = { [1] = "DNS lookup failed", [2] = "Memory allocation failure", [3] = "UDP send failed", [4] = "Timeout, no NTP response received" } --    Wi-fi (   ) tmr.alarm(6,1000, 1, function() if wifi.sta.getip()==nil then print("Waiting for IP address! (Status: "..wifi_status_codes[wifi.sta.status()]..")") else print("New IP address is "..wifi.sta.getip()) tmr.stop(6) --    NTP sntp.sync({'pool.ntp.org'}, function(sec, usec, server) print("Clock Synced: "..sec..", "..usec..", "..server) tls.cert.verify(false) --    dofile('SendDataToCloud.lua') end, function(error_code) print("Clock Sync Failed: "..sntp_connect_status_codes[error_code]) end, 1 --      ) end end ) 

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ SendDataToCloud.lua рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдЖрдкрдХреЛ рдЕрдкрдиреЗ Wi-Fi рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХрд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреЗрд╢рди_cfg.ssid рдФрд░ station_cfg.pwd рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо рдФрд░ рд╣рдм рдХреЗ IoT (DEVICE рдФрд░ IOTHUB рд╡реЗрд░рд┐рдПрдВрдЯ) рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Funcurl рдЪрд░ рдореЗрдВ рдПрд╕рдПрдПрд╕-рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рд╣реИрд╢ (рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ HttpUtility.UrlEncode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдерд╛) рд╣реИрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ


 --  DEVICE = "LuaDevice" IOTHUB = "ArduinoDemoHub.azure-devices.net" PORT = 8883 USER = "ArduinoDemoHub.azure-devices.net/"..DEVICE.."/api-version=2016-11-14" telemetry_topic="devices/"..DEVICE.."/messages/events/" connected = false local headers = 'Content-Type: application/x-www-form-urlencoded\r\n'.. 'Accept: */*\r\n'.. 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0' funcurl = "https://arduinofunction.azurewebsites.net/api/GenerateSASFunction?code=Jn7j54PbR31BSRa0UZrDwp4ZEltjmWHmblG9zLo0Ne0tyGM7w/wQ7w==" funcurl = funcurl.."&hash=oJzykimyQsTPtzgJxYq90Xfqmw1rZTPTCH%2bJ5sSurKI%3d" funcurl = funcurl.."&deviceid="..DEVICE tmr.alarm(1,5000, 1, function() http.get(funcurl, headers, function(code, data, header) if (code < 0) then print("HTTP request failed") else sas = true print(code, data) if string.match(data, "Shared") then tmr.stop(1) SAS = string.sub(data,2,string.len(data)-1) print(SAS) connect(SAS) end end end) end) function connect(SAS) --   MQTT client = mqtt.Client(DEVICE, 240, USER, SAS) --   IoTHub    MQTT print ("Connecting to MQTT broker. Please wait...") tmr.alarm(2,1000, 1, function() client:connect(IOTHUB, PORT, 1, -- Callback     function(client) tmr.stop(2) print("Connected to MQTT: "..IOTHUB..":"..PORT.." as "..DEVICE) connected = true senddata() end, -- Callback    function(client, reason) print("Error Connecting: "..reason) end ) end) end function senddata() math.randomseed(1) tmr.alarm(3, 1000, tmr.ALARM_AUTO, publish_data) --   ,     callback client:on("offline", function(client) print("MQTT Disconnected.") connected = false end) end --      function publish_data() if connected == true then somedata = math.random(1,100) --     payload = "{ \"deviceId\" : \""..DEVICE.."\",".. "\"iotdata\" :"..somedata.."}" --   client:publish(telemetry_topic, payload, 1, 0, function(client) print("Data published successfully.") end) end end 

Azure SDK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ Azure рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: AWS, Google рдХреНрд▓рд╛рдЙрдб IoT, IBM Watson IoT рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдоред


рдЙрджрд╛рд╣рд░рдг MQTT (рд╕рдВрджреЗрд╢ рдХрддрд╛рд░рдмрджреНрдз рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдкрд░рд┐рд╡рд╣рди) рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ IoT рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрдЯрд╛ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдВрд╕рд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред


рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ IoT рд╣рдм рдХреЗ рдмреАрдЪ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рд╕рд░реНрд╡рд░ рдЕрдкрдирд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ Arduino рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдм рдПрдХ рдХреЛрдб рд╕рд┐рдВрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:


 tls.cert.verify(false) 

рд╣рдо рдЙрд╕ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рд╣рдореЗрдВ рднреЗрдЬреЗрдЧрд╛ред


рдЬрд╛рдирдХрд╛рд░реА


рдЖрдк рдирд┐рдореНрди рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╣рдм рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред


 openssl s_client -showcerts -connect ArduinoDemoHub.azure-devices.net:8883 

рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: рднреЗрдЬрдирд╛ рдбрд┐рд╡рд╛рдЗрд╕-рдЯреВ-рдХреНрд▓рд╛рдЙрдб (D2C) рд╕рдВрджреЗрд╢
рдХреЛрдб рдХрд╛рдлреА рдЕрджреНрдпрддрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


Arduino IDE рд╕реЗ NodeMCU рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


рдореИрдВ рдПрд╕рдбреАрдХреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╖рдп рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рдбреАрдХреЗ рдПрдХ рд╣реА рдХреЛрдб рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреАрдмрдЧ, рд╕рд░рд▓реАрдХреГрдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред NodeMCU рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Arduino IDE рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХреБрдЫ рд╢рдмреНрджред


Arduino IDE рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ - рд╡рд░реАрдпрддрд╛рдПрдБ рдореЗрдиреВ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрд░реНрдб рдореИрдиреЗрдЬрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ - рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрд░реНрдбреЛрдВ рдкреНрд░рдмрдВрдзрдХ URL рдореЗрдВ рдкрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ рдлрд╝реАрд▓реНрдб: http://arduino.esp8266.com/versions/2.4.0/package_esp8266com_index.json


рдЗрд╕рдХреЗ рдмрд╛рдж Tools - Board xxx - Boardx Manager рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ ESP8266 рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ AzureIoTHub, AzureIoTUtility, AzureIoTProtocol_MQTT рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдлрд╝рд╛рдЗрд▓ рдореЗрдиреВ - рдЙрджрд╛рд╣рд░рдг - AzureIoTProtocol_MQTT), рдЖрдк ESP8266 рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг simplesample_mqtt рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдмрд╕ iot_configs.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЪрд░ рдорд╛рди рднрд░реЗрдВ
рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЛрдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рдмреЛрд░реНрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рд▓реБрдЖ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ, рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред


Azure рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрдирд╛


рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕рд╕реНрддрд╛ рд╣реИред
IoT рд╣рдм рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╕реНрддрд╛ рддрд░реАрдХрд╛ рдПрдЬрд╝реНрдпреЛрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рд╕рд╕реНрддреА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ Azure Table Storage рд╣реИред


рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдлрдВрдХреНрд╢рди рдРрдк рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреЛрд░реЗрдЬ рднреА рдЕрдкрдиреЗ рдЖрдк рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлрдВрдХреНрд╢рди рдХреЛ рдЦреБрдж рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:



рдПрд▓рдПрд╕рдЖрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рдХрд╛ рдЪрдпрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рд╣рдореЗрдВ IoT рд╣рдм рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдХреНрд╡рд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдВрдбреЛ рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧреАред



рдЗрд╕рд▓рд┐рдП, рдиреАрдЪреЗ рд╕реНрдерд┐рдд рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ IoT рд╣рдм (рдЗрд╡реЗрдВрдЯ рд╣рдм) рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВред
рдпрд╣ рд╡рд┐рдВрдбреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЦреБрд▓реЗрдЧреА:



рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдХрд▓реНрдк (рдирдпрд╛ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ) рдХреЗ рд╕рд╛рде рдЗрд╡реЗрдВрдЯ рд╣рдм рдХрдиреЗрдХреНрд╢рди рдлрд╝реАрд▓реНрдб рдХреЛ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдИрд╡реЗрдВрдЯ рд╣рдм рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ IoT рд╣рдм рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдм рдореЗрдВ рдЖрдкрдХреЛ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ (рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ) рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдЗрд╡реЗрдВрдЯ рд╣рдм-рд╕рдВрдЧрдд рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



рдЪрд▓рд┐рдП рдлрдВрдХреНрд╢рди рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдирд┐рдореНрди рд╕реНрдирд┐рдкреЗрдЯ IoT рд╣рдм рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:


 #r "Microsoft.WindowsAzure.Storage" #r "Newtonsoft.Json" using Microsoft.Azure; // Namespace for CloudConfigurationManager using Microsoft.WindowsAzure.Storage; // Namespace for CloudStorageAccount using Microsoft.WindowsAzure.Storage.Table; // Namespace for Table storage types using Newtonsoft.Json; public static void Run(string myIoTHubMessage, TraceWriter log) { var e = JsonConvert.DeserializeObject<EventDataEntity>(myIoTHubMessage); log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}"); CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=iotdatademostorage;AccountKey=JgStNcJvlQYeNsVCmpkHQUkWlZiQ7tJwAm6OCL34+lGx3XrR+0CPiY9RoxIDA6VSvMKlOEUrVWL+KWP0qLMLrw==;EndpointSuffix=core.windows.net"); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference("iottable"); table.CreateIfNotExists(); EventDataEntity edata = new EventDataEntity("IOTpartition", Guid.NewGuid().ToString()); edata.DeviceId = e.DeviceId; edata.IotData = e.IotData; TableOperation insertOperation = TableOperation.Insert(edata); table.Execute(insertOperation); } public class EventDataEntity : TableEntity { public EventDataEntity(string pkey, string rkey) { this.PartitionKey = pkey; this.RowKey = rkey; } public EventDataEntity() { } public string DeviceId { get; set; } public int IotData { get; set; } } 

рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рди рднреВрд▓реЗрдВ - рдРрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ (рдмрд┐рд▓реНрдХреБрд▓ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди)ред


рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХреАрдЬрд╝ рдирд╛рдордХ рдЖрдЗрдЯрдо рдореЗрдВ рд╣реА рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдореБрдлреНрдд рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рд╕рд╛рдордЧреНрд░реА рджреЗрдЦреЗрдВ


рдЪреВрдВрдХрд┐ рдПрдЬрд╝реНрдпреЛрд░ рдЯреЗрдмрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рд▓рд╛рдЧрдд рдХрд╛рдлреА рдХрдо рд╣реИ, рдФрд░ рдПрдЬрд╝реНрдпреЛрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ IoT рд╣рдм рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдорд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдореБрдлреНрдд рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐ рдорд╛рд╣ рдкреВрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рд▓рд╛рдЧрдд $ 1 рд╕реЗ рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рд▓рд┐рдП рдЧрд┐рдиреЛред рдЖрдЬ, 1 рдЬреАрдмреА рдбреЗрдЯрд╛ рдХреА рд▓рд╛рдЧрдд 7 рд╕реЗрдВрдЯ рдкреНрд░рддрд┐ рдорд╛рд╣ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рд▓рд┐рдпрди рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдЖрдкрд╕реЗ рдХреЗрд╡рд▓ 4 рд╕реЗрдВрдЯ рдХрд╛ рд╢реБрд▓реНрдХ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЬрд╛рдирдХрд╛рд░реА


рдХрд┐рд╕реА рднреА рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдиреНрдпреВрдирддрдо рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рд▓рд┐рдВрдХ рдХрд░реЗрдВред рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЧрд▓рдд рд╕реЗрдЯрд┐рдВрдЧ рдЪреБрдирдХрд░ рдЖрдк рдЕрдкрдиреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред


рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣реИрдХрд░ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдПрд▓реЗрдХреНрд╕реА рд╕реЛрдорд░ рд╣реИрдВ ред


рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА


рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЧрд╛рдЗрдб


рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдПрдВред рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдпрд╣ 300-рдкреГрд╖реНрда рдИ-рдкреБрд╕реНрддрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ рдирд┐рдореНрди рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╢реИрд▓реА рдЪреБрдирдирд╛;
  • рдЙрдЪрд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди;
  • рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓, рд▓рдЪреАрд▓рд╛, рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 10 рд╡рд┐рдХрд╛рд╕ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛;
  • рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреЗ рдкрд╛рдВрдЪ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЬреЛ рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ;
  • рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

тЖТ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


Azure рдбреЗрд╡рд▓рдкрд░ рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛



Azure Developer's рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рдЗрд╕ рдЕрджреНрдпрддрди рдореЗрдВ, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ Azure рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкреВрд░рд╛ рд╕реЗрдЯ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реЗрдЧреАред


тЖТ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


Microsoft Azure рдореВрд▓ рдмрд╛рддреЗрдВ


рдпрд╣ рдкреБрд╕реНрддрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЖрдИрдЯреА рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдЬрд╝реНрдпреЛрд░ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВред рд╕реНрдЯреЗрдк-рдмрд╛рдп-рд╕реНрдЯреЗрдк рдбреЗрдореЛ рд░реАрдбрд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдореБрдЦ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкреНрд░рддреНрдпреЗрдХ рдЕрдзреНрдпрд╛рдп рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрдзреНрдпрд╛рдп рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдпреЛрдВ рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред


рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╖рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • Azure рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛;
  • Azure рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрд╡рд╛ рдФрд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ;
  • рдЖрднрд╛рд╕реА рдорд╢реАрдиреЗрдВ;
  • рднрдВрдбрд╛рд░рдг рд╕реЗрд╡рд╛;
  • рдбреЗрдЯрд╛рдмреЗрд╕;
  • рдЕрддрд┐рд░рд┐рдХреНрдд Azure рд╕реЗрд╡рд╛рдПрдБред

тЖТ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


Source: https://habr.com/ru/post/hi421847/


All Articles