diff --git a/include/PSUEvent.hpp b/include/PSUEvent.hpp
index aebb58d..e1f895a 100644
--- a/include/PSUEvent.hpp
+++ b/include/PSUEvent.hpp
@@ -37,7 +37,8 @@
                 const std::string& eventName,
                 std::shared_ptr<std::set<std::string>> asserts,
                 std::shared_ptr<std::set<std::string>> combineEvent,
-                std::shared_ptr<bool> state, const std::string& psuName);
+                std::shared_ptr<bool> state, const std::string& psuName,
+                double pollRate);
     ~PSUSubEvent();
 
     std::shared_ptr<sdbusplus::asio::dbus_interface> eventInterface;
@@ -60,14 +61,15 @@
     void beep(const uint8_t& beepPriority);
     static constexpr uint8_t beepPSUFailure = 2;
     boost::asio::posix::stream_descriptor inputDev;
-    static constexpr unsigned int eventPollMs = 1000;
-    static constexpr size_t warnAfterErrorCount = 10;
     std::string psuName;
     std::string groupEventName;
     std::string fanName;
     std::string assertMessage;
     std::string deassertMessage;
     std::shared_ptr<sdbusplus::asio::connection> systemBus;
+    unsigned int eventPollMs = defaultEventPollMs;
+    static constexpr unsigned int defaultEventPollMs = 1000;
+    static constexpr size_t warnAfterErrorCount = 10;
 };
 
 class PSUCombineEvent
@@ -83,7 +85,7 @@
             std::string,
             boost::container::flat_map<std::string, std::vector<std::string>>>&
             groupEventPathList,
-        const std::string& combineEventName);
+        const std::string& combineEventName, double pollRate);
     ~PSUCombineEvent();
 
     sdbusplus::asio::object_server& objServer;
diff --git a/include/PSUSensor.hpp b/include/PSUSensor.hpp
index d6717cd..9bc2e83 100644
--- a/include/PSUSensor.hpp
+++ b/include/PSUSensor.hpp
@@ -20,7 +20,8 @@
               std::vector<thresholds::Threshold>&& thresholds,
               const std::string& sensorConfiguration,
               const std::string& sensorUnits, unsigned int factor, double max,
-              double min, const std::string& label, size_t tSize);
+              double min, const std::string& label, size_t tSize,
+              double pollRate);
     ~PSUSensor() override;
     void setupRead(void);
 
@@ -36,10 +37,15 @@
     void handleResponse(const boost::system::error_code& err);
     void checkThresholds(void) override;
     void updateMinMaxValues(void);
+    unsigned int sensorPollMs = defaultSensorPollMs;
 
     int fd;
-    static constexpr unsigned int sensorPollMs = 1000;
     static constexpr size_t warnAfterErrorCount = 10;
+
+  public:
+    static constexpr double defaultSensorPoll = 1.0;
+    static constexpr unsigned int defaultSensorPollMs =
+        static_cast<unsigned int>(defaultSensorPoll * 1000);
 };
 
 class PSUProperty
