import time from moisture_sensor import MoistureSensor from dht22 import TemperatureHumiditySensor from sensor_data_manager import SensorDataManager from grow_system_api import GrowSystemApi from device_info import DeviceInfo class GrowSystem: grow_system_api = GrowSystemApi() # moisture_sensor = None # temperature_humidity_sensor = None sensors = [] most_recent_values = [] sensor_data_manager = None device_id = None device_info = DeviceInfo() def __init__(self, settings): for sensor in self.device_info.sensors: print("") print("Initialize sensor:") print(sensor) sensor_type = sensor['type'] if sensor_type == 'moisture': print("Found sensor of type moisture") self.sensors.append(MoistureSensor(sensor)) elif sensor_type == 'dht22': print("Found sensor of type DHT22") self.sensors.append(TemperatureHumiditySensor(sensor)) else: print("No sensor type configured for: " + sensor['type']) #if not self.moisture_sensor: # self.moisture_sensor = MoistureSensor(settings['moisture_sensor']) #if not self.temperature_humidity_sensor: # self.temperature_humidity_sensor = TemperatureHumiditySensor(settings['temperature_humidity_sensor']) def start(self): print("Say the server hello...") result = self.grow_system_api.say_hello() message = result['message'] if message != 'OK': print("Device not activated. Stopping") return self.device_id = result['data']['device_id'] self.sensor_data_manager = SensorDataManager(self.device_id) print("Start reading sensors ...") while True: # Reset data self.most_recent_values = [] for sensor in self.sensors: print("Read sensor of type " + sensor.type + " at pin " + str(sensor.sensor_pin_int)) sensor.read() for measurement in sensor.most_recent_values: print(f"Got {measurement['value']} {measurement['unit']} ({measurement['type']})") self.most_recent_values = self.most_recent_values + sensor.most_recent_values self.sensor_data_manager.handleData(self.most_recent_values) time.sleep(self.device_info.read_secs)