Digest NCMD data and update .Value(s)
Update example, for how to deal with variables which may be written by the user code or written by the NCMD from the Sparkplug Host.
Ensure values which are written by NCMD are later published by an NDATA, if the new value is accepted.
Ensure values which are written by NCMD are later published by an NDATA, if the new value is accepted.
This is 'by-design' if we implement them accordingly.
1) If a user application 'setpoint' is changed (written), the change is reflected to the Host.
2) If a sparkplug Host writes this same 'setpoint' via a NCMD, the user application 'setpoint' is changed and reflected to the Host.
On writing;
3) Writing (changing the setpoint value) should always occur in a 'triggered' fashion and never continuously. Both the user application and via NCMD should follow the 'trigger/write once' principle.
Implemented in the library.
Works with the current mqttsparkplugb-example.project, but strings are always overwritten by the application code.
todo:
[ ] currently the NCMD payload is limited to 255 bytes. this should be another variable length array for the user to build.
[x] adjust mqttsparkplugb-example.project to point to new library.
[x] adjust mqttsparkplugb-example.project. Modify strings so they can demonstrate NCMD
[x] update https://forge.codesys.com/prj/mqttsparkplugb/home/Add%20SparkplugB%20to%20existing%20CODESYS%20project/ to describe how to set up read tags, write tags and read write tags. (Task moved to example-project issue)
[x] create a similar issue for implementing DCMD in a similar fashion.