def __time_to_open_cb(self, register): if not register.data_type == "int": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__open_timer.expiration_time = register.value
def __exit_reader_cb(self, register): # Check data type. if not register.data_type == "json": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return # Create if register.value != {} and self.__exit_reader is None: self.__exit_reader = CardReaderFactory.create( controller=self._controller, name="Exit Reader", vendor=register.value['vendor'], model=register.value['model'], options=register.value['options']) if self.__exit_reader is not None: if self.__exit_reader.reader_state == CardReaderState.NONE: self.__exit_reader.cb_read_card(self.__cb_read_card) self.__exit_reader.init() # Delete elif register.value == {} and self.__exit_reader is not None: self.__delete_reader(self.__exit_reader)
def __air_temp_upper_settings_cb(self, register): # Check data type. if not register.data_type == "json": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if register.value != {} and self.__air_temp_upper_dev is None: self.__air_temp_upper_dev = ThermometersFactory.create( controller=self._controller, name="Air temperature upper", vendor=register.value['vendor'], model=register.value['model'], options=register.value['options']) if self.__air_temp_upper_dev is not None: self.__air_temp_upper_dev.init() self.__temp_proc.add(self.__air_temp_upper_dev) elif register.value == {} and self.__air_temp_upper_dev is not None: self.__temp_proc.remove(self.__air_temp_upper_dev) self.__air_temp_upper_dev.shutdown() del self.__air_temp_upper_dev
def __door_window_blind_value_cb(self, register): # Check data type. if not register.data_type == "bool": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__set_door_window_blind(register.value)
def __door_window_blind_output_cb(self, register): # Check data type. if not register.data_type == "str": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__door_window_blind_output = register.value
def __lock_mechanism_output_cb(self, register): # Check data type. if not register.data_type == "str": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__lock_mechanism_output = register.value
def __exit_btn_input_cb(self, register): # Check data type. if not register.data_type == "str": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__exit_btn_input = register.value
def __target_illum_cb(self, register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__target_illumination != register.value: self.__target_illumination = register.value
def __error_gain_cb(self, register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__error_gain != register.value: self.__error_gain = register.value
def __position_cb(self, register): # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__blind_mechanism is not None: self.__blind_mechanism.set_position(register.value)
def __object_height_cb(self, register): # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__object_height != register.value: self.__object_height = register.value
def __sunspot_limit_cb(self, register): # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__sun_spot_limit != register.value: self.__sun_spot_limit = register.value
def __zone_occupation_cb(self, register): # Check data type. if not ((register.data_type == "float") or (register.data_type == "int") or (register.data_type == "bool")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__zone_occupation != register.value: self.__zone_occupation = register.value
def __sunpos_enabled_cb(self, register): """Sun position calculation enable flag handler. Args: register (Register): The register. """ # Check data type. if not register.data_type == "bool": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__sunpos_enabled_value != register.value: self.__sunpos_enabled_value = register.value
def __pa_demand_time_cb(self, register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value < 0.0: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__demand_timer is not None: self.__demand_timer.expiration_time = register.value
def __underfloor_east_bypass_pos_cb(self, register: Register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value < 0 or register.value > 100: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__v_underfloor_east_bypass is not None: self.__v_underfloor_east_bypass.target_position = register.value
def __lower_fan_max_cb(self, register: Register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value > 100: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__lower_fan_dev is not None: self.__lower_fan_dev.max_speed = register.value
def __delta_time_cb(self, register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type(self.__logger, register) return # Check value. if register.value < 0: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__delta_time != register.value: self.__delta_time = register.value
def __generators_cooling_pos_cb(self, register: Register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value < 0 or register.value > 100: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__v_generators_cooling is not None: self.__v_generators_cooling.target_position = register.value
def __short_green_purple_pos_cb(self, register: Register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value < 0 or register.value > 100: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__v_short_green_purple is not None: self.__v_short_green_purple.target_position = register.value
def __location_elv_cb(self, register): """Get elevation of the building. Args: register (Register): The register. """ # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__location_elv != register.value: self.__location_elv = register.value
def __time_zone_cb(self, register): """Get time zone. Args: register (Register): The register. """ # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__time_zone != register.value: self.__time_zone = register.value
def __temperature_cb(self, register): """Get environment temperature. Args: register (Register): The register. """ # Check data type. if not ((register.data_type == "float") or (register.data_type == "int")): GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if self.__temperature != register.value: self.__temperature = register.value
def __thermal_force_limit_cb(self, register): # Check data type. if not (register.data_type == "float" or register.data_type == "int"): GlobalErrorHandler.log_bad_register_data_type(self.__logger, register) return # Check value. if register.value < 0: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if register.value > 100: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__thermal_force_limit = register.value
def __hp_index_cb(self, register): """Heat pump control group index callback. Args: register (Register): Register container. """ # Check data type. if not register.data_type == "int": GlobalErrorHandler.log_bad_register_data_type( self.__logger, register) return if register.value < 0: GlobalErrorHandler.log_bad_register_value(self.__logger, register) return self.__heat_pump_index = register.value
def __light_sensor_settings_cb(self, register: Register): # Check data type. if not register.data_type == "json": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if register.value != None and self.__light_sensor is None: dev_name = "{} {}".format("Test sensor", self.name) self.__light_sensor = LuxmeterFactory.create( name=dev_name, controller=self._controller, vendor=register.value['vendor'], model=register.value['model'], options=register.value['options']) if self.__light_sensor is not None: self.__light_sensor.init()
def __target_version_cb(self, register: Register): current_version = None target_version = None target_version_reg = register # Check data type of the current version. if not target_version_reg.data_type == "json": GlobalErrorHandler.log_bad_register_data_type(self.__logger, target_version_reg) return # Get target version value. if target_version_reg.value is not None: target_version = target_version_reg.value # Check the target version value. if target_version == None: GlobalErrorHandler.log_bad_register_value(self.__logger, target_version) return # Get current version register. current_version_reg = self.__registers.by_name("sys.software.current_version") # Check data type. if not ((current_version_reg.data_type == "json")): GlobalErrorHandler.log_bad_register_data_type(self.__logger, current_version_reg) return if current_version_reg is not None: current_version = current_version_reg.value # Check the current version value. if current_version == None: GlobalErrorHandler.log_bad_register_value(self.__logger, current_version) return # Update the software. software_update(current_version_reg.value, target_version_reg.value) # Save the current version. self.__app_settings.current_version = target_version_reg.value self.__app_settings.save()
def __sensor_settings_cb(self, register): # Check data type. if not register.data_type == "json": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return if register.value != {} and self.__light_sensor is None: self.__light_sensor = LightSensorFactory.create( controller=self._controller, name="Room light sensor.", vendor=register.value['vendor'], model=register.value['model'], options=register.value['options']) if self.__light_sensor is not None: self.__light_sensor.init() elif register.value == {} and self.__light_sensor is not None: self.__light_sensor.shutdown() del self.__light_sensor
def __get_sun_pos(self): sun_elev_reg = self._registers.by_name("envm.sun.elevation") if sun_elev_reg is not None: if not ((sun_elev_reg.data_type == "float") or (sun_elev_reg.data_type == "int")): GlobalErrorHandler.log_bad_register_value( self.__logger, sun_elev_reg) return if self.__sun_elev != sun_elev_reg.value: self.__sun_elev = sun_elev_reg.value sun_azm_reg = self._registers.by_name("envm.sun.azimuth") if sun_azm_reg is not None: if not ((sun_azm_reg.data_type == "float") or (sun_azm_reg.data_type == "int")): GlobalErrorHandler.log_bad_register_value( self.__logger, sun_azm_reg) return if self.__sun_azm != sun_azm_reg.value: self.__sun_azm = sun_azm_reg.value
def __blind_cb(self, register): # Check data type. if not register.data_type == "json": GlobalErrorHandler.log_bad_register_value(self.__logger, register) return # Create if register.value != {} and self.__blind_mechanism is None: self.__blind_mechanism = BlindsFactory.create( controller=self._controller, name="Blind", vendor=register.value['vendor'], model=register.value['model'], options=register.value['options']) if self.__blind_mechanism is not None: self.__blind_mechanism.init() # Delete elif register.value == {} and self.__blind_mechanism is not None: del self.__blind_mechanism