{"id":224449,"date":"2014-05-29T13:30:03","date_gmt":"2014-05-29T09:30:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=224449"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=224449","title":{"rendered":"<span class=\"post_title\">\u0414\u0435\u043b\u0430\u0435\u043c Smart Point \u0438\u043b\u0438 \u00ab\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0432\u0435\u0449\u044c\u00bb \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0412\u0435\u0449\u0435\u0439. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/b62\/224\/28f\/b6222428f57b644933af959abad461d7.png\" alt=\"image\"\/><\/p>\n<p>  \u0417\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<a name=\"habracut\"><\/a><\/p>\n<h5>\u0412\u043c\u0435\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/h5>\n<p>  \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u044f\u0440\u043a\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u0440\u043e\u0441\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u043a \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0436\u0438\u0437\u043d\u0435\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043d\u043e\u0432\u043e\u0435 \u0438 \u0443\u0436\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043b\u0435\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0442\u044c\u044e, \u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043c\u044b\u0441\u043b\u0438\u043c\u043e \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0436\u0451\u0441\u0442\u043a\u043e\u0439 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438. \u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u044b\u0448\u0438\u043c \u043f\u0440\u043e \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0412\u0435\u0449\u0435\u0439 (Internet of Things), M2M (Machine-to-machine) \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u201c\u0443\u043c\u043d\u044b\u0435\u201d \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e, \u043a\u0430\u043a \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u0431\u044b\u043b\u0430 \u043d\u0430\u0431\u0440\u0430\u043d\u0430 \u043d\u0435\u043a\u0430\u044f \u201c\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0430\u0441\u0441\u0430\u201d \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u0439 \u0432 \u043a\u0443\u043f\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0438. \u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u043e \u0446\u0435\u043b\u0443\u044e \u0432\u043e\u043b\u043d\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445 \u043c\u0438\u0440 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440, \u0442\u0430\u043a \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044f\u043c\u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u201c\u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432\u201d \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u0438\u043a\u0440\u043e-\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430, \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0431\u044b\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0414\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u201c\u0432\u0437\u043b\u0435\u0442\u044f\u0442\u201d \u0438 \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043e\u0439 (\u0438\u043b\u0438 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c) \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0433\u043e.<\/p>\n<p>  \u041b\u0438\u0447\u043d\u043e \u044f \u044d\u0442\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0441\u044c \u0443\u0436\u0435 \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043e\u0434, \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043f\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0423\u043c\u043d\u043e\u0433\u043e \u0414\u043e\u043c\u0430 MajorDoMo, \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u0438\u043c\u0435\u044e \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0447\u044c \u043d\u0435 \u043e \u043d\u0451\u043c, \u0430 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0435\u043d\u044f \u0443\u0432\u043b\u0451\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f \u0434\u0435\u043b\u044e\u0441\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  \u0418\u043c\u0435\u044f \u0432 \u201c\u0431\u0430\u0433\u0430\u0436\u0435\u201d \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0423\u043c\u043d\u043e\u0433\u043e \u0414\u043e\u043c\u0430, \u044f \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0445\u043e\u0442\u044c \u043e\u043d \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u043c \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e. \u0414\u043b\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0437\u0430\u0434\u0430\u0447 \u201c\u043c\u0430\u043b\u043e\u0439\u201d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u043e\u0434\u043d\u0438\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0442\u0435\u0440\u044f\u0435\u043c \u0432 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043d\u0435\u043a\u043e\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u2013 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u043c \u0438 \u044d\u043d\u0435\u0440\u0433\u043e-\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0433\u0438\u0431\u043a\u043e\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u0414\u0430\u0434\u0438\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443 \u201c\u0423\u043c\u043d\u0430\u044f \u0422\u043e\u0447\u043a\u0430\u201d \u0438\u043b\u0438 SmartPoint. \u041f\u043e\u043f\u0443\u0442\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0446\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0439 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0432 \u044d\u0442\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c.<\/p>\n<h5>\u0417\u0430\u0434\u0430\u0447\u0430<\/h5>\n<p>  \u0418\u0442\u0430\u043a, \u043e\u0442 \u043b\u0438\u0440\u0438\u043a\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412\u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 SmartPoint:  <\/p>\n<ul>\n<li>\u0413\u0438\u0431\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432<\/li>\n<li>\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u201c\u0440\u0443\u0447\u043d\u043e\u0433\u043e\u201d \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/li>\n<li>HTTP API \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441<\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 ONLINE \u2013 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0431\u0435\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e IP \u0438 \u201c\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430\u201d \u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0435<\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 OFFLINE \u2013 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/li>\n<\/ul>\n<p>  \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 (\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435) \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:  <\/p>\n<ul>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u043e WiFi<\/li>\n<li>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u0443 \u0441\u0440\u0430\u0437\u0443 \u201c\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u201d, \u0430 \u043d\u0435 \u201c\u0432 \u0442\u0435\u043e\u0440\u0438\u0438\u201d)<\/li>\n<li>\u0411\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u201c\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439\u201d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438\/\u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438<\/li>\n<li>\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0441\u0435\u0440\u0432\u0438\u0441 (\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u0431\u0438\u043d\u0435\u0442) \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/li>\n<\/ul>\n<h5>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0445\u043e\u0441\u0442, \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f<\/h5>\n<p>  \u041e\u0431\u0434\u0443\u043c\u044b\u0432\u0430\u044f \u0441\u043d\u043e\u0432\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0435\u043c\u0430\u043b\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u201c\u0445\u043e\u0442\u0435\u043b\u043e\u043a\u201d \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u043c\u0435\u044e \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u044f\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u044b\u043d\u0435\u0441\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0430\u043f\u043f\u0435\u0442\u0438\u0442 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0439. \u0411\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043f\u043e\u0439\u0442\u0438 \u043f\u043e \u043f\u0443\u0442\u0438 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u2013 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430 \u0434\u0432\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u0438: \u043e\u0434\u043d\u0430 (\u201c\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u201d) \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u201c\u0436\u0435\u043b\u0435\u0437\u043e\u043c\u201d, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f (\u201c\u0445\u043e\u0441\u0442\u201d) \u043d\u0430 \u0431\u0430\u0437\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e Linux, \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u043b, API). \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d (\u0443\u0433\u0430\u0434\u0430\u0439\u0442\u0435!) \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Arduino, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432 \u0434\u0435\u043b\u043e \u043f\u043e\u0448\u0451\u043b \u0440\u043e\u0443\u0442\u0435\u0440 TP-Link WR703N \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 OpenWRT (\u0437\u0430\u043c\u0435\u0442\u043a\u0430: \u0431\u044b\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u043f\u0430\u0440\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 DLink Dir-320). \u041f\u0440\u0435\u0434\u0432\u0438\u0434\u044f \u043f\u0440\u0430\u0432\u0435\u0434\u043d\u044b\u0439 \u0433\u043d\u0435\u0432, \u0441\u043f\u0435\u0448\u0443 \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0443 \u043d\u0430\u0441 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 \u0434\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0435\u0442 open-source! \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0436\u0435 Arduino \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u044b\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443.<\/p>\n<p>  \u0420\u043e\u0443\u0442\u0435\u0440 TP-Link WR703N<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d02\/651\/598\/d02651598a35fc739cf58941eecf0df9.png\" alt=\"image\"\/><\/p>\n<p>  \u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Arduino Nano:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/cb2\/91f\/3ea\/cb291f3eacacd00e88bf86cfe0ea5975.png\" alt=\"image\"\/><\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b:  <\/p>\n<ul>\n<li>\u041a\u043d\u043e\u043f\u043a\u0430 <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/93d\/ab5\/cd2\/93dab5cd249e8e260b839962f61f5674.png\" alt=\"image\"\/><\/li>\n<li>\u0414\u0430\u0442\u0447\u0438\u043a \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e27\/e4d\/916\/e27e4d9160a3258424846e4d61b6af7f.png\" alt=\"image\"\/><\/li>\n<li>\u0414\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b DS18B20 <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/4d8\/3a7\/33e\/4d83a733e60dab86e28abdf6e452ec44.png\" alt=\"image\"\/><\/li>\n<li>\u041f\u0440\u0438\u0451\u043c\u043d\u0438\u043a 433Mhz <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/3ab\/d6a\/aa2\/3abd6aaa2b32e98a9cf4eec08eb56723.png\" alt=\"image\"\/> <\/li>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a Noolite \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u043c <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/bbe\/b4a\/652\/bbeb4a65240e9192975ee74e7a7d5b08.png\" alt=\"image\"\/> <\/li>\n<\/ul>\n<p>  \u041d\u0430\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u043a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0432\u0437\u044f\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u201c\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438\u201d. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443 \u043d\u0430\u0441 \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u043d\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435, \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f <a href=\"http:\/\/habrahabr.ru\/post\/182068\/\">\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435<\/a> \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b) \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0438\u043b\u043e\u0432\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Noolite (\u043f\u0440\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043d\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043d\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043c\u043e\u0434\u0443\u043b\u044f, \u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u043d\u043d\u0438\u0445 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u043a\u043e \u043c\u043d\u0435 \u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f).<\/p>\n<p>  \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0432 \u043d\u0430\u0431\u0440\u043e\u0441\u043a\u0438 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/34c\/0e5\/8df\/34c0e58df0e1637bdca98bd830f132cb.png\" alt=\"image\"\/> <\/p>\n<p>  \u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u0445\u0435\u043c\u0435:  <\/p>\n<ul>\n<li>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439\/\u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439, \u0438 \u044f\u0434\u0440\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b<\/li>\n<li>\u0418\u043c\u0435\u0435\u0442\u0441\u044f API \u0438 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u0440\u0438\u0451\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u201c\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432\u201d (\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u0438 \u0442.\u043f.)<\/li>\n<li>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u0438\u0451\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434<\/li>\n<\/ul>\n<h5>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/h5>\n<p>  \u0423 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0438, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u0442\u0435\u043a\u0441\u0442 \u0441\u043a\u0435\u0442\u0447\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043d\u0430 PIN4, \u0434\u0430\u0442\u0447\u0438\u043a \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430 PIN3, \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 PIN9, \u0440\u0430\u0434\u0438\u043e\u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a \u043d\u0430 PIN8 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c Noolite \u043d\u0430 PIN-\u044b 10, 11.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0435\u0442\u0447 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &lt;OneWire.h&gt; #include &lt;DallasTemperature.h&gt; #include &lt;VirtualWire.h&gt; #include &lt;EasyTransferVirtualWire.h&gt; #include &lt;EEPROM.h&gt; \/\/Needed to access the eeprom read write functions #include &lt;SoftwareSerial.h&gt;  #define PIN_LED (13) \/\/ INDICATOR #define PIN_PIR (3) \/\/ BUTTON #define PIN_BUTTON (4) \/\/ BUTTON #define PIN_LED_R (6) \/\/ INDICATOR RED #define PIN_LED_G (5) \/\/ INDICATOR GREEN #define PIN_LED_B (7) \/\/ INDICATOR BLUE #define PIN_RF_RECEIVE (8) \/\/ EASYRF RECEIVER #define PIN_TEMP (9) \/\/ TEMPERATURE SENSOR #define PIN_NOO_RX (10) \/\/ RX PIN (connect to TX on noolite controller) #define PIN_NOO_TX (11) \/\/ TX PIN (connect to RX on noolite controller) #define TEMP_ACC (0.3) \/\/ temperature accuracy #define PERIOD_READ_TEMP (20) \/\/ seconds #define PERIOD_SEND_TEMP (600) \/\/ seconds (10 minutes) #define PERIOD_SEND_UPTIME (300) \/\/ seconds (5 minutes)  #define NOO_BUF_LEN (12)   unsigned int unique_device_id = 0;  long int uptime = 0; long int old_uptime = 0; float sent_temperature=0; int sent_pir=0; int sent_button=0; int sent_button_longlick=0; long int timeCheckedTemp=0; long int timeSentTemp=0; long int timeSentUptime=0; long int timeButtonPressed=0;  String inData;   \/\/create objects SoftwareSerial mySerial(PIN_NOO_RX, PIN_NOO_TX); \/\/ RX, TX OneWire oneWire(PIN_TEMP); DallasTemperature sensors(&oneWire); EasyTransferVirtualWire ET;   unsigned int last_packet_id = 0;  struct SEND_DATA_STRUCTURE{   \/\/put your variable definitions here for the data you want to send   \/\/THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO   \/\/Struct can'e be bigger then 26 bytes for VirtualWire version   unsigned int device_id;   unsigned int destination_id;     unsigned int packet_id;   byte command;   int data; };  \/\/give a name to the group of data SEND_DATA_STRUCTURE mydata;  \/\/This function will write a 2 byte integer to the eeprom at the specified address and address + 1 void EEPROMWriteInt(int p_address, unsigned int p_value)       {       byte lowByte = ((p_value &gt;&gt; 0) & 0xFF);       byte highByte = ((p_value &gt;&gt; 8) & 0xFF);        EEPROM.write(p_address, lowByte);       EEPROM.write(p_address + 1, highByte);       }  \/\/This function will read a 2 byte integer from the eeprom at the specified address and address + 1 unsigned int EEPROMReadInt(int p_address)       {       byte lowByte = EEPROM.read(p_address);       byte highByte = EEPROM.read(p_address + 1);        return ((lowByte &lt;&lt; 0) & 0xFF) + ((highByte &lt;&lt; 8) & 0xFF00);       }  void nooSend(byte channel, byte buf[NOO_BUF_LEN]) {  buf[0]=85;  buf[1]=B01010000; \/\/  buf[4]=0;  buf[5]=channel;  buf[9]=0;  int checkSum;  for(byte i=0;i&lt;(NOO_BUF_LEN-2);i++) {   checkSum+=buf[i];  }  buf[10]=lowByte(checkSum);  buf[11]=170;   Serial.print(&quot;Sending: &quot;);  for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {   Serial.print(buf[i]);   if (i!=(NOO_BUF_LEN-1)) {  Serial.print('-'); }  }   Serial.println(&quot;&quot;);  for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {   mySerial.write(buf[i]);  }  }  void noolitePair(byte channel) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=15;   buf[3]=0;   nooSend(channel,buf); }  void nooliteUnPair(byte channel) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=9;   buf[3]=0;   nooSend(channel,buf); }  void nooliteTurnOn(byte channel) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=2;   buf[3]=0;   nooSend(channel,buf); }  void nooliteTurnOff(byte channel) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=0;   buf[3]=0;   nooSend(channel,buf);   }  void nooliteSwitch(byte channel) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=4;   buf[3]=0;   nooSend(channel,buf);   }  void nooliteLevel(byte channel,byte level) { byte buf[NOO_BUF_LEN];   for(byte i=0;i&lt;(NOO_BUF_LEN);i++) {    buf[i]=0;   }   buf[2]=6;   buf[3]=1;   buf[6]=level;   nooSend(channel,buf);   }   void blinking(int count) {  for(int i=0;i&lt;count;i++) {   digitalWrite(PIN_LED, HIGH);    delay(200);   digitalWrite(PIN_LED, LOW);   delay(200);  } }  void setColor(int r,int g, int b) {  digitalWrite(PIN_LED_R, r);   digitalWrite(PIN_LED_G, g);    digitalWrite(PIN_LED_B, b);    }  void setup() {     randomSeed(analogRead(0));     pinMode(PIN_LED, OUTPUT);     pinMode(PIN_LED_R, OUTPUT);         pinMode(PIN_LED_G, OUTPUT);             pinMode(PIN_LED_B, OUTPUT);                 pinMode(PIN_PIR, INPUT);            pinMode(PIN_BUTTON, INPUT);                 Serial.begin(9600); \/\/ Debugging only       ET.begin(details(mydata));     \/\/ Initialise the IO and ISR     vw_set_rx_pin(PIN_RF_RECEIVE);     vw_setup(2000);      \/\/ Bits per sec     vw_rx_start();       \/\/ Start the receiver PLL running        \/\/ Device ID   Serial.print(&quot;Getting Device ID... &quot;);    unique_device_id=EEPROMReadInt(0);   if (unique_device_id&lt;10000 || unique_device_id&gt;60000 || unique_device_id==26807) {    Serial.print(&quot;N\/A, updating... &quot;);     unique_device_id=random(10000, 60000);    EEPROMWriteInt(0, unique_device_id);   }   Serial.println(unique_device_id);      pinMode(PIN_NOO_RX, INPUT);   pinMode(PIN_NOO_TX, OUTPUT);     mySerial.begin(9600);      }  void loop() {   uptime=round(millis()\/1000);   if (uptime!=old_uptime) {     Serial.print(&quot;Up: &quot;);     Serial.println(uptime);     old_uptime=uptime;     if (((uptime-timeSentUptime)&gt;PERIOD_SEND_UPTIME) || (timeSentUptime&gt;uptime)) {           timeSentUptime=uptime;                 Serial.print(&quot;P:&quot;);          Serial.print(random(65535));          Serial.print(&quot;;F:&quot;);          Serial.print(&quot;0&quot;);          Serial.print(&quot;;T:0;C:&quot;);                   Serial.print(&quot;24&quot;);          Serial.print(&quot;;D:&quot;);          Serial.print(uptime);                   Serial.println(&quot;;&quot;);           }   }      int current_pir=digitalRead(PIN_PIR);   if (current_pir!=sent_pir)  {        Serial.print(millis()\/1000);     Serial.print(&quot; Motion sensor: &quot;);     Serial.println(current_pir);                 Serial.print(&quot;P:&quot;);          Serial.print(random(65535));          Serial.print(&quot;;F:&quot;);          Serial.print(&quot;0&quot;);          Serial.print(&quot;;T:0;C:&quot;);                   Serial.print(&quot;12&quot;);          Serial.print(&quot;;D:&quot;);          Serial.print(&quot;1&quot;);                   Serial.println(&quot;;&quot;);               sent_pir=(int)current_pir;   }         int current_button=digitalRead(PIN_BUTTON);   if (current_button!=sent_button)  {        delay(50);     int confirm_current_button=digitalRead(PIN_BUTTON);     if (confirm_current_button==current_button) {       if (current_button==1) {        timeButtonPressed=millis();        sent_button_longlick=0;      }             if (current_button==0) {        if (sent_button_longlick!=1) {         Serial.print(millis()\/1000);         Serial.print(&quot; Button press: &quot;);         Serial.println(current_button);                    Serial.print(&quot;P:&quot;);          Serial.print(random(65535));          Serial.print(&quot;;F:&quot;);          Serial.print(&quot;0&quot;);          Serial.print(&quot;;T:0;C:&quot;);                   Serial.print(&quot;23&quot;);          Serial.print(&quot;;D:&quot;);          Serial.print(&quot;3&quot;);                   Serial.println(&quot;;&quot;);                  }      }      sent_button=(int)current_button;     }   } else {     if (current_button==1) {       int passed=millis()-timeButtonPressed;       if ((passed&gt;3000) && (sent_button_longlick!=1)) {         sent_button_longlick=1;          Serial.print(millis()\/1000);         Serial.print(&quot; Button long press: &quot;);         Serial.println(current_button);                           Serial.print(&quot;P:&quot;);          Serial.print(random(65535));          Serial.print(&quot;;F:&quot;);          Serial.print(&quot;0&quot;);          Serial.print(&quot;;T:0;C:&quot;);                   Serial.print(&quot;23&quot;);          Serial.print(&quot;;D:&quot;);          Serial.print(&quot;4&quot;);                   Serial.println(&quot;;&quot;);                        }     } else {       sent_button_longlick=0;     }   }     if (((uptime-timeCheckedTemp)&gt;PERIOD_READ_TEMP) || (timeCheckedTemp&gt;uptime)) {   \/\/ TEMP SENSOR 1   float current_temp=0;   sensors.requestTemperatures();   current_temp=sensors.getTempCByIndex(0);   if (current_temp&gt;-100 && current_temp&lt;50) {    timeCheckedTemp=uptime;    Serial.print(&quot;Temp sensor: &quot;);     Serial.println(current_temp);    float diff=(float)sent_temperature-(float)current_temp;    if ((abs(diff)&gt;=TEMP_ACC) || ((uptime-timeSentTemp)&gt;PERIOD_SEND_TEMP)) {     \/\/      timeSentTemp=uptime;        sent_temperature=(float)current_temp;                  Serial.print(&quot;P:&quot;);          Serial.print(random(65535));          Serial.print(&quot;;F:&quot;);          Serial.print(&quot;0&quot;);          Serial.print(&quot;;T:0;C:&quot;);                   Serial.print(&quot;10&quot;);          Serial.print(&quot;;D:&quot;);          Serial.print((int)(current_temp*100));                   Serial.println(&quot;;&quot;);             }   } else {    \/\/Serial.print(&quot;Incorrect T: &quot;);    \/\/Serial.println(current_temp);   }  }           if (Serial.available()) {     char c=Serial.read();     if (c == '\\n' || c == ';')         {           Serial.println(inData);           int commandProcessed=0;           if (inData.equals(&quot;blink&quot;)) {            Serial.println(&quot;BLINKING!&quot;);            blinking(3);            commandProcessed=1;                       }            if (inData.startsWith(&quot;pair&quot;)) {             commandProcessed=1;                         inData.replace(&quot;pair&quot;,&quot;&quot;);             noolitePair(inData.toInt());           }           if (inData.startsWith(&quot;on&quot;)) {             commandProcessed=1;                         inData.replace(&quot;on&quot;,&quot;&quot;);             nooliteTurnOn(inData.toInt());           }           if (inData.startsWith(&quot;off&quot;)) {             commandProcessed=1;                         inData.replace(&quot;off&quot;,&quot;&quot;);             nooliteTurnOff(inData.toInt());           }                      if (inData.startsWith(&quot;switch&quot;)) {             commandProcessed=1;                         inData.replace(&quot;switch&quot;,&quot;&quot;);             nooliteSwitch(inData.toInt());           }           if (inData.startsWith(&quot;level&quot;)) {             commandProcessed=1;                         inData.replace(&quot;level&quot;,&quot;&quot;);             int splitPosition;             splitPosition=inData.indexOf('-');             if(splitPosition != -1) {               String paramString=inData.substring(0,splitPosition);               int channel=paramString.toInt();               inData=inData.substring(splitPosition+1,inData.length());               nooliteLevel(channel,inData.toInt());             }                        }                     if (inData.startsWith(&quot;unpair&quot;)) {             commandProcessed=1;                         inData.replace(&quot;unpair&quot;,&quot;&quot;);             nooliteUnPair(inData.toInt());           }                                 if (inData.startsWith(&quot;color-&quot;)) {             commandProcessed=1;                         inData.replace(&quot;color-&quot;,&quot;&quot;);             if (inData.equalsIgnoreCase(&quot;r&quot;)) {               setColor(255,0,0);             }             if (inData.equalsIgnoreCase(&quot;g&quot;)) {               setColor(0,255,0);             }                         if (inData.equalsIgnoreCase(&quot;b&quot;)) {               setColor(0,0,255);             }                         if (inData.equalsIgnoreCase(&quot;w&quot;)) {               setColor(255,255,255);             }             if (inData.equalsIgnoreCase(&quot;off&quot;)) {               setColor(0,0,0);             }                       }                                if (commandProcessed==0) {             Serial.print(&quot;Unknown command: &quot;);             Serial.println(inData);           }                             inData=&quot;&quot;;           Serial.flush();         } else {           inData += (c);         }       }            if(ET.receiveData())     {         digitalWrite(PIN_LED, HIGH);         if (last_packet_id!=(int)mydata.packet_id) {          Serial.print(&quot;P:&quot;);          Serial.print(mydata.packet_id);          Serial.print(&quot;;F:&quot;);                  Serial.print(mydata.device_id);          Serial.print(&quot;;T:&quot;);                          Serial.print(mydata.destination_id);                  Serial.print(&quot;;C:&quot;);          Serial.print(mydata.command);          Serial.print(&quot;;D:&quot;);          Serial.print(mydata.data);          Serial.println(&quot;;&quot;);          last_packet_id=(int)mydata.packet_id;         }         digitalWrite(PIN_LED, LOW);                  }        if (mySerial.available())     Serial.write(mySerial.read());                   }  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0441 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0431\u0435\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043a \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044e, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0435\u0449\u0451 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430 \u043d\u0435\u0433\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438.<\/p>\n<h5>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044f (\u0440\u043e\u0443\u0442\u0435\u0440\u0430)<\/h5>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 OpenWRT \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u0430 \u043b\u0443\u0447\u0448\u0435 \u0434\u0430\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 <a href=\"http:\/\/smartliving.ru\/Main\/LinuxMiniHubSetup\">\u043f\u043e\u043b\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e<\/a>. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u043e\u0443\u0442\u0435\u0440 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 WiFi-\u0441\u0435\u0442\u0438 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 COM-\u043f\u043e\u0440\u0442\u0430. <\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u044d\u0442\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0432 \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044c. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Bash \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044f, \u0442.\u043a. \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c, \u0442.\u0435. \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044f \u043a \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u201c\u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0439\u201d \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2013 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0441 OpenWRT \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c Linux-\u043e\u043c, \u043b\u0438\u0448\u044c \u0431\u044b \u0431\u044b\u043b Bash \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0445\u043e\u0441\u0442-\u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438:  <\/p>\n<ol>\n<li>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 (\u043f\u0440\u0438 \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438), \u0430 \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c<\/li>\n<li>\u041f\u0440\u0438\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438<\/li>\n<\/ol>\n<p>  \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a (\/ect\/master\/settings.sh)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">MASTER_ID=&quot;AAAA-BBBB-CCCC-DDDD&quot; ARDUINO_PORT=\/dev\/ttyACM0 ARDUINO_PORT_SPEED=9600 UPDATES_URL=&quot;http:\/\/connect.smartliving.ru\/rules\/&quot; DATA_PATH=&quot;\/etc\/master\/data&quot; WEB_PATH=&quot;\/www&quot; ONLINE_CHECK_HOST=&quot;8.8.8.8&quot; LOCAL_BASE_URL=&quot;http:\/\/connect.dev&quot; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0430\u0439\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\/etc\/master\/cycle.sh)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash  # settings . \/etc\/master\/settings.sh  # STEP 0 # wait to be online COUNTER=0 while [ $COUNTER -lt 5 ]; do ping -c 1 $ONLINE_CHECK_HOST if [[ $? = 0 ]]; then echo Network available. break; else echo Network not available. Waiting... sleep 5 fi let COUNTER=COUNTER+1 done  #--------------------------------------------------------------------------- # START  if [ ! -d &quot;$DATA_PATH&quot; ]; then   mkdir $DATA_PATH   chmod 0666 $DATA_PATH fi  while :  do  #--------------------------------------------------------------------------- # Downloading the latest rules from the web echo Getting rules from $UPDATES_URL?id=$MASTER_ID wget -O $DATA_PATH\/rules_set.tmp  $UPDATES_URL?id=$MASTER_ID if grep -Fq &quot;Rules set&quot; $DATA_PATH\/rules_set.tmp then mv $DATA_PATH\/rules_set.tmp $DATA_PATH\/rules_set.sh else echo Incorrect rules file fi  #---------------------------------------------------------------------------  # Reading all data and sending to the web ALL_DATA_FILE=$DATA_PATH\/all_data.txt rm -f $ALL_DATA_FILE echo -n id=$MASTER_ID&gt;&gt;$ALL_DATA_FILE echo -n &quot;&data=&quot;&gt;&gt;$ALL_DATA_FILE FILES=$DATA_PATH\/*.dat for f in $FILES do #echo &quot;Processing $f file...&quot; OLD_DATA=`cat $f` fname=${f##*\/} PARAM=${fname\/.dat\/} echo -n &quot;$PARAM|$OLD_DATA;&quot;&gt;&gt;$ALL_DATA_FILE done ALL_DATA=`cat $ALL_DATA_FILE` echo Posting: $UPDATES_URL?$ALL_DATA wget -O $DATA_PATH\/data_post.tmp $UPDATES_URL?$ALL_DATA rm -f $DATA_PATH\/*.dat #---------------------------------------------------------------------------  # Downloading the latest menu from the web echo Getting menu from $UPDATES_URL\/menu2.php?download=1\\&id=$MASTER_ID wget -O $DATA_PATH\/menu.tmp  $UPDATES_URL\/menu2.php?download=1\\&id=$MASTER_ID if grep -Fq &quot;stylesheet&quot; $DATA_PATH\/menu.tmp then mv $DATA_PATH\/menu.tmp $WEB_PATH\/menu.html else echo Incorrect menu file fi #---------------------------------------------------------------------------  START_TIME=&quot;$(date +%s)&quot; # main cycle stty -F $ARDUINO_PORT ispeed $ARDUINO_PORT_SPEED ospeed $ARDUINO_PORT_SPEED cs8 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts  #--------------------------------------------------------------------------- while read LINE; do  echo $LINE  PASSED_TIME=&quot;$(($(date +%s)-START_TIME))&quot;  # Processing incoming URLs from controller REGEX='^GET (.+)$' if [[ $LINE =~ $REGEX ]] then URL=$LOCAL_BASE_URL${BASH_REMATCH[1]} #-URL=$LOCAL_BASE_URL wget -O $DATA_PATH\/http.tmp $URL echo Getting URL echo $URL fi  PACKET_ID=&quot;&quot; DATA_FROM=&quot;&quot; DATA_TO=&quot;&quot; DATA_COMMAND=&quot;&quot; DATA_VALUE=&quot;&quot;  REGEX='^P:([0-9]+);F:([0-9]+);T:([0-9]+);C:([0-9]+);D:([0-9]+);$'  if [[ $LINE =~ $REGEX ]] then PACKET_ID=${BASH_REMATCH[1]} DATA_FROM=${BASH_REMATCH[2]} DATA_TO=${BASH_REMATCH[3]} DATA_COMMAND=${BASH_REMATCH[4]} DATA_VALUE=${BASH_REMATCH[5]} DATA_FILE=$DATA_PATH\/$DATA_FROM-$DATA_COMMAND.dat echo -n $DATA_VALUE&gt;$DATA_FILE fi  if [ -f $DATA_PATH\/incoming_data.txt ]; then  echo &quot;New incoming data:&quot;;  echo `cat $DATA_PATH\/incoming_data.txt`  cat $DATA_PATH\/incoming_data.txt&gt;$ARDUINO_PORT  rm -f $DATA_PATH\/incoming_data.txt fi  ACTION_RECEIVED=&quot;&quot; if [ -f $DATA_PATH\/incoming_action.txt ]; then  ACTION_RECEIVED=`cat $DATA_PATH\/incoming_action.txt`  echo &quot;New incoming action: $ACTION_RECEIVED&quot;  rm -f $DATA_PATH\/incoming_action.txt fi   . $DATA_PATH\/rules_set.sh  if [ -f $DATA_PATH\/reboot ]; then echo &quot;REBOOT FLAG&quot; rm -f $DATA_PATH\/reboot break; fi done &lt; $ARDUINO_PORT done #--------------------------------------------------------------------------- echo Cycle stopped. <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0435\u0441\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (MASTER_ID), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c (\u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u043d\u0438\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e).<\/p>\n<p>  \u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/etc\/master\/data\/ \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0430\u0432\u0438\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432).<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e <a href=\"http:\/\/connect.smartliving.ru\/download\/pack.tar\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h5>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u043b<\/h5>\n<p>  \u041e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u0430\u0432\u0438\u043b \u0431\u044b\u043b\u043e \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u043d\u0430 \u043d\u0435\u0439 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 bash-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u0435\u0451 \u0410\u043a\u0442\u0438\u0432\u0430\u0442\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c (\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c) \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:  <\/p>\n<ul>\n<li>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e (\u043a\u043d\u043e\u043f\u043a\u0430, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430) \u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e (\u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e) \u0434\u0430\u0442\u0447\u0438\u043a\u0430<\/li>\n<li>\u201c\u0420\u0443\u0447\u043d\u0430\u044f\u201d \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 API \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e (\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f)<\/li>\n<\/ul>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:  <\/p>\n<ul>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439<\/li>\n<li>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0438\/\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 (\u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u0438\u0431\u043e \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430)<\/li>\n<li>HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0432\u0435\u0431-\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a shell-\u043a\u043e\u043c\u0430\u0434\u043d\u044b (Linux)<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f<\/li>\n<li>\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># RULE 2 Forwarder RCSwitch (regex) MATCHED_RULE2='0' REGEX='^RCSwitch:(.+)$' if [[ $LINE =~ $REGEX ]] then  MATCHED_RULE2=&quot;1&quot; fi  # RULE 2 ACTIONS if [[ &quot;$MATCHED_RULE2&quot; == &quot;1&quot; ]] then  #Action 2.1 (http)  echo &quot;HTTP request: http:\/\/192.168.0.17\/objects\/?script=RCSwitch&rcswitch=${BASH_REMATCH[1]}&quot; wget -O $DATA_PATH\/http.tmp http:\/\/192.168.0.17\/objects\/?script=RCSwitch\\&rcswitch=${BASH_REMATCH[1]} fi <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0432\u0435\u0431-\u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 connect.smartliving.ru). \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0432\u0435\u0431-\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 bash-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0421\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/0ad\/41f\/3fe\/0ad41f3feb335a198f0a8feb194c2c07.jpg\" alt=\"image\"\/><\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0430\u0432\u0438\u043b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 <a href=\"http:\/\/smartliving.ru\/Main\/LinuxMiniHubRules\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<h5>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 API<\/h5>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u043e\u0434\u043d\u0430\u043a\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0439 \u0431\u044b\u043b \u0434\u043b\u0438\u043d\u043d\u044b\u043c, \u043a\u0430\u043a \u0438 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 API. \u0428\u0430\u0433 \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438, \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043e\u043d \u0431\u044b\u043b \u043f\u043e \u0441\u0445\u043e\u0436\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443. \u041d\u0430 \u0445\u043e\u0441\u0442-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 API \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0435\u0449\u0451 \u043e\u0434\u0438\u043d bash-\u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d \u0432 \/www\/cgi-bin\/master  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \/www\/cgi-bin\/master<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash  DATA_PATH=&quot;\/etc\/master\/data&quot;  echo &quot;Content-type: text\/plain&quot; echo &quot;&quot;  # Save the old internal field separator.   OIFS=&quot;$IFS&quot;  # Set the field separator to & and parse the QUERY_STRING at the ampersand.   IFS=&quot;${IFS}&&quot;   set $QUERY_STRING   Args=&quot;$*&quot;   IFS=&quot;$OIFS&quot;  # Next parse the individual &quot;name=value&quot; tokens.    ARG_VALUE=&quot;&quot;   ARG_VAR=&quot;&quot;   ARG_OP=&quot;&quot;   ARG_LINE=&quot;&quot;    for i in $Args ;do  #       Set the field separator to =         IFS=&quot;${OIFS}=&quot;         set $i         IFS=&quot;${OIFS}&quot;          case $1 in                 # Don't allow &quot;\/&quot; changed to &quot; &quot;. Prevent hacker problems.                 var) ARG_VAR=&quot;`echo -n $2 | sed 's|[\\]||g' | sed 's|%20| |g'`&quot;                        ;;                 #                 value) ARG_VALUE=$2                        ;;                 line) ARG_LINE=$2                        ;;                 op) ARG_OP=$2                        ;;                 *)     echo &quot;&lt;hr&gt;Warning:&quot;\\                             &quot;&lt;br&gt;Unrecognized variable \\'$1\\' passed.&lt;hr&gt;&quot;                        ;;          esac   done  # Set value #ARG_OP=&quot;set&quot;  #echo $ARG_OP  if [[ &quot;$ARG_OP&quot; == &quot;set&quot; ]] then # echo &quot;Set operation&lt;br&gt;&quot;  echo -n &quot;$ARG_VALUE&quot;&gt;$DATA_PATH\/$ARG_VAR.dat  echo &quot;OK&quot; fi  if [[ &quot;$ARG_OP&quot; == &quot;get&quot; ]] then # echo &quot;Get operation&lt;br&gt;&quot;  cat $DATA_PATH\/$ARG_VAR.dat fi  if [[ &quot;$ARG_OP&quot; == &quot;send&quot; ]] then # echo &quot;Send&lt;br&gt;&quot;  echo -n $ARG_LINE&gt;&gt;$DATA_PATH\/incoming_data.txt  echo &quot;OK&quot; fi  if [[ &quot;$ARG_OP&quot; == &quot;action&quot; ]] then # echo &quot;Action&lt;br&gt;&quot;  echo -n $ARG_LINE&gt;&gt;$DATA_PATH\/incoming_action.txt  echo &quot;OK&quot; fi  if [[ &quot;$ARG_OP&quot; == &quot;refresh&quot; ]] then # echo &quot;Send&lt;br&gt;&quot;  echo &quot;Web&quot;&gt;$DATA_PATH\/reboot  echo &quot;OK&quot; fi  if [[ &quot;$ARG_OP&quot; == &quot;run&quot; ]] then # echo &quot;Run&lt;br&gt;&quot;  echo `$ARG_LINE` fi <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b API:<\/p>\n<p>  <b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439<\/b> <br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=set&var=Variable1&value=Value1<\/code><br \/>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Variable1 \u0432 Value1 <\/p>\n<p>  <b>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439<\/b><br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=get&var=Variable1<\/code><br \/>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Variable1 <\/p>\n<p>  <b>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/b><br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=send&line=SomeData<\/code><br \/>  \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 SomeData \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 <\/p>\n<p>  <b>\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/b><br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=action&line=SomeAction<\/code><br \/>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 SomeAction, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 (\u0442\u0438\u043f \u00ab\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u00bb) <\/p>\n<p>  <b>\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b<\/b><br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=refresh<\/code><br \/>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 (\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435) \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 <\/p>\n<p>  <b>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/b><br \/>  <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/cgi-bin\/master?op=run&line=SomeCommand<\/code><br \/>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 SomeCommand \u0432 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u00abreboot\u00bb \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e) <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 API \u0431\u044b\u043b \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0421 \u043d\u0438\u043c \u043e\u0431\u043e\u0448\u043b\u0438\u0441\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u2013 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u043d\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/780\/ed6\/93c\/780ed693c6031dcf115b4d2c4df1b8f1.png\" alt=\"image\"\/><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0435\u0441\u043e, \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 frontend-\u0444\u0440\u044d\u0439\u043c\u0432\u043e\u0440\u043a <a href=\"http:\/\/cferdinandi.github.io\/kraken\/\">Kraken<\/a> \u0438 \u0437\u0430\u043a\u0438\u043d\u0443\u0442 \u0432 \u043f\u0430\u043f\u043a\u0443 \/www\/kraken-master. \u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \/www\/ \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b menu.html \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/\u0430\u0434\u0440\u0435\u0441_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\/menu.html<\/code>. \u0422\u0430\u043a\u043e\u0439 \u0432\u0438\u0434 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u044b\u0431\u0440\u0430\u043d \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e, \u0430 \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=ru.galakart.majordroid\">MajorDroid<\/a> \u2013 \u043c\u0435\u043b\u043a\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c, \u043d\u043e \u044f \u0437\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442.<\/p>\n<h5>\u0420\u0430\u0431\u043e\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Online<\/h5>\n<p>  \u201c\u0423\u0445, \u043d\u0443 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451?\u201d \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u041d\u0443 \u043f\u043e\u0447\u0442\u0438, \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043b\u043e\u0441\u0442\u044c. \u0422\u043e\u0447\u043d\u0435\u0435 \u00ab\u043c\u0430\u043b\u043e\u0441\u0442\u044c\u00bb \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u044d\u0442\u0430\u043f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 (\u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442). \u0410 \u0438\u043c\u0435\u043d\u043d\u043e \u2013 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0439 \u043f\u043e\u0440\u0442\u044b \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 \u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0441\u044f \u043d\u0430 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0448\u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u0430\u0448\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0438 \u0436\u0438\u0437\u043d\u0438 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u043c (\u0438 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0438 \u0441\u0435\u0431\u0435). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0445\u0443\u0434\u0448\u0435\u0435 \u2013 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u0432\u0430\u0440\u0434 \u043f\u043e\u0440\u0442\u043e\u0432. \u0418\u043b\u0438 \u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u043a \u043a\u0430\u0436\u0434\u043e\u0439 (\u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438) \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u2013 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0430\u043c\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0443 \u0441\u0435\u0431\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043d\u0430\u043b\u0443. \u041a\u0430\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 socket-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b (\u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435) \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 bash-\u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b (\u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435) socket-\u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>  \u041d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \/etc\/master\/socket_client<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \/etc\/master\/socket_client<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash  # settings . \/etc\/master\/settings.sh  # STEP 0 # wait to be online COUNTER=0 while [ $COUNTER -lt 5 ]; do ping -c 1 $ONLINE_CHECK_HOST if [[ $? = 0 ]]; then echo Network available. break; else echo Network not available. Waiting... sleep 5 fi let COUNTER=COUNTER+1 done  #--------------------------------------------------------------------------- # START  if [ ! -d &quot;$DATA_PATH&quot; ]; then   mkdir $DATA_PATH   chmod 0666 $DATA_PATH fi  while :  do  TEST_FILE=$DATA_PATH\/data_sent.txt touch $TEST_FILE  SOCKET_HOST=connect.smartliving.ru SOCKET_PORT=11444  exec 3&lt;&gt;\/dev\/tcp\/$SOCKET_HOST\/$SOCKET_PORT  NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo &quot; Sending: Hello!&quot; echo &quot;Hello!&quot;&gt;&3 read  -t 60 ok &lt;&3 NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo -n &quot; Received: &quot; echo &quot;$ok&quot;;  REGEX='^Please' if [[ ! $ok =~ $REGEX ]] then  NOW=$(date +&quot;%H:%M:%S&quot;)  echo -n $NOW  echo &quot; Connection failed!&quot;  continue fi  NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo &quot; Sending: auth:$MASTER_ID&quot; echo &quot;auth:$MASTER_ID&quot;&gt;&3 read -t 60 ok &lt;&3 NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo -n &quot; Received: &quot; echo &quot;$ok&quot;;  REGEX='^Authorized' if [[ ! $ok =~ $REGEX ]] then  NOW=$(date +&quot;%H:%M:%S&quot;)  echo -n $NOW  echo &quot; Authorization failed!&quot;  exit 0 fi  NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo &quot; Sending: Hello again!&quot; echo &quot;Hello again!&quot;&gt;&3 read -t 60 ok &lt;&3 NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo -n &quot; Received: &quot; echo &quot;$ok&quot;;  while read -t 120 LINE; do  NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo -n &quot; Got line: &quot; echo $LINE  # Ping reply REGEX='^PING' if [[ $LINE =~ $REGEX ]] then echo -n $NOW echo &quot; Sending: PONG!&quot; echo PONG!&gt;&3 fi  # Run action REGEX='^ACTION:(.+)$' if [[ $LINE =~ $REGEX ]] then DATA_RECEIVED=${BASH_REMATCH[1]} NOW=$(date +&quot;%H:%M:%S&quot;) echo -n $NOW echo -n &quot; Action received: &quot; echo $DATA_RECEIVED echo -n $DATA_RECEIVED&gt;&gt;$DATA_PATH\/incoming_action.txt fi   # Pass data REGEX='^DATA:(.+)$' if [[ $LINE =~ $REGEX ]] then DATA_RECEIVED=${BASH_REMATCH[1]} echo -n $NOW echo -n &quot; Data received: &quot; echo $DATA_RECEIVED echo -n $DATA_RECEIVED&gt;&gt;$DATA_PATH\/incoming_data.txt fi  # Pass data REGEX='^URL:(.+)$' if [[ $LINE =~ $REGEX ]] then DATA_RECEIVED=${BASH_REMATCH[1]} echo -n $NOW echo -n &quot; URL received: &quot; echo  wget -O $DATA_PATH\/data_post.tmp http:\/\/localhost$DATA_RECEIVED fi    # Check files modified FILES=$DATA_PATH\/*.dat for f in $FILES do  if [ $f -nt $TEST_FILE ]; then    echo &quot;Processing $f ...&quot;   FNAME=${f##*\/}   PARAM=${FNAME\/.dat\/}   CONTENT=`cat $f`   echo -n $NOW   echo &quot; Sending: DATA:$PARAM|$CONTENT;&quot;   echo &quot;data:$PARAM|$CONTENT;&quot;&gt;&3  fi done touch $TEST_FILE   done &lt;&3  done #---------------------------------------------------------------------------  echo Cycle stopped. <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u0437 \u0435\u0433\u043e \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u0438 QR-\u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u041e\u0434\u0438\u043d \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0438\u0436\u0435:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/9e9\/c4f\/5da\/9e9c4f5da2fe93a25ba7faf7cac54043.png\" alt=\"image\"\/><\/p>\n<h5>\u0417\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435<\/h5>\n<p>  \u0412\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u2013 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0436\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043f\u0430\u0440\u0430 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0431\u0435\u0437 \u0438\u0437\u043b\u0438\u0448\u0435\u0441\u0442\u0432. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 (\u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0435\u0439) \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u044f \u0431\u044b \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c:  <\/p>\n<ul>\n<li>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c (\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0430\u0440\u043e\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c \u0438 \u0442.\u043f.)<\/li>\n<li>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0445\u043e\u0442\u044c \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0431\u044b\u043b\u043e, \u043d\u043e \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0439 socket-\u0441\u0435\u0440\u0432\u0435\u0440 \u044d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438)<\/li>\n<li>UI\/UX (\u043a\u0430\u043a \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430)<\/li>\n<li>\u0416\u0435\u043b\u0435\u0437\u043e (\u201c\u0410\u0440\u0434\u0443\u0438\u043d\u043e? \u0420\u043e\u0443\u0442\u0435\u0440!? \u042f \u0432\u0430\u0441 \u0443\u043c\u043e\u043b\u044f\u044e&#8230;\u201d)<\/li>\n<\/ul>\n<h5>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438 \u0442\u0438\u043f\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u043b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0434\u043e\u043d\u0435\u0441\u0442\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0443\u0442\u044c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043d\u0430 <a href=\"http:\/\/smartliving.ru\/Main\/LinuxMiniHub\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<br \/>  \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u044b\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0438 \u0432\u043e\u043f\u043b\u043e\u0449\u0430\u043b\u0438\u0441\u044c \u0438\u0434\u0435\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0430 \u043a\u043e\u0435-\u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u043e \u0438\u0437-\u0432\u043d\u0435 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0437\u0440\u044f. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u043c\u043e\u0439 \u043e\u043f\u044b\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u0435\u043d.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u0443 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043c\u0435\u043d\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0445, \u043d\u043e, \u0441\u043a\u043e\u0440\u0435\u0435, \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<ul>\n<li>\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0441\u0442\u043e\u0440\u043e\u0436 \u2013 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u0434\u043e\u043c\u043e\u0439 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0432 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0438<\/li>\n<li>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u2013 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e\/\u0441\u043e\u0431\u044b\u0442\u0438\u044e<\/li>\n<li>\u041a\u043b\u0438\u043c\u0430\u0442-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u2013 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b\/\u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c\u0438<\/li>\n<li>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0430\u043c\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u044f \u2013 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u201c\u0442\u0440\u0435\u0432\u043e\u0436\u043d\u0443\u044e\u201d \u043a\u043d\u043e\u043f\u043a\u0443 \u043b\u0438\u0431\u043e \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f<\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u043c\u0435\u044f \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0431\u0430\u0437\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u201c\u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u044b\u0445\u201d \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u201c\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0432\u0435\u0449\u0438\u201d \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<\/p>\n<p>  P.S. \u0414\u043e\u043b\u0433\u043e \u0434\u0443\u043c\u0430\u043b \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043b\u0438 \u00ab\u0436\u0438\u0432\u0443\u044e\u00bb \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u043e \u043f\u0440\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0432\u0441\u0435\u0439 \u0437\u0430\u0442\u0435\u0438 \u044f \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 (\u0438\u043b\u0438 \u0435\u0433\u043e \u043c\u0430\u043a\u0435\u0442, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435) \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/017\/7ef\/cfd\/0177efcfdbc955b2e82563638a6a60a4.png\" alt=\"image\"\/><\/p>\n<p>  P.P.S. \u0427\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043e\u043a\u043e\u043b\u043e $60, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u043e.      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/224449\/\"> http:\/\/habrahabr.ru\/post\/224449\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0412\u0435\u0449\u0435\u0439. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/b62\/224\/28f\/b6222428f57b644933af959abad461d7.png\" alt=\"image\"\/><\/p>\n<p>  \u0417\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-224449","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=224449"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224449\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=224449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=224449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=224449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}