38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
# 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)
|
|
|
|
|