from machine import ADC, Pin, deepsleep
import time

# === CONFIGURATION ===
ADC_PIN = 0                  # Moisture sensor analog pin
POWER_PIN = 1                # Pin to switch sensor power ON/OFF
LOG_FILE = "moisture_log.txt"
SLEEP_MS = 15 * 60 * 1000  # 15 minutes deep sleep

# === SENSOR CLASS ===
class Sensor:
    def __init__(self, pin):
        self.sensor = ADC(pin)
        self.sensor.width(ADC.WIDTH_12BIT)
        self.sensor.atten(ADC.ATTN_11DB)
    def ReadMoisture(self):
        adc_value = self.sensor.read_u16()
        moisture = round(adc_value, 2)
        print("Moisture:", moisture)
        return moisture

# === FILE LOGGER ===
class File:
    def __init__(self, filename):
        self.filename = filename
    def WriteData(self, t, x):
        with open(self.filename, "a") as f:
            f.write(str(t) + "\t" + str(round(x, 2)) + "\n")
            f.flush()

# === MAIN ===
def main():
    sensor_power = Pin(POWER_PIN, Pin.OUT)
    sensor_power.value(0)  # Sensor off initially

    sensor = Sensor(ADC_PIN)
    logger = File(LOG_FILE)

    # Power sensor, read, then turn off
    sensor_power.value(1)
    time.sleep(0.1)
    moisture = sensor.ReadMoisture()
    sensor_power.value(0)

    # Log data
    timestamp = time.time()
    logger.WriteData(timestamp, moisture)

    # Allow brief window for manual interrupt
    time.sleep(5)
    deepsleep(SLEEP_MS)

main()


