Я использую клиентский компонент Apache Camel OPC UA для тестирования фильтра изменения данных со значением зоны нечувствительности для получения значения одного тега от сервера Industrial Gateway OPCUA.
Текущая версия загрузки Spring и компонента Camel-Milo:
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'
Чтение документации клиента Apache Camel OPC UA для применения функции фильтра мертвой зоны. Если я хорошо понял, мне нужно использовать следующий ключ свойств:
Мои выполненные тесты говорят мне, что фильтр мертвой зоны не работает, как я показал в следующих тестах:
Базовый маршрут со значениями заполнителей, замененными на выполненный идентификатор теста:
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");
Тест_1)
dataChangeFilterTrigger = СтатусЗначение
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}}
Тест_2)
dataChangeFilterTrigger = СтатусЗначение
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}}
Тест_3)
dataChangeFilterTrigger = СтатусЗначение
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}}
Тест_4)
dataChangeFilterTrigger = СтатусЗначение
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}}
Тест_5)
dataChangeFilterTrigger = СтатусЗначение
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}}
В проведенных тестах поведение всегда одинаковое. если вы посмотрите значения данных последовательности DataValue{value=Variant{value=xx}
каждого теста в нескольких случаях, мне не пришлось бы получать никаких значений, потому что значение зоны нечувствительности не было преодолено.
если я попытаюсь установить то же значение зоны нечувствительности, что и Test_4, с помощью клиента Prosys OPC UA, у меня будет правильное поведение
Можете ли вы получить запись всего сеанса в Wireshark?
Возможно, клиент не создает MonitoredItems с правильными настройками, а также возможно, что сервер просто игнорирует зону нечувствительности, и в этом случае вам ничего не остается, как пожаловаться этому поставщику сервера.
редактировать:
Похоже, вы не устанавливаете значение конфигурации dataChangeFilterDeadbandType
. См. https://github.com/apache/camel/blob/camel-3.22.x/comComponents/camel-milo/src/main/java/org/apache/camel/comComponent/milo/client/MonitorFilterConfiguration.java.
Wireshark работает, когда оба программного обеспечения установлены на одном компьютере. Я недостаточно знаком ни с клиентским, ни с серверным программным обеспечением, чтобы предложить альтернативный метод. Wireshark дает объективное представление о происходящем.
Смотрите мое недавнее редактирование.
Я добавил тест с ответом на мой вопрос. Устанавливаю значение dataChangeFilterDeadbandType, но у меня возникает ошибка TypeConversionException.
Начиная с документации, dataChangeFilterDeadbandType по умолчанию равен нулю.
Я попытался установить для dataChangeFilterDeadbandType значение 0 или 1 и другие значения, но получил ту же ошибку.
Проведенные испытания:
Тест_6
ВХОДНЫЕ ПАРАМЕТРЫ ЗАПРОСА:
dataChangeFilterTrigger = StatusValue
dataChangeFilterDeadbandValue = 10
dataChangeFilterDeadbandType = 0
РЕЗУЛЬТАТ
Главная причина:
Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger with value 0 due to org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger] for value [0]
Полная трассировка стека:
2024-07-05 08:37:36,335 main INFO - [c.b.f.j.QuartzRoutingJobService] - START OPCUA route config
2024-07-05 08:37:36,366 main INFO - [c.b.f.j.QuartzRoutingJobService] - END Scanning routes
2024-07-05 08:37:36,642 main INFO - [o.a.c.h.Http11NioProtocol] - Stopping ProtocolHandler ["http-nio-8080"]
2024-07-05 08:37:36,658 main INFO - [o.a.c.c.StandardService] - Stopping service [Tomcat]
2024-07-05 08:37:36,658 main INFO - [o.s.b.a.l.ConditionEvaluationReportLogger] -
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-07-05 08:37:36,689 main ERROR - [o.s.b.SpringApplication] - Application run failed
org.apache.camel.FailedToCreateRouteException: Failed to create route routeDeadband: Route(routeDeadband)[From[milo-client:opc.tcp://127.0.0.1:49... because of Failed to resolve endpoint: milo-client://opc.tcp://127.0.0.1:49310?applicationName=camelopcua&applicationUri=urn%3A8409%3Atest%3Acamelopcua&dataChangeFilterDeadbandType=0&dataChangeFilterDeadbandValue=10&dataChangeFilterTrigger=StatusValue&keyPassword=xxxxxx&keyStorePassword=xxxxxx&keyStoreUrl=xxxxxx&node=RAW(ns=2;s=Channel2 SIMUL.SIM_1.BNAp1.18VGG1_1XA) due to: Error binding property (dataChangeFilterDeadbandType=0) with name: dataChangeFilterDeadbandType on bean: milo-client://opc.tcp://127.0.0.1:49310?applicationName=camelopcua&applicationUri=urn%3A8409%3Atest%3Acamelopcua&dataChangeFilterDeadbandType=0&dataChangeFilterDeadbandValue=10&dataChangeFilterTrigger=StatusValue&keyPassword=xxxxxx&keyStorePassword=xxxxxx&keyStoreUrl=xxxxxx&node=RAW(ns=2;s=Channel2%20SIMUL.SIM_1.BNAp1.18VGG1_1XA) with value: 0
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:85) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) ~[camel-core-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:728) ~[camel-core-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:594) ~[camel-core-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2385) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.service.BaseService.init(BaseService.java:78) ~[camel-api-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2021) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.service.BaseService.start(BaseService.java:105) ~[camel-api-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2040) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:212) ~[camel-core-engine-4.4.2.jar:4.4.2]
at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119) ~[camel-spring-4.4.2.jar:4.4.2]
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151) ~[camel-spring-4.4.2.jar:4.4.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:981) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.1.4.jar:6.1.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.3.jar:3.2.3]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot-3.2.3.jar:3.2.3]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) [spring-boot-3.2.3.jar:3.2.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) [spring-boot-3.2.3.jar:3.2.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) [spring-boot-3.2.3.jar:3.2.3]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) [spring-boot-3.2.3.jar:3.2.3]
at com.xx.fileservice.FileserviceApplication.main(FileserviceApplication.java:24) [main/:?]
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: milo-client://opc.tcp://127.0.0.1:49310?applicationName=camelopcua&applicationUri=urn%3A8409%3Atest%3Acamelopcua&dataChangeFilterDeadbandType=0&dataChangeFilterDeadbandValue=10&dataChangeFilterTrigger=StatusValue&keyPassword=xxxxxx&keyStorePassword=xxxxxx&keyStoreUrl=xxxxxx&node=RAW(ns=2;s=Channel2 SIMUL.SIM_1.BNAp1.18VGG1_1XA) due to: Error binding property (dataChangeFilterDeadbandType=0) with name: dataChangeFilterDeadbandType on bean: milo-client://opc.tcp://127.0.0.1:49310?applicationName=camelopcua&applicationUri=urn%3A8409%3Atest%3Acamelopcua&dataChangeFilterDeadbandType=0&dataChangeFilterDeadbandValue=10&dataChangeFilterTrigger=StatusValue&keyPassword=xxxxxx&keyStorePassword=xxxxxx&keyStoreUrl=xxxxxx&node=RAW(ns=2;s=Channel2%20SIMUL.SIM_1.BNAp1.18VGG1_1XA) with value: 0
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:830) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79) ~[camel-core-reifier-4.4.2.jar:4.4.2]
... 25 more
Caused by: org.apache.camel.PropertyBindingException: Error binding property (dataChangeFilterDeadbandType=0) with name: dataChangeFilterDeadbandType on bean: milo-client://opc.tcp://127.0.0.1:49310?applicationName=camelopcua&applicationUri=urn%3A8409%3Atest%3Acamelopcua&dataChangeFilterDeadbandType=0&dataChangeFilterDeadbandValue=10&dataChangeFilterTrigger=StatusValue&keyPassword=xxxxxx&keyStorePassword=xxxxxx&keyStoreUrl=xxxxxx&node=RAW(ns=2;s=Channel2%20SIMUL.SIM_1.BNAp1.18VGG1_1XA) with value: 0
at org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:807) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:564) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1941) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:424) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:396) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:421) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientComponent.createEndpoint(MiloClientComponent.java:45) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79) ~[camel-core-reifier-4.4.2.jar:4.4.2]
... 25 more
Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger with value 0 due to org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger] for value [0]
at org.apache.camel.spring.boot.SpringTypeConverter.convertTo(SpringTypeConverter.java:73) ~[camel-spring-boot-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvert(CoreTypeConverterRegistry.java:466) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.tryFallback(CoreTypeConverterRegistry.java:435) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:384) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertToAndStat(CoreTypeConverterRegistry.java:272) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:196) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:183) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:95) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientEndpointConfigurer.configure(MiloClientEndpointConfigurer.java:37) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:805) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:564) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1941) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:424) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:396) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:421) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientComponent.createEndpoint(MiloClientComponent.java:45) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79) ~[camel-core-reifier-4.4.2.jar:4.4.2]
... 25 more
Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger] for value [0]
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:182) ~[spring-core-6.1.4.jar:6.1.4]
at org.apache.camel.spring.boot.SpringTypeConverter.convertTo(SpringTypeConverter.java:62) ~[camel-spring-boot-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvert(CoreTypeConverterRegistry.java:466) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.tryFallback(CoreTypeConverterRegistry.java:435) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:384) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertToAndStat(CoreTypeConverterRegistry.java:272) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:196) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:183) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:95) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientEndpointConfigurer.configure(MiloClientEndpointConfigurer.java:37) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:805) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:564) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1941) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:424) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:396) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:421) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientComponent.createEndpoint(MiloClientComponent.java:45) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79) ~[camel-core-reifier-4.4.2.jar:4.4.2]
... 25 more
Caused by: java.lang.IllegalArgumentException: Cannot convert String [0] to target class [org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger]
at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:222) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:64) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:50) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.convert(GenericConversionService.java:409) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41) ~[spring-core-6.1.4.jar:6.1.4]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:182) ~[spring-core-6.1.4.jar:6.1.4]
at org.apache.camel.spring.boot.SpringTypeConverter.convertTo(SpringTypeConverter.java:62) ~[camel-spring-boot-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvert(CoreTypeConverterRegistry.java:466) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.tryFallback(CoreTypeConverterRegistry.java:435) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:384) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertToAndStat(CoreTypeConverterRegistry.java:272) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:196) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:183) ~[camel-base-4.4.2.jar:4.4.2]
at org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:95) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientEndpointConfigurer.configure(MiloClientEndpointConfigurer.java:37) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:805) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:564) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1941) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:424) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:396) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:421) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.component.milo.client.MiloClientComponent.createEndpoint(MiloClientComponent.java:45) ~[camel-milo-3.22.2.jar:3.22.2]
at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730) ~[camel-base-engine-4.4.2.jar:4.4.2]
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61) ~[camel-support-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99) ~[camel-core-reifier-4.4.2.jar:4.4.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79) ~[camel-core-reifier-4.4.2.jar:4.4.2]
... 25 more
> Task :bootRun FAILED
Я неправильно установил значение формата?
Думаю, теперь вам понадобится помощь кого-нибудь, кто знаком с проектом Camel-Milo.
Проблема @KevinHerron решена.
ПРОБЛЕМА РЕШЕНА
Созданный экземпляр компонента UInteger Bean имеет значение 1 в конфигурации компонента, см. следующее:
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);
}
}
После этого правильная настройка клиента OPC UA milo.
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 с использованием синтаксиса параметров запроса
dataChangeFilterDeadbandType=#bean:DeadbandParamater
ссылка на DataChangeFilter
Проведенный тест:
посмотрите пост со снимком экрана: если я попробую с клиентом Prosys OPC UA, значение зоны нечувствительности будет работать нормально. Учтите, что обе службы (сервер и клиент OPC UA) находятся на одном компьютере. Может ли Wireshark работать, когда обе службы находятся на одном компьютере? Могу ли я иметь альтернативу, чтобы проверить то, что вы мне сказали?