{"id":284864,"date":"2017-04-12T16:02:01","date_gmt":"2017-04-12T12:02:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284864"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284864","title":{"rendered":"\u041f\u0435\u0440\u0432\u044b\u0435 \u0448\u0430\u0433\u0438 \u043a Web SCADA-\u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041e\u0436\u0438\u0432\u043b\u044f\u0435\u043c \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e AngularJS"},"content":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0430\u043a\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u043a\u0430\u043a SVG, JavaScript \u0438 \u0442.\u0434.<br \/>  \u041e\u043f\u0438\u0448\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:  <\/p>\n<ul>\n<li>\u041c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u2013 SVG.<\/li>\n<li>\u0412\u0432\u0435\u0440\u0445\u0443 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b.<\/li>\n<li>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. <\/li>\n<li>\u041f\u043e \u043a\u043b\u0438\u043a\u0443 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c.<\/li>\n<\/ul>\n<p>  <a href=\"http:\/\/opc-servers.ru\/program\/108-soloscada\">SCADA-\u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/a> (\u0442\u043e\u0447\u043d\u0435\u0435 \u0435\u0451 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 html-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0430\u0440\u0438\u0441\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0432 <a href=\"https:\/\/habrahabr.ru\/post\/325640\/\">\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435<\/a>, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<a name=\"habracut\"><\/a><br \/>  \u0412\u043e\u0442 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u0430:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/250\/508\/88c\/25050888c2314ad3a9e82ea8428247a3.png\"\/><br \/>  \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0438 \u0442\u043e\u043a \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c <code>P_10_111<\/code> \u0438 <code>I_10_111<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u043a \u043a\u0440\u0430\u0441\u043d\u043e\u043c\u0443 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0443 (\u043e\u043d \u0441\u043f\u0440\u044f\u0442\u0430\u043d \u043f\u043e\u0434 \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a), \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u043a \u0437\u0435\u043b\u0435\u043d\u043e\u043c\u0443.<br \/>  \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0445\u0435\u043c\u0443, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441, \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 <a href=\"http:\/\/127.0.0.1\/\">127.0.0.1<\/a>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/026\/7e8\/cd0\/0267e8cd0234449aa76dfbc3e682bf4c.png\"\/><br \/>  \u041d\u0430\u0436\u043c\u0435\u043c \u0421trl+u \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0443\u0432\u0438\u0434\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u043d\u0435\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043e\u043f\u0443\u0449\u0435\u043d\u044b):  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>&lt;!DOCTYPE html&gt; &lt;html ng-app=&quot;countryApp&quot;&gt; &lt;head&gt;  &lt;meta name=&quot;Content-Type&quot; content=&quot;text\/html; charset=utf-8&quot;&gt;  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=utf-8&quot;&gt;  &lt;title&gt;SoloSCADA \u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b&lt;\/title&gt;  &lt;link rel=&quot;stylesheet&quot; href=&quot;.\/css\/jquery-ui.css&quot;&gt;   &lt;script src=&quot;.\/js\/jquery.js&quot;&gt;&lt;\/script&gt;   &lt;script src=&quot;.\/js\/jquery-ui.js&quot;&gt;&lt;\/script&gt;  &lt;script src=&quot;\/js\/angular.min.js&quot;&gt;&lt;\/script&gt;  &lt;script src=&quot;\/js\/scada.js&quot;&gt;&lt;\/script&gt; &lt;script&gt;   var countryApp = angular.module('countryApp', []);   countryApp.controller('CountryCtrl', function ($scope, $http, $interval){     $http.get('all.json').success(function(data) {       $scope.val = data.val;     }); $interval(function(){     $http.get('all.json').success(function(data) {       $scope.val = data.val; \t    $( &quot;#label_err&quot; ).text( &quot;&quot; );     }).error(function(data, status) { \t    console.error('Error occurred:', data, status); \t    $( &quot;#label_err&quot; ).text( '\u041d\u0435\u0442 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c!' ); \t}); },1000);   });   countryApp.filter('format_off', function(){   return function(text){     if(text.indexOf(&quot;0&quot;)===0){       return &quot;1&quot;;     }     else{       return &quot;0&quot;;     }   }  }); countryApp.filter('format_on', function(){   return function(text){     if(text.indexOf(&quot;1&quot;)===0){       return &quot;1&quot;;     }     else{      return &quot;0&quot;;     }   } });    &lt;\/script&gt; &lt;\/head&gt; &lt;body ng-controller=&quot;CountryCtrl&quot;&gt; &lt;div id=&quot;dialog-confirm&quot; title=&quot;\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435&quot;&gt;  &lt;label id=&quot;label2&quot;&gt;444VG&lt;\/label&gt; &lt;\/div&gt; &lt;p&gt;   &lt;button type=&quot;button&quot; class=&quot;ui-button ui-widget ui-corner-all&quot; onClick=&quot;javascript:window.location='index.html'&quot;&gt;\u0413\u043b\u0430\u0432\u043d\u0430\u044f&lt;\/button&gt;   &lt;button type=&quot;button&quot; class=&quot;ui-button ui-widget ui-corner-all&quot; onClick=&quot;javascript:window.location='ps10.html'&quot;&gt;10 \u043a\u0412&lt;\/button&gt;   &lt;button type=&quot;button&quot; class=&quot;ui-button ui-widget ui-corner-all&quot; onClick=&quot;javascript:window.location='name_3.html'&quot;&gt;\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b&lt;\/button&gt; &lt;label id=&quot;label_err&quot;&gt;&lt;\/label&gt; &lt;\/p&gt; &lt;svg xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot; xmlns:xlink=&quot;http:\/\/www.w3.org\/1999\/xlink&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 930 504&quot; xml:space=&quot;preserve&quot;&gt; &lt;desc&gt;Created with Fabric.js 1.7.3&lt;\/desc&gt; &lt;defs&gt; &lt;\/defs&gt; \t&lt;g transform=&quot;translate(260.61 175.8) matrix(1 0 0 1 0 0) &quot;&gt; \t\t&lt;text font-family=&quot;helvetica&quot; font-size=&quot;20&quot; font-weight=&quot;normal&quot; style=&quot;stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(1,1,1); fill-rule: nonzero; opacity: 1;&quot; &gt; \t\t\t&lt;tspan x=&quot;-50.88&quot; y=&quot;6.3&quot; fill=&quot;rgb(1,1,1)&quot;&gt;\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c:&lt;\/tspan&gt; \t\t&lt;\/text&gt; \t&lt;\/g&gt; \t&lt;g transform=&quot;translate(293.54 208.8) matrix(1 0 0 1 0 0) &quot;&gt; \t\t&lt;text font-family=&quot;helvetica&quot; font-size=&quot;20&quot; font-weight=&quot;normal&quot; style=&quot;stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(1,1,1); fill-rule: nonzero; opacity: 1;&quot; &gt; \t\t\t&lt;tspan x=&quot;-18.04&quot; y=&quot;6.3&quot; fill=&quot;rgb(1,1,1)&quot;&gt;\u0422\u043e\u043a:&lt;\/tspan&gt; \t\t&lt;\/text&gt; \t&lt;\/g&gt;  &lt;rect id=&quot;V_10_111_on&quot; x=&quot;-25&quot; y=&quot;-25&quot; rx=&quot;0&quot; ry=&quot;0&quot; width=&quot;50&quot; height=&quot;50&quot; style=&quot; cursor:pointer; stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,0,0); fill-rule: nonzero; opacity:{{val.V_10_111 | format_on}};&quot; transform=&quot;translate(94.34 185.86) scale(0.94 0.94) matrix(1 0 0 1 0 0) &quot; onclick=&quot;tmcontrol('V_10_111','\u0412-10-111')&quot; title=&quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0412-10-111&quot;\/&gt; \t&lt;g id=&quot;P_10_111&quot; transform=&quot;translate(397.54 177.8) matrix(1 0 0 1 0 0) &quot;&gt; \t\t&lt;text font-family=&quot;helvetica&quot; font-size=&quot;20&quot; font-weight=&quot;normal&quot; style=&quot;stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(1,1,1); fill-rule: nonzero; opacity: 1;&quot; &gt; \t\t\t&lt;tspan x=&quot;-73.04&quot; y=&quot;6.3&quot; fill=&quot;rgb(1,1,1)&quot;&gt;{{val.P_10_111}}&lt;\/tspan&gt; \t\t&lt;\/text&gt; \t&lt;\/g&gt; \t&lt;g id=&quot;I_10_111&quot; transform=&quot;translate(393.65 208.8) matrix(1 0 0 1 0 0) &quot;&gt; \t\t&lt;text font-family=&quot;helvetica&quot; font-size=&quot;20&quot; font-weight=&quot;normal&quot; style=&quot;stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(1,1,1); fill-rule: nonzero; opacity: 1;&quot; &gt; \t\t\t&lt;tspan x=&quot;-69.15&quot; y=&quot;6.3&quot; fill=&quot;rgb(1,1,1)&quot;&gt;{{val.I_10_111}}&lt;\/tspan&gt; \t\t&lt;\/text&gt; \t&lt;\/g&gt; &lt;rect id=&quot;V_10_111_off&quot; x=&quot;-25&quot; y=&quot;-25&quot; rx=&quot;0&quot; ry=&quot;0&quot; width=&quot;50&quot; height=&quot;50&quot; style=&quot; cursor:pointer; stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,191,95); fill-rule: nonzero; opacity:{{val.V_10_111 | format_off}};&quot; transform=&quot;translate(94.28 185.78) scale(0.94 0.94) matrix(1 0 0 1 0 0) &quot; onclick=&quot;tmcontrol('V_10_111','\u0412-10-111')&quot; title=&quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0412-10-111&quot;\/&gt; &lt;\/svg&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:  <\/p>\n<pre><code>&lt;script src=&quot;.\/js\/jquery.js&quot;&gt;&lt;\/script&gt; <\/code><\/pre>\n<p> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c jquery  <\/p>\n<pre><code>&lt;script src=&quot;.\/js\/jquery-ui.js&quot;&gt;&lt;\/script&gt;<\/code><\/pre>\n<p> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c jquery-ui \u0434\u043b\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\/\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c  <\/p>\n<pre><code>&lt;script src=&quot;\/js\/angular.min.js&quot;&gt;&lt;\/script&gt;<\/code><\/pre>\n<p> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c angularjs  <\/p>\n<pre><code>&lt;script src=&quot;\/js\/scada.js&quot;&gt;&lt;\/script&gt; <\/code><\/pre>\n<p>\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<br \/>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u0440\u0435\u043c \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 all.json, \u0435\u0433\u043e \u043c\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<\/p>\n<pre><code class=\"javascript\"> $interval(function(){  },1000);<\/code><\/pre>\n<p>. \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b all.json \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043a\u043e\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">$http.get('all.json').success(function(data) {       $scope.val = data.val; \t    $( &quot;#label_err&quot; ).text( &quot;&quot; );     }). <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0432\u0432\u0435\u0440\u0445\u0443 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435<b> \u041d\u0435\u0442 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c!<\/b> \u043d\u0430 <code>label_err<\/code>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u044d\u0442\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">.error(function(data, status) { \t    console.error('Error occurred:', data, status); \t    $( &quot;#label_err&quot; ).text( '\u041d\u0435\u0442 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c!' ); \t});<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  Json-\u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430  <\/p>\n<pre><code>{     &quot;val&quot;:{         &quot;V_10_111&quot;: &quot;0&quot;,         &quot;I_10_111&quot;: &quot;55.88&quot;,         &quot;P_10_111&quot;: &quot;9.11&quot;         } }<\/code><\/pre>\n<p>  SVG-\u0444\u0430\u0439\u043b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b   <\/p>\n<pre><code>&lt;svg xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot; xmlns:xlink=&quot;http:\/\/www.w3.org\/1999\/xlink&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 930 504&quot; xml:space=&quot;preserve&quot;&gt; &lt;\/svg&gt;<\/code><\/pre>\n<p>  \u0412 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 I_10_111 \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043f\u043e\u0439\u043b\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">\t&lt;g id=&quot;I_10_111&quot; transform=&quot;translate(393.65 208.8) matrix(1 0 0 1 0 0) &quot;&gt; \t\t&lt;text font-family=&quot;helvetica&quot; font-size=&quot;20&quot; font-weight=&quot;normal&quot; style=&quot;stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(1,1,1); fill-rule: nonzero; opacity: 1;&quot; &gt; \t\t\t&lt;tspan x=&quot;-69.15&quot; y=&quot;6.3&quot; fill=&quot;rgb(1,1,1)&quot;&gt;{{val.I_10_111}}&lt;\/tspan&gt; \t\t&lt;\/text&gt; \t&lt;\/g&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c <code>{{val.I_10_111}}.<\/code> Angularjs \u0441\u0430\u043c \u0438\u0449\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0445 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 I_10_111.<br \/>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>&lt;rect id=&quot;V_10_111_on&quot; x=&quot;-25&quot; y=&quot;-25&quot; rx=&quot;0&quot; ry=&quot;0&quot; width=&quot;50&quot; height=&quot;50&quot; style=&quot; cursor:pointer; stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,0,0); fill-rule: nonzero; opacity:{{val.V_10_111 | format_on}};&quot; transform=&quot;translate(94.34 185.86) scale(0.94 0.94) matrix(1 0 0 1 0 0) &quot; onclick=&quot;tmcontrol('V_10_111','\u0412-10-111')&quot; title=&quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0412-10-111&quot;\/&gt;<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 V_10_111 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c format_on. \u041a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 1, \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0432\u0438\u0434\u0435\u043d (opacity: 1). \u041a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 0, \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u043d\u0435\u0432\u0438\u0434\u0435\u043d (opacity: 0). \u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e (\u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u0430\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 Json-\u0444\u0430\u0439\u043b\u0435 \u00abV_10_111\u00bb: &quot;??&quot;) \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 format_on \u0434\u0430\u0451\u0442 0, \u0442.\u0435. \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u043d\u0435\u0432\u0438\u0434\u0435\u043d.<br \/>  \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0437\u0435\u043b\u0435\u043d\u044b\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">&lt;rect id=&quot;V_10_111_off&quot; x=&quot;-25&quot; y=&quot;-25&quot; rx=&quot;0&quot; ry=&quot;0&quot; width=&quot;50&quot; height=&quot;50&quot; style=&quot; cursor:pointer; stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,191,95); fill-rule: nonzero; opacity:{{val.V_10_111 | format_off}};&quot; transform=&quot;translate(94.28 185.78) scale(0.94 0.94) matrix(1 0 0 1 0 0) &quot; onclick=&quot;tmcontrol('V_10_111','\u0412-10-111')&quot; title=&quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0412-10-111&quot;\/&gt;<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e opacity \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>V_10_111<\/code> \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c <code>format_off<\/code>. \u041a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0432\u043d\u043e 0, \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0432\u0438\u0434\u0435\u043d (<code>opacity: 1<\/code>). \u041a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 1, \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u043d\u0435\u0432\u0438\u0434\u0435\u043d (<code>opacity: 0<\/code>).<br \/>  \u041f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043c\u044b\u0448\u043a\u043e\u0439 \u043d\u0430 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442 <code>tmcontrol('V_10_111','\u0412-10-111')<\/code>. \u041e\u043d \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 scada.js.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">tmcontrol<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">function tmcontrol(perem,rusname) { elem = perem; $( &quot;#label2&quot; ).text( rusname ); dialog.dialog( &quot;open&quot; ); }; <\/code><\/pre>\n<p>  <code>$( &quot;#label2&quot; ).text( rusname );<\/code> \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u043c\u0435\u0442\u043a\u0430 \u043d\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430.<br \/>  <code>dialog.dialog( &quot;open&quot; );<\/code> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e.  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">$( function() {    dialog =  $( &quot;#dialog-confirm&quot; ).dialog({       autoOpen: false,       resizable: false,       height: &quot;auto&quot;,       width: 400,       modal: true,       buttons: {         &quot;\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c&quot;: function() {           $.post(&quot;control.php&quot;, elem+'&1');           $( this ).dialog( &quot;close&quot; );         },         &quot;\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c&quot;: function() {           $.post(&quot;control.php&quot;, elem+'&0');           $( this ).dialog( &quot;close&quot; );         },         &quot;\u041e\u0442\u043c\u0435\u043d\u0430&quot;: function() {           $( this ).dialog( &quot;close&quot; );         }       }     });     $( &quot;#create-user&quot; ).button().on( &quot;click&quot;, function() {       dialog.dialog( &quot;open&quot; );     });   } ); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u043e\u043a\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 jquery-ui. \u041a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u043c post  <\/p>\n<pre><code class=\"javascript\">$.post(&quot;control.php&quot;, elem+'&1');<\/code><\/pre>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c <\/p>\n<pre><code class=\"javascript\">$.post(&quot;control.php&quot;, elem+'&0');<\/code><\/pre>\n<p>  \u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 html-\u0444\u0430\u0439\u043b\u0435   <\/p>\n<pre><code>&lt;div id=&quot;dialog-confirm&quot; title=&quot;\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435&quot;&gt;  &lt;label id=&quot;label2&quot;&gt; &lt;\/label&gt; &lt;\/div&gt;<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445!<br \/>  Firefox<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/dac\/1e9\/b07\/dac1e9b07e234138b40118cb330b8766.png\"\/><br \/>  \u0418 \u0442\u0430\u043a<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ef0\/029\/dff\/ef0029dff7b54decac2d9a0b0529634d.png\"\/><br \/>  SVG \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.<br \/>  Opera:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5d7\/18c\/5f7\/5d718c5f75a5483997797634230e81b8.png\"\/><br \/>  Internet explorer \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u043d\u0451\u0441 \u0441\u044e\u0440\u043f\u0440\u0438\u0437.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/233\/ec1\/f2e\/233ec1f2e6a54c87b16c1f97de8cdd10.png\"\/><br \/>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f.<br \/>  \u0427\u0442\u043e\u0431\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0449\u0443\u043f\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/opc-servers.ru\/program\/108-soloscada\">SCADA-\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451, \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c html-\u0444\u0430\u0439\u043b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0442\u043e\u0440\u0435. \u0421\u0430\u043c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 web_main.<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\/326330\/\"> https:\/\/habrahabr.ru\/post\/326330\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0430\u043a\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u043a\u0430\u043a SVG, JavaScript \u0438 \u0442.\u0434.<br \/>  \u041e\u043f\u0438\u0448\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:  <\/p>\n<ul>\n<li>\u041c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u2013 SVG.<\/li>\n<li>\u0412\u0432\u0435\u0440\u0445\u0443 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043d\u0435\u043c\u043e\u0441\u0445\u0435\u043c\u044b.<\/li>\n<li>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. <\/li>\n<li>\u041f\u043e \u043a\u043b\u0438\u043a\u0443 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c.<\/li>\n<\/ul>\n<p>  <a href=\"http:\/\/opc-servers.ru\/program\/108-soloscada\">SCADA-\u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/a> (\u0442\u043e\u0447\u043d\u0435\u0435 \u0435\u0451 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 html-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0430\u0440\u0438\u0441\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0432 <a href=\"https:\/\/habrahabr.ru\/post\/325640\/\">\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435<\/a>, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\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-284864","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284864","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=284864"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284864\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}