Я разрабатываю маршрут Apache Camel, который должен создать сервер OPC UA с тремя переменными. Маршрут также должен инициализировать эти три значения.
Я попытался сделать это так, как это описано в официальной документации Apache Camel. Я могу подключиться к серверу с любым клиентом OPC UA и посмотреть значения.
Это код моего маршрута:
<route id="opcuaserver">
<from uri="timer://runOnce?repeatCount=1&delay=5000"/>
<to uri="milo-server:velocity"/>
<to uri="milo-server:laufmeter"/>
<to uri="milo-server:lfm_reset"/>
<!-- INITIALIZE OPCUA SERVER VARIABLES -->
<setHeader headerName="serverUrl">
<simple>opc.tcp://NBTC363:12685</simple>
</setHeader>
<setBody>
<simple>
ns=2;s=items-velocity?0
ns=2;s=items-laufmeter?0
ns=2;s=items-lfm_reset?0
</simple>
</setBody>
<bean ref="OpcuaBean" method="doWriteOneOrMany"/>
<log message="${body}"/>
<to uri="mock:opcuaInitResult"/>
</route>
Информация в заголовке и теле обрабатывается моим bean-компонентом в соединение с сервером и список идентификаторов узлов и их желаемых значений. Затем этот список используется для окончательной записи желаемых значений на сервер. После завершения процесса записи компонент записывает полученные коды состояния в журнал верблюда.
Ожидаемый результат — успешная запись на сервер с таким сообщением StatusCode:
[StatusCode{name=Good, value=0, quality=good}
Но на самом деле значение на сервере по-прежнему равно null с типом данных null, что приводит к следующему коду состояния:
[StatusCode{name=Good, value=0x00000000, quality=good}
Я знаю, что это указывает на то, что я все сделал правильно на стороне клиента, поэтому мне интересно, сделал ли я что-то не так на стороне сервера. Я следил за примерами компонента сервера opc для верблюдов и не нашел никаких опций или параметров, которые кажутся мне полезными в этом вопросе.