Errors
When an action fails, the message goes to output 2. msg.payload.findings is the list of error messages. Each error message is { field, message }: the field that is wrong, and what is wrong. The running session does not change, except when the text says so.
The log of the node shows the same text, for example connect failed: endpoint: the server address must start with opc.tcp://.
In the tables, a word in <angle brackets> is a value that the node puts in the text.
Error messages of a message
| Field | Error message | Cause | What to do |
|---|---|---|---|
action | must be one of <actions> | The action of the message is missing or unknown. | Set msg.action to one of the listed values, in lower case. |
endpoint | the endpoint <id> is not found. Choose an endpoint in the dialog and deploy. | The endpoint of the node is not deployed. | Choose an endpoint in the dialog. Deploy. |
licence | the text of the licence, or licence check failed: <reason> | Connect and Reset need a Professional licence. | Install a Professional licence. |
config | <action> does not use msg.config. Remove msg.config or send an empty one. | Reset, Disconnect, Get the settings and Get the status take no values. | Remove msg.config, or send {}. |
mode | reset does not use msg.mode. A reset always goes back to all the endpoint settings. | A Reset with msg.mode. | Remove msg.mode. |
mode | must be "merge" or "replace" | Another value in msg.mode. | Use merge or replace. |
config | must be an object | msg.config is not an object. | Send an object, for example { endpoint: "opc.tcp://host:4840" }. |
config | cannot be read from this message | The node cannot read msg.config. | Send a plain object. |
<field> | unknown field | msg.config holds a field that the node does not know. | Correct the name. See Send values in a message. |
<field> | cannot be set by a message | The field is fixed. | Change it in the endpoint node. See Safety. |
ifRevision | the settings changed after you read them. The revision is <n>, not <m>. Read the settings again. | Another message changed the settings. | Send Get the settings again, and use the new revision. |
ifRevision | must be the revision number of the settings | msg.ifRevision is not a whole number, 0 or more. | Send the revision of Get the settings. |
Error messages of the server address
| Field | Error message | Cause | What to do |
|---|---|---|---|
endpoint | this is not a valid server address. Example: opc.tcp://host:4840 | The text is not an address. | Correct the address. |
endpoint | the server address must start with opc.tcp:// | Another scheme, for example http://. | Use opc.tcp://. |
endpoint | the server address must have a port, for example opc.tcp://host:4840 | No port. | Add the port. |
endpoint | the server address must not hold a user name or a password. Use the login fields. | An address such as opc.tcp://user:pass@host:4840. | Put the user name and the password in userName and password. |
endpoint | IPv6 addresses are not supported yet | The host is an IPv6 address. | Use a name or an IPv4 address. |
endpoint | must be a non-empty string of at most <n> characters | The address is empty or too long (more than 2048 characters). | Correct the address. |
endpoint | the server <host:port> is not in Allowed servers of this node (<n> <rules>). Add a rule for it, or use another server. | No rule of Allowed servers allows this server. | Add a rule, or use an allowed server. See Safety. |
endpoint | the server <address> does not answer (<reason>) | The host does not accept a TCP connection. | Check the address, the port, the network and the server. |
endpoint | cannot get the list of security settings from the server (<reason>) | The server does not answer GetEndpoints. Check gives this error message. Connect gives only a warning. | Check the server. |
userIdentityType | required when the server address moves to another host or port | The message changes the host or the port, and gives no login. | Add userIdentityType, and the fields of that login. |
Error messages of the security and the login
| Field | Error message | Cause | What to do |
|---|---|---|---|
securityMode, securityPolicy | must be one of <values> | An unknown security mode or policy. | Use one of the listed values. |
securityPolicy | a security policy is necessary with securityMode <mode> | Sign and SignAndEncrypt need a policy. | Set securityPolicy, for example Basic256Sha256. |
securityMode | the server does not offer <mode> (<list>) | The server does not offer this mode. | Use a mode that the server offers. Check lists them. |
securityPolicy | the server does not offer <mode> with <policy> (<list>) | The server does not offer this policy with this mode. | Use a policy that the server offers. |
userIdentityType | the server does not accept <login type> with <security> (it accepts: <list>) | The server does not accept this login with this security. | Use a login type that the server accepts. |
securityMode | a user name login needs Sign or SignAndEncrypt. With None, the password is not encrypted. | A user name login with the mode None. | Use Sign or SignAndEncrypt. |
userIdentityType | required when the message carries a login field (<fields>) | The message has a login field, but no login type, and the dialog has none. | Add userIdentityType. |
userIdentityType | must be "Anonymous", "UserName" or "Certificate" | An unknown login type. | Use one of the listed values. |
<field> | not used with userIdentityType "<type>" | A field that does not belong to the login type, for example a password with Anonymous. | Remove the field. |
userName, password | must be a non-empty string of at most <n> characters | Empty or too long. | Correct the value. |
Error messages of the user certificate
| Field | Error message | Cause | What to do |
|---|---|---|---|
userCertificate, userPrivatekey | must be a non-empty PEM text | No PEM text. | Send the PEM text. |
userCertificate, userPrivatekey | must be at most <n> characters | The PEM text is too long (more than 16384 characters). | Send a shorter text. |
userCertificate | must hold exactly one PEM certificate (BEGIN CERTIFICATE), without a chain | A chain, or no certificate. | Send one certificate only. |
userCertificate | holds a private key. Put the key in userPrivatekey. | The key is in the wrong field. | Move the key to userPrivatekey. |
userCertificate | is not a valid PEM certificate | The text cannot be read. | Send a correct PEM certificate. |
userCertificate | the public key of the certificate must be an RSA key (EC and Ed25519 keys are not supported) | An EC or Ed25519 certificate. | Use an RSA certificate. |
userCertificate | the certificate expired on <date> | The certificate has expired. | Use a valid certificate. |
userCertificate | the certificate is not valid before <date> | The certificate is not valid yet. | Use a valid certificate. |
userPrivatekey | is not a usable PEM private key. Use PKCS#8 or PKCS#1, encrypted or not. | The text is not a private key. | Send a correct PEM key. |
userPrivatekey | must be an RSA key (EC and Ed25519 keys are not supported) | An EC or Ed25519 key. | Use an RSA key. |
userPrivatekey | does not match the certificate | The key belongs to another certificate. | Send the key of this certificate. |
userPrivatekeyPassphrase | required: the private key is encrypted | No passphrase for an encrypted key. | Add the passphrase. |
userPrivatekeyPassphrase | wrong passphrase, or the private key is damaged | The passphrase does not open the key. | Correct the passphrase or the key. |
userPrivatekeyPassphrase | this private key is not encrypted. Remove the passphrase. | A passphrase with a key that is not encrypted. | Remove the passphrase. |
Error messages of the advanced settings
| Field | Error message | Cause | What to do |
|---|---|---|---|
maxRetry, initialDelay, maxDelay | must be an integer from <min> to <max> | A value outside the bounds. | Use a value in the bounds. See Advanced settings. |
maxRetry | must be at least 1: with 0 a lost connection is never repaired | maxRetry: 0. | Use 1 or more. |
maxDelay | must be greater than initialDelay (<n>): node-opcua cannot back off from a delay to the same one | maxDelay is not more than initialDelay. | Increase maxDelay. |
namespaceAliases | must be an array of { alias, namespaceUri } | The table is not an array. | Send an array. |
namespaceAliases, subscriptions | must hold at most <n> entries | The table is too long (more than 64 entries). | Send fewer entries. |
namespaceAliases[i].alias | must be a name of at most <n> letters, digits and underscores, not starting with a digit | A wrong alias. | Correct the alias. |
namespaceAliases[i].alias | the same alias is in namespaceAliases[<j>] | Two entries with the same alias. | Keep one entry. |
namespaceAliases[i].namespaceUri | must be a non-empty namespace uri of at most <n> characters | An empty or long URI. | Correct the URI. |
namespaceAliases[i].namespaceUri | a message cannot set a URI that starts with "~" (a pattern) | A pattern in place of a URI. | Use the full namespace URI. |
subscriptions[i].id | the endpoint has no subscription with this id. A message cannot add or remove a subscription. | An unknown id. | Use an id that Get the settings lists. |
subscriptions[i].id | the same id is in subscriptions[<j>] | Two entries with the same id. | Keep one entry. |
subscriptions[i].parameters.<name> | a message cannot set this value. The publishing interval, the keep-alive count and the lifetime count work together. | A fixed parameter. | Change it in the endpoint node. |
subscriptions[i].parameters.publishingEnabled | must be true or false | Another value. | Use true or false. |
Error messages of the connection
| Field | Error message | Cause | What to do |
|---|---|---|---|
connection | <cause>. The previous settings are in use again. | The new session did not open, and the node used the previous settings again. | Read the cause. Correct the settings. |
connection | the switch did not end within <n> s (the cause above) | The new server did not open a session in 20 s. | Check the server. Send Connect again. |
validate | a check is already running for this endpoint. Try again in a moment. | Two Check messages at the same time. | Send the second Check later. |
node | a text | An unexpected error. | Report it to Sterfive support. |
Errors of the client nodes
These errors come from a Read, Write, Call or other client node of the endpoint, not from the Endpoint Control node.
| When | Error message | What to do |
|---|---|---|
| An Endpoint Control node changes the session now. | the connection is changing to new settings. Try again in a moment. | Send the message again later. A Catch node gets the message. |
| After a Disconnect. | an endpoint control node closed the connection. Send Connect or Reset to that node to open it again. | Send Connect or Reset to the Endpoint Control node. |
Warnings in the log
| When | Warning | What to do |
|---|---|---|
| Deploy: a line of Allowed servers is not a rule. | Allowed servers: line(s) <lines> are not rules. They match no server (<n> in all). | Correct the line. See Safety. |
| Deploy: a flow file edited by hand holds a secret in the node. | "<field>" is stored in this node and is ignored. A password, a passphrase, a certificate and a private key come in the message only. | Remove it from the flow file. Send it in the message. |
| Deploy: the node holds a field that the dialog does not have. | "<field>" is stored in this node and is ignored. The dialog does not have this field. | Remove it from the flow file. |
| Deploy: an old flow holds values that the dialog does not have now. | These stored values are ignored: <fields>. The dialog does not have them now. Send them in a message (msg.config, msg.mode, msg.ifRevision). | Send them in a message. |
| Deploy: a value of the dialog is wrong. | The dialog value <field> is not valid: <text>. A message that needs this value gets an error message. | Open the dialog and correct the value. |
| Deploy: the dialog sets a server that Allowed servers does not allow. | The server address of the dialog is not in Allowed servers: <text> | Correct the server address or Allowed servers. |
The first message with another msg.action than the fixed action. | This node is set to "<action>". It ignores msg.action (<value>). To read the action from the message, set Action to "Let the message decide". This warning shows once. | Remove msg.action, or set Action to "Let the message decide". |
| Connect could not get the endpoint list of the server. It continues. | <text>. The settings were not checked against the server. | If the session does not open, check the server. |