Beispiel #1
0
    async def set_build_info(self, product_uri, manufacturer_name, product_name, software_version, build_number, build_date):
        status_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus))
        build_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo))

        status = await status_node.read_value()
        if status is None:
            # first time
            status = ua.ServerStatusDataType()
            status.SecondsTillShutdown = 0

        status.BuildInfo.ProductUri = product_uri
        status.BuildInfo.ManufacturerName = manufacturer_name
        status.BuildInfo.ProductName = product_name
        status.BuildInfo.SoftwareVersion = software_version
        status.BuildInfo.BuildNumber = build_number
        status.BuildInfo.BuildDate = build_date

        await status_node.write_value(status)
        await build_node.write_value(status.BuildInfo)

        # we also need to update all individual nodes :/
        product_uri_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ProductUri))
        product_name_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ProductName))
        product_manufacturer_name_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ManufacturerName))
        product_software_version_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_SoftwareVersion))
        product_build_number_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_BuildNumber))
        product_build_date_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_BuildDate))

        await product_uri_node.write_value(status.BuildInfo.ProductUri)
        await product_name_node.write_value(status.BuildInfo.ProductName)
        await product_manufacturer_name_node.write_value(status.BuildInfo.ManufacturerName)
        await product_software_version_node.write_value(status.BuildInfo.SoftwareVersion)
        await product_build_number_node.write_value(status.BuildInfo.BuildNumber)
        await product_build_date_node.write_value(status.BuildInfo.BuildDate)
Beispiel #2
0
    async def set_build_info(self, product_uri, manufacturer_name, product_name, software_version,
                             build_number, build_date):
        
        if not all(isinstance(arg, str) for arg in [
            product_uri, 
            manufacturer_name, 
            product_name, 
            software_version, 
            build_number
            ]):
            raise TypeError(f"""Expected all str got 
                product_uri: {type(product_uri)}, 
                manufacturer_name: {type(manufacturer_name)}, 
                product_name: {type(product_name)}, 
                software_version: {type(software_version)}, 
                build_number: {type(build_number)}
                instead!""")
        
        if not isinstance(build_date, datetime):
            raise TypeError(f"Expected datetime got {type(build_date)} instead!")
        
        status_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus))
        build_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo))

        status = await status_node.read_value()
        if status is None:
            # first time
            status = ua.ServerStatusDataType()
            status.SecondsTillShutdown = 0

        status.BuildInfo.ProductUri = product_uri
        status.BuildInfo.ManufacturerName = manufacturer_name
        status.BuildInfo.ProductName = product_name
        status.BuildInfo.SoftwareVersion = software_version
        status.BuildInfo.BuildNumber = build_number
        status.BuildInfo.BuildDate = build_date

        await status_node.write_value(status)
        await build_node.write_value(status.BuildInfo)

        # we also need to update all individual nodes :/
        product_uri_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ProductUri))
        product_name_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ProductName))
        product_manufacturer_name_node = self.get_node(
            ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_ManufacturerName))
        product_software_version_node = self.get_node(
            ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_SoftwareVersion))
        product_build_number_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_BuildNumber))
        product_build_date_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo_BuildDate))

        await product_uri_node.write_value(status.BuildInfo.ProductUri)
        await product_name_node.write_value(status.BuildInfo.ProductName)
        await product_manufacturer_name_node.write_value(status.BuildInfo.ManufacturerName)
        await product_software_version_node.write_value(status.BuildInfo.SoftwareVersion)
        await product_build_number_node.write_value(status.BuildInfo.BuildNumber)
        await product_build_date_node.write_value(status.BuildInfo.BuildDate)
Beispiel #3
0
 async def init(self, shelf_file=None):
     await self.iserver.init(shelf_file)
     # setup some expected values
     await self.set_application_uri(self._application_uri)
     sa_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerArray))
     await sa_node.set_value([self._application_uri])
     status_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus))
     build_node = self.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_BuildInfo))
     status = ua.ServerStatusDataType()
     status.BuildInfo.ProductUri = self.product_uri
     status.BuildInfo.ManufacturerName = self.manufacturer_name
     status.BuildInfo.ProductName = self.name
     status.BuildInfo.SoftwareVersion = "1.0pre"
     status.BuildInfo.BuildNumber = "0"
     status.BuildInfo.BuildDate = datetime.now()
     status.SecondsTillShutdown = 0
     await status_node.set_value(status)
     await build_node.set_value(status.BuildInfo)