{"id":281026,"date":"2016-11-16T09:45:04","date_gmt":"2016-11-16T06:45:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=281026"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=281026","title":{"rendered":"\u0421\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430. \u041d\u0435 \u0436\u0438\u0437\u043d\u044c, \u0430 \u00ab\u043c\u0430\u043b\u0438\u043d\u0430\u00bb c RaspberryPi 3"},"content":{"rendered":"<p>\u0417\u0430\u043f\u044b\u043b\u0438\u043b\u0430\u0441\u044c \u0437\u0430 \u043c\u0435\u0441\u044f\u0446 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u043f\u043e\u043b\u043a\u0435 Raspberry Pi 3 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c Wi-Fi. \u0420\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041a\u0430\u043a \u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0439 \u0441\u0432\u043e\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0444\u043e\u0442\u043e \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u0438 \u0432\u0435\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430?<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/6da\/4de\/d2d\/6da4ded2d6204916b13b43870a9f5a31.jpg\"\/><\/p>\n<p>  \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0445\u0440\u0430\u043d\u044b \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u043e\u0442 \u043d\u0435\u0437\u0430\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0441 \u0444\u043e\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 smtp. \u0423\u0441\u0442\u0440\u043e\u0438\u043c \u0443 \u0441\u0435\u0431\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u043d\u0430 \u043a\u0443\u0445\u043d\u0435!<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u042d\u0442\u0430 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0445\u0443\u0434\u0435\u044e\u0449\u0438\u043c. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044f \u043a\u0443\u0445\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 <i>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e<\/i> \u043f\u0440\u0430\u0432\u043e\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f. \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0435, \u0432\u0438\u0434\u0435\u043e\u0441\u044a\u0435\u043c\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0432\u0435\u0431 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u0441\u0432\u0435\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044c \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0443\u0448\u0435\u043b \u043e\u0442 \u043e\u0442\u0432\u0435\u0442\u0430, \u0441\u0435\u0440\u0438\u044e \u0435\u0433\u043e \u0444\u043e\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a. <\/p>\n<h2>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/li>\n<li>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/li>\n<li>\u041d\u0430 Groovy<\/li>\n<li>\u041d\u0430 Java<\/li>\n<li>\u041a\u0430\u043a \u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438?<\/li>\n<\/ul>\n<h2>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h2>\n<p>  \u0413\u0435\u0440\u043a\u043e\u043d \u2014 \u043b\u044e\u0431\u043e\u0439 \u0434\u043b\u044f \u043e\u0445\u0440\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<br \/>  \u0412\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u0430 \u2014 \u0443 \u043c\u0435\u043d\u044f Logitech C310, \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Video4Linux<br \/>  Raspberry Pi 3 Model B \u2014 \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 WiFi \u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d USB hub.<\/p>\n<p>  \u0413\u0435\u0440\u043a\u043e\u043d \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u043c \u211617 \u0438 \u211615 \u2014 \u0442.\u0435. \u043c\u0435\u0436\u0434\u0443 GPIO3 \u0438 +3.3V <a href=\"http:\/\/pi4j.com\/pins\/model-3b-rev1.html\">\u043f\u043e \u0441\u0445\u0435\u043c\u0435<\/a>.<\/p>\n<h2>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h2>\n<p>  \u0412 open source \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 <a href=\"http:\/\/camel.apache.org\">Apache Camel<\/a> \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 Rhiot \u0434\u043b\u044f JVM \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u044b\u043b\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u0448\u043a\u0430\u0444\u0443 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u00ab\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u00bb \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432\/\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 Camel \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0435\u0433\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439 \u0432 JVM \u044f <a href=\"https:\/\/habrahabr.ru\/post\/310784\/#camel\">\u043e\u0431\u0435\u0449\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440<\/a> \u0434\u043b\u044f Camel \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435! \u0418\u0434\u0435\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0432\u0435\u044f\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c <a href=\"http:\/\/www.bitreactive.com\/intruder-detection-with-raspberry-pi\/\">\u00abIntruder detection with Raspberry-Pi\u00bb<\/a>. \u0422\u043e\u043b\u044c\u043a\u043e \u0433\u0435\u0440\u043a\u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0435\u0435 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u2014 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 I2C.<\/p>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RouteBuilder \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 camel \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 URL \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\/\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 <a href=\"http:\/\/camel.apache.org\/components.html\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a>.  <\/p>\n<ul>\n<li><b>controlbus<\/b> \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043e\u0442\u043e\u0441\u044a\u0435\u043c\u043a\u0443.<\/li>\n<li><b>pi4j-gpio<\/b> \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/pi4j.com\">pi4j<\/a> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441 GPIO \u00ab\u043c\u0430\u043b\u0438\u043d\u044b\u00bb.<\/li>\n<li><b>webcam<\/b> \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u0430\u0434\u0440 \u0441 \u0432\u0435\u0431 \u043a\u0430\u043c\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c-\u0442\u0430\u0439\u043c\u0435\u0440\u043e\u043c.<\/li>\n<li><b>smtps<\/b> \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.<\/li>\n<\/ul>\n<p>  camelContext.start() \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442.<\/p>\n<p>  \u0420\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u0433\u0435\u0440\u043a\u043e\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b79\/dcb\/53a\/b79dcb53a5104e82872dc1807272335d.png\"\/>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0433\u0435\u0440\u043a\u043e\u043d \u0432 hawt.io<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/745\/486\/6d6\/7454866d67da4e9dbe508ebbfed9c05b.png\"\/>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0436\u0435 \u0444\u043e\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0441\u043d\u0438\u043c\u043a\u0430 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u0432 hawt.io<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0cf\/bc7\/417\/0cfbc741776b40e18c3c1bdf3f2008a7.png\"\/>  <\/div>\n<\/div>\n<p>  addEventNotifier() \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043f\u043e\u0447\u0442\u0430 \u043d\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 mail.ru, \u0442\u043e \u043d\u0430\u0439\u0434\u0438\u0442\u0435 smtp \u0445\u043e\u0441\u0442, \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u0432\u043d\u0435\u0441\u0438\u0442\u0435 \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u00absmtps:\/\/smtp.mail.ru:465\u00bb.<\/p>\n<p>  \u041f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043b\u0438\u0446\u043e \u043d\u0430 \u0444\u043e\u0442\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435 Camel, \u043d\u043e \u0434\u0430\u0436\u0435 Raspberry PI 3 model B \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435.<\/p>\n<p>  \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0435\u0431 \u043a\u043e\u043d\u0441\u043e\u043b\u044c <a href=\"http:\/\/hawt.io\">hawt.io<\/a> \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c:  <\/p>\n<pre><code class=\"java\">MavenClassLoader.usingCentralRepo()         .forMavenCoordinates('io.hawt:hawtio-app:2.0.0').loadClass('io.hawt.app.App') Thread.currentThread().setContextClassLoader(hawtIoConsole.getClassLoader()) hawtIoConsole.main('--port','10090') <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0447\u0442\u0438 \u0434\u0432\u0443\u0445\u0441\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u0430\u043c \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u0430\u043b\u043e, \u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f Apache Camel \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/github.com\/igor-suhorukov\/camel-gcode\">camel-gcode<\/a> \u0434\u043b\u044f <a href=\"https:\/\/habrahabr.ru\/post\/314462\/\">\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u0430\u043d\u043a\u0443 \u0427\u041f\u0423<\/a> \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c LinuxCNC \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 JVM.<\/p>\n<h3>\u041d\u0430 Groovy<\/h3>\n<p>  <a href=\"https:\/\/github.com\/igor-suhorukov\/alarm-system\/blob\/master\/AlarmSystem.groovy\">AlarmSystem.groovy<\/a>  <\/p>\n<pre><code>@Grab('org.apache.camel:camel-groovy:2.18.0') @Grab('org.apache.camel:camel-core:2.18.0') @Grab('org.apache.camel:camel-mail:2.18.0') @Grab('io.rhiot:camel-webcam:0.1.4') @Grab('io.rhiot:camel-pi4j:0.1.4') @Grab('org.slf4j:slf4j-simple:1.6.6') import org.apache.camel.builder.RouteBuilder import org.apache.camel.impl.DefaultAttachment import org.apache.camel.impl.DefaultCamelContext import org.apache.camel.management.event.CamelContextStartedEvent import org.apache.camel.management.event.CamelContextStoppedEvent import org.apache.camel.support.EventNotifierSupport  import javax.mail.util.ByteArrayDataSource import com.github.igorsuhorukov.smreed.dropship.MavenClassLoader  def login = System.properties['login'] def password = System.properties['password']  def camelContext = new DefaultCamelContext() camelContext.setName('Alarm system') def mailEndpoint = camelContext.getEndpoint(&quot;smtps:\/\/smtp.mail.ru:465?username=${login}&password=${password}&contentType=text\/html&debugMode=true&quot;) camelContext.addRoutes(new RouteBuilder() {     def void configure() {         from('pi4j-gpio:\/\/3?mode=DIGITAL_INPUT&pullResistance=PULL_DOWN').routeId('GPIO read')                 .choice()                 .when(header('CamelPi4jPinState').isEqualTo(&quot;LOW&quot;))                     .to(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=resume&quot;)                 .otherwise()                     .to(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=suspend&quot;);          from(&quot;timer:\/\/capture_image?delay=200&period=5000&quot;)                 .routeId('RaspberryPI Alarm')                 .to(&quot;webcam:spycam?resolution=HD720&quot;)                 .setHeader('to').constant(login)                 .setHeader('from').constant(login)                 .setHeader('subject').constant('alarm image')         .process{             def attachment = new DefaultAttachment(new ByteArrayDataSource(it.in.body, 'image\/jpeg'));             it.in.setBody(&quot;&lt;html&gt;&lt;head&gt;&lt;\/head&gt;&lt;body&gt;&lt;img src=\\&quot;cid:alarm-image.jpeg\\&quot; \/&gt; ${new Date()}&lt;\/body&gt;&lt;\/html&gt;&quot;);             attachment.addHeader(&quot;Content-ID&quot;, '&lt;alarm-image.jpeg&gt;');             it.in.addAttachmentObject(&quot;alarm-image.jpeg&quot;, attachment);             \/\/set CL to avoid javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart\/mixed             Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );         }         .to(mailEndpoint)     } }) registerLifecycleActions(camelContext, mailEndpoint, login) camelContext.start()  def hawtIoConsole = MavenClassLoader.usingCentralRepo()         .forMavenCoordinates('io.hawt:hawtio-app:2.0.0').loadClass('io.hawt.app.App') Thread.currentThread().setContextClassLoader(hawtIoConsole.getClassLoader()) hawtIoConsole.main('--port','10090')   void registerLifecycleActions(camelContext, mailEndpoint, login) {      camelContext.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {         boolean isEnabled(EventObject event) {             return event instanceof CamelContextStartedEvent | event instanceof CamelContextStoppedEvent         }          void notify(EventObject event) throws Exception {             def status = event instanceof CamelContextStartedEvent ? 'up' : 'down'             if ('up' == status){                 def suspendEndpoint = camelContext.getEndpoint(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=suspend&quot;)                 suspendEndpoint.createProducer().process(suspendEndpoint.createExchange())             }             def message = mailEndpoint.createExchange();             message.in.setHeader('to', login)             message.in.setHeader('from', login)             message.in.setHeader('subject', &quot;Alarm system is ${status}&quot;)             message.in.setBody(&quot;System is ${status}: ${new Date()}&quot;);             mailEndpoint.createProducer().process(message)         }     })     addShutdownHook { camelContext.stop() } } <\/code><\/pre>\n<h3>\u041d\u0430 Java<\/h3>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 java \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0443\u043a\u0432, \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e Reflection API.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043b\u0430\u0441\u0441 com.github.igorsuhorukov.alarmsys.AlarmSystem:<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/github.com\/igor-suhorukov\/alarm-system\/blob\/master\/src\/main\/java\/com\/github\/igorsuhorukov\/alarmsys\/AlarmSystem.java\">AlarmSystem.java<\/a>  <\/p>\n<pre><code class=\"java\"> package com.github.igorsuhorukov.alarmsys;  \/\/dependency:mvn:\/com.github.igor-suhorukov:mvn-classloader:1.8 \/\/dependency:mvn:\/org.apache.camel:camel-core:2.18.0 \/\/dependency:mvn:\/org.apache.camel:camel-mail:2.18.0 \/\/dependency:mvn:\/io.rhiot:camel-webcam:0.1.4 \/\/dependency:mvn:\/io.rhiot:camel-pi4j:0.1.4 \/\/dependency:mvn:\/org.slf4j:slf4j-simple:1.6.6 import com.github.igorsuhorukov.smreed.dropship.MavenClassLoader; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultAttachment; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.management.event.CamelContextStartedEvent; import org.apache.camel.management.event.CamelContextStoppedEvent; import org.apache.camel.support.EventNotifierSupport;  import javax.mail.util.ByteArrayDataSource; import java.lang.reflect.Method; import java.util.Date; import java.util.EventObject;  class AlarmSystem {     public static void main(String[] args) throws Exception{          String login = System.getProperty(&quot;login&quot;);         String password = System.getProperty(&quot;password&quot;);          DefaultCamelContext camelContext = new DefaultCamelContext();         camelContext.setName(&quot;Alarm system&quot;);         Endpoint mailEndpoint = camelContext.getEndpoint(String.format(&quot;smtps:\/\/smtp.mail.ru:465?username=%s&password=%s&contentType=text\/html&debugMode=true&quot;, login, password));         camelContext.addRoutes(new RouteBuilder() {             @Override             public void configure() throws Exception {                 from(&quot;pi4j-gpio:\/\/3?mode=DIGITAL_INPUT&pullResistance=PULL_DOWN&quot;).routeId(&quot;GPIO read&quot;)                         .choice()                         .when(header(&quot;CamelPi4jPinState&quot;).isEqualTo(&quot;LOW&quot;))                         .to(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=resume&quot;)                         .otherwise()                         .to(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=suspend&quot;);                  from(&quot;timer:\/\/capture_image?delay=200&period=5000&quot;)                         .routeId(&quot;RaspberryPI Alarm&quot;)                         .to(&quot;webcam:spycam?resolution=HD720&quot;)                         .setHeader(&quot;to&quot;).constant(login)                         .setHeader(&quot;from&quot;).constant(login)                         .setHeader(&quot;subject&quot;).constant(&quot;alarm image&quot;)                         .process(new Processor() {                             @Override                             public void process(Exchange it) throws Exception {                                 DefaultAttachment attachment = new DefaultAttachment(new ByteArrayDataSource(it.getIn().getBody(byte[].class), &quot;image\/jpeg&quot;));                                 it.getIn().setBody(String.format(&quot;&lt;html&gt;&lt;head&gt;&lt;\/head&gt;&lt;body&gt;&lt;img src=\\&quot;cid:alarm-image.jpeg\\&quot; \/&gt; %s&lt;\/body&gt;&lt;\/html&gt;&quot;, new Date()));                                 attachment.addHeader(&quot;Content-ID&quot;, &quot;&lt;alarm-image.jpeg&gt;&quot;);                                 it.getIn().addAttachmentObject(&quot;alarm-image.jpeg&quot;, attachment);                                 \/\/set CL to avoid javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart\/mixed                                 Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );                              }                         }).to(mailEndpoint);             }         });          registerLifecycleActions(camelContext, mailEndpoint, login);         camelContext.start();          Class&lt;?&gt; hawtIoConsole = MavenClassLoader.usingCentralRepo()                 .forMavenCoordinates(&quot;io.hawt:hawtio-app:2.0.0&quot;).loadClass(&quot;io.hawt.app.App&quot;);         Thread.currentThread().setContextClassLoader(hawtIoConsole.getClassLoader());         Method main = hawtIoConsole.getMethod(&quot;main&quot;, String[].class);         main.setAccessible(true);         main.invoke(null, (Object) new String[]{&quot;--port&quot;,&quot;10090&quot;});     }      private static void registerLifecycleActions(final DefaultCamelContext camelContext, final Endpoint mailEndpoint, final String login) {         camelContext.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {              public boolean isEnabled(EventObject event) {                 return event instanceof CamelContextStartedEvent | event instanceof CamelContextStoppedEvent;             }              public void notify(EventObject event) throws Exception {                 String status = event instanceof CamelContextStartedEvent ? &quot;up&quot; : &quot;down&quot;;                 if (&quot;up&quot;.equals(status)){                     Endpoint suspendEndpoint = camelContext.getEndpoint(&quot;controlbus:route?routeId=RaspberryPI Alarm&action=suspend&quot;);                     suspendEndpoint.createProducer().process(suspendEndpoint.createExchange());                 }                 Exchange message = mailEndpoint.createExchange();                 message.getIn().setHeader(&quot;to&quot;, login);                 message.getIn().setHeader(&quot;from&quot;, login);                 message.getIn().setHeader(&quot;subject&quot;, &quot;Alarm system is &quot;+status);                 message.getIn().setBody(&quot;System is &quot;+status+&quot;: &quot;+new Date());                 mailEndpoint.createProducer().process(message);             }         });         Runtime.getRuntime().addShutdownHook(new Thread(){             @Override             public void run(){                 try {                     camelContext.stop();                 } catch (Exception e) {                     System.exit(-1);                 }             }         });     } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0443\u0436\u0435\u043d <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">pom.xml c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot; xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;          xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/maven-v4_0_0.xsd&quot;&gt;      &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;     &lt;groupId&gt;com.github.igor-suhorukov&lt;\/groupId&gt;     &lt;artifactId&gt;alarm-system&lt;\/artifactId&gt;     &lt;packaging&gt;jar&lt;\/packaging&gt;     &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;     &lt;properties&gt;         &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;         &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;     &lt;\/properties&gt;     &lt;dependencies&gt;         &lt;dependency&gt;             &lt;groupId&gt;com.github.igor-suhorukov&lt;\/groupId&gt;             &lt;artifactId&gt;mvn-classloader&lt;\/artifactId&gt;             &lt;version&gt;1.8&lt;\/version&gt;         &lt;\/dependency&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.apache.camel&lt;\/groupId&gt;             &lt;artifactId&gt;camel-core&lt;\/artifactId&gt;             &lt;version&gt;2.18.0&lt;\/version&gt;         &lt;\/dependency&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.apache.camel&lt;\/groupId&gt;             &lt;artifactId&gt;camel-mail&lt;\/artifactId&gt;             &lt;version&gt;2.18.0&lt;\/version&gt;         &lt;\/dependency&gt;         &lt;dependency&gt;             &lt;groupId&gt;io.rhiot&lt;\/groupId&gt;             &lt;artifactId&gt;camel-webcam&lt;\/artifactId&gt;             &lt;version&gt;0.1.4&lt;\/version&gt;         &lt;\/dependency&gt;         &lt;dependency&gt;             &lt;groupId&gt;io.rhiot&lt;\/groupId&gt;             &lt;artifactId&gt;camel-pi4j&lt;\/artifactId&gt;             &lt;version&gt;0.1.4&lt;\/version&gt;         &lt;\/dependency&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;             &lt;artifactId&gt;slf4j-simple&lt;\/artifactId&gt;             &lt;version&gt;1.6.6&lt;\/version&gt;         &lt;\/dependency&gt;     &lt;\/dependencies&gt; &lt;\/project&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 Raspberry Pi 3 Model B<\/h2>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430 linux Raspbian \u043d\u0430 SD \u043a\u0430\u0440\u0442\u0435 \u0443\u0436\u0435 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 Java 8 \u043e\u0442 Oracle. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u043e WiFi \u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0430\u0442\u0447\u043a\u043e\u0440\u0434\u043e\u043c \u0438 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u043e ethernet \u0441\u0435\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 RJ-45 \u0440\u0430\u0437\u044c\u0435\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435.<\/p>\n<p>  \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434:  <\/p>\n<pre><code class=\"bash\">wget https:\/\/repo1.maven.org\/maven2\/com\/github\/igor-suhorukov\/groovy-grape-aether\/2.4.5.4\/groovy-grape-aether-2.4.5.4.jar wget https:\/\/raw.githubusercontent.com\/igor-suhorukov\/alarm-system\/master\/AlarmSystem.groovy <\/code><\/pre>\n<p>  \u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:  <\/p>\n<pre><code class=\"bash\">java -Dlogin=...\u0412\u0410\u0428\u0410_\u041f\u041e\u0427\u0422\u0410...@mail.ru @Dpassword=******* -jar groovy-grape-aether-2.4.5.4.jar AlarmSystem.groovy <\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0438 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434:  <\/p>\n<pre><code>def login = ... def password = ... <\/code><\/pre>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u00abGPIO read\u00bb \u0436\u0434\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u0433\u0435\u0440\u043a\u043e\u043d\u0430 \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u00abRaspberryPI Alarm\u00bb \u0441 \u0432\u0435\u0431\u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u2014 \u043d\u0430 \u043f\u0430\u0443\u0437\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0432\u0435\u0431 \u043a\u043e\u043d\u0441\u043e\u043b\u0438&#8230;<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ce6\/4b0\/e3b\/ce64b0e3b2ce4455947f247278b93b47.png\"\/>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0415\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c jconsole \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0412\u0435\u0434\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 jvm \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 hawt.io<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ff8\/6ec\/0db\/ff86ec0db1ff4cfd837126a674363878.png\"\/><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7fa\/0f8\/7cb\/7fa0f87cb1b446419780729c339d165b.png\"\/>  <\/div>\n<\/div>\n<p>  \u042d\u0442\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http:\/\/ \u0410\u0414\u0420\u0415\u0421_\u041c\u0410\u041b\u0418\u041d\u042b :10090\/hawtio\/<\/p>\n<p>  Java \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e maven. \u0418\u043b\u0438 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u0430\u043a \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  java -Dlogin=&#8230;YOUR_EMAIL&#8230;@mail.ru -Dpassword=******* -DscriptPath=https:\/\/raw.githubusercontent.com\/igor-suhorukov\/alarm-system\/master\/src\/main\/java\/com\/github\/igorsuhorukov\/alarmsys\/AlarmSystem.java -jar <a href=\"https:\/\/repo1.maven.org\/maven2\/com\/github\/igor-suhorukov\/java-as-script\/1.0\/java-as-script-1.0.jar\">java-as-script-1.0.jar<\/a><\/p>\n<p>  \u041f\u0440\u043e \u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 java-as-script-1.0.jar \u0438 \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f.<\/p>\n<h2>\u041a\u0430\u043a \u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438?<\/h2>\n<p>  Apache Camel \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0425\u043e\u0442\u044c \u0435\u0433\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 enterprise \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0438 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u00ab\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439\u00bb \u043e\u043d \u0434\u0430\u0441\u0442 \u0444\u043e\u0440\u0443 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u00ab\u0440\u0430\u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435\u00bb \u0435\u0433\u043e \u0438 \u043e\u043d \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Groovy!<\/p>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 github \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/igor-suhorukov\/alarm-system\">alarm-system<\/a> \u0438 \u0437\u0430\u0441\u0432\u0435\u0442\u0438\u043b\u0441\u044f \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Apache Camel \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"http:\/\/camel.apache.org\/articles\">\u00abCamel and the IoT (Internet of Things)\u00bb<\/a>.<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/314898\/\"> https:\/\/habrahabr.ru\/post\/314898\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u043f\u044b\u043b\u0438\u043b\u0430\u0441\u044c \u0437\u0430 \u043c\u0435\u0441\u044f\u0446 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u043f\u043e\u043b\u043a\u0435 Raspberry Pi 3 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c Wi-Fi. \u0420\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041a\u0430\u043a \u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0439 \u0441\u0432\u043e\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0444\u043e\u0442\u043e \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u0438 \u0432\u0435\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430?<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/6da\/4de\/d2d\/6da4ded2d6204916b13b43870a9f5a31.jpg\"\/><\/p>\n<p>  \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0445\u0440\u0430\u043d\u044b \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u043e\u0442 \u043d\u0435\u0437\u0430\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0441 \u0444\u043e\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 smtp. \u0423\u0441\u0442\u0440\u043e\u0438\u043c \u0443 \u0441\u0435\u0431\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u043d\u0430 \u043a\u0443\u0445\u043d\u0435!  <\/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-281026","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281026","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=281026"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281026\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}