[Feature-7753] Addon some specific bacnet object type to IGN Bacnet driver process?

Hi @Kevin.Herro, regardless of changes to Bacnet stack Encodable in current functions.
Do you have any news regarding the integration of readRawMultiple/ writeRawMultiple Bacnet functions?

They are implemented, pending QA, targeted to 8.1.32 right now.

That is good news! We are looking forward to it. Thanks.
As @mazeyrat said before and has done in the past, if we can help by testing a beta bacnet driver module, please do.

You'll be able to test it when it gets merged and becomes available in the nightly release.

2 Likes

I tried the system.bacnet.readRawMultiple function with the elements of the previous system.bacnet.readRaw function call included in a list but unfortunately, it seems that there is a problem with the system.bacnet signature. readRawMultiple

Blockquote
result = system.bacnet.readRawMultiple(dn, [ot], [oin], [pid])

Blockquote
com.inductiveautomation.ignition.common.script.JythonExecException
Traceback (most recent call last):
File "function:runAction", line 45, in runAction
File "function:runAction", line 45, in runAction
at com.inductiveautomation.ignition.drivers.bacnet.scripting.BacnetScriptingFunctions.readRawMultiple(BacnetScriptingFunctions.kt:224)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
java.lang.NoSuchMethodError: java.lang.NoSuchMethodError: 'java.util.List com.inductiveautomation.ignition.common.script.PyArgParser.requireList(java.lang.String, java.lang.Class)'

at org.python.core.Py.JavaError(Py.java:547)
at org.python.core.Py.JavaError(Py.java:538)
at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:192)
at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction.__call__(ScriptManager.java:552)
at org.python.core.PyObject.__call__(PyObject.java:512)
at org.python.core.PyObject.__call__(PyObject.java:517)
at org.python.pycode._pyx40026.runAction$1(<function:runAction>:73)
at org.python.pycode._pyx40026.call_function(<function:runAction>)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:306)
at org.python.core.PyFunction.function___call__(PyFunction.java:474)
at org.python.core.PyFunction.__call__(PyFunction.java:469)
at org.python.core.PyFunction.__call__(PyFunction.java:464)
at com.inductiveautomation.ignition.common.script.ScriptManager.runFunction(ScriptManager.java:846)
at com.inductiveautomation.ignition.common.script.ScriptManager.runFunction(ScriptManager.java:828)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.runFunction(ProjectScriptLifecycle.java:832)
at com.inductiveautomation.ignition.common.script.ScriptManager$ScriptFunctionImpl.invoke(ScriptManager.java:1009)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.invoke(ProjectScriptLifecycle.java:897)
at com.inductiveautomation.perspective.gateway.script.ScriptFunctionHelper.invoke(ScriptFunctionHelper.java:158)
at com.inductiveautomation.perspective.gateway.script.ScriptFunctionHelper.invoke(ScriptFunctionHelper.java:97)
at com.inductiveautomation.perspective.gateway.action.ScriptAction.runAction(ScriptAction.java:74)
at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.lambda$call$0(ActionCollection.java:263)
at com.inductiveautomation.perspective.gateway.api.LoggingContext.mdc(LoggingContext.java:54)
at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.call(ActionCollection.java:252)
at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.call(ActionCollection.java:221)
at com.inductiveautomation.perspective.gateway.threading.BlockingTaskQueue$TaskWrapper.run(BlockingTaskQueue.java:154)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.inductiveautomation.perspective.gateway.threading.BlockingWork$BlockingWorkRunnable.run(BlockingWork.java:58)
at java.base/java.lang.Thread.run(Unknown Source)

Caused by: org.python.core.PyException
Traceback (most recent call last):
File "function:runAction", line 45, in runAction
File "function:runAction", line 45, in runAction
at com.inductiveautomation.ignition.drivers.bacnet.scripting.BacnetScriptingFunctions.readRawMultiple(BacnetScriptingFunctions.kt:224)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
java.lang.NoSuchMethodError: java.lang.NoSuchMethodError: 'java.util.List com.inductiveautomation.ignition.common.script.PyArgParser.requireList(java.lang.String, java.lang.Class)'

... 32 more

Caused by: java.lang.NoSuchMethodError
com.inductiveautomation.ignition.common.GenericTransferrableException: 'java.util.List com.inductiveautomation.ignition.common.script.PyArgParser.requireList(java.lang.String, java.lang.Class)'
at com.inductiveautomation.ignition.drivers.bacnet.scripting.BacnetScriptingFunctions.readRawMultiple(BacnetScriptingFunctions.kt:224)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.call(PyReflectedFunction.java:190)
... 29 more

Ignition v8.1.30 (b2023071408)
Java: Azul Systems, Inc. 11.0.18

Looks like you need the matching platform nightly, and we need to update the required platform version in the module.

2 Likes

Thank you very much for the implementation of the additional Bacnet functions of 8.1.32, this opens up many more possibilities.

In the same way, would it be possible to complete them with the following stack functions?

  • GetAlarmSummary / GetEventInformation: For making active alarms and events available in the device
  • AcknowledgeAlarm: For acknowledgment of alarms. Indeed, certain alarms/events can be blocking for the process
  • ReadRange: For reading historical data in the device.

Adding functionality to the module will bypass the dependency with the OPC UA 1.05 update

2 Likes

Hi @Kevin.Herron,
Any suggestions or progress on subject?

I'll write up a feature ticket for this, but there's no plan and no developer bandwidth to work on these right now.

1 Like

We never know, it is best to strike while the iron is hot!
I stay on top of new priority assignement of the feature ticket.
Thanks a lot,

Any breakthrough of feature ticket? processing date affected?
Have a good day.

No, nobody is looking at or working on this stuff right now.