Post by aliazzz on Ticket #5: FB_EoN_Node discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -1,11 +1,21 @@ -This FB should form the basis for every Sparkplug B device. +This FB should form the basis for every Sparkplug B Node. + +There can be several Sparkplug B Nodes in a network. +Every Sparkplug B Node can have any number of devices (0..N), but the Node itself is singular. +It bridges between the MQTT Broker and device(s), sensor(s) and IO(s) An implementation can be made after the IEC "Google Protobufs' ticket has been Addressed. - Suggestions for a lean and mean but proper readable implementation are welcome. - I'd suggest we try to follow/translate a library example provided by SparkplugB. ---------------------- - -It bridges between the MQTT Broker and device(s), sensor(s) and IO(s) +~~~ +FB_EoN_Node + FB_Init() + Initialise() + onConnect() + onMessage() + publishBirth() + publishDeviceBirth() + publishNodeBirth() + SessionState() +~~~
Last updated: 2021-08-10
Post by i-campbell on Ticket #106: AWS IoT Core Support discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
The clientID is generated internally: https://forge.codesys.com/prj/mqttsparkplugb/code/HEAD/tree/trunk/mqttsparkplugb/mqttsparkplugb/SparkplugB/Function%20Blocks/FB_Edge_Of_Network_Node/FB_Edge_Of_Network_Node_1/Initialise/svnobj It takes the 23 rightmost characters of Concat(groupID, nodeID) There is a FB in the sparkplug library GetClientCert. I am not sure but it might be able to get the client cert you have already created.
Last updated: 2021-08-10
Post by i-campbell on Ticket #11: FB_Payload discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -1 +1,41 @@ -Implementation of FB_Payload +Initial Implementation of FB_Payload: +Will support a statically generate array for decoding and encoding the following. +Payload.metrics[].name +Payload.metrics[].alias +Payload.metrics[].timestamp +Payload.metrics[].datatype +Payload.metrics[].is_historical +Payload.metrics[].is_transient +Payload.metrics[].is_null +Payload.metrics[].metadata.is_multi_part +Payload.metrics[].metadata.content_type +Payload.metrics[].metadata.size +Payload.metrics[].metadata.seq +Payload.metrics[].metadata.file_name +Payload.metrics[].metadata.file_type +Payload.metrics[].metadata.md5 +Payload.metrics[].metadata.description +Payload.metrics[].properties.keys[] +Payload.metrics[].properties.values[].type +Payload.metrics[].properties.values[].is_null +Payload.metrics[].properties.values[].int_value +Payload.metrics[].properties.values[].long_value +Payload.metrics[].properties.values[].float_value +Payload.metrics[].properties.values[].double_value +Payload.metrics[].properties.values[].boolean_value +Payload.metrics[].properties.values[].string_value +Payload.metrics[].int_value +Payload.metrics[].long_value +Payload.metrics[].float_value +Payload.metrics[].double_value +Payload.metrics[].boolean_value +Payload.metrics[].string_value +Payload.metrics[].bytes_value +Payload.seq +Payload.uuid +The following will not be allowed implemented, and will set .xEncodeError or .xDecodeError if you try to use them: +Payload.metrics[].template_value +Payload.metrics[].dataset_value +Payload.metrics[].properties.values[].propertyset_value +Payload.metrics[].properties.values[].propertysets_value +The following is not intended to be implemented: extensions
Last updated: 2021-08-10
Post by aliazzz on Ticket #53: FB_EoN: PublishNodeBirth discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
fixed in v0.0.0.21
Last updated: 2021-08-10
Post by i-campbell on Ticket #6: How to implement “Google Protobufs” serialization/deserialization ? discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
The dragon is but a bearded dragon.
Last updated: 2021-08-10
Post by aliazzz on Ticket #41: Add SparkplugB.T_DateTime ALIAS for ULINT discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
type added, but still need to REFACTOR the entire library!
Last updated: 2021-08-10
Post by aliazzz on Ticket #2: clone Cirrus Logic Git Repo discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: open --> closed
Last updated: 2021-08-10
Post by i-campbell on Ticket #62: Sparkplug Birth Death Sequence: Should it MOD 256? discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
according to the Java example, it does do MOD 256. So, we will leave the code as is.
Last updated: 2021-08-10
Post by hermsen on Ticket #118: FB_RemoteDevice discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
summary: FB_RemoteDeviceID --> FB_RemoteDevice Description has changed: Diff: --- old +++ new @@ -1 +1 @@ -FB_RemoteDeviceID scans and allocates detected devices +FB_RemoteDevice scans and allocates detected devices
Last updated: 2021-08-10
Post by i-campbell on Ticket #95: Versions: Downgrade to 3.5.14.0 discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
assigned_to: i-campbell
Last updated: 2021-08-10
Post by i-campbell on Ticket #11: FB_Payload discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -6,13 +6,13 @@ Progress (Implemented, not tested): Get Set Encode Decode [x] [x] [x] [x] Payload.timestamp -[x] [x] [ ] [ ] Payload.metrics[].name -[x] [x] [ ] [ ] Payload.metrics[].alias -[x] [x] [ ] [ ] Payload.metrics[].timestamp -[x] [x] [ ] [ ] Payload.metrics[].datatype -[x] [x] [ ] [ ] Payload.metrics[].is_historical -[x] [x] [ ] [ ] Payload.metrics[].is_transient -[x] [x] [ ] [ ] Payload.metrics[].is_null +[x] [x] [x] [x] Payload.metrics[].name +[x] [x] [x] [ ] Payload.metrics[].alias +[x] [x] [x] [x] Payload.metrics[].timestamp +[x] [x] [x] [x] Payload.metrics[].datatype +[x] [x] [x] [ ] Payload.metrics[].is_historical +[x] [x] [x] [ ] Payload.metrics[].is_transient +[x] [x] [x] [ ] Payload.metrics[].is_null [x] [x] [ ] [ ] Payload.metrics[].metadata.is_multi_part [x] [x] [ ] [ ] Payload.metrics[].metadata.content_type [x] [x] [ ] [ ] Payload.metrics[].metadata.size @@ -35,13 +35,13 @@ [x] [x] [ ] [ ] Payload.metrics[].properties.values[].propertysets_value.propertyset[]. //(RECURSIVE PROPERTIES) Payload.metrics[].properties.values[].extension_value //none Payload.metrics[].properties.extensions[] //none -[x] [x] [ ] [ ] Payload.metrics[].int_value -[x] [x] [ ] [ ] Payload.metrics[].long_value -[x] [x] [ ] [ ] Payload.metrics[].float_value -[x] [x] [ ] [ ] Payload.metrics[].double_value -[x] [x] [ ] [ ] Payload.metrics[].boolean_value -[x] [x] [ ] [ ] Payload.metrics[].string_value -[x] [x] [ ] [ ] Payload.metrics[].bytes_value +[x] [x] [x] [x] Payload.metrics[].int_value +[x] [x] [x] [x] Payload.metrics[].long_value +[x] [x] [x] [x] Payload.metrics[].float_value +[x] [x] [x] [x] Payload.metrics[].double_value +[x] [x] [x] [x] Payload.metrics[].boolean_value +[x] [x] [x] [x] Payload.metrics[].string_value +[x] [x] [x] [ ] Payload.metrics[].bytes_value [x] [x] [ ] [ ] Payload.metrics[].dataset_value.num_of_columns [x] [x] [ ] [ ] Payload.metrics[].dataset_value.columns[] [x] [x] [ ] [ ] Payload.metrics[].dataset_value.types[]
Last updated: 2021-08-10
Post by i-campbell on Ticket #11: FB_Payload discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -54,19 +54,19 @@ Payload.metrics[].dataset_value.rows[].elements[].extension_value //none Payload.metrics[].dataset_value.rows[].extensions[] //none Payload.metrics[].dataset_value.extensions[] //none -[x] [x] [ ] [ ] Payload.metrics[].template_value.version -[x] [x] [ ] [ ] Payload.metrics[].template_value.metrics[]. //(RECURSIVE Metrics) -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].name -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].type -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].int_value -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].long_value -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].float_value -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].double_value -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].boolean_value -[x] [x] [ ] [ ] Payload.metrics[].template_value.parameters[].string_value +[x] [x] [x] [x] Payload.metrics[].template_value.version +[x] [x] [x] [x] Payload.metrics[].template_value.metrics[]. //(RECURSIVE Metrics) +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].name +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].type +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].int_value +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].long_value +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].float_value +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].double_value +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].boolean_value +[x] [x] [x] [x] Payload.metrics[].template_value.parameters[].string_value Payload.metrics[].template_value.parameters[].extension_value //none -[x] [x] [ ] [ ] Payload.metrics[].template_value.template_ref -[x] [x] [ ] [ ] Payload.metrics[].template_value.is_definition +[x] [x] [x] [x] Payload.metrics[].template_value.template_ref +[x] [x] [x] [x] Payload.metrics[].template_value.is_definition Payload.metrics[].template_value.extensions[] //none Payload.metrics[].extension_value.extensions[] //none [x] [x] [x] [x] Payload.seq status: accepted --> pending
Last updated: 2021-08-10
Post by aliazzz on Ticket #41: Add SparkplugB.T_DateTime ALIAS for ULINT discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
summary: Add SparkplugB.DATETIME ALIAS for ULINT --> Add SparkplugB.T_DateTime ALIAS for ULINT
Last updated: 2021-08-10
Post by i-campbell on Ticket #37: FB_MQTTPUBSUB : Before sending a payload, ensure that MQTT.MQTTParam.g_udiMaxPayloadSize and g_udiMaxPacketSize are appropriately set discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
In the current version of the MQTT Client library, a received payload too big will Error the MQTTClient without Error Message. Sending a payload too big will result in an Access Violation. So we should definitely error check the payload is smaller than the g_udiMaxPayloadSize.
Last updated: 2021-08-10
Post by aliazzz on Ticket #39: FB_SparkplugB_SimpleEncoder discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -5,16 +5,16 @@ Messages which are mandatory for this FB are: -* [ ] Node Death Certificate -* [ ] Node Birth Certificate -* [ ] Node Data -* [ ] Device Death Certificate -* [ ] Device Birth Certificate -* [ ] Device Data +* [x] Node Death Certificate +* [x] Node Birth Certificate +* [x] Node Data +* [x] Device Death Certificate +* [x] Device Birth Certificate +* [x] Device Data Pass a list of every All Metrics Which Will Ever Reported on during this "Lifetime". (1) -* [ ] UpdateListOfMetricsWhichWillEverReportedOn( ListOfMetricsWhichWillEverReportedOn ) +* [x] UpdateListOfMetricsWhichWillEverReportedOn( ListOfMetricsWhichWillEverReportedOn ) Note 1 This Method can be used to pass the entire list of metrics which will ever be @@ -33,7 +33,7 @@ Pass a single instance of SimpleObject to the Encoder. (2) -* [ ] AddSimpleMetric( Timestamp, SimpleObject ) +* [x] AddSimpleMetric( Timestamp, SimpleObject ) Note 2 This method accepts a single SimpleObject deliberatly, to keep burnerplate code low @@ -43,7 +43,7 @@ Pass a prepared list of SimpleObjects to the Encoder. (3) -* [ ] AddMetricList( Timestamp, ListOfSimpleObjects ) +* [x] AddMetricList( Timestamp, ListOfSimpleObjects ) Note 3 This method accepts a List of SimpleObject, this way you can send multiple values status: accepted --> pending
Last updated: 2021-08-10
Post by i-campbell on Ticket #28: FB_Payload.ClaimNextFree* should initialize for you discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: accepted --> closed
Last updated: 2021-08-10
Post by hermsen on Ticket #114: Refactor anything "SparkplugB" into "Sparkplug" discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Sufficiently refactored
Last updated: 2021-08-10
Post by i-campbell on Ticket #44: example project: theirPayloadDecoder.GetNextMetric.metricvalid stays false discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: accepted --> closed
Last updated: 2021-08-10
Post by hermsen on Ticket #136: Edge seems to publish "empty" payloads discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -6,7 +6,7 @@ {"timestamp":1619874081095,"metrics":[],"seq":218} ~~~ -Replication: Set GenerateDataTimer to e.g. T#60s whilst keeping publishPeriod to e.g. 500, +Replication: Set GenerateDataTimer to e.g. T#60s whilst keeping publishPeriod to e.g. 500 1) Find root cause of this unwanted and unnecessary sending of empty payloads, 2) Suggest and implement a suitable fix. status: open --> accepted
Last updated: 2021-08-10
Post by hermsen on Ticket #92: FB_Device: Digest DCMD discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: open --> accepted
Last updated: 2021-08-10
Post by hermsen on Ticket #89: EoN: Digest NCMD discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
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.
Last updated: 2021-08-10
Post by i-campbell on Ticket #106: AWS IoT Core Support discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
My understanding is it should be compatible now. You will just have to handle the certificates yourself. One of the test cases in the example shows how to generate CSRs, you just need to get it signed by AWS. I will have a look tonight and either give you an example, or if not then an estimate of remaining work.
Last updated: 2021-08-10
Post by aliazzz on Ticket #6: How to implement “Google Protobufs” serialization/deserialization ? discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: open --> accepted assigned_to: i-campbell
Last updated: 2021-08-10
Post by hermsen on Ticket #136: Edge seems to publish "empty" payloads discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -1,5 +1,11 @@ The edge publishes somehow publishes payloads that are valid but empty i.e; -Payloads contain timestamp and a valid seqnum but the metrics section is empty. +Payloads contain timestamp and a valid seqnum, but the metrics section is empty; + +~~~ +{"timestamp":1619874081095,"metrics":[],"seq":218} +~~~ + +Replication: Set GenerateDataTimer to e.g. T#60s whilst keeping publishPeriod to e.g. 500, 1) Find root cause of this unwanted and unnecessary sending of empty payloads, 2) Suggest and implement a suitable fix.
Last updated: 2021-08-10