OPCBrowseTag.getDataType() => system.tag.addtag()

Does anyone have a x-ref for Java data type to the string data type accepted by system.tag.addtag() ?

Possible basic values are Int1, Int2, Int4, Int8, Float4, Float8, Boolean, String, DataSet, and DateTime.
Possible array values are Int4Array, Int8Array, Float8Array, BooleanArray, StringArray, DateTimeArray.

Referencing DataType:

    Int1(0, Byte.class, Types.SMALLINT),
    Int2(1, Short.class, Types.SMALLINT),
    Int4(2, Integer.class, Types.INTEGER),
    Int8(3, Long.class, Types.BIGINT),
    Float4(4, Float.class, Types.FLOAT),
    Float8(5, Double.class, Types.DOUBLE),
    Boolean(6, Boolean.class, Types.BOOLEAN),
    String(7, String.class, Types.VARCHAR),
    DateTime(8, Date.class, Types.TIMESTAMP),
    DataSet(9, Dataset.class, Types.BLOB),
    Text(10, String.class, Types.LONGVARCHAR),
    Int1Array(17, Byte[].class, Types.SMALLINT),
    Int2Array(18, Short[].class, Types.SMALLINT),
    Int4Array(11, Integer[].class, Types.INTEGER),
    Int8Array(12, Long[].class, Types.BIGINT),
    Float4Array(19, Float[].class, Types.FLOAT),
    Float8Array(13, Double[].class, Types.DOUBLE),
    BooleanArray(14, Boolean[].class, Types.BOOLEAN),
    StringArray(15, String[].class, Types.VARCHAR),
    DateTimeArray(16, Date[].class, Types.TIMESTAMP),

Thank You

class TagCreator(object):
	def __init__(self,tagPath,tagProvider='[default]'):
		self._projectName = system.util.getProjectName()
		self._logger = system.util.getLogger(self._projectName + '.' + self.__class__.__name__)
		self._tagPath = tagPath
		self._tagProvider = tagProvider
		
	def TagPathTree(self):
		return self._tagPath.replace('.','/')
	
	def ParentPathTree(self):
		return self.TagPathTree().rpartition('/')[0]
	
	def TagName(self):
		return self.TagPathTree().rpartition('/')[2]
	
	def Exists(self):
		return system.tag.exists("%s%s" % (self._tagProvider,self.TagPathTree()))
		
class OpcTagCreator(TagCreator):
	def __init__(self,opcServer,tagPath,tagProvider='[]'):
		super(OpcTagCreator,self).__init__(tagPath,tagProvider)
		self._opcServer = opcServer
		
	def Create(self,browsePrefix='*'):
		if not self.Exists():
			folderPath = browsePrefix+self._tagPath
			self._logger.info("'%s' does not exist" % self._tagPath)
			self._logger.info("Searching '%s' for '%s'" % (self._opcServer,folderPath))
			serverTags = system.opc.browse(opcServer=self._opcServer, folderPath=folderPath)
			if len(serverTags) != 1:
				self._logger.error("%d results, unable to create tag!" % (len(serverTags)))
				return False
			else:
				serverTag = serverTags[0]
				from com.inductiveautomation.ignition.common.sqltags.model.types import DataType
				dataType = DataType.getTypeForClass(serverTag.getDataType())
				self._logger.info("Adding '%s' of type '%s' as '%s'" % (serverTag.getOpcItemPath(),str(serverTag.getDataType()),str(dataType)))
				system.tag.addTag(
					parentPath=self._tagProvider+self.ParentPathTree(), 
					name=self.TagName(), 
					tagType='OPC', 
					dataType=str(dataType), 
					attributes={
						"OPCServer"		:	self._opcServer, 
						"OPCItemPath"	:	serverTag.getOpcItemPath()
					})
				return self.Exists()
					
		else:
			self._logger.info("'%s' already exists" % self._tagPath)
			return None
1 Like