Post by i-campbell on Ticket #98: install notes: update docs when Debian release with Mosquitto v2 discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Currently Ubuntu (Hirsute Hippo) is shipping with Mosquitto v2. Debian still uses V1.x. A good alternative for the documentation might be: HiveMQ Cloud. They offer a free tier for 100 devices but with no SLA. One advantage would be that you would not have to install linux, but users who want a free and open source on-premises solution may need to look elsewhere.
Last updated: 2021-08-10
Post by i-campbell on Ticket #11: FB_Payload discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: pending --> closed
Last updated: 2021-08-10
Post by hermsen on Ticket #108: TLS: use the new TLSContext to allow verification of the server certificate discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
ItfTLSContextProvider is being implemented in v1.3.3.0 in personal branch
Last updated: 2021-08-10
Post by hermsen on Ticket #16: Implement SparkPlugB Device discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: open --> accepted assigned_to: h-hermsen
Last updated: 2021-08-10
Post by hermsen on Ticket #14: Example project for a Node discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
To my knowledge this ticket is completed
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 @@ -15,10 +15,10 @@ Pass a single instance of SimpleObject to the Encoder. * [ ] AddMetric( Timestamp, SimpleObject ) // It is not mandatory for the SimpleObject to be part of a list. -* * [ ] AddMetric( Timestamp, ListOfSimpleObjects ) // Passes a prepared list of SimpleObjects to the encoder Apart from these methods it contains various interactions / diagnosis + * [ ] Diag // Diagnosis * [ ] Encode // Start Encoding * [ ] Encoded // Is encoding finished?
Last updated: 2021-08-10
Post by hermsen on Ticket #135: Project Homepage: Update guides discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -3,4 +3,4 @@ [ ] [Set up Test Server](https://forge.codesys.com/prj/mqttsparkplugb/home/Set%20up%20test%20system/) - rename to setup a test system with Ignition Primary Host Add the following guides: -[ ] setting up a test environment with a co⚡e primary host +[X] setting up a test environment with a co⚡e primary host
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)
Hmmm... So google protobufs is some code. You give it a .proto file and it writes some code. This code you include in an application. - There is a lot going on there! Of course, we (the users of the library) want in the device only IEC code. So I think we don't need to implement "taking a .proto file and converting it to some code" in IEC (actually we don't need it at all). really there is only one .proto file we are interested in. Maybe a future wish, but it adds no value. Really the way I see the solution is this: SparkplugB spec says "here is a .proto file. It completely describes a binary encoding" So all we need to do is write some IEC code to: setup a particular memory layout(s). (one time on PLC startup) Update the data of that layout(s). Move this payload to the MQTT Publisher before sending. Distribute that data when the MQTT Subscriber gets its payload. For unit testing I would: Create test data using for example python protobufs, covering all (most) of the use cases. So a table of "If data structure is this AND data value is this THEN binary blob looks like this" Write the same data structures and data value combos in IEC. Do the transform. Does IEC blob = expected blob. And for the subscriber: * Write the same data structures and store the blob in IEC. Do the inverse transform. Do all data values = expected data values? There may even be already some Sparkplug B transform test cases lying on github somewhere.
Last updated: 2021-08-10
Post by i-campbell on Ticket #70: MQTT: Subscribers outputting "Client not connected to broker" discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Owner: aliazzz --> h-hermsen
Last updated: 2021-08-10
Post by aliazzz on Ticket #45: FB_SimplePayloadEncoder: all unit tests all return a 37KB payload, even the small ones discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
moving the FB declaration(s) to the method itself in VAR_STAT
Last updated: 2021-08-10
Post by i-campbell on Ticket #47: list.removecomponents: it uses a while loop that causes headaches discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: open --> closed
Last updated: 2021-08-10
Post by i-campbell on Ticket #91: Protobufs: support communicating to buggy implementations discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Implemented in r597. GVL_sparkplugB.IWantBuggyUInt32s : BOOL; controls the behaviour The encoding for Parameters, PropertyValues, DataSetValues is not yet complete, so leaving this issue open until it is complete.
Last updated: 2021-08-10
Post by i-campbell on Ticket #113: PrimaryHost: Dispose of unwanted objects discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Moved to 3.0.0.0. The use case would be if you are running low on memory AND you happen to have removed enough devices that disposing of their objects will make a difference. This is a rare enough use case that restarting the application seems like a reasonable workaround, at least for the 2.0.0.0 release.
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 @@ -21,7 +21,7 @@ Apart from these methods it contains various interaction methods and diagnosis * [x] Diag // Diagnosis -* [x] Encode // Start Encoding +* [x] Encode( Enable ) // Start Encoding if Enable = TRUE, Stops encoding if enable = FALSE * [x] Encoded // Is encoding finished? * [x] EncoderBusy // Is the encoder busy? * [x] EncoderError // An error occured
Last updated: 2021-08-10
Post by aliazzz on Ticket #4: Create session state management for EoN Node discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
summary: Create State Machine for Sparkplug B EoN Device --> Create session state management for EoN Node Description has changed: Diff: --- old +++ new @@ -1,7 +1,5 @@ -The Eon device interacts with the MQTT server via a state machine +The Eon device interacts with the MQTT server in a session. +The session state management is well described in the techref. PDF. -The state machine is well described in the techref. PDF - -We should build a mock state machine as starters for our test. - -Use CfUnit for any unit/functional testing of the state machine +This session state management can be implemented via a state machine. +Or if the state machine is 'simple' we can choose to implement is via simple binary logic.
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 @@ -1,7 +1,7 @@ FB_SparkplugB_SimpleEncoder This function block acts as a Helper to reduce work for FB_EoN. -The FB contains a protobuf blob encoder and various methods to quickly create (compose and/or encode) various messages. +The FB contains a protobuf blob encoder and various methods to quickly create (compose and/or encode) various messages. Since this FB is of the 'simple' variant, it can can only deal with the SimpleObjects type. Messages which are mandatory for this FB are: @@ -10,14 +10,14 @@ * [ ] Device Death Message * [ ] Device Birth Message -Since this FB is of the simple variant, it can can only deal with the SimpleObjects type. - Pass a single instance of SimpleObject to the Encoder. * [ ] AddSimpleMetric( Timestamp, SimpleObject ) // It is not mandatory for the SimpleObject to be part of a list. -* [ ] AddMetricList( Timestamp, ListOfSimpleObjects ) // Passes a prepared list of SimpleObjects to the encoder -Apart from these methods it contains various interactions / diagnosis +// Pass a prepared list of SimpleObjects to the Encoder. +* [ ] AddMetricList( Timestamp, ListOfSimpleObjects ) + +Apart from these methods it contains various interaction methods and diagnosis * [ ] Diag // Diagnosis * [ ] Encode // Start Encoding @@ -28,8 +28,12 @@ * [ ] GetBDSeqNum * [ ] getSeqNum * [ ] Private UpdateTimeStamp // called continously to update the internal timestamp, maybe not neccesary as the timestamp can be updated ad-hoc -* [ ] GetEncodedBlob // returns the encoded blob to the customer +Last but not least it should provide the end user with a way to obtain the protobuf encoded blob in order to publish it under the correct Sparkplug Topic +* [ ] GetEncodedBlobViaAdress( BlobAdr, BlobSize ) +* [ ] GetEncodedBlobVia** -NOTE +** Any other ways to reurn the blob? ** + +NOTE 1 When this FB is finished we can take a look to separate it's design into a Core and an extension for the Simple part. That way we can expand without code duplication for the 'Advanced metrics' part
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)
Description has changed: Diff: --- old +++ new @@ -1 +1,2 @@ Implement DCMD similar to NCMD in [#89] + assigned_to: h-hermsen
Last updated: 2021-08-10
Post by hermsen on Ticket #71: MQTT: Subscribers outputting "No Error" but xError is true discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Still an issue in the MQTT Client SL library, but it is not effecting the running of the Sparkplug. Therefore, moved to backlog.
Last updated: 2021-08-10
Post by i-campbell on Ticket #53: FB_EoN: PublishNodeBirth discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Description has changed: Diff: --- old +++ new @@ -4,3 +4,5 @@ NBIRTHTopic := WCONCAT( **_LastWillTopic**, FW_SLASH); NBIRTHTopic := WCONCAT( **_LastWillTopic**, NodeName); _LastWillTopic should be NBIRTHTopic + +Additionally, as NODE_BIRTH_TOPIC := "/NBIRTH/" you don't need the line with FW_SLASH (otherwise it becomes spBv1.0/NBIRTH//myNodeName
Last updated: 2021-08-10
Post by i-campbell on Ticket #136: Edge seems to publish "empty" payloads discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
status: pending --> closed
Last updated: 2021-08-10
Post by hermsen 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)
send msg size checked > g_udiMaxPayloadSize send msg size checked <= 0 log warning with appropriate message Recv buffer should get a separate ticket in SVP phase
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_DeviceID --> FB_RemoteDeviceID Description has changed: Diff: --- old +++ new @@ -1 +1 @@ -FB_DeviceID scans and allocates detected devices +FB_RemoteDeviceID scans and allocates detected devices
Last updated: 2021-08-10
Post by i-campbell on Ticket #128: new implementation of FB_EdgeMQTT client discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
assigned_to: h-hermsen
Last updated: 2021-08-10
Post by i-campbell on Ticket #129: Edge: SFC itterator discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
labels: Edge --> status: open --> closed
Last updated: 2021-08-10