extended output and readme
This commit is contained in:
@ -1,21 +1,25 @@
|
||||
import re
|
||||
import json
|
||||
from AbstractDataObject import AbstractDataObject
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
class FlatDataObject(AbstractDataObject):
|
||||
def __init__(self, serverName, nameSpaceIndex, variableName, value):
|
||||
def __init__(self, serverName, nameSpaceIndex, variableName, dataValue):
|
||||
super().__init__(serverName + '/' + str(nameSpaceIndex) + '/' + variableName)
|
||||
self.serverName = serverName
|
||||
self.nameSpaceIndex = nameSpaceIndex
|
||||
self.variableName = variableName
|
||||
self.value = value
|
||||
self.dataValue = dataValue
|
||||
|
||||
def getPayload(self):
|
||||
payload = {
|
||||
"serverName": self.serverName,
|
||||
"nameSpaceIndex": self.nameSpaceIndex,
|
||||
"variableName": self.variableName,
|
||||
"value": self.value
|
||||
"server": self.serverName,
|
||||
"ns": self.nameSpaceIndex,
|
||||
"d": self.variableName,
|
||||
"value": self.dataValue.Value.Value,
|
||||
"status": self.dataValue.StatusCode.name,
|
||||
"t1": str(self.dataValue.SourceTimestamp),
|
||||
"t2": str(self.dataValue.ServerTimestamp),
|
||||
"t3": str(datetime.utcnow())
|
||||
}
|
||||
return json.dumps(payload)
|
||||
|
@ -36,13 +36,14 @@ class OpcUaRequester(threading.Thread):
|
||||
try:
|
||||
logger.debug(f"Trying {self.name} {self.url} ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
node = client.get_node(f"ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
value = await node.read_value()
|
||||
|
||||
dataValue = await node.read_data_value()
|
||||
displayName = nodeSpec['d'] if ('d' in nodeSpec) else (await node.read_display_name()).Text
|
||||
logger.debug(f"Got: {displayName=} = {value=}")
|
||||
logger.debug(f"Got: {displayName=} = {dataValue.Value.Value=}")
|
||||
if self.flat:
|
||||
self.queue.put(FlatDataObject(self.name, nodeSpec['ns'], displayName, value))
|
||||
self.queue.put(FlatDataObject(self.name, nodeSpec['ns'], displayName, dataValue))
|
||||
else:
|
||||
dataObject.add(displayName, value)
|
||||
dataObject.add(displayName, dataValue)
|
||||
self.stats.incOpcUaRequests()
|
||||
except ua.UaError as e:
|
||||
self.stats.incOpcUaErrors()
|
||||
|
@ -1,15 +1,22 @@
|
||||
import re
|
||||
import json
|
||||
from AbstractDataObject import AbstractDataObject
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
class StructuredDataObject(AbstractDataObject):
|
||||
def __init__(self, topicPart):
|
||||
super().__init__(topicPart)
|
||||
self.keyValuePairs = {}
|
||||
|
||||
def add(self, key, value):
|
||||
self.keyValuePairs[key] = value
|
||||
def add(self, key, dataValue):
|
||||
self.keyValuePairs[key] = {
|
||||
"value": dataValue.Value.Value,
|
||||
"status": dataValue.StatusCode.name,
|
||||
"t1": str(dataValue.SourceTimestamp),
|
||||
"t2": str(dataValue.ServerTimestamp),
|
||||
"t3": str(datetime.utcnow())
|
||||
}
|
||||
|
||||
|
||||
def getPayload(self):
|
||||
return json.dumps(self.keyValuePairs)
|
||||
|
@ -11,7 +11,7 @@
|
||||
"opcua": [
|
||||
{
|
||||
"enabled": "true",
|
||||
"type": "structured",
|
||||
"type": "flat",
|
||||
"url": "opc.tcp://172.16.3.60:4840",
|
||||
"name": "apl",
|
||||
"period": 1.0,
|
||||
|
Reference in New Issue
Block a user