From 4a7324cc325bba32c037f0e2547e3ae8e3766d33 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 28 Oct 2024 11:06:46 +0100 Subject: [PATCH 1/2] Wait for one second for Serial to open, otherwise proceed with startup. The purpose of this commit is to ensure that the system runs through initialisation at power-up, even if no one opens a serial connection. --- examples/opta_opcua_server/opta_opcua_server.ino | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/opta_opcua_server/opta_opcua_server.ino b/examples/opta_opcua_server/opta_opcua_server.ino index 63ddc93..5b4ea27 100644 --- a/examples/opta_opcua_server/opta_opcua_server.ino +++ b/examples/opta_opcua_server/opta_opcua_server.ino @@ -105,9 +105,8 @@ static PinStatus arduino_opta_digital_read(pin_size_t const pin) void setup() { Serial.begin(115200); - //auto const start = millis(); - //for (; !Serial && (millis() - start) < 1000; ) { } - while (!Serial) { } + auto const start = millis(); + for (; !Serial && (millis() - start) < 1000; ) { } #if USE_MODBUS_SENSOR_MD02 RS485.setDelays(MODBUS_PRE_DELAY_BR, MODBUS_POST_DELAY_BR); From 6713ec6ca2b40f7d0ce68d34d4adc1d5ac8b2b34 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 28 Oct 2024 11:10:47 +0100 Subject: [PATCH 2/2] Periodically print ip and port of OPC UA enabled Opta device. --- examples/opta_opcua_server/opta_opcua_server.ino | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/examples/opta_opcua_server/opta_opcua_server.ino b/examples/opta_opcua_server/opta_opcua_server.ino index 5b4ea27..d4ac486 100644 --- a/examples/opta_opcua_server/opta_opcua_server.ino +++ b/examples/opta_opcua_server/opta_opcua_server.ino @@ -514,6 +514,15 @@ void loop() digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); delay(500); + /* Periodically print OPC UA server IP and port. */ + static auto prev_ip_print = millis(); + auto const now = millis(); + if ((now - prev_ip_print) > 5000) + { + UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "Arduino Opta IP: %s", Ethernet.localIP().toString().c_str()); + prev_ip_print = now; + } + #if USE_MODBUS_SENSOR_MD02 if (!ModbusRTUClient.requestFrom(MODBUS_DEVICE_ID, INPUT_REGISTERS, MODBUS_DEVICE_TEMPERATURE_REGISTER, 1)) { Serial.print("failed to read temperature register! ");