コード例 #1
0
ファイル: scheduler.py プロジェクト: ThousandMileEye/eye
        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
コード例 #2
0
    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
コード例 #3
0
    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