Добрый день. При попытке управления через scada или opc ua клиент не получается менять значения виртуальных устройств и включать / выключать buzzer. В шлюзе все включено, и все видно на scade и opc клиенте, но при попытке изменить в логах контроллера выдает:
|04-06-2025 09:24:06.632 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|—|—|
|04-06-2025 09:24:06.509 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|04-06-2025 09:24:06.260 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|04-06-2025 09:24:06.135 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|04-06-2025 09:24:05.890 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|04-06-2025 09:24:05.764 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
|04-06-2025 09:24:05.395 [wb-mqtt-opcua]|INFO: [OPCUA] session: SecureChannel 6 | Session ns=1;g=813fbee7-5c16-9bde-c69c-e97e5c65d61d | WriteRequest returned status code BadNotWritable|
Контроллер AQA6U3RD unstable.latest 8.5.1D/4GR 1.3.3A-4G2
Один раз получилось как то это победить, но после перезагрузки снова возникло.
Выявил закономерность, если включить или выключить ( если ранее был включен) “Интервал проверки соединения” то все начинает работать до следующего перезапуска.
Добрый день!
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.
приложен диагностический архив, доступен только сотрудникам поддержки
(396,2 КБ)
Благодарю, потребуется некоторое время на ответ.
Добрый день.
Видно что при запуске wb-mqtt-opcua контрол еще не был создан:
Jun 04 11:07:29 wirenboard-AQA6U3RD wb-mqtt-opcua[1870]: ERROR: [OPCUA] Can't get data type for node 'buzzer/volume'. Fallback to BaseDataType.
Jun 04 11:07:29 wirenboard-AQA6U3RD wb-mqtt-opcua[1870]: ERROR: [OPCUA] Control is not found 'buzzer/volume'
Jun 04 11:07:29 wirenboard-AQA6U3RD wb-mqtt-opcua[1870]: ERROR: [OPCUA] Control is not found 'buzzer/volume'
Соответственно:
Jun 04 11:19:26 wirenboard-AQA6U3RD wb-mqtt-opcua[1870]: INFO: [OPCUA] session: SecureChannel 2 | Session ns=1;g=05cea46f-ba7e-826f-eb4e-f43fe96e6686 | WriteRequest returned status code BadNotWritable
Jun 04 11:19:56 wirenboard-AQA6U3RD wb-mqtt-opcua[1870]: INFO: [OPCUA] session: SecureChannel 2 | Session ns=1;g=05cea46f-ba7e-826f-eb4e-f43fe96e6686 | WriteRequest returned status code BadNotWritable
Если wb-mqtt-opcua запускается при уже опубликованном контроле - то корректно читает его тип.
Описал баг, отдал разработчикам.
А как то по таймеру можно сделать перезагрузку шлюза, как временное решение?
Вполне, да.
Например после запуска через минуту выполнить systemctl restart wb-mqtt-opcua
.
Хоть из wb-rules, описав таймер на 20 секунд:
SetTimeout(function{
//тут вызов внешней команды.
}), 20000);
То есть как временное решение можно сделать так ?
setTimeout(function() {
runShellCommand(“systemctl restart wb-mqtt-opcua”)
.then(function(output) {
log(“OPC-UA service restarted successfully. Output:”, output);
})
.catch(function(error) {
log(“Error restarting OPC-UA service:”, error);
});
}, 20000);
Да, вполне. Но
без “capturedOutput” вернет только (всегда удачны) результат.
Вот тут описано: GitHub - wirenboard/wb-rules: Rule engine for Wiren Board
Ну и пример c выводом: Скрипт для пингования хоста
Бага в работе, пока не исправлено.