FreeOpcUa / python-opcua

LGPL Pure Python OPC-UA Client and Server
http://freeopcua.github.io/
GNU Lesser General Public License v3.0
1.35k stars 658 forks source link

Writing variables to ABB IRC5 controller using set_value() function #1532

Open Engeenur opened 10 months ago

Engeenur commented 10 months ago

I am having problems with using the node.set_value() function. I keep getting a "The value supplied for the attribute is not of the same type as the attribute"s value."(BadTypeMismatch) error. I can change the variable value with the Softing OPC UA Client software.

I tried all sorts of things: dv = 1.0 self.start_flag_node.set_value(dv)

dv = opcua.ua.DataValue(opcua.ua.Variant(3.0, opcua.ua.VariantType.Double)) dv.ServerTimestamp = None dv.SourceTimestamp = None self.start_flag_node.set_value(dv)

dv = opcua.ua.Variant(3.0, opcua.ua.VariantType.Double) self.start_flag_node.set_value(dv)

and probably some others.

No matter what I do I still get the same error. The DataType of variable that the Softing OPC UA Client detects this node to have is a Double (i=11).

schroeder- commented 10 months ago

Are you using asyncua or python opcua? Because from the module names it looks you are using the old library.

If you are using python opcua try first to switch to asyncua with either async oder use the syncwrapper.

schroeder- commented 10 months ago

Also this is the easiest solution works only asyncua:

dv = 1.0
self.start_flag_node.set_value(ua.Double(dv))
Engeenur commented 10 months ago

@schroeder- thank you. I am still using the old library. Do you know if i have to make a new certificate for my python client if i'm going to use the new one?

schroeder- commented 10 months ago

The certificate can be the same, on both libraries.