diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index f73a584..431c7ce 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -12,6 +12,18 @@
     angular
         .module('app.common.services')
         .factory('APIUtils', ['$http', 'Constants', '$q', 'dataService',function($http, Constants, $q, DataService){
+          var getScaledValue = function(value, scale){
+            scale = scale + "";
+            scale = parseInt(scale, 10);
+            var power = Math.abs(parseInt(scale,10));
+
+            if(scale > 0){
+              value = value * Math.pow(10, power);
+            }else if(scale < 0){
+              value = value / Math.pow(10, power);
+            }
+            return value;
+          };
           var SERVICE = {
               API_CREDENTIALS: Constants.API_CREDENTIALS,
               API_RESPONSE: Constants.API_RESPONSE,
@@ -523,19 +535,6 @@
                       var order = 0;
                       var customOrder = 0;
 
-                      function getScaledValue(value, scale){
-                        scale = scale + "";
-                        scale = parseInt(scale, 10);
-                        var power = Math.abs(parseInt(scale,10));
-
-                        if(scale > 0){
-                          value = value * Math.pow(10, power);
-                        }else if(scale < 0){
-                          value = value / Math.pow(10, power);
-                        }
-                        return value;
-                      }
-
                       function getSensorStatus(reading){
                         var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
 
@@ -1060,6 +1059,50 @@
 
                   return defer.promise;
               },
+              getPowerConsumption: function(){
+                return $http({
+                  method: 'GET',
+                  url: DataService.getHost() + "/xyz/openbmc_project/sensors/power/total_power",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).then(function(response){
+                    var json = JSON.stringify(response.data);
+                    var content = JSON.parse(json);
+
+                    return getScaledValue(content.data.Value,
+                                          content.data.Scale) + ' ' +
+                      Constants.POWER_CONSUMPTION_TEXT[content.data.Unit];
+                }, function(error){
+                  if ('Not Found' == error.statusText) {
+                    return Constants.POWER_CONSUMPTION_TEXT.notavailable;
+                  } else {
+                    console.log(error);
+                  }
+                });
+              },
+              getPowerCap: function(){
+                return $http({
+                  method: 'GET',
+                  url: DataService.getHost() + "/xyz/openbmc_project/control/host0/power_cap",
+                  headers: {
+                      'Accept': 'application/json',
+                      'Content-Type': 'application/json'
+                  },
+                  withCredentials: true
+                }).then(function(response){
+                    var json = JSON.stringify(response.data);
+                    var content = JSON.parse(json);
+
+                    return (false == content.data.PowerCapEnable) ?
+                        Constants.POWER_CAP_TEXT.disabled :
+                        content.data.PowerCap + ' ' + Constants.POWER_CAP_TEXT.unit;
+                }, function(error){
+                  console.log(error);
+                });
+              },
           };
           return SERVICE;
         }]);
diff --git a/app/common/services/constants.js b/app/common/services/constants.js
index af0965d..0bb2123 100644
--- a/app/common/services/constants.js
+++ b/app/common/services/constants.js
@@ -122,7 +122,15 @@
                     CRITICAL_NO_SENSOR_DATA: 'There are no sensors in Critical state.',
                     WARNING_NO_SENSOR_DATA: 'There are no sensors in Warning state.'
                   }
-                }
+                },
+                POWER_CAP_TEXT: {
+                    unit: 'W',
+                    disabled: 'Not Enabled'
+                },
+                POWER_CONSUMPTION_TEXT: {
+                    'xyz.openbmc_project.Sensor.Value.Unit.Watts': 'W',
+                    notavailable: 'Not Available'
+                },
             };
         });
 
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 094fac0..346e6e1 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -67,11 +67,11 @@
 					<ul class="overview__metadata-wrapper">
 						<li class="overview__metadata-block">
 							<p class="content-label">Power Consumption</p>
-							<p class="courier-bold">000 W</p>
+							<p class="courier-bold">{{power_consumption}}</p>
 						</li>
 						<li class="overview__metadata-block">
 							<p class="content-label">Power Cap</p>
-							<p class="courier-bold">000 W</p>
+							<p class="courier-bold">{{power_cap}}</p>
 						</li>
 					</ul>
 				</div>
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 2382a2a..af70d15 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -28,6 +28,8 @@
                 $scope.bmc_info = {};
                 $scope.bmc_firmware = "";
                 $scope.server_firmware = "";
+                $scope.power_consumption = "";
+                $scope.power_cap = "";
                 $scope.loading = false;
 
                 loadOverviewData();
@@ -38,7 +40,9 @@
                       firmware: APIUtils.getFirmwares(),
                       led: APIUtils.getLEDState(),
                       ethernet: APIUtils.getBMCEthernetInfo(),
-                      bmc_info: APIUtils.getBMCInfo()
+                      bmc_info: APIUtils.getBMCInfo(),
+                      power_consumption: APIUtils.getPowerConsumption(),
+                      power_cap: APIUtils.getPowerCap(),
                     };
                     $q.all(promises)
                       .then(function(data){
@@ -51,6 +55,8 @@
                         $scope.displayLEDState(data.led);
                         $scope.displayBMCEthernetInfo(data.ethernet);
                         $scope.displayBMCInfo(data.bmc_info);
+                        $scope.displayPowerConsumption(data.power_consumption);
+                        $scope.displayPowerCap(data.power_cap);
                       })
                       .finally(function(){
                         $scope.loading = false;
@@ -92,6 +98,14 @@
                     });
                 }
 
+                $scope.displayPowerConsumption = function(data){
+                    $scope.power_consumption = data;
+                }
+
+                $scope.displayPowerCap = function(data){
+                    $scope.power_cap = data;
+                }
+
                 var refreshDataListener = $rootScope.$on('refresh-data', function(event, args) {
                     loadOverviewData();
                 });
