diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index e6f1eba..8c3927b 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -124,11 +124,21 @@
                     }
 
                     nlohmann::json& tempArray =
-                        sensorAsyncResp->res.jsonValue["PowerLimit"];
+                        sensorAsyncResp->res.jsonValue["PowerControl"];
 
+                    // Put multiple "sensors" into a single PowerControl, 0, so
+                    // only create the first one
                     if (tempArray.empty())
                     {
-                        tempArray.push_back({});
+                        // Mandatory properties odata.id and MemberId
+                        // A warning without a odata.type
+                        tempArray.push_back(
+                            {{"@odata.type", "#Power.v1_0_0.PowerControl"},
+                             {"@odata.id", "/redfish/v1/Chassis/" +
+                                               sensorAsyncResp->chassisId +
+                                               "/Power#/PowerControl/0"},
+                             {"Name", "Chassis Power Control"},
+                             {"MemberId", "0"}});
                     }
 
                     nlohmann::json& sensorJson = tempArray.back();
@@ -188,7 +198,8 @@
                         }
                     }
 
-                    nlohmann::json& value = sensorJson["LimitInWatts"];
+                    nlohmann::json& value =
+                        sensorJson["PowerLimit"]["LimitInWatts"];
 
                     if (enabled)
                     {
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 7980ba2..0ed47f7 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -568,6 +568,11 @@
 
         if (!sensorName.compare("total_power"))
         {
+            sensor_json["@odata.type"] = "#Power.v1_0_0.PowerControl";
+            // Put multiple "sensors" into a single PowerControl, so have
+            // generic names for MemberId and Name. Follows Redfish mockup.
+            sensor_json["MemberId"] = "0";
+            sensor_json["Name"] = "Chassis Power Control";
             unit = "PowerConsumedWatts";
         }
         else if (sensorNameLower.find("input") != std::string::npos)
@@ -1493,10 +1498,23 @@
                 nlohmann::json& tempArray =
                     SensorsAsyncResp->res.jsonValue[fieldName];
 
-                if (fieldName == "PowerSupplies" && !tempArray.empty())
+                if ((fieldName == "PowerSupplies" ||
+                     fieldName == "PowerControl") &&
+                    !tempArray.empty())
                 {
-                    // Power supplies put multiple "sensors" into a single power
-                    // supply entry, so only create the first one
+                    // For power supplies and power control put multiple
+                    // "sensors" into a single power supply or power control
+                    // entry, so only create the first one
+                }
+                else if (fieldName == "PowerControl")
+                {
+                    // Put multiple "sensors" into a single PowerControl.
+                    // Follows MemberId naming and naming in power.hpp.
+                    tempArray.push_back(
+                        {{"@odata.id", "/redfish/v1/Chassis/" +
+                                           SensorsAsyncResp->chassisId + "/" +
+                                           SensorsAsyncResp->chassisSubNode +
+                                           "#/" + fieldName + "/0"}});
                 }
                 else
                 {
