# Moisture Sensor Class from machine import ADC, Pin class MoistureSensor: moisture_sensor_pin_int = -1 moisture_sensor = None most_recent_value = [] min_raw_value = None max_raw_value = None def __init__(self, moisture_sensor_data, min_raw_value=300, max_raw_value=65535): self.moisture_sensor_pin_int = moisture_sensor_data['pin_int'] self.min_raw_value = min_raw_value self.max_raw_value = max_raw_value print("Hello from moisture sensor. Sensor pin is: " + str(self.moisture_sensor_pin_int)) self.moisture_sensor = ADC(Pin(self.moisture_sensor_pin_int)) def read(self): self.most_recent_value = [ { 'type': 'moisture', 'value': self.convert_to_moisture_percentage(self.moisture_sensor.read_u16()), 'unit': '%' }, ] def normalize_sensor_value(self, raw_value): return (raw_value - self.min_raw_value) / (self.max_raw_value - self.min_raw_value) def convert_to_moisture_percentage(self, raw_value): normalized_value = self.normalize_sensor_value(raw_value) return round(100 - normalized_value * 100, 1)