def __init__(self, config_uri): FarmProcess.__init__(self, 'FM', config_uri) logging.info('FM: Initializing') self.parameters = None self.regulators = None self.real_regulators = None self.devices = None self.max_regulation_order = 0 now = datetime.now() # query database self.cultivation_start = FieldSetting.get_cultivation_start( self.db_session) self.reload_parameters() self.reload_devices() self.handle_parameters(now) self.handle_device_setpoints(now) self.reload_regulators() self.handle_regulators(now) # listen for database changes (broadcat on redis channels) self.pubsub = self.redis_conn.pubsub(ignore_subscribe_messages=True) self.pubsub.subscribe('parameter_changes', 'device_changes', 'calendar_changes', 'field_setting_changes', 'regulator_changes', 'periphery_controller_changes', 'component_input_changes', 'component_property_changes') logging.info('FM: initialisation finished')
def __init__(self, config_uri): FarmProcess.__init__(self, 'FM', config_uri) logging.info('FM: Initializing') self.parameters = None self.regulators = None self.real_regulators = None self.devices = None self.max_regulation_order = 0 now = datetime.now() # query database self.cultivation_start = FieldSetting.get_cultivation_start(self.db_session) self.reload_parameters() self.reload_devices() self.handle_parameters(now) self.handle_device_setpoints(now) self.reload_regulators() self.handle_regulators(now) # listen for database changes (broadcat on redis channels) self.pubsub = self.redis_conn.pubsub(ignore_subscribe_messages=True) self.pubsub.subscribe('parameter_changes', 'device_changes', 'calendar_changes', 'field_setting_changes', 'regulator_changes', 'periphery_controller_changes', 'component_input_changes', 'component_property_changes') logging.info('FM: initialisation finished')
def handle_field_setting_changes(self, msg): if msg == 'loop_time': self.loop_time = FieldSetting.get_loop_time(self.db_session) elif msg == 'cultivation_start': self.cultivation_start = FieldSetting.get_cultivation_start(self.db_session) # make shure calendars are recomputed for key in self.parameters: self.parameters[key].current_calendar_entry = None for key in self.devices: self.devices[key].current_calendar_entry = None