GrowSystem/grow_system.py

80 lines
2.7 KiB
Python

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("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:
sensor.read()
self.most_recent_values = self.most_recent_values + sensor.most_recent_values
print("Most recent bla")
print(sensor.most_recent_values)
# Moisture Sensor
# self.moisture_sensor.read()
# self.most_recent_values = self.most_recent_values + self.moisture_sensor.most_recent_value
# Temperature and Humidity Sensor
# self.temperature_humidity_sensor.read()
# self.most_recent_values = self.most_recent_values + self.temperature_humidity_sensor.most_recent_values
self.sensor_data_manager.handleData(self.most_recent_values)
time.sleep(5)