mirror of
https://github.com/Crocmagnon/plant-badger.git
synced 2024-12-04 15:13:36 +01:00
Retry on error, solve #10
This commit is contained in:
parent
600257d19a
commit
614ee88c83
3 changed files with 29 additions and 6 deletions
|
@ -9,7 +9,7 @@ from badger2040 import (
|
|||
UPDATE_FAST,
|
||||
)
|
||||
from badger_with_clock import Badger2040
|
||||
from badger_os import get_battery_level
|
||||
from badger_os import get_battery_level, warning
|
||||
|
||||
import secrets
|
||||
from dst import fix_dst
|
||||
|
@ -201,10 +201,7 @@ def main():
|
|||
while True:
|
||||
display.rtc.clear_timer_flag()
|
||||
fetch_and_display()
|
||||
display.rtc.set_timer(
|
||||
secrets.REFRESH_INTERVAL_MINUTES, ttp=PCF85063A.TIMER_TICK_1_OVER_60HZ
|
||||
)
|
||||
display.rtc.enable_timer_interrupt(True)
|
||||
display.set_timer_minutes_with_jitter(secrets.REFRESH_INTERVAL_MINUTES)
|
||||
print("Halting")
|
||||
display.halt()
|
||||
|
||||
|
@ -249,4 +246,11 @@ def get_time():
|
|||
return fix_dst(*display.rtc.datetime())
|
||||
|
||||
|
||||
while True:
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
warning(display, str(e))
|
||||
display.set_timer_minutes_with_jitter(secrets.ERROR_REFRESH_INTERVAL_MINUTES)
|
||||
display.halt()
|
||||
|
|
|
@ -3,6 +3,7 @@ import machine
|
|||
from pimoroni_i2c import PimoroniI2C
|
||||
from pcf85063a import PCF85063A
|
||||
import ntptime
|
||||
import random
|
||||
|
||||
import badger2040
|
||||
|
||||
|
@ -24,3 +25,20 @@ class Badger2040(badger2040.Badger2040):
|
|||
ntptime.settime()
|
||||
now = time.localtime()
|
||||
self.rtc.datetime(now[:7])
|
||||
|
||||
def set_timer_minutes(self, minutes: int):
|
||||
"""Wake the board in X minutes. Doesn't halt the board."""
|
||||
self.rtc.clear_timer_flag()
|
||||
self.rtc.set_timer(minutes, ttp=PCF85063A.TIMER_TICK_1_OVER_60HZ)
|
||||
self.rtc.enable_timer_interrupt(True)
|
||||
|
||||
def set_timer_minutes_with_jitter(
|
||||
self, minutes: int, jitter_percentage: float = 0.2
|
||||
):
|
||||
"""
|
||||
Wake the board in X minutes with some jitter. Doesn't halt the board.
|
||||
jitter_percentage should be a float between 0.0 and 1.0.
|
||||
"""
|
||||
delta = int(minutes * abs(jitter_percentage))
|
||||
minutes += random.randint(-delta, delta)
|
||||
self.set_timer_minutes(minutes)
|
||||
|
|
|
@ -14,3 +14,4 @@ HA_PLANT_CONDUCTIVITY_SENSOR = "sensor.plant_name_conductivity"
|
|||
HA_PLANT_ILLUMINANCE_SENSOR = "sensor.plant_name_illuminance"
|
||||
|
||||
REFRESH_INTERVAL_MINUTES = 60 # Max 255
|
||||
ERROR_REFRESH_INTERVAL_MINUTES = 30
|
||||
|
|
Loading…
Reference in a new issue