diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index df56b21..5466ff5 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -341,6 +341,52 @@
     return thresholdChanges;
 }
 
+void ThresholdTimer::startTimer(const Threshold& threshold, bool assert,
+                                double assertValue)
+{
+    struct TimerUsed timerUsed = {};
+    constexpr const size_t waitTime = 5;
+    TimerPair* pair = nullptr;
+
+    for (TimerPair& timer : timers)
+    {
+        if (!timer.first.used)
+        {
+            pair = &timer;
+            break;
+        }
+    }
+    if (pair == nullptr)
+    {
+        pair = &timers.emplace_back(timerUsed, boost::asio::deadline_timer(io));
+    }
+
+    pair->first.used = true;
+    pair->first.level = threshold.level;
+    pair->first.direction = threshold.direction;
+    pair->first.assert = assert;
+    pair->second.expires_from_now(boost::posix_time::seconds(waitTime));
+    pair->second.async_wait([this, pair, threshold, assert,
+                             assertValue](boost::system::error_code ec) {
+        pair->first.used = false;
+
+        if (ec == boost::asio::error::operation_aborted)
+        {
+            return; // we're being canceled
+        }
+        if (ec)
+        {
+            std::cerr << "timer error: " << ec.message() << "\n";
+            return;
+        }
+        if (sensor->readingStateGood())
+        {
+            assertThresholds(sensor, assertValue, threshold.level,
+                             threshold.direction, assert);
+        }
+    });
+}
+
 bool checkThresholds(Sensor* sensor)
 {
     bool status = true;
