From 9fc8db577a1e9cf48a4e3fc686bd7a89bde74ed8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= <oddstr13@openshell.no>
Date: Mon, 8 Nov 2021 21:39:21 +0100
Subject: [PATCH] Improved periodical to forgive skipped beats

---
 solar_ble.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/solar_ble.py b/solar_ble.py
index 5d6707d..ee27ba2 100755
--- a/solar_ble.py
+++ b/solar_ble.py
@@ -307,8 +307,13 @@ class Periodical:
             now = time.time()
 
         if (now - self.prev) >= self.interval:
-            self.prev += self.interval
+            skipped, overshoot = divmod(now - self.prev, self.interval)
+            skipped -= 1
+            if skipped:
+                log("Skipped:", skipped, overshoot, now - self.prev, self.interval)
+            self.prev = now - overshoot
             return True
+
         return False