Ticket #6: MQTT Sparkplug CODESYS Controller Prerequisites discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #6: MQTT Sparkplug CODESYS Controller Prerequisites discussion
Last updated: 2021-08-10
Ticket #4: Errors adding SparkPlugB to existing project? discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #4: Errors adding SparkPlugB to existing project? discussion
Last updated: 2021-08-10
Ticket #5: Various tested SparkplugB, MQTT TLS Security scenario's discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #5: Various tested SparkplugB, MQTT TLS Security scenario's discussion
Last updated: 2021-08-10
Ticket #9: Running Sparkplug at home discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #9: Running Sparkplug at home discussion
Last updated: 2021-08-10
Ticket #3: What is the difference between a Template definition and instance? discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #3: What is the difference between a Template definition and instance? discussion
Last updated: 2021-08-10
Ticket #1: What is Sparkplug in a nutshell? discussion
co⚡e: Sparkplug™ MQTT edge and host
questions
(Thread)
Ticket #1: What is Sparkplug in a nutshell? discussion
Last updated: 2021-08-10
cobolt: Artifact 6112596238b87d0b1ce05d34
co⚡e: Sparkplug™ MQTT edge and host
questions
(Bin)
Last updated: 2021-08-10
Ticket #1: What is Sparkplug in a nutshell?
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
Sparkplug is a set of definitions on top of MQTT to serve the following purposes; Defines a set of topics to ensure state/quality of data be ensured in a backend MQTT client application Defines a standard payload format that allows an edge node/device client to communicated with a backend application Defines a flow of messages to ensure the state/quality of data.2021-02-06 13:07:43.277000 Ticket #1: What is Sparkplug in a nutshell? co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/1/ Ticket mqtt sparkplug What is Sparkplug in a nutshell? False 0 2019-09-13 12:04:20.030000 1 What is Sparkplug in a nutshell? open Sparkplug is a set of definitions on top of MQTT to serve the following purposes; Defines a set of topics to ensure state/quality of data be ensured in a backend MQTT client application Defines a standard payload format that allows an edge node/device client to communicated with a backend application Defines a flow of messages to ensure the state/quality of data. False False 0 0 0 1 aliazzz None
Last updated: 2021-02-06
Ticket #2: What is the difference between Sparkplug A and Sparkplug B?
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
The 'A' and 'B' qualifiers differentiate payload encoding formats. The following points show the similarities and differences between the two: Important note! Sparkplug A has been deprecated. Both A and B use the same topic format with a qualifier as the first token in the topic namespace to denote the payload encoding format The message flow of both A and B is the same The only difference is the payload encoding format. Both formats are open source Both are based on Google Protobuf definitions Sparkplug A uses Eclipse Kura's payload definition found here: https://raw.githubusercontent.com/eclipse/kura/develop/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto Sparkplug B uses an expanded definition allowing for more metadata found here: https://raw.githubusercontent.com/Cirrus-Link/Sparkplug/master/sparkplug_b/sparkplug_b.proto2019-09-13 12:42:42.774000 Ticket #2: What is the difference between Sparkplug A and Sparkplug B? co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/2/ Ticket What is the difference between Sparkplug A and Sparkplug B? False 0 2019-09-13 12:07:02.014000 2 What is the difference between Sparkplug A and Sparkplug B? open The 'A' and 'B' qualifiers differentiate payload encoding formats. The following points show the similarities and differences between the two: Important note! Sparkplug A has been deprecated. Both A and B use the same topic format with a qualifier as the first token in the topic namespace to denote the payload encoding format The message flow of both A and B is the same The only difference is the payload encoding format. Both formats are open source Both are based on Google Protobuf definitions Sparkplug A uses Eclipse Kura's payload definition found here: https://raw.githubusercontent.com/eclipse/kura/develop/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto Sparkplug B uses an expanded definition allowing for more metadata found here: https://raw.githubusercontent.com/Cirrus-Link/Sparkplug/master/sparkplug_b/sparkplug_b.proto False False 0 0 0 2 aliazzz None
Last updated: 2019-09-13
Ticket #3: What is the difference between a Template definition and instance?
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
Q: What is the difference between a Template definition and instance? A: There are two parts to a Template Template Definition This metric will will contain all the member Metrics with their default values/properties, as well as any Parameters with their default values. This metric is always only published in the NBIRTH message Template Instance This metric is one or more "instances" of the above definition. It will contain the any member metrics with values/properties that are overridden/different from the defaults in the Template Definition. They are published as you would normal tags (BIRTH/DAT/CMD). When published in a NDATA/DDATA/NCMD/DCMD message they may only contain a subset of the member Metrics (if those are the only values that have changed) Other template fields isdefinition True for a Template Definition metric, False for a Template Instance Metric templateref This is used by a Template Instance to specify the "name" of the Template Definition ishistorical Used to mark a Template Instance (or any Metric) as a historical (rather than a live) value. MQTT Engine may handle historical Metrics differently depending on how it is configured (see MQTT Engine documentation) istransient Not currently used, will be ignored by MQTT Engine, can be omitted or set to false version Not currently used, will be ignored by MQTT Engine, can be omitted or set to null This template_samples.txt (see attachment) contains some sample template structures (in JSON) as well as some Java code for creating a Template. These should help show the basic Template structure and contain the important fields of a Template Definition and Instance. However, they are just references expressed in JSON, not actual protobuf representations (which may be a bit more verbose)2020-04-26 20:01:49.870000 Ticket #3: What is the difference between a Template definition and instance? co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/3/ Ticket What is the difference between a Template definition and instance? False 0 2020-04-26 18:35:54.354000 3 What is the difference between a Template definition and instance? open Q: What is the difference between a Template definition and instance? A: There are two parts to a Template Template Definition This metric will will contain all the member Metrics with their default values/properties, as well as any Parameters with their default values. This metric is always only published in the NBIRTH message Template Instance This metric is one or more "instances" of the above definition. It will contain the any member metrics with values/properties that are overridden/different from the defaults in the Template Definition. They are published as you would normal tags (BIRTH/DAT/CMD). When published in a NDATA/DDATA/NCMD/DCMD message they may only contain a subset of the member Metrics (if those are the only values that have changed) Other template fields isdefinition True for a Template Definition metric, False for a Template Instance Metric templateref This is used by a Template Instance to specify the "name" of the Template Definition ishistorical Used to mark a Template Instance (or any Metric) as a historical (rather than a live) value. MQTT Engine may handle historical Metrics differently depending on how it is configured (see MQTT Engine documentation) istransient Not currently used, will be ignored by MQTT Engine, can be omitted or set to false version Not currently used, will be ignored by MQTT Engine, can be omitted or set to null This template_samples.txt (see attachment) contains some sample template structures (in JSON) as well as some Java code for creating a Template. These should help show the basic Template structure and contain the important fields of a Template Definition and Instance. However, they are just references expressed in JSON, not actual protobuf representations (which may be a bit more verbose) False False 0 0 0 3 aliazzz None
Last updated: 2020-04-26
Ticket #5: Various tested SparkplugB, MQTT TLS Security scenario's
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
Hi There, This mini FAQ will to help/assist you setting up your SparkplugB MQTT TLS Channel Encryption. We have Successfully tested various scenario's using MQTT Client SL v1.0.2.0. The example will be updated shortly to accommodate these tests. Tested against library v1.3.3.0 Using example v1.3.3.0 slight modifications to the example code may apply, see below for details TLS with client certificate on server 'test.mosquitto.org'; ServerUrl := 'test.mosquitto.org'; ServerPort := 8884; KeepAlive := 60; // In seconds Username := ""; Password := ""; getClientCert.sCommonName := 'EdgeOfNetworkNode1'; getClientCert.sCountry := 'NL'; getClientCert.sOrganization := '****'; // intentionally redacted UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := TRUE; TLS without client certificate on server 'xxxxxx' ServerUrl := 'xxxxxx'; // intentionally redacted ServerPort := 8883; KeepAlive := 60; // In seconds Username := "xxxxxx"; // intentionally redacted Password := "xxxxxx"; // intentionally redacted getClientCert.sCommonName := ''; getClientCert.sCountry := ''; getClientCert.sOrganization := ''; UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := FALSE; TLS with client certificate on server 'xxxxxx' ServerUrl := 'xxxxxx'; // intentionally redacted ServerPort := 8883; KeepAlive := 60; // In seconds Username := "xxxxxx"; // intentionally redacted Password := "xxxxxx"; // intentionally redacted getClientCert.sCommonName := ''; getClientCert.sCountry := ''; getClientCert.sOrganization := ''; UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := FALSE; // Additional mandatory TLSContextProvider settings sUseCaseName := 'u1', ePurpose := SparkplugB.MQTT.NBS.Purpose.Client_Side, sHostname := 'xxxxxx', // intentionally redacted udiVerificationMode := 2); > NOTE: wait, yet more additional mandatory requirements! > Download Security Agent Package > Drag the xxxxxx certificate from SecurityAgent => Devices => Qarantine... to SecurityAgent => Devices => Trusted ~~~2020-12-28 23:14:33.698000 Ticket #5: Various tested SparkplugB, MQTT TLS Security scenario's co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/5/ Ticket TLS Security Settings Setup TLSContextProvider Various tested SparkplugB, MQTT TLS Security scenario's False 0 2020-12-28 23:03:39.916000 5 Various tested SparkplugB, MQTT TLS Security scenario's open Hi There, This mini FAQ will to help/assist you setting up your SparkplugB MQTT TLS Channel Encryption. We have **Successfully** tested various scenario's using MQTT Client SL v1.0.2.0. The example will be updated shortly to accommodate these tests. * Tested against library v1.3.3.0 * Using example v1.3.3.0 slight modifications to the example code may apply, see below for details TLS with client certificate on server 'test.mosquitto.org'; ServerUrl := 'test.mosquitto.org'; ServerPort := 8884; KeepAlive := 60; // In seconds Username := ""; Password := ""; getClientCert.sCommonName := 'EdgeOfNetworkNode1'; getClientCert.sCountry := 'NL'; getClientCert.sOrganization := '****'; // intentionally redacted UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := TRUE; TLS without client certificate on server 'xxxxxx' ServerUrl := 'xxxxxx'; // intentionally redacted ServerPort := 8883; KeepAlive := 60; // In seconds Username := "xxxxxx"; // intentionally redacted Password := "xxxxxx"; // intentionally redacted getClientCert.sCommonName := ''; getClientCert.sCountry := ''; getClientCert.sOrganization := ''; UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := FALSE; TLS with client certificate on server 'xxxxxx' ServerUrl := 'xxxxxx'; // intentionally redacted ServerPort := 8883; KeepAlive := 60; // In seconds Username := "xxxxxx"; // intentionally redacted Password := "xxxxxx"; // intentionally redacted getClientCert.sCommonName := ''; getClientCert.sCountry := ''; getClientCert.sOrganization := ''; UseTLS := TRUE; hCert := SysTypes.RTS_INVALID_HANDLE; //no client cert StillGettingClientCertificate := FALSE; // Additional mandatory TLSContextProvider settings sUseCaseName := 'u1', ePurpose := SparkplugB.MQTT.NBS.Purpose.Client_Side, sHostname := 'xxxxxx', // intentionally redacted udiVerificationMode := 2); > NOTE: wait, yet more additional mandatory requirements! > Download Security Agent Package > Drag the xxxxxx certificate from SecurityAgent => Devices => Qarantine... to SecurityAgent => Devices => Trusted ~~~ False False 0 0 0 5 hermsen None
Last updated: 2020-12-28
Ticket #6: MQTT Sparkplug CODESYS Controller Prerequisites
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
If your CODESYS controller meets the following requirements, you can use Sparkplug without any issue's At least runtime version 3.5.14.0. At least Compiler version 3.5.16.0. At least IDE version 3.5.16.0. Per PLC or PC you need an IIoT Library SL.2021-05-14 11:28:12.964000 Ticket #6: MQTT Sparkplug CODESYS Controller Prerequisites co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/6/ Ticket MQTT Sparkplug CODESYS MQTT Sparkplug CODESYS Controller Prerequisites False 0 2021-01-11 12:24:46.988000 6 MQTT Sparkplug CODESYS Controller Prerequisites open If your CODESYS controller meets the following requirements, you can use Sparkplug without any issue's At least runtime version 3.5.14.0. At least Compiler version 3.5.16.0. At least IDE version 3.5.16.0. Per PLC or PC you need an IIoT Library SL. False False 0 0 0 6 hermsen None
Last updated: 2021-05-14
Ticket #7: Public Free MQTT Brokers useful for spakplug usage
co⚡e: Sparkplug™ MQTT edge and host
questions
(Ticket)
Public MQTT Brokers The following public brokers are useful: Mosquitto MQTT Testbroker Host: test.mosquitto.org TCP Port: 1883 TLS Port: 8883 TLS with Client Certificate Port: 8884 HiveMQ MQTT Testbroker Host: broker.hivemq.com TCP Port: 1883 These broker channels are entirely open, so beware what data you share. Read Caveats for a good understanding of their service availability https://test.mosquitto.org/ for more info http://broker.hivemq.com/ for more info 2021-02-06 13:10:05.892000 Ticket #7: Public Free MQTT Brokers useful for spakplug usage co⚡e: Sparkplug™ MQTT edge and host cobolt tickets questions False /lib/cobolt/questions/7/ Ticket Public Free MQTT Brokers useful for spakplug usage False 0 2021-02-02 19:00:44.364000 7 Public Free MQTT Brokers useful for spakplug usage open Public MQTT Brokers The following public brokers are useful: Mosquitto MQTT Testbroker Host: test.mosquitto.org TCP Port: 1883 TLS Port: 8883 TLS with Client Certificate Port: 8884 HiveMQ MQTT Testbroker Host: broker.hivemq.com TCP Port: 1883 These broker channels are entirely open, so beware what data you share. Read Caveats for a good understanding of their service availability https://test.mosquitto.org/ for more info http://broker.hivemq.com/ for more info False False 0 0 0 7 hermsen None
Last updated: 2021-02-06
Post by i-campbell on Ticket #33: 50% of FB/Function will need a Unit Test discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Won't Fix reason: Moved to 2.0.0.0, see #74
Last updated: 2021-08-10
Post by hermsen on Ticket #102: Paylaod: refactor discussion
co⚡e: Sparkplug™ MQTT edge and host
tickets
(Post)
Yeah, but since CODESYS3 does not support method overloads, we still need to provide some sort mechanism (trick) that will support these parallel calls. I am thinking about a base Metric class with two separate inherited implementations. Liskov polymorphism principle says these are interchangeable. Get Outlook for Androidhttps://aka.ms/ghei36 From: tickets@mqttsparkplugb.prj.forge.codesys.com tickets@mqttsparkplugb.prj.forge.codesys.com on behalf of i-campbell forge@codesys.com Sent: Friday, December 18, 2020 2:12:42 PM To: Ticket #102: Paylaod: refactor 102@tickets.mqttsparkplugb.prj.forge.codesys.com Subject: [mqttsparkplugb:tickets] #102 Paylaod: refactor [tickets:#102] Paylaod: refactor Status: open Milestone: 2.0.0.0: Protobufs full Labels: Payload Improvement Created: Fri Dec 18, 2020 01:12 PM UTC by i-campbell Last Updated: Fri Dec 18, 2020 01:12 PM UTC Owner: i-campbell At the moment, there is a relatively complex structure for adding metrics and its subobjects to a Device, and then later to a payload. You have to add all of the pools of objects, and pass these between the FB's. Some issues: 1. The calls for each Object are quite a lot of lines of code, with up to 10 different pools needed. 2. Some people might accidentally add a metric to two different owners. So the proposal is for each object to have an interface to register its children. The children then use this interface as an input, and register themselves. Note that a Metric may have two owners, a Device and a Payload. Payload Implements IPaylaod Metric.itfOwner := Payload; Or myMetric : Metric := (itfOwner := Paylaod); or myMetric(itfOwner := Payload); Also take into consideration that the SCADA node might actually want the freedom of Pool Objects, ie it might still want MetricsPool. This might mean making two seperate calls available. Sent from forge.codesys.com because you indicated interest in https://forge.codesys.com/prj/mqttsparkplugb/tickets/102/ To unsubscribe from further messages, please visit https://forge.codesys.com/auth/subscriptions/
Last updated: 2021-08-10
wiki Discussion
ates
wiki
(Discussion)
Forum for wiki comments
Last updated: 2021-07-24
blog Discussion
ates
blog
(Discussion)
Forum for blog comments
Last updated: 2021-07-24
Home
ates
wiki
(WikiPage)
This is the personal project of ates. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 2021-07-24
(no subject)
ates
wiki
(Thread)
Last updated: 2021-07-24