rtc udpate

This commit is contained in:
PaulVua
2025-01-30 11:52:43 +01:00
parent 578721a9f2
commit 6e0dc1b257

View File

@@ -20,6 +20,8 @@ def bcd_to_dec(bcd):
return (bcd // 16 * 10) + (bcd % 16)
def read_time(bus):
"""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])
@@ -27,13 +29,20 @@ def read_time(bus):
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)
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')
}