• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    1. Home
    2. tungthanh500

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website
    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 14
    • Posts 33
    • Best 1
    • Controversial 0
    • Groups 0

    tungthanh500

    @tungthanh500

    1
    Reputation
    162
    Profile views
    33
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tungthanh500 Unfollow Follow

    Best posts made by tungthanh500

    • Device disconnect and data logging

      Hi all,
      I'm building a Mango website to monitor some power meter via Ethenet. Below is my data point logging setting.
      0_1586186844940_41f2adfa-0b02-4144-94cd-3c875b94b3bf-image.png

      Today, my server disconnect or the meter disconnect, the server keeps logging last data value (see photo below)

      0_1586187008229_45e98c85-7016-4db9-ab9e-bbb05aac62a9-image.png
      From 3PM to 9PM, the server is disconnected so I expect the value should be 0.

      Is there are any setting so I can make sure the logging value is 0 if server/power meter disconnected, therefore I or anyone can realize the abnormal and check the server/meter?

      Thank you.

      posted in User help
      T
      tungthanh500

    Latest posts made by tungthanh500

    • RE: ma-now update interval and ma-svg rotating

      @MattFox Thank you Matt. It works well. I don't know about using '+currentArea+' instead of {{currentArea}}. Where can I read more about this?

      posted in Dashboard Designer & Custom AngularJS Pages
      T
      tungthanh500
    • RE: ma-now update interval and ma-svg rotating

      Hi @MattFox , thank you for your suggestion. I made some changes and follow your suggestion. Below is the result:
      custom.js file to rotate within a list of texts:

      define(['angular', 'require'], function(angular, require) {
          'use strict';
      
          var userModule = angular.module('userModule', ['maUiApp']);
      
          userModule.controller('mainCtrl',['$scope','maPoint',function($scope,Point)
          {
              $scope.currentArea;
      
          }]);
          
          userModule.directive('rotateText', ['$interval', 
                function($interval) {
                  
                  return {
                      require: 'ngModel',
                      link: function($scope, $elem, $attr, ngModelCtrl) {
                          var areaToRotate = ["Swimming Pool", "Gym", "Coffee Area"];
                          var lengthOfArea = areaToRotate.length;
                          var randomIndex = Math.floor(Math.random() * (lengthOfArea));
                          var beginInterval = $interval(function() {
                              ngModelCtrl.$setViewValue(areaToRotate[randomIndex]);
                              randomIndex = Math.floor(Math.random() * (lengthOfArea));
                          },5000);
                      }
                  }
                }]);
      
          return userModule;
      
      }); // define
      
      

      Markup:

      <div class="main" id="home" style="width: 3840px ; height: 2160px;" ma-center="false"  ng-controller="mainCtrl" ng-model="currentArea" rotate-text ng-init="currentArea = 'Coffee Area'">
              <br>
              <!--Card-->
              <div>
                  
                  <div class="main__title">
                      <img class="main__title-logo" flex="10" src="/rest/latest/file-stores/public/suncasadashboards/img/logo.png">
                      <h1 style="text-align: center;" md-colors="::{color: 'primary'}"><b flex="80">OVERVIEW OF SUNCASA CLUBHOUSE</b></h1>
                      <h2 flex="10"></h2>
                  </div>
                  <div layout="column">
                      <div flex="" layout="row" layout-align="space-around start">
                          <div layout="column" flex="33">
                              <md-card style="height:800px">
                                  <md-card-header>
                                      <p md-colors="::{color: 'accent'}">{{currentArea}}</p>
                                  </md-card-header>
                                  <md-card-content>
                                      <div><img src="/rest/latest/file-stores/public/suncasadashboards/img/gym.jpg" style="width:100%; height: 700px"></div>
                                  </md-card-content>
                              </md-card>
                          </div>
      <!--                    <ma-point-query query="'eq(deviceName,{{currentArea}})'" sort="xid" realtime="true" latest="1" points="pointX" promise="promise"></ma-point-query> -->
                          **<ma-point-query query="{deviceName:currentArea}" sort="xid" points="pointX" promise="promise"></ma-point-query>**
                          <div layout="column" flex="33">
                              <md-card style="height:800px">
                                  <md-card-header>
                                      <p md-colors="::{color: 'accent'}">INFORMATION </p>
                                  </md-card-header>
                                  <md-card-content>
                                      
                                      <table class="main__contenttable" style="height:700px">
                                          <colgroup>
                                              <col width="40%">
                                              <col width="60%">
                                          </colgroup>
                                          <tbody>
                                              <tr>
                                                  <td><b>Parameter</b></td>
                                                  <td><b>Value</b></td>
                                              </tr>
                                              <tr ng-repeat="value in pointX track by $index">
                                                  <td>
                                                      {{value.name}}
                                                      <ma-get-point-value point-xid="DP_Thres_{{value.name}}" point="thres"></ma-get-point-value>
                                                  </td>
                                                  <td ng-class="{alarm: value.value > thres.value}">
                                                      <ma-point-value point="value"></ma-point-value>
                                                  </td>
                                              </tr>
                                          </tbody>
                                      </table>
                                  </md-card-content>
                              </md-card>
                          </div>
                      </div>
                  </div>
              </div>
          </div>
      

      I need some help with query. With the ma-point-query in bold, I can get the parameters and value into a table but they are more than I need. I want to query to get data point with tags priority = high but I don't know correct way to get it into query. Any suggestion?
      e8b83964-8935-4b9a-8b43-12ef50514dc3-image.png
      data point with tags priority = high
      I already try

      "query="{deviceName:currentArea, tags.priority:high}"
      or
      query="{deviceName:currentArea, tags:priority=high}"
      

      but it doesn't work (return blank page or nothing change).
      I also try
      query="'eq(deviceName,{{currentArea}})'"
      but return nothing.

      posted in Dashboard Designer & Custom AngularJS Pages
      T
      tungthanh500
    • RE: ma-now update interval and ma-svg rotating

      Hi @MattFox
      I just follow the sample code:
      1/ For the first question:

      <ma-watch-list-get ng-model="designer.watchList" parameters="designer.parameters" on-points-change="designer.points = $points" id="f9166bb2-321b-4245-b985-ec317a9eb138" watch-list-xid="WL_7e0d4b41-9469-454a-8d7b-99b7b9bc3487"></ma-watch-list-get>
      <div class="ma-designer-root" id="5789b450-f8fc-4d2e-9852-09fd08b1ad9b" style="width: 1920px; height: 1080px; position: relative;" ma-scale-to="ma-ui-page-view" ma-center="true" ma-maintain-ratio="letterbox">
      
      <!-- The following ma-svg code is how the mouse enter and mouse leave actions apply the styples to the groups inside the SVG. There are two paramaters in our watchList (fc & dn)  This section: ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 003'}" sets those paramaters to specific values on mouse click.  -->
          <ma-svg id="3b39a9d3-03e3-4927-b016-a8a348f8e156" ng-include="'/rest/v2/file-stores/default/floorplans/02 Piso 0.svg'" style="position: absolute; width: 1590.94px; height: 1073.95px; left: 0px; top: 0px;">
              <div ma-selector="#FC002" ng-style="styleFC002" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 002'}" ng-mouseenter="styleFC002 = {'opacity': 0.5}" ng-mouseleave="styleFC002 = {}"></div>
              <div ma-selector="#FC001" ng-style="styleFC001" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 001'}" ng-mouseenter="styleFC001 = {'opacity': 0.5}" ng-mouseleave="styleFC001 = {}"></div>
              <div ma-selector="#FC003" ng-style="styleFC003" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 003'}" ng-mouseenter="styleFC003 = {'opacity': 0.5}" ng-mouseleave="styleFC003 = {}"></div>
              <div ma-selector="#FC004-5-7" ng-style="styleFC004" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 004, 005 y 007'}" ng-mouseenter="styleFC004 = {'opacity': 0.5}" ng-mouseleave="styleFC004 = {}"></div>
              <div ma-selector="#FC006" ng-style="styleFC006" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 006'}" ng-mouseenter="styleFC006 = {'opacity': 0.5}" ng-mouseleave="styleFC006 = {}"></div>
              <div ma-selector="#FC008" ng-style="styleFC008" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 008'}" ng-mouseenter="styleFC008 = {'opacity': 0.5}" ng-mouseleave="styleFC008 = {}"></div>
              <div ma-selector="#FC009" ng-style="styleFC009" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 009'}" ng-mouseenter="styleFC009 = {'opacity': 0.5}" ng-mouseleave="styleFC009 = {}"></div>
          </ma-svg>
      
      <!--This md-car is a whole widget to display the paramates for the zone.  It uses the standard Angular Material layout methods -->    
          <md-card id="393e932f-50fc-4d20-a8a2-7857e77b4c58" style="position: absolute; left: 1503.74px; top: -8px; width: 408.262px; height: 414.902px;">
              <md-toolbar class="md-whiteframe-1dp md-hue-3">
                  <div class="md-toolbar-tools" style="font-size: 24px; font-weight: bolder;">
                      <h2 flex="">
                          <span>Zone: {{designer.parameters.dn}}</span>
                      </h2>
                  </div>
              </md-toolbar>
              <md-card-content>
                  <md-list class="md-dense">
                      <md-list-item layout="">
                          On/Off
                          <span flex=""></span>
                          <ma-switch point="designer.points | filter:{name:'Puts the unit in shutdown mode (0=ON, 1=OFF)'}:true | maFirst"></ma-switch>
                      </md-list-item>
                      <md-list-item layout="">
                          Temperatur
                          <span flex=""></span>
                          <ma-point-value enable-popup="left" point="designer.points | filter:{name:'Room Temperature'}:true | maFirst" flash-on-change="true"></ma-point-value>
                      </md-list-item>
                      <md-list-item layout="">
                          Mode
                          <span flex=""></span>
                          <ma-point-value point="designer.points | filter:{name:'Current Control (0=OFF, 1=Heating, 2=Cooling)'}:true | maFirst" flash-on-change="true"></ma-point-value>
                      </md-list-item>
                      <md-list-item layout="">
                          Ventilado
                          <span flex=""></span>
                          <ma-set-point-value show-button="true" set-on-change="false" enable-popup="hide" point="designer.points | filter:{name:'Fan Mode (0=OFF, 1=FS1, 2=FS2, 3=FS3, 4=Auto)'}:true | maFirst"></ma-set-point-value>
                      </md-list-item>
                      <md-list-item layout="">
                          Setpoint
                          <span flex=""></span>
                          <ma-set-point-value show-button="true" set-on-change="false" enable-popup="hide" point="designer.points | filter:{name:'Setpoint Displacement'}:true | maFirst"></ma-set-point-value>
                      </md-list-item>
                  </md-list>
              </md-card-content>
          </md-card>
      
          <ma-point-value id="e868b067-4a49-4dc6-a291-c51335c9ce03" style="position: absolute; left: 300px; top: 750px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC002"></ma-point-value>
          <ma-point-value id="f75e72d9-3843-442f-94f4-442d4d79436c" style="position: absolute; left: 1350px; top: 470px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC006"></ma-point-value>
          <ma-point-value id="7e9a47f2-eca9-4f1d-8300-9508b29790c4" style="position: absolute; left: 890px; top: 570px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC004_005_007"></ma-point-value>
          <ma-point-value id="c02c8bbb-9ee4-4299-bd3b-37d328be5f06" style="position: absolute; left: 790px; top: 920px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" ng-click="designer.parameters = {fc: 'FC 0',dn: 'FC 003'}" point-xid="DP_03_FC003"></ma-point-value>
          <ma-point-value id="812b5bae-c0a5-4d00-b845-d9958a6a73b5" style="position: absolute; left: 420px; top: 335px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC008"></ma-point-value>
          <ma-point-value id="b468b73a-0e72-465a-a6ec-0cd4a974013a" style="position: absolute; left: 170px; top: 385px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC001"></ma-point-value>
          <ma-point-value id="bcd68e9c-9008-43c1-9007-53825b186f0c" style="position: absolute; left: 1020px; top: 145px; z-index: 1; width: 75px; height: 35px; background-color: rgb(51, 51, 51); display: flex; justify-content: center; border-radius: 5px;" point-xid="DP_03_FC009"></ma-point-value>
      </div>
      

      What I want is to let the {{designer.parameters.dn}} rotates (change values automatically), hence the value on the table will change in accordance to the "dn" value without having to click on the SVG image. Of course clicking on SVG also provide the corresponding "dn" value.
      For example: If I want, I can click to #FC006 and the table next to image can show all info belongs to FC006. But after a preset time, the dashboard can change to #FC008 or #FC009 by itself.

      2/ I got this code:

      <div class="ma-designer-root" id="25741493-b4f7-4052-9292-0702c8318da7" style="width: 1366px; height: 768px; position: relative;">
      <ma-get-point-value point-xid="DP_timerAdsToHome"></ma-get-point-value>
      <ma-now update-interval="10 seconds" on-change="firstTick && $state.go('home'); firstTick = true"></ma-now>
          <video  width="100%" autoplay>
              <source src="/rest/latest/file-stores/public/suncasadashboards/video/ads.mp4" type="video/mp4">
          </video> 
      </div>
      

      I intend to let user change value of point with XID "DP_timerAdsToHome" in another page. In this page, I get the value with ma-get-point-value and I want to set to attribute "update-interval". But it doesn't seem to be usable as update-interval require a string.

      3/ I use the code in the example but it didn't work as expect.
      Case 1:
      At "home" page, I use:

      <my-idle-detector state="home" delay="30000"></my-idle-detector>
      

      At "ads" page, I use nothing, below is "ads" page code:

      <div class="ma-designer-root" id="2-b4f7-4052-9292-0702c8318da7" style="width: 1366px; height: 768px; position: relative;">
          <video  width="100%" autoplay>
              <source src="/rest/latest/file-stores/public/suncasadashboards/video/ads.mp4" type="video/mp4">
          </video> 
      
      </div>
      

      Then I can see the home page auto change to ads page after 10 seconds.
      However, if i add similar code of:
      <div class="ma-designer-root" id="2-b4f7-4052-9292-0702c8318da7" style="width: 1366px; height: 768px; position: relative;">
      <my-idle-detector state="home" delay="30000"></my-idle-detector>
      <video width="100%" autoplay>
      <source src="/rest/latest/file-stores/public/suncasadashboards/video/ads.mp4" type="video/mp4">
      </video>

      </div>

      Then both of them will be put in a infinite loop without any delay!!

      Please note that my custom.js is only include the component from the sample :)

      posted in Dashboard Designer & Custom AngularJS Pages
      T
      tungthanh500
    • ma-now update interval and ma-svg rotating

      Hello,
      1/ I follow this instruction to make Dynamic Floor (https://docs-v4.mango-os.com/creating-a-dynamic-floor-plan). Beside clicking on each area to select and display on the table next to the dynamic floor, I want the page to automatically rotating between areas. Is there any method?

      2/ I also follow this instruction to Auto rotating pages (https://docs-v4.mango-os.com/auto-rotating-pages). Is there any method to get a point value (numeric) and add it in update-interval attribute? The update-interval need a string so when I try with {{maPoint.value}} in update-interval, it just stops at Page 1 for 1 second only.

      3/ I also try the my-idle-component, also doesn't work (at least on Chrome browser)

      Thank you

      posted in Dashboard Designer & Custom AngularJS Pages
      T
      tungthanh500
    • Dashboard offline

      Hi, I was helping my brother on his work. His work is to display the status of equipment (with Modbus TCP connection) on a PC's screen. However, we face a problem as below step:
      Step 1: At login page, it keeps showing "You are offline, check your connectivity" even in the dashboard or login page.
      PXL_20220830_151011_lmc_8.4.jpg
      Step 2: When we logged in, there is a notification that "Mango API connection has been restored". Everything on dashboard is OK, we can check the status of equipment.
      Step 3: for some reason, if I press Refresh button of browser or F5, the dashboard gone information-less. No more any data from equipment anymore! Only text or table.
      a2ef894e-8e78-431f-997a-034f290d789e-image.png
      In above photo:
      a) the CB Name column is filled with CB's name with (we use {{point_xid.name}} and it can be shown.
      b) Status column is not correct: it is in no info status, no matter the actual CB is on or off. It always show ON on green background.
      c) Current columns: totally blank.
      I also find no Point value shown in Data Source windows
      8f307bc5-913c-4fae-acfb-b7cd82271cbe-image.png
      Step 4: I can get around this by closing the browser and login again but it is kind of flaw and the problem still come back after 5-6 minutes!

      I read another post about this (https://forum.mango-os.com/topic/4843/dashboard-losing-connectivity) but find no suitable solution for me (my skill is quite amateur!!!). Please give me some idea to get around this :|

      <div class="ma-designer-root" id="cb-status" style="width: 800px; height: 600px; position: relative;">
          <!-- Navbar-->
          <div>
          	<div class="topnav">
          		<div class="topnav-left">
          			<a class="logo"><img src="/rest/latest/file-stores/public/logo.png" alt="" class="img-responsive"></a>
          			<a class="active" href="/ui/status"><b>CB Status</b></a> 
          			<a href="/ui/setting"><b>Setting</b></a>
          		</div>
          	</div>
          </div>
      
      	<ma-get-point-value point-xid="DP_Pro1_DI01" point="DP_Pro1_DI01"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI02" point="DP_Pro1_DI02"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI03" point="DP_Pro1_DI03"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI04" point="DP_Pro1_DI04"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI06" point="DP_Pro1_DI06"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI07" point="DP_Pro1_DI07"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI08" point="DP_Pro1_DI08"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI09" point="DP_Pro1_DI09"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI11" point="DP_Pro1_DI11"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI12" point="DP_Pro1_DI12"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI13" point="DP_Pro1_DI13"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro1_DI14" point="DP_Pro1_DI14"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI01" point="DP_Pro2_DI01"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI02" point="DP_Pro2_DI02"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI03" point="DP_Pro2_DI03"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI04" point="DP_Pro2_DI04"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI05" point="DP_Pro2_DI05"></ma-get-point-value>    
          <ma-get-point-value point-xid="DP_Pro2_DI06" point="DP_Pro2_DI06"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI07" point="DP_Pro2_DI07"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI08" point="DP_Pro2_DI08"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI09" point="DP_Pro2_DI09"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI10" point="DP_Pro2_DI10"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI11" point="DP_Pro2_DI11"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI12" point="DP_Pro2_DI12"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI13" point="DP_Pro2_DI13"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro2_DI14" point="DP_Pro2_DI14"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI01" point="DP_Pro3_DI01"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI02" point="DP_Pro3_DI02"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI03" point="DP_Pro3_DI03"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI04" point="DP_Pro3_DI04"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI05" point="DP_Pro3_DI05"></ma-get-point-value>    
          <ma-get-point-value point-xid="DP_Pro3_DI06" point="DP_Pro3_DI06"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI07" point="DP_Pro3_DI07"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI08" point="DP_Pro3_DI08"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI09" point="DP_Pro3_DI09"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI11" point="DP_Pro3_DI11"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI12" point="DP_Pro3_DI12"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI13" point="DP_Pro3_DI13"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Pro3_DI14" point="DP_Pro3_DI14"></ma-get-point-value>
          
          <ma-get-point-value point-xid="DP_Current01" point="DP_Current01"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current02" point="DP_Current02"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current03" point="DP_Current03"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current04" point="DP_Current04"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current05" point="DP_Current05"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current06" point="DP_Current06"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current07" point="DP_Current07"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current08" point="DP_Current08"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current09" point="DP_Current09"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current10" point="DP_Current10"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current11" point="DP_Current11"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current12" point="DP_Current12"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current13" point="DP_Current13"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current14" point="DP_Current14"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current15" point="DP_Current15"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current16" point="DP_Current16"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current17" point="DP_Current17"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current18" point="DP_Current18"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current19" point="DP_Current19"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current20" point="DP_Current20"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current21" point="DP_Current21"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current22" point="DP_Current22"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current23" point="DP_Current23"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current24" point="DP_Current24"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current25" point="DP_Current25"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current26" point="DP_Current26"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current27" point="DP_Current27"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current28" point="DP_Current28"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current29" point="DP_Current29"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current30" point="DP_Current30"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current31" point="DP_Current31"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current32" point="DP_Current32"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current33" point="DP_Current33"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current34" point="DP_Current34"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current35" point="DP_Current35"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current36" point="DP_Current36"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current37" point="DP_Current37"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current38" point="DP_Current38"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current39" point="DP_Current39"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current40" point="DP_Current40"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current41" point="DP_Current41"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current42" point="DP_Current42"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current43" point="DP_Current43"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current44" point="DP_Current44"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current45" point="DP_Current45"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current46" point="DP_Current46"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current47" point="DP_Current47"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current48" point="DP_Current48"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current49" point="DP_Current49"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current50" point="DP_Current50"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current51" point="DP_Current51"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current52" point="DP_Current52"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current53" point="DP_Current53"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current54" point="DP_Current54"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current55" point="DP_Current55"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current56" point="DP_Current56"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current57" point="DP_Current57"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current58" point="DP_Current58"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current59" point="DP_Current59"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_Current60" point="DP_Current60"></ma-get-point-value>
          
          
          <div layout="column">
              <div flex="" layout="row" layout-xs="column" layout-fill="">
                  <div layout="column" flex="50">
                      <md-card>
                          <md-card-content>
                              <table class="contenttable">
          						<colgroup>
          						    <col width="20%">
          						    <col width="20%">
          						    <col width="20%">
          						    <col width="20%"> 
          						    <col width="20%">     						    
          						</colgroup>
          						<tbody>
          							<tr>
              							<td id="table-title">CB Name</td>
              							<td id="table-title">Status</td>
              							<td colspan="3" id="table-title">Current</td>        							
          							</tr>
      
                                      <tr>
                                          <td>{{DP_Pro1_DI01.name}}</td><td ng-class="{onstyle: DP_Pro1_DI01.value != 1, offstyle: DP_Pro1_DI01.value == 0, tripstyle: DP_Pro1_DI02.value == 1}">{{DP_Pro1_DI02.value == 1 ? "TRIPPED" : DP_Pro1_DI01.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current01.renderedValue}}</td>
                                          <td>{{DP_Current02.renderedValue}}</td>  
                                          <td>{{DP_Current03.renderedValue}}</td>                                     
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro1_DI03.name}}</td><td ng-class="{onstyle: DP_Pro1_DI03.value != 1, offstyle: DP_Pro1_DI03.value == 0, tripstyle: DP_Pro1_DI04.value == 1}">{{DP_Pro1_DI04.value == 1 ? "TRIPPED" : DP_Pro1_DI03.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current04.renderedValue}}</td>
                                          <td>{{DP_Current05.renderedValue}}</td>  
                                          <td>{{DP_Current06.renderedValue}}</td>   
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro1_DI06.name}}</td><td ng-class="{onstyle: DP_Pro1_DI06.value != 1, offstyle: DP_Pro1_DI06.value == 0, tripstyle: DP_Pro1_DI07.value == 1}">{{DP_Pro1_DI07.value == 1 ? "TRIPPED" : DP_Pro1_DI06.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current07.renderedValue}}</td>
                                          <td>{{DP_Current08.renderedValue}}</td>  
                                          <td>{{DP_Current09.renderedValue}}</td>                                 
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro1_DI08.name}}</td><td ng-class="{onstyle: DP_Pro1_DI08.value != 1, offstyle: DP_Pro1_DI08.value == 0, tripstyle: DP_Pro1_DI09.value == 1}">{{DP_Pro1_DI09.value == 1 ? "TRIPPED" : DP_Pro1_DI08.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current10.renderedValue}}</td>
                                          <td>{{DP_Current11.renderedValue}}</td>  
                                          <td>{{DP_Current12.renderedValue}}</td>                                     
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro1_DI11.name}}</td><td ng-class="{onstyle: DP_Pro1_DI11.value != 1, offstyle: DP_Pro1_DI11.value == 0, tripstyle: DP_Pro1_DI12.value == 1}">{{DP_Pro1_DI12.value == 1 ? "TRIPPED" : DP_Pro1_DI11.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current13.renderedValue}}</td>
                                          <td>{{DP_Current14.renderedValue}}</td>  
                                          <td>{{DP_Current15.renderedValue}}</td>                                 
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro1_DI13.name}}</td><td ng-class="{onstyle: DP_Pro1_DI13.value != 1, offstyle: DP_Pro1_DI13.value == 0, tripstyle: DP_Pro1_DI14.value == 1}">{{DP_Pro1_DI14.value == 1 ? "TRIPPED" : DP_Pro1_DI13.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current16.renderedValue}}</td>
                                          <td>{{DP_Current17.renderedValue}}</td>  
                                          <td>{{DP_Current18.renderedValue}}</td>
                                      </tr>
       
                                       <tr>
                                           <td>{{DP_Pro2_DI01.name}}</td><td ng-class="{onstyle: DP_Pro2_DI01.value != 1, offstyle: DP_Pro2_DI01.value == 0, tripstyle: DP_Pro2_DI02.value == 1}">{{DP_Pro2_DI02.value == 1 ? "TRIPPED" : DP_Pro2_DI01.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current19.renderedValue}}</td>
                                          <td>{{DP_Current20.renderedValue}}</td>  
                                          <td>{{DP_Current21.renderedValue}}</td>                                
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro2_DI03.name}}</td><td ng-class="{onstyle: DP_Pro2_DI03.value != 1, offstyle: DP_Pro2_DI03.value == 0, tripstyle: DP_Pro2_DI04.value == 1}">{{DP_Pro2_DI04.value == 1 ? "TRIPPED" : DP_Pro2_DI03.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current22.renderedValue}}</td>
                                          <td>{{DP_Current23.renderedValue}}</td>  
                                          <td>{{DP_Current24.renderedValue}}</td>   
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro2_DI05.name}}</td><td ng-class="{onstyle: DP_Pro2_DI05.value != 1, offstyle: DP_Pro2_DI05.value == 0, tripstyle: DP_Pro2_DI06.value == 1}">{{DP_Pro2_DI06.value == 1 ? "TRIPPED" : DP_Pro2_DI05.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current25.renderedValue}}</td>
                                          <td>{{DP_Current26.renderedValue}}</td>  
                                          <td>{{DP_Current27.renderedValue}}</td>   
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro2_DI07.name}}</td><td ng-class="{onstyle: DP_Pro2_DI07.value != 1, offstyle: DP_Pro2_DI07.value == 0, tripstyle: DP_Pro2_DI08.value == 1}">{{DP_Pro2_DI08.value == 1 ? "TRIPPED" : DP_Pro2_DI07.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current28.renderedValue}}</td>
                                          <td>{{DP_Current29.renderedValue}}</td>  
                                          <td>{{DP_Current30.renderedValue}}</td>                                 
                                      </tr>
                                  </tbody>
                              </table>    
                          </md-card-content>
                      </md-card>
                  </div>
                  <div layout="column" flex="50">
                      <md-card>
                          <md-card-content>
                              <table class="contenttable">
          						<colgroup>
          						    <col width="20%">
          						    <col width="20%">
          						    <col width="20%">
          						    <col width="20%"> 
          						    <col width="20%">  
          						</colgroup>
          						<tbody>
          							<tr>
              							<td id="table-title">CB Name</td>
              							<td id="table-title">Status</td>
              							<td colspan="3" id="table-title">Current</td>         							
          							</tr>
                                      <tr>
                                          <td>{{DP_Pro2_DI09.name}}</td><td ng-class="{onstyle: DP_Pro2_DI09.value != 1, offstyle: DP_Pro2_DI09.value == 0, tripstyle: DP_Pro2_DI10.value == 1}">{{DP_Pro2_DI10.value == 1 ? "TRIPPED" : DP_Pro2_DI09.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current31.renderedValue}}</td>
                                          <td>{{DP_Current32.renderedValue}}</td>  
                                          <td>{{DP_Current33.renderedValue}}</td>
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro2_DI11.name}}</td><td ng-class="{onstyle: DP_Pro2_DI11.value != 1, offstyle: DP_Pro2_DI11.value == 0, tripstyle: DP_Pro2_DI12.value == 1}">{{DP_Pro2_DI12.value == 1 ? "TRIPPED" : DP_Pro2_DI11.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current34.renderedValue}}</td>
                                          <td>{{DP_Current35.renderedValue}}</td>  
                                          <td>{{DP_Current36.renderedValue}}</td>
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI01.name}}</td><td ng-class="{onstyle: DP_Pro3_DI01.value != 1, offstyle: DP_Pro3_DI01.value == 0, tripstyle: DP_Pro3_DI02.value == 1}">{{DP_Pro3_DI02.value == 1 ? "TRIPPED" : DP_Pro3_DI01.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current37.renderedValue}}</td>
                                          <td>{{DP_Current38.renderedValue}}</td>  
                                          <td>{{DP_Current39.renderedValue}}</td>                                    
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI03.name}}</td><td ng-class="{onstyle: DP_Pro3_DI03.value != 1, offstyle: DP_Pro3_DI03.value == 0, tripstyle: DP_Pro3_DI04.value == 1}">{{DP_Pro3_DI04.value == 1 ? "TRIPPED" : DP_Pro3_DI03.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current40.renderedValue}}</td>
                                          <td>{{DP_Current41.renderedValue}}</td>  
                                          <td>{{DP_Current42.renderedValue}}</td>                            
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI05.name}}</td><td ng-class="{onstyle: DP_Pro3_DI05.value != 1, offstyle: DP_Pro3_DI05.value == 0, tripstyle: DP_Pro3_DI06.value == 1}">{{DP_Pro3_DI06.value == 1 ? "TRIPPED" : DP_Pro3_DI05.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current43.renderedValue}}</td>
                                          <td>{{DP_Current44.renderedValue}}</td>  
                                          <td>{{DP_Current45.renderedValue}}</td>                                  
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI07.name}}</td><td ng-class="{onstyle: DP_Pro3_DI07.value != 1, offstyle: DP_Pro3_DI07.value == 0, tripstyle: DP_Pro3_DI08.value == 1}">{{DP_Pro3_DI08.value == 1 ? "TRIPPED" : DP_Pro3_DI07.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current46.renderedValue}}</td>
                                          <td>{{DP_Current47.renderedValue}}</td>  
                                          <td>{{DP_Current48.renderedValue}}</td>                                
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI09.name}}</td><td ng-class="{onstyle: DP_Pro3_DI09.value != 1, offstyle: DP_Pro3_DI09.value == 0, tripstyle: DP_Pro3_DI10.value == 1}">{{DP_Pro3_DI10.value == 1 ? "TRIPPED" : DP_Pro3_DI09.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current49.renderedValue}}</td>
                                          <td>{{DP_Current50.renderedValue}}</td>  
                                          <td>{{DP_Current51.renderedValue}}</td>                                
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI11.name}}</td><td ng-class="{onstyle: DP_Pro3_DI11.value != 1, offstyle: DP_Pro3_DI11.value == 0, tripstyle: DP_Pro3_DI12.value == 1}">{{DP_Pro3_DI12.value == 1 ? "TRIPPED" : DP_Pro3_DI11.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current52.renderedValue}}</td>
                                          <td>{{DP_Current53.renderedValue}}</td>  
                                          <td>{{DP_Current54.renderedValue}}</td>                                
                                      </tr>
                                      <tr>
                                          <td>{{DP_Pro3_DI13.name}}</td><td ng-class="{onstyle: DP_Pro3_DI13.value != 1, offstyle: DP_Pro3_DI13.value == 0, tripstyle: DP_Pro3_DI14.value == 1}">{{DP_Pro3_DI14.value == 1 ? "TRIPPED" : DP_Pro3_DI13.value == 0 ? "OFF" : "ON"}}</td>                                    
                                          <td>{{DP_Current55.renderedValue}}</td>
                                          <td>{{DP_Current56.renderedValue}}</td>  
                                          <td>{{DP_Current57.renderedValue}}</td>
                                      </tr>
                                      
                                      <tr>
                                          <td>{{DP_Pro2_DI13.name}}</td><td ng-class="{onstyle: DP_Pro2_DI13.value != 1, offstyle: DP_Pro2_DI13.value == 0, tripstyle: DP_Pro2_DI14.value == 1}">{{DP_Pro2_DI14.value == 1 ? "TRIPPED" : DP_Pro2_DI13.value == 0 ? "OFF" : "ON"}}</td>
                                          <td>{{DP_Current58.renderedValue}}</td>
                                          <td>{{DP_Current59.renderedValue}}</td>  
                                          <td>{{DP_Current60.renderedValue}}</td>                                
                                      </tr>                                
                                  </tbody>
                              </table>
                          </md-card-content>
                      </md-card>
                  </div>
              </div>
          </div>
      </div>    
      
      posted in User help
      T
      tungthanh500
    • Excel Report location

      Hi, I have some data on my VPS for testing purpose but when I try to export to excel file, Mango can create the report but it takes very long time (my VPS is cheap so it cannot do it fast) and the excel cannot be downloaded. I remember in the past I can locate the excel file location and copy it out but now I cannot find the file's location anymore. Any suggestion?

      Thank you

      posted in Mango Automation general Discussion
      T
      tungthanh500
    • RE: Mango 4.2 Change port from 8443 to 8080?

      For anyone saw this topic, solution is: Changing ssl.on=true to ssl.on=false

      posted in User help
      T
      tungthanh500
    • RE: MQTT datapoint parsing help.

      @rob987 This is the most detail instruction regarding MQTT for new user. I highly recommend using his instruction. New user should check ma.log to check if data source is correct setup to read data from MQTT broker before working on data point.

      posted in User help
      T
      tungthanh500
    • RE: Minor typo in Modbus Datasource settings

      @cwangv I also don't understand what is it for?

      posted in Mango feedback
      T
      tungthanh500
    • RE: Recovering from Bad mangoUI-settings Preventing UI Startup

      @jared-wiltshire Well, I just face same problem with v4 today. And since V4 no longer allow legacy UI. I don't know how to correct the mangoUI-settings Json! Any suggestion?

      posted in User help
      T
      tungthanh500