apache-camelopc-uaopcua-clientapache-camel-opcua-clientcamel-milo

Why isn't dataChangeFilterDeadbandValue key working by using Apache Camel OPC UA Client?


I'm using Apache Camel OPC UA client component to test the data change filter with Deadband Value to acquire the single tag value from Industrial Gateway OPCUA Server.

Current Spring boot and camel-milo component version:

implementation group: 'org.apache.camel', name: 'camel-milo', version: '3.22.2'
implementation group: 'org.apache.camel.springboot', name: 'camel-spring-boot-starter', version: '4.4.2'

Reading Apache Camel OPC UA client documentation to apply deadband filter feature, if I understood well, I have to use the following properties key:

  1. dataChangeFilterTrigger = StatusValue (I'm using statusValue for checking the value )
  2. dataChangeFilterDeadbandValue = xx (it depends on the deadband that I want to apply on the tag)

My performed tests is telling me that the deadband filter is not working as I showed in the following tests:

Base route with placeholder values replaced on the test id performed :

from("milo-client:opc.tcp://127.0.0.1:49310?
keyStoreUrl=file:C:\\Temp\\application\\certificate\\clientkeystore.jks
&keyPassword=123456
&keyStorePassword=123456
&applicationUri=urn:8409:test:camelopcua
&applicationName=camelopcua&node=RAW(ns=2;s=Channel2 SIMUL.SIM_1.BNAp1.18VGG1_BP)
&dataChangeFilterDeadbandValue=@placeholderTest_x@
&dataChangeFilterTrigger=@placeholderTest_x@
&monitorFilterType=dataChangeFilter")
.log("**** ${body}")
.routeId("routeDeadband");

Test_1)

dataChangeFilterTrigger = StatusValue

dataChangeFilterDeadbandValue = 0.001

2024-07-04 06:36:51,852 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486117072252, javaDate=Thu Jul 04 06:36:51 UTC 2024}, serverTime=DateTime{utcTime=133645486117072252, javaDate=Thu Jul 04 06:36:51 UTC 2024}}2024-07-04 06:36:52,853 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.9666667}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486126951326, javaDate=Thu Jul 04 06:36:52 UTC 2024}, serverTime=DateTime{utcTime=133645486126951326, javaDate=Thu Jul 04 06:36:52 UTC 2024}}2024-07-04 06:36:53,849 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486136802804, javaDate=Thu Jul 04 06:36:53 UTC 2024}, serverTime=DateTime{utcTime=133645486136802804, javaDate=Thu Jul 04 06:36:53 UTC 2024}}2024-07-04 06:36:54,844 milo-shared-thread-pool-2 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486146648052, javaDate=Thu Jul 04 06:36:54 UTC 2024}, serverTime=DateTime{utcTime=133645486146648052, javaDate=Thu Jul 04 06:36:54 UTC 2024}}2024-07-04 06:36:55,854 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.942857}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486156406461, javaDate=Thu Jul 04 06:36:55 UTC 2024}, serverTime=DateTime{utcTime=133645486156406461, javaDate=Thu Jul 04 06:36:55 UTC 2024}}2024-07-04 06:36:56,849 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.9666667}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486166262211, javaDate=Thu Jul 04 06:36:56 UTC 2024}, serverTime=DateTime{utcTime=133645486166262211, javaDate=Thu Jul 04 06:36:56 UTC 2024}}2024-07-04 06:36:57,851 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486171756029, javaDate=Thu Jul 04 06:36:57 UTC 2024}, serverTime=DateTime{utcTime=133645486171756029, javaDate=Thu Jul 04 06:36:57 UTC 2024}}2024-07-04 06:36:58,844 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486187076878, javaDate=Thu Jul 04 06:36:58 UTC 2024}, serverTime=DateTime{utcTime=133645486187076878, javaDate=Thu Jul 04 06:36:58 UTC 2024}}2024-07-04 06:36:59,849 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486196926821, javaDate=Thu Jul 04 06:36:59 UTC 2024}, serverTime=DateTime{utcTime=133645486196926821, javaDate=Thu Jul 04 06:36:59 UTC 2024}}2024-07-04 06:37:00,851 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486206806697, javaDate=Thu Jul 04 06:37:00 UTC 2024}, serverTime=DateTime{utcTime=133645486206806697, javaDate=Thu Jul 04 06:37:00 UTC 2024}}2024-07-04 06:37:01,846 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486216593861, javaDate=Thu Jul 04 06:37:01 UTC 2024}, serverTime=DateTime{utcTime=133645486216593861, javaDate=Thu Jul 04 06:37:01 UTC 2024}}
2024-07-04 06:37:02,847 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486222116969, javaDate=Thu Jul 04 06:37:02 UTC 2024}, serverTime=DateTime{utcTime=133645486222116969, javaDate=Thu Jul 04 06:37:02 UTC 2024}}
2024-07-04 06:37:03,849 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486236275381, javaDate=Thu Jul 04 06:37:03 UTC 2024}, serverTime=DateTime{utcTime=133645486236275381, javaDate=Thu Jul 04 06:37:03 UTC 2024}}
2024-07-04 06:37:04,849 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486247209000, javaDate=Thu Jul 04 06:37:04 UTC 2024}, serverTime=DateTime{utcTime=133645486247209000, javaDate=Thu Jul 04 06:37:04 UTC 2024}}
2024-07-04 06:37:05,853 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486257072613, javaDate=Thu Jul 04 06:37:05 UTC 2024}, serverTime=DateTime{utcTime=133645486257072613, javaDate=Thu Jul 04 06:37:05 UTC 2024}}
2024-07-04 06:37:06,851 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486266939791, javaDate=Thu Jul 04 06:37:06 UTC 2024}, serverTime=DateTime{utcTime=133645486266939791, javaDate=Thu Jul 04 06:37:06 UTC 2024}}
2024-07-04 06:37:07,848 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486276787705, javaDate=Thu Jul 04 06:37:07 UTC 2024}, serverTime=DateTime{utcTime=133645486276787705, javaDate=Thu Jul 04 06:37:07 UTC 2024}}
2024-07-04 06:37:08,846 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645486286565108, javaDate=Thu Jul 04 06:37:08 UTC 2024}, serverTime=DateTime{utcTime=133645486286565108, javaDate=Thu Jul 04 06:37:08 UTC 2024}}

Test_2)

dataChangeFilterTrigger = StatusValue

dataChangeFilterDeadbandValue = 0.01

2024-07-04 06:34:09,570 milo-shared-thread-pool-2 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484491791570, javaDate=Thu Jul 04 06:34:09 UTC 2024}, serverTime=DateTime{utcTime=133645484491791570, javaDate=Thu Jul 04 06:34:09 UTC 2024}}
2024-07-04 06:34:10,573 milo-shared-thread-pool-2 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484501646388, javaDate=Thu Jul 04 06:34:10 UTC 2024}, serverTime=DateTime{utcTime=133645484501646388, javaDate=Thu Jul 04 06:34:10 UTC 2024}}
2024-07-04 06:34:11,569 milo-shared-thread-pool-2 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484511409944, javaDate=Thu Jul 04 06:34:11 UTC 2024}, serverTime=DateTime{utcTime=133645484511409944, javaDate=Thu Jul 04 06:34:11 UTC 2024}}
2024-07-04 06:34:12,568 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484521286485, javaDate=Thu Jul 04 06:34:12 UTC 2024}, serverTime=DateTime{utcTime=133645484521286485, javaDate=Thu Jul 04 06:34:12 UTC 2024}}
2024-07-04 06:34:13,570 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484531171024, javaDate=Thu Jul 04 06:34:13 UTC 2024}, serverTime=DateTime{utcTime=133645484531171024, javaDate=Thu Jul 04 06:34:13 UTC 2024}}
2024-07-04 06:34:14,567 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484541032215, javaDate=Thu Jul 04 06:34:14 UTC 2024}, serverTime=DateTime{utcTime=133645484541032215, javaDate=Thu Jul 04 06:34:14 UTC 2024}}
2024-07-04 06:34:15,566 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484550859004, javaDate=Thu Jul 04 06:34:15 UTC 2024}, serverTime=DateTime{utcTime=133645484550859004, javaDate=Thu Jul 04 06:34:15 UTC 2024}}
2024-07-04 06:34:16,570 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484561764724, javaDate=Thu Jul 04 06:34:16 UTC 2024}, serverTime=DateTime{utcTime=133645484561764724, javaDate=Thu Jul 04 06:34:16 UTC 2024}}
2024-07-04 06:34:17,571 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484571580985, javaDate=Thu Jul 04 06:34:17 UTC 2024}, serverTime=DateTime{utcTime=133645484571580985, javaDate=Thu Jul 04 06:34:17 UTC 2024}}
2024-07-04 06:34:18,573 milo-shared-thread-pool-2 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.9666667}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645484581482454, javaDate=Thu Jul 04 06:34:18 UTC 2024}, serverTime=DateTime{utcTime=133645484581482454, javaDate=Thu Jul 04 06:34:18 UTC 2024}}

Test_3)

dataChangeFilterTrigger = StatusValue

dataChangeFilterDeadbandValue = 0.1

 2024-07-04 06:38:56,790 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487367572683, javaDate=Thu Jul 04 06:38:56 UTC 2024}, serverTime=DateTime{utcTime=133645487367572683, javaDate=Thu Jul 04 06:38:56 UTC 2024}}
2024-07-04 06:38:57,787 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487373034158, javaDate=Thu Jul 04 06:38:57 UTC 2024}, serverTime=DateTime{utcTime=133645487373034158, javaDate=Thu Jul 04 06:38:57 UTC 2024}}
2024-07-04 06:38:58,785 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487387204906, javaDate=Thu Jul 04 06:38:58 UTC 2024}, serverTime=DateTime{utcTime=133645487387204906, javaDate=Thu Jul 04 06:38:58 UTC 2024}}
2024-07-04 06:38:59,790 milo-shared-thread-pool-3 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487397079011, javaDate=Thu Jul 04 06:38:59 UTC 2024}, serverTime=DateTime{utcTime=133645487397079011, javaDate=Thu Jul 04 06:38:59 UTC 2024}}
2024-07-04 06:39:00,789 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487402524037, javaDate=Thu Jul 04 06:39:00 UTC 2024}, serverTime=DateTime{utcTime=133645487402524037, javaDate=Thu Jul 04 06:39:00 UTC 2024}}
2024-07-04 06:39:01,783 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487412409085, javaDate=Thu Jul 04 06:39:01 UTC 2024}, serverTime=DateTime{utcTime=133645487412409085, javaDate=Thu Jul 04 06:39:01 UTC 2024}}
2024-07-04 06:39:02,785 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487427749867, javaDate=Thu Jul 04 06:39:02 UTC 2024}, serverTime=DateTime{utcTime=133645487427749867, javaDate=Thu Jul 04 06:39:02 UTC 2024}}
2024-07-04 06:39:03,787 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487437559370, javaDate=Thu Jul 04 06:39:03 UTC 2024}, serverTime=DateTime{utcTime=133645487437559370, javaDate=Thu Jul 04 06:39:03 UTC 2024}}
2024-07-04 06:39:04,791 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487447390847, javaDate=Thu Jul 04 06:39:04 UTC 2024}, serverTime=DateTime{utcTime=133645487447390847, javaDate=Thu Jul 04 06:39:04 UTC 2024}}
2024-07-04 06:39:05,782 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487457187133, javaDate=Thu Jul 04 06:39:05 UTC 2024}, serverTime=DateTime{utcTime=133645487457187133, javaDate=Thu Jul 04 06:39:05 UTC 2024}}
2024-07-04 06:39:06,789 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487467051678, javaDate=Thu Jul 04 06:39:06 UTC 2024}, serverTime=DateTime{utcTime=133645487467051678, javaDate=Thu Jul 04 06:39:06 UTC 2024}}
2024-07-04 06:39:07,783 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645487472586697, javaDate=Thu Jul 04 06:39:07 UTC 2024}, serverTime=DateTime{utcTime=133645487472586697, javaDate=Thu Jul 04 06:39:07 UTC 2024}}

Test_4)

dataChangeFilterTrigger = StatusValue

dataChangeFilterDeadbandValue = 1

2024-07-04 06:40:24,583 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488242348177, javaDate=Thu Jul 04 06:40:24 UTC 2024}, serverTime=DateTime{utcTime=133645488242348177, javaDate=Thu Jul 04 06:40:24 UTC 2024}}
2024-07-04 06:40:25,584 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.05}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488252284656, javaDate=Thu Jul 04 06:40:25 UTC 2024}, serverTime=DateTime{utcTime=133645488252284656, javaDate=Thu Jul 04 06:40:25 UTC 2024}}
2024-07-04 06:40:26,584 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488257747604, javaDate=Thu Jul 04 06:40:25 UTC 2024}, serverTime=DateTime{utcTime=133645488257747604, javaDate=Thu Jul 04 06:40:25 UTC 2024}}
2024-07-04 06:40:27,586 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488273022197, javaDate=Thu Jul 04 06:40:27 UTC 2024}, serverTime=DateTime{utcTime=133645488273022197, javaDate=Thu Jul 04 06:40:27 UTC 2024}}
2024-07-04 06:40:28,584 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488282885735, javaDate=Thu Jul 04 06:40:28 UTC 2024}, serverTime=DateTime{utcTime=133645488282885735, javaDate=Thu Jul 04 06:40:28 UTC 2024}}
2024-07-04 06:40:29,583 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488292682931, javaDate=Thu Jul 04 06:40:29 UTC 2024}, serverTime=DateTime{utcTime=133645488292682931, javaDate=Thu Jul 04 06:40:29 UTC 2024}}
2024-07-04 06:40:30,588 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.8}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488302517455, javaDate=Thu Jul 04 06:40:30 UTC 2024}, serverTime=DateTime{utcTime=133645488302517455, javaDate=Thu Jul 04 06:40:30 UTC 2024}}
2024-07-04 06:40:31,587 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.9666667}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488312376079, javaDate=Thu Jul 04 06:40:31 UTC 2024}, serverTime=DateTime{utcTime=133645488312376079, javaDate=Thu Jul 04 06:40:31 UTC 2024}}
2024-07-04 06:40:32,588 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488322267329, javaDate=Thu Jul 04 06:40:32 UTC 2024}, serverTime=DateTime{utcTime=133645488322267329, javaDate=Thu Jul 04 06:40:32 UTC 2024}}
2024-07-04 06:40:33,586 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488327669740, javaDate=Thu Jul 04 06:40:32 UTC 2024}, serverTime=DateTime{utcTime=133645488327669740, javaDate=Thu Jul 04 06:40:32 UTC 2024}}
2024-07-04 06:40:34,581 milo-shared-thread-pool-0 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.0}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645488342986708, javaDate=Thu Jul 04 06:40:34 UTC 2024}, serverTime=DateTime{utcTime=133645488342986708, javaDate=Thu Jul 04 06:40:34 UTC 2024}}

Test_5)

dataChangeFilterTrigger = StatusValue

dataChangeFilterDeadbandValue = 10

2024-07-04 09:00:48,048 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572479092312, javaDate=Thu Jul 04 09:00:47 UTC 2024}, serverTime=DateTime{utcTime=133645572479092312, javaDate=Thu Jul 04 09:00:47 UTC 2024}}
2024-07-04 09:00:49,049 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572490049997, javaDate=Thu Jul 04 09:00:49 UTC 2024}, serverTime=DateTime{utcTime=133645572490049997, javaDate=Thu Jul 04 09:00:49 UTC 2024}}
2024-07-04 09:00:50,056 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572499931469, javaDate=Thu Jul 04 09:00:49 UTC 2024}, serverTime=DateTime{utcTime=133645572499931469, javaDate=Thu Jul 04 09:00:49 UTC 2024}}
2024-07-04 09:00:51,056 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=2.925}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572509718650, javaDate=Thu Jul 04 09:00:50 UTC 2024}, serverTime=DateTime{utcTime=133645572509718650, javaDate=Thu Jul 04 09:00:50 UTC 2024}}
2024-07-04 09:00:52,057 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572519602261, javaDate=Thu Jul 04 09:00:51 UTC 2024}, serverTime=DateTime{utcTime=133645572519602261, javaDate=Thu Jul 04 09:00:51 UTC 2024}}
2024-07-04 09:00:53,053 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572525013237, javaDate=Thu Jul 04 09:00:52 UTC 2024}, serverTime=DateTime{utcTime=133645572525013237, javaDate=Thu Jul 04 09:00:52 UTC 2024}}
2024-07-04 09:00:54,056 milo-shared-thread-pool-1 INFO - [routeDeadband] - **** DataValue{value=Variant{value=3.1333334}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=133645572539303064, javaDate=Thu Jul 04 09:00:53 UTC 2024}, serverTime=DateTime{utcTime=133645572539303064, javaDate=Thu Jul 04 09:00:53 UTC 2024}}

In the tests performed the behavior is always the same. if you look the sequence data values DataValue{value=Variant{value=xx} of each test in several cases I wouldn't have to receive any values, because the deadband value wasn't overcome.

if I try to set the same deadband value like the Test_4 with Prosys OPC UA Client I have got the right behavior enter image description here


Solution

  • ISSUE SOLVED

    Created UInteger Bean instance set to 1 value in Bean Configuration, see the following:

    import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
        
        @Bean("DeadbandParamater")
        public UInteger deadbandParamater() {
            return UInteger.valueOf(1);
        }
    
    } 
    

    After that the right configuration of OPC UA milo client

    from("milo-client:opc.tcp://127.0.0.1:49310?
    keyStoreUrl=file:C:\\Temp\\application\\certificate\\clientkeystore.jks
    &keyPassword=123456
    &keyStorePassword=123456
    &applicationUri=urn:8409:test:camelopcua
    &applicationName=camelopcua&node=RAW(ns=2;s=Channel2 SIMUL.SIM_1.BNAp1.18VGG1_1XA)
    &dataChangeFilterDeadbandValue=0.2
    &dataChangeFilterTrigger=StatusValue
    &dataChangeFilterDeadbandType=#bean:DeadbandParamater
    &monitorFilterType=dataChangeFilter
    &samplingInterval=1000").log("**** ${body}").routeId("routeDeadband");
    

    ref bean by using query parameter syntax

    dataChangeFilterDeadbandType=#bean:DeadbandParamater
    

    link to DataChangeFilter

    Test performed:

    enter image description here