from machine import I2C, Pin, UART
from gpio_lcd import GpioLcd
import utime
import ds1307


lcd = GpioLcd(rs_pin=Pin(16),
          enable_pin=Pin(17),
          d4_pin=Pin(18),
          d5_pin=Pin(19),
          d6_pin=Pin(20),
          d7_pin=Pin(21),
          num_lines=2,
          num_columns=16
          )


i2c = I2C(0, scl=Pin(9), sda=Pin(8))
rtc = ds1307.DS1307(i2c, 0x68)

led = Pin(5, Pin.OUT)
#uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
button = Pin(15,Pin.IN,Pin.PULL_DOWN)

csv_filename1 = "data.csv"
csv_filename2 = "details.csv"


with open(csv_filename1, "a") as f:
    f.write("S.No,Date,Time,RFID,Name\n")
    f.close()

with open(csv_filename2, "a") as f:
    f.write("Name,RFID\n")
    f.write("cactus,1234\n")
    f.write(",6F0087C990B1\n")
    f.close()
sno = 1
#set time (year, month, day, hours. minutes, seconds, weekday: integer: 0-6 )
#rtc.datetime = (2025, 3, 28, 13, 53, 5, 5)


while True:
    x = button.value()
    #lcd.putstr("SCAN")
    #data = uart.read()
    #print("ENTER PASSWORD.")
    #rfid_data = input()
    #if data:
    #    rfid_data = data.decode("utf-8").strip()
    #    print("RFID SCANNED:", rfid_data)
    if x==1:
        lcd.clear()
        lcd.putstr("ENTER NAME.")
        print("ENTER YOUR NAME.")
        new_name = input().strip() 
        if not new_name:
            print("No input detected. Restarting.")
            lcd.clear()
            utime.sleep(1)
            continue

        print("ENTER PASSWORD.")
        rfid_data = input().strip()  
        if not rfid_data:
            print("No input detected. Restarting.")
            lcd.clear()
            utime.sleep(1)
            continue
       

        with open(csv_filename2, "a") as g:
            g.write("{},{}\n".format(new_name,rfid_data))
        lcd.clear()
        lcd.move_to(0,1)
        lcd.putstr("saved: "+new_name+" "+rfid_data)
        utime.sleep(1)
        lcd.clear()
        
    elif x==0:
        lcd.clear()
        lcd.putstr("SCAN")
        print("ENTER PASSWORD.")
        rfid_data = input().strip()  
        if not rfid_data:
            print("No input detected. Restarting.")
            lcd.clear()
            utime.sleep(1)
            continue

        name = None
       
        with open(csv_filename2, "r") as g:
            lines = g.readlines()[1:]
            for line in lines:
                sname, srfid = line.strip().split(",")  
                if srfid == rfid_data:  
                    print("Data is correct")
                    name = sname
                    break  

        if name:  
            date_time = rtc.datetime
            date_str = "{:02d}/{:02d}/{:04d}".format(date_time[2], date_time[1], date_time[0])
            time_str = "{:02d}:{:02d}:{:02d}".format(date_time[3], date_time[4], date_time[5])

           
            with open(csv_filename1, "a") as f:
                f.write("{},{},{},{},{}\n".format(sno, date_str, time_str, rfid_data, name))
                f.flush()  

            sno += 1
           
            lcd.clear()
            lcd.move_to(0, 0)
            lcd.putstr(time_str)
            lcd.move_to(0, 1)
            lcd.putstr("welcome "+sname)
            led.value(1)
            utime.sleep(2)
            led.value(0)
            utime.sleep(1)
            lcd.clear()
    
        else:
            print("INVALID RFID")
            lcd.move_to(0, 0)
            lcd.putstr("invalid")
            utime.sleep(1)
            lcd.clear()
    
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
GND5VSDASCLSQWRTCDS1307+