def job_function(name): # # DB への 接続 # with SessionFactory() as session: # # オブジェクト一覧の取得 # taskGroup = session.query(TaskGroup).filter_by( name=name).first() if taskGroup == None: return # # BACnet コマンド操作用インスタンス取得 # app = SingleBACnetd.getApplication() if app == None: return bacnet = BACnetClient(app) # # Data Store の 取得 # datastore = SingleBACnetd().getDatastore() # # タスクの取得 # for task in taskGroup.bacnetTasks: # # リクエストの実行 # value = bacnet.ReadPropertyRequest(task.device_id, task.object_id, task.instance_id, task.property_id) # # 計測値のセットアップ # datastore.setBACnetValue(DatastoreType.MEASUREMENT, task.object_id, task.instance_id, task.property_id, value) # # 値の保存 # task.measuredValues.append(BACnetMeasuredValue(value)) session.commit() # # 例外の検知 # assert sys.exc_info()[0] == None, sys.exc_info() return False
def setType(self, type, value): # # プロパティ種別の設定 # self.type = type datastore = SingleBACnetd().getDatastore() # # プロパティ種別が「STATIC」の場合 # if type == DatastoreType.STATIC: # # 鍵の取得 # self.key = datastore.getBACnetKey( DatastoreType.STATIC, self.object_id, self.instance_id, self.property_id, ) # # 初期値の設定 # datastore.setBACnetValue(DatastoreType.STATIC, self.object_id, self.instance_id, self.property_id, value) return True # # プロパティ種別が「MEASUREMENT」の場合 # else: # # DB への 接続 # with SessionFactory() as session: # # タスクの確認 # task = session.query(BACnetTask).filter_by(id=value).first() # # 鍵の取得 # self.key = datastore.getBACnetKey( DatastoreType.MEASUREMENT, task.object_id, task.instance_id, task.property_id, ) return True return False
def exposed_setProperty(self, name, property_id, value): # # DB への 接続 # with SessionFactory() as session: # # オブジェクト名が登録されているかを確認 # obj = session.query(BACnetSimulationObject).filter_by( name=name).first() if obj == None: return False # # プロパティ名が登録されているかを確認 # prop = obj.properties.filter_by(property_id=property_id).first() if prop == None: return False # # Datastore の 取得 # datastore = SingleBACnetd().getDatastore() # # 値の設定 # datastore.setBACnetValue(DatastoreType.STATIC, obj.object_id, obj.instance_id, prop.property_id, value) # # プロパティ(DB)の更新 # prop.value = value # # 変更処理のコミット # session.commit() return True # # 例外の確認 # assert sys.exc_info()[0] == None, sys.exc_info() return False