{"id":278013,"date":"2016-04-11T12:30:02","date_gmt":"2016-04-11T08:30:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=278013"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=278013","title":{"rendered":"\u041d\u0435 IoT, \u0430 \u043c\u0430\u043b\u0438\u043d\u0430! \u0421\u0442\u0440\u043e\u0438\u043c IoT-\u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Raspberry Pi \u0441 Windows 10 \u0438 DeviceHive"},"content":{"rendered":"<p>       \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. <\/p>\n<p>  \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c IoT-\u043f\u0440\u043e\u0435\u043a\u0442\u0435. Internet of Things \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0432\u0435\u0437\u0434\u0435\u0441\u0443\u0449 \u0438 \u043c\u043d\u043e\u0433\u0438\u043c \u0438\u0437 \u043d\u0430\u0441 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0438\u043b\u044b. \u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0438 \u0437\u0430 \u0447\u0442\u043e \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 IoT-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 Raspberry Pi 2, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Windows 10 IoT Core \u0438 DeviceHive.<\/p>\n<h2><font color=\"DodgerBlue\">\u0414\u0435\u043f\u043b\u043e\u0438\u043c Windows 10 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Raspberry Pi 2<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c <b>Windows 10 IoT Core<\/b> \u043d\u0430 Raspberry Pi. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <b>Windows 10 IoT Core Dashboard<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"http:\/\/ms-iot.github.io\/content\/en-US\/Downloads.htm\">\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c<\/a>. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e ISO-\u043e\u0431\u0440\u0430\u0437, \u043d\u043e \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u0432\u0430\u0441.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 misroSD-\u0444\u043b\u0435\u0448\u043a\u0443. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2f7\/91c\/141\/2f791c1419164761868efa1c0d26918b.jpg\" \/><\/div>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u043b\u0435\u0448\u043a\u0443 \u043a Raspberry \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c. \u041f\u0435\u0440\u0432\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u041e\u0421 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u043d\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u043e\u0436\u0438\u0432\u0435\u0442\u00bb \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c Raspberry \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043f\u043e Ethernet. \u0421\u043d\u043e\u0432\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c <b>Windows 10 IoT Core Dashboard <\/b>\u0438 \u0432\u0438\u0434\u0438\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u00ab\u041c\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u00bb \u0437\u0430\u0432\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443. \u041a \u0441\u043b\u043e\u0432\u0443, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u2013 \u0441\u043f\u0438\u0441\u043e\u043a WiFi-\u0434\u043e\u043d\u0433\u043b\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 Windows 10 IoT Core, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <a href=\"http:\/\/ms-iot.github.io\/content\/en-US\/win10\/SupportedInterfaces.htm\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f Visual Studio 2015. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0443 \u0432\u0430\u0441 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 (\u0445\u043e\u0442\u044f \u0432\u044b \u0431\u044b \u0432\u0440\u044f\u0434 \u043b\u0438 \u0447\u0438\u0442\u0430\u043b\u0438 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435), \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.visualstudio.com\/ru-ru\/downloads\/download-visual-studio-vs.aspx\">\u0441\u043a\u0430\u0447\u0430\u0442\u044c<\/a> Community Edition.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0438\u043b\u0438 \u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 <b>Windows Universal<\/b> \u043f\u0440\u043e\u0435\u043a\u0442. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d UI, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c Headless Application, \u0432\u044b\u0431\u0440\u0430\u0432 \u0442\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>Windows IoT Core Background Application<\/b>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b1d\/e04\/3b5\/b1de043b5b904cbfad9fc139996a33b1.jpg\" \/><\/div>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0435\u043f\u043b\u043e\u0439 \u043d\u0430 Remote Machine.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/049\/b09\/688\/049b0968875b4aa799d0e000a2b7121e.jpg\" \/><\/div>\n<p>  \u0412\u0432\u043e\u0434\u0438\u043c \u0430\u0434\u0440\u0435\u0441 Raspberry. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 <b>Win10 IoT Core<\/b> \u0438\u043b\u0438 \u0432 <b>Windows 10 IoT Core Dashboard<\/b>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/1c7\/0bb\/f4e\/1c70bbf4ec224669851a7a83a4ef08cf.jpg\" \/><\/div>\n<h2><font color=\"DodgerBlue\">\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, Internet of Things<\/font><\/h2>\n<p>  \u0420\u0430\u0437 \u0443\u0436 \u0443 \u043d\u0430\u0441 \u0441\u0442\u0430\u0442\u044c\u044f \u043e embedded \u2014 \u00ab\u043c\u043e\u0440\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438\u00bb \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0425\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 DeviceHive, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0432\u0441\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u0442\u043e\u0436\u0435 \u043d\u0430 .NET. <\/p>\n<p>  \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c master-\u0432\u0435\u0442\u043a\u0443 <a href=\"https:\/\/github.com\/devicehive\/devicehive-.net\/tree\/master\">DeviceHive.NET \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/a> \u0441 GitHub. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f Win10 IoT \u0431\u044b\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c.<\/p>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c solution <b>DeviceHive.Device <\/b>\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435<b> Program.cs <\/b>\u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>VirtualLed <\/b>\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435 DeviceHive.<\/p>\n<pre><code>using (var service = new RestfulDeviceService(&quot;http:\/\/playground.devicehive.com\/api\/rest&quot;)) {     \/\/ create a DeviceHive network where our device will reside     var network = new Network(&quot;Network WPNBEP&quot;, &quot;Playground Network&quot;, &quot;%NETWORK_KEY%&quot;);      \/\/... } <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0435\u0441\u044c IoT, \u043d\u043e \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435\u043c\u044b\u0441\u043b\u0438\u043c\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0435\u0449\u0435 \u043d\u0435 \u043e\u0431\u0437\u0430\u0432\u0435\u043b\u0438\u0441\u044c <b>DeviceHive Playground<\/b> \u2013 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <a href=\"http:\/\/playground.devicehive.com\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/109\/459\/ee8\/109459ee851f4b06af3797d61085b55b.jpg\" \/><\/div>\n<p>  \u0410 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448\u0438\u043c \u00ab\u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c\u00bb \u0431\u0443\u0434\u0435\u0442\u2026 \u041d\u0435\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 Raspberry, \u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <b>VirtualLedClient <\/b>\u0441\u043e\u043b\u044e\u0448\u0435\u043d\u0430 <b>DeviceHive.Client<\/b>. \u0415\u0433\u043e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <b>Program.cs<\/b>:<\/p>\n<pre><code>var connectionInfo = new DeviceHiveConnectionInfo(&quot;http:\/\/playground.devicehive.com\/api\/rest&quot;, &quot;%ACCESS_KEY%&quot;); <\/code><\/pre>\n<h2><font color=\"DodgerBlue\">\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435<\/font><\/h2>\n<p>  \u041d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Raspberry Pi \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043d\u043e\u043f\u043e\u0447\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u043e\u0439 \u0432\u0441\u0435\u0445 IoT-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430\u0448\u0435\u0439 DeviceHive-\u0441\u0435\u0442\u0438. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043e \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u00ab\u043a\u043d\u043e\u043f\u043e\u0447\u043a\u0438\u00bb \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e <a href=\"http:\/\/cs629422.vk.me\/v629422762\/34b1a\/HQQUyXxiQoM.jpg\">\u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/a>, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e<a href=\"http:\/\/cs629422.vk.me\/v629422762\/34b22\/REe484OhsUs.jpg\"> \u0440\u043e\u0431\u043e\u0442\u043e\u043c \u0442\u0435\u043b\u0435\u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f<\/a>.<\/p>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0432 solution <b>DeviceHive.WindowsManager.Universal<\/b>. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u0433\u0430\u0439\u0434\u043b\u0430\u0439\u043d\u043e\u0432 Win10 \u2013 \u043a\u043e\u0440\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0442\u0443\u0442 \u0435\u0449\u0435 \u0438\u0437 Win8. \u041d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0443\u0442 \u0438 MVVM \u2013 \u0432\u0441\u0435 \u0438 \u0442\u0430\u043a \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c: \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a <b>DeviceHive<\/b>, \u043f\u043e\u0434 <b>Windows 10 <\/b>\u043d\u0430 <b>Raspberry Pi2<\/b>. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/be7\/47b\/f9e\/be747bf9e3d94e80a2b50921f89bcfc7.jpg\" \/><\/div>\n<p>  \u0414\u043b\u044f DeviceHive \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u0440\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:  <\/p>\n<ul>\n<li>DeviceHive.Client \u2013 \u0434\u043b\u044f \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e\u00bb .NET 4.5 \u0438 \u0432\u044b\u0448\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 WebSocket4Net.<\/li>\n<li>DeviceHive.Client.Portable \u2013 \u0434\u043b\u044f Windows 8.1 \u0438 Windows Phone 8.1. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 WebSockets.<\/li>\n<li>DeviceHive.Client.Universal \u2013 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0439 Windows 10, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f Win10 IoT Core. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c <i>ClientService <\/i>\u043e\u0442 <i>DeviceHiveClient <\/i>\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0441\u0435\u0442\u0442\u0438\u043d\u0433\u0430\u043c\u0438:<\/p>\n<pre><code>DeviceHiveConnectionInfo connInfo; if (!String.IsNullOrEmpty(Settings.Instance.CloudAccessKey)) {     connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudAccessKey); } else {     connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudUsername, Settings.Instance.CloudPassword); } current = new ClientService(connInfo, new RestClient(connInfo)); <\/code><\/pre>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <i>LongPolling<\/i>, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e <i>WebSocket<\/i>, \u0434\u0430\u0431\u044b \u043d\u0435 \u0443\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u0438\u043c\u0438\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<pre><code>SetAvailableChannels(new Channel[] {     new WebSocketChannel(connectionInfo, restClient) }); <\/code><\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/eae\/bca\/78e\/eaebca78e3e74a28b9bf8ea4399f3e02.jpg\" \/><\/div>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u043f\u043e \u0441\u0435\u0442\u044f\u043c \u0432 <i>MainPage<\/i>:<\/p>\n<pre><code>var deviceList = await ClientService.Current.GetDevicesAsync(); var networkList = (await ClientService.Current.GetNetworksAsync()).FindAll(n =&gt; n.Id != null); foreach (Network network in networkList) {     var devices = deviceList.FindAll(d =&gt; d.Network?.Id == network.Id);     if (devices.Count &gt; 0)     {         networkWithDevicesList.Add(new NetworkViewModel(network) { Devices = devices });     } } <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 \u043d\u0430\u0448 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/06f\/505\/880\/06f505880b144eccbca5a191fa6634d7.jpg\" \/><\/div>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 <i>DevicePage<\/i>, \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0435\u043c:<\/p>\n<pre><code>Device = await ClientService.Current.GetDeviceAsync(deviceId); <\/code><\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/27a\/c35\/961\/27ac3596198c415f969cc26ea9af3fb8.jpg\" \/><\/div>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0441 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2013 \u043e\u0442 <b>VirtualLedClient<\/b> \u043a <b>VirtualLed<\/b>. <br \/>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u00ab\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u00bb \u0441\u043a\u0440\u043e\u043b\u043b\u043e\u043c:<\/p>\n<pre><code>NotificationFilter filter = new NotificationFilter() {     End = filterNotificationsEnd,     Start = filterNotificationsStart,     SortOrder = SortOrder.DESC }; var list = new IncrementalLoadingCollection&lt;Notification&gt;(async (take, skip) =&gt; {     filter.Skip = (int)skip;     filter.Take = (int)take;     return await ClientService.Current.GetNotificationsAsync(deviceId, filter); }, 20); <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0434\u0430\u0442\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431\u0441\u043e\u043a\u0435\u0442:<\/p>\n<pre><code>notificationsSubscription = await ClientService.Current.AddNotificationSubscriptionAsync(new[] { deviceId }, null, async (notificationReceived) =&gt; {     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =&gt;     {         lock (NotificationsObservable)         {             if (!NotificationsObservable.Any(c =&gt; c.Id == notificationReceived.Notification.Id))             {                 NotificationsObservable.Insert(0, notificationReceived.Notification);             }         }     }); }); <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u0448 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0435\u0433\u043e \u043d\u043e\u0432\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0442\u0443\u0442 \u0436\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ac3\/ec8\/c00\/ac3ec8c000c744548bbe2dbf80b63f4f.jpg\" \/><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u0442\u043e \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3fd\/161\/044\/3fd16104460e4e2fae570ddd32e7900a.jpg\" \/><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u043c\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<pre><code>CommandFilter filter = new CommandFilter() {     End = filterCommandsEnd,     Start = filterCommandsStart,     SortOrder = SortOrder.DESC }; var list = new IncrementalLoadingCollection&lt;Command&gt;(async (take, skip) =&gt; {     filter.Skip = (int)skip;     filter.Take = (int)take;     return await ClientService.Current.GetCommandsAsync(deviceId, filter); }, 20); <\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>commandsSubscription = await ClientService.Current.AddCommandSubscriptionAsync(new[] { deviceId }, null, async (commandReceived) =&gt; {     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =&gt;     {         lock (CommandsObservable)         {             if (!CommandsObservable.Any(c =&gt; c.Id == commandReceived.Command.Id))             {                 CommandsObservable.Insert(0, commandReceived.Command);             }         }     }); }); <\/code><\/pre>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/82c\/e5a\/03e\/82ce5a03eaa14fb49aa05605b8c20d04.jpg\" \/><\/div>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043d\u043e \u0438 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 DeviceHive \u0441\u0435\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code>var parameters = commandParams.Text != &quot;&quot; ? JObject.Parse(commandParams.Text) : null; var command = new Command(commandName.Text, parameters); await ClientService.Current.SendCommandAsync(deviceId, command, CommandResultCallback); <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c CommandResultCallback. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>foreach (Command cmd in CommandsObservable) {     if (command.Id == command.Id)     {         \/\/ Command class doesn't implement INotifyPropertyChanded to update its result,         \/\/ so old command is replaced by command with result:         var index = commandsObservable.IndexOf(cmd);         commandsObservable.RemoveAt(index);         commandsObservable.Insert(index, command);         break;     } } <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fa7\/9bc\/81c\/fa79bc81c03740f296942882d94f3e78.jpg\"\/><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434. \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c, \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u2013 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/87e\/d0b\/988\/87ed0b98899e42a58573e3e4630529aa.jpg\"\/><\/p>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430! \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, <b>Raspberry Pi 2<\/b> c <b>Windows 10 IoT Core <\/b>\u0438 <b>DeviceHive <\/b>\u2013 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Internet of Things. \u041f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u043f\u0430\u0440\u0443 \u043a\u043d\u043e\u043f\u043e\u043a, dashboard \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 <b>Raspberry Pi<\/b> \u043a \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u0443 \u0432 \u0433\u043e\u0441\u0442\u0438\u043d\u043e\u0439 \u2013 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u043c\u043d\u044b\u043c \u0434\u043e\u043c\u043e\u043c \u0433\u043e\u0442\u043e\u0432\u043e. \u041a\u0443\u043f\u0438\u043b\u0438 \u043b\u0438\u0448\u043d\u0438\u0445 Raspberry? \u041d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 DeviceHive.Client \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043d\u043e \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c Headless Application, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u0438\/\u0440\u0435\u043b\u0435 \u0438<a href=\"http:\/\/cs629423.vk.me\/v629423762\/328b9\/XptewPZEfc8.jpg\"> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Raspberry Pi \u043f\u043e \u0434\u043e\u043c\u0443<\/a>. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0441 \u043b\u0438\u0448\u044c \u0432\u0430\u0448\u0430 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u044f.<\/p>\n<h2><font color=\"DodgerBlue\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 Windows 10 IoT Core \u2013 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0435\u0433\u043e \u0436\u0434\u0430\u043b\u0438 embedded-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u041a\u043e\u0433\u0434\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043d\u0430 .NET Micro Framework (\u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u0442\u043e\u0436\u0435 <a href=\"https:\/\/github.com\/devicehive\/devicehive-.net-mf\">\u0435\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f DeviceHive<\/a>) \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043d\u0430 Windows \u2013 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c \u0438\u0437 \u043f\u0443\u0448\u043a\u0438 \u043f\u043e \u0432\u043e\u0440\u043e\u0431\u044c\u044f\u043c, \u0442\u043e Windows 10 IoT Core \u2013 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u0435. \u0418 \u043f\u0443\u0441\u0442\u044c \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u2013 \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0412\u0435\u0434\u044c \u0435\u0449\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0447\u0442\u0430\u043b\u0438, \u0447\u0442\u043e\u0431\u044b Windows-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0445 \u041f\u041a \u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445, \u043d\u043e \u0438 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u2013 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u00ab\u0441\u0435\u0433\u043e\u0434\u043d\u044f\u00bb.<\/p>\n<hr\/>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d4d\/b62\/6b1\/d4db626b10e04b3db5989d4bca9c3508.png\" align=\"left\"\/>  <\/p>\n<h3>\u041e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435<\/h3>\n<p>  <em>\u0410\u043d\u0442\u043e\u043d \u0421\u0435\u0434\u044b\u0448\u0435\u0432 \u2014 Senior .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u00abDataArt \u00bb<\/p>\n<p>  \u0412 IT \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0434\u0430\u043b\u0435\u043a\u043e\u0433\u043e 2003, \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 DataArt \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0441\u044f \u0432 2012. \u0420\u0430\u043d\u0435\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0432\u0435\u0431- \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0446\u0438\u0435\u0439 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u0430\u0445 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0430 Microsoft-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 DataArt. \u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows Phone \u0438 Windows 10, \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c DeviceHive \u0438 embedded-\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0432\u043e\u043e\u0431\u0449\u0435. \u0412 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c OpenSource embedded-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 .NET Micro Framework \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0438 BMW.<\/em>               <\/p>\n<div class=\"clear\"><\/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=\"https:\/\/habrahabr.ru\/post\/280294\/\"> https:\/\/habrahabr.ru\/post\/280294\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. <\/p>\n<p>  \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c IoT-\u043f\u0440\u043e\u0435\u043a\u0442\u0435. Internet of Things \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0432\u0435\u0437\u0434\u0435\u0441\u0443\u0449 \u0438 \u043c\u043d\u043e\u0433\u0438\u043c \u0438\u0437 \u043d\u0430\u0441 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0438\u043b\u044b. \u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0438 \u0437\u0430 \u0447\u0442\u043e \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 IoT-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 Raspberry Pi 2, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Windows 10 IoT Core \u0438 DeviceHive.<\/p>\n<h2><font color=\"DodgerBlue\">\u0414\u0435\u043f\u043b\u043e\u0438\u043c Windows 10 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Raspberry Pi 2<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c <b>Windows 10 IoT Core<\/b> \u043d\u0430 Raspberry Pi. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <b>Windows 10 IoT Core Dashboard<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"http:\/\/ms-iot.github.io\/content\/en-US\/Downloads.htm\">\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c<\/a>. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e ISO-\u043e\u0431\u0440\u0430\u0437, \u043d\u043e \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u0432\u0430\u0441.  <\/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-278013","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/278013","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=278013"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/278013\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=278013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=278013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=278013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}