From 6e0dc1b257e2c6279c71e961f49a1124ab7fceab Mon Sep 17 00:00:00 2001 From: PaulVua Date: Thu, 30 Jan 2025 11:52:43 +0100 Subject: [PATCH] rtc udpate --- RTC/read.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/RTC/read.py b/RTC/read.py index 8fc5ae1..601ccaa 100644 --- a/RTC/read.py +++ b/RTC/read.py @@ -20,20 +20,29 @@ def bcd_to_dec(bcd): return (bcd // 16 * 10) + (bcd % 16) def read_time(bus): - data = bus.read_i2c_block_data(DS3231_ADDR, REG_TIME, 7) - seconds = bcd_to_dec(data[0] & 0x7F) - minutes = bcd_to_dec(data[1]) - hours = bcd_to_dec(data[2] & 0x3F) - day = bcd_to_dec(data[4]) - month = bcd_to_dec(data[5]) - year = bcd_to_dec(data[6]) + 2000 - return (year, month, day, hours, minutes, seconds) + """Try to read and decode time from the RTC module (DS3231).""" + try: + data = bus.read_i2c_block_data(DS3231_ADDR, REG_TIME, 7) + seconds = bcd_to_dec(data[0] & 0x7F) + minutes = bcd_to_dec(data[1]) + hours = bcd_to_dec(data[2] & 0x3F) + day = bcd_to_dec(data[4]) + month = bcd_to_dec(data[5]) + year = bcd_to_dec(data[6]) + 2000 + return datetime(year, month, day, hours, minutes, seconds) + except OSError: + return None # RTC module not connected def main(): # Read RTC time bus = smbus2.SMBus(1) - year, month, day, hours, minutes, seconds = read_time(bus) - rtc_time = datetime(year, month, day, hours, minutes, seconds) + # Try to read RTC time + rtc_time = read_time(bus) + # If RTC is not connected, set default message + if rtc_time is None: + rtc_time_str = "not connected" + else: + rtc_time_str = rtc_time.strftime('%Y-%m-%d %H:%M:%S') # Get current system time system_time = datetime.now() #local @@ -46,7 +55,7 @@ def main(): # Create JSON output time_data = { - "rtc_module_time": rtc_time.strftime('%Y-%m-%d %H:%M:%S'), + "rtc_module_time":rtc_time_str, "system_local_time": system_time.strftime('%Y-%m-%d %H:%M:%S'), "system_utc_time": utc_time.strftime('%Y-%m-%d %H:%M:%S') }