from machine import Pin, I2C, ADC
import random
from pymenu import *
import ssd1306
from time import sleep, localtime, time
from viewer import Viewer
from sdCardManager import sdCardManager
from Config import Config
from ds3231 import DS3231_RTC
import ntptime
from ConnectionManaging import ConnectionManaging



# DS3231 on 0x68
I2C_ADDR = 0x68     # DEC 104, HEX 0x68

i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=800000)
ds = DS3231_RTC(i2c) #RTC
switch = False

pot = ADC(Pin(34))
pot.atten(ADC.ATTN_11DB)       #Full range: 3.3v

pot1 = ADC(Pin(35))
pot1.atten(ADC.ATTN_11DB)       #Full range: 3.3v

pot2 = ADC(Pin(25))
pot2.atten(ADC.ATTN_11DB)       #Full range: 3.3v

pot3 = ADC(Pin(33))
pot3.atten(ADC.ATTN_11DB)       #Full range: 3.3v

pot4 = ADC(Pin(32))
pot4.atten(ADC.ATTN_11DB)       #Full range: 3.3v

config = Config()

sd = sdCardManager()

conn = ConnectionManaging('Wokwi-GUEST', '',"myfishtank.altervista.org")
#print(conn.connection_status())
is_connect = conn.connect()

print(conn.connection_status())
ntptime.settime()
#conn.post_https_request("Ec", "530", "Date", "1739311432")
#conn.send_value_to_web("526", "Ec", "1739311450")
is_conn = conn.disconnect()

#print(conn.connection_status())
print(list(localtime()))
ds.datetime = localtime()

# Get the Unix timestamp
#unix_epoch_time = ds.unix_epoch_time(time())
#print("Unix epoch time:", unix_epoch_time)


if(sd.if_exist_configuration()):
    file_json = sd.get_configuration()
    config.from_json(file_json)
else:
    sd.set_configuration(config.to_dict())

countdown_menu = 0
viewer = Viewer(config, sd, i2c)

while True:
    key=0  
    if pot.read() > 2000:
        key=1
    if pot4.read() > 2000:
        key=2
    if pot2.read() > 2000:
        key=5
    if pot3.read() > 2000:
        key=4
    if pot1.read() > 2000:
        key=3      

    if key == 1: 
        if viewer.is_enabled_menu:
            countdown_menu = 0
            viewer.menu.move(-1)
    if key == 2:
        if viewer.is_enabled_menu: 
            countdown_menu = 0   
            viewer.menu.move(1)    
    if key == 5:
        if not viewer.is_enabled_menu:
            viewer.is_enabled_menu = True
        else:
            countdown_menu = 0
            viewer.menu.click()
    if key == 4:     
        if viewer.is_enabled_menu:
            countdown_menu = 0
            viewer.menu.shift(1)
    if key == 3:     
        if viewer.is_enabled_menu:
            countdown_menu = 0    
            viewer.menu.shift(-1)    

    viewer.run(ds.time)
    #print(config.get_connection_action())
    if viewer.is_enabled_menu:
        countdown_menu = countdown_menu + 1
    
    if countdown_menu == 100:
        countdown_menu = 0
        viewer.is_enabled_menu = False
        sd.set_configuration(config.to_dict()) 
        print(config.to_dict())
    
    #print(str(countdown_menu) + " " + str(ds.time))

    sleep(0.1)
GND5VSDASCLSQWRTCDS1307+