co⚡e: Sparkplug™ MQTT edge / Progress Blog: Recent posts

5 november 2022: updated roadmap and project direction

Update on the project direction

Since the beginning of this project we knew it would take us time. However if we knew how big it really would be I highly doubt we'd ever start it. So as our sparetime is getting thinner and thinner so we scoped our ambitions down accordingly.
Therefore our Xperimental Primary Host will be dropped from the roadmap altogether.
However a special peer-2-peer version of the Edge to enable machine to machine communication will still be on the roadmap.... read more

Posted by hermsen 2022-11-05

2 july 2022: updated TCK test results

After running the newly updated TCK kit, we seem to have a good result with our EoN (Edge of Network or simply Edge) and Device. We will put effort in polishing and final release.


Posted by hermsen 2022-07-02

8 apr 2022: Switch to SP18

With ticket [#158] we plan to start using SP18 development environment and compiler version.

The current library progress will be saved in a way that can be accessed in V3.5 SP16 Patch 1 or newer. And then future development will be done in SP18.

The new compiler version brings some enhancements which will make the library faster and use less application memory such as native UTF8 support, and contains some more features like VAR_GENERIC which would be useful for datasets. Also it has the latest bug fixes. We are also interested in exploring the HTML5 controls feature for the host, when that is released.

Posted by i-campbell 2022-04-08

18 feb 2022: First TCK Test RUN Results

First TCK Test RUN Results

Sparkplug TCK

This is the Sparkplug Test Compatibility Kit (TCK) or test suite.
It is an independent third party provided compatibility kit to test our Edge Of Network and Device library against. Further details are found at

Conclusion of our first TCK Test RUN

At least 2 FAILS seem on first glance QUICK fixes.
So, overall we think that we are on the right path but we also see room for improvements. ... read more

Posted by hermsen 2022-02-18

9 jan 2022 Getting to know our userbase

We have launched a subforum for discussion about our library.
Our first topic is about: who uses our library and why?
Please feel free and share your succes with us.
See thread:

Posted by hermsen 2022-01-09

15 dec 2021: Unittesting with clear HTML / XML feedback

The unittest code of coBolt has been expanded with a userfriendly and clear to use html interface. The single webpage clearly display's the overall testresult, the details per testsuite and result per individual test. We hope to integrate this feature into a future version of coUnit. For now it is project related add-on.

Posted by hermsen 2021-12-15

21 nov 2021: Edge now supports WebSockets


We are proud to announce the Edge now also supports WebSockets and Proxy settings.
We do have TLS for WebSockets implemented, however we haven't been able yet to
validate its working yet? So we cannot guarantee the correct working for TLS websockets or proxied traffic for now. If you can verify it, please let us know!

  • Edge
  • ws:// uri : port (no TLS) verified
  • wss:// uri : port (TLS) implemented but not verified
  • Proxy Settings implemented but not verified
Posted by hermsen 2021-11-21

04 nov 2021: Alias mechanism looks promising

We managed to implement the Use Alias mechanism in the Edge and devices. This feature will be enabled by default but if wished could be disabled by the user. Why do you want to disable it anyway? Here is why not!

By disabling it you get poorer bandwidth usage i.e. you send more bytes over the line, encoding/decoding will be a slightly bit slower. Last but not least, disabling aliases takes more performance in finding a metric on its name...... read more

Posted by hermsen 2021-11-04

31 oct 2021: Edge Nodes are now able to send Metric Properties.

Edge Nodes are now able to send Metric Properties.

A property or a set of properties can now be assigned to a Metric. This means that for instance an analog value can now be decorated with properties like "Min Value", "Max Value", "unit", etc etc.
The property is scanned for changes just like the value, however since properties are mostly static in nature, the overhead of the properties in communication is negligible.

Posted by hermsen 2021-10-30

16 oct 2021: co🔗e: A Linked List Solution has been born!

Splitting the library has yielded a new separate library!
We proudly present!

co🔗e: A Linked List Solution

A free and open object oriented Linked lists solution.
Linked Lists are especially suitable to implement simple, modular and powerful code with ease.
#co🔗e: A Linked List Solution

Basicly the library contains a List FB and an Element FB with accompanying interfaces. The List can be instantiated directly but the Element need to be 1) extended or 2) implement the interface in a composition way. Our advice would be to choose option 2) composition, as that will give you the most flexibility in your software.

Posted by hermsen 2021-10-16 Labels: Library co🔗e Linked List colist co co5e

10 oct 2021: splitting the library

So today was not very productive.... I achieved NADA while waiting on my machine to plough through the SparkplugB library. This seriously takes away any fun I had. I am willing to postpone any ticket in favour of dividing the library into three partsSo today was not very productive.... I achieved NADA while waiting on my machine to plough through the SparkplugB library. This seriously takes away any fun I had. I am willing to postpone any ticket in favour of dividing the library into three parts.... read more

Posted by hermsen 2021-10-10

8 Oct 2021: we have finished svn to git conversion

We finally managed to convert all the svn repo's to git. We had to drop our wish to convert them with historical information as this is currently technically not achievable within the CODESYS ecosystem. We have given this as feedback to CODESYS and they have acknowledged this which suggests they will 'plug' the hole in some form or another.

All we can do is wait for the next update for CODESYS git v1.1.0.0 which will be released before the end of this year. I really look forward to see which new cool features are implemented!... read more

Posted by hermsen 2021-10-07

20 sep 2021: Migration succes

After a good month of time we finally migrated to lib/cobolt! 💪
Special thankx to @ingo!

Posted by hermsen 2021-09-20

22 aug 2021: Migration


Migration to our new place on Forge has started since 2 aug. A monsterous endevour which consumes way more time then anticipated due to technical aspects. Luckily the unittesting solution has been migrated but Sparkplug B consumes way more effort.


The current bottleneck is a non willing SVN repository. We want to copy it from A to B with the entire history. Nothing special so you think, right?... read more

Posted by hermsen 2021-08-13

11 may 2021: Public Preview of CODESYS based SparkplugB PrimaryHost Node now available for download

Since we did a "forced" revision on the Edge and Device, we now are reaping the benefits of that revision in the Primary Host node. Development of the standard version of Primary Host Node is now in such a stage that we feel confident to show a preview.

You can find a fully working preview example with a preview version of standard "Primary Host Node" and fully working standard version of "Edge and Device" in the downloads section.

Posted by hermsen 2021-08-13

31 mar 2021 : Major updates for Edge / Device and Primaryhost

The primaryhost, edge & devices now use a common 'FB_Metric' Function Block.
Usage of host-, edge-, and device-metrics is equalised which helps simplify and streamline your code significantly.
Edges and Devices publish data predictably and reliably, because of a major overhaul to the publish data notification architecture.
The change has proven to work outstandingly with large amounts of payload data in combination with a sub second update rate.
The Primaryhost utilizes this mechanism for sending NCMD's or DCMD's in due time.
Some bugs in the Device still exist and will be dealt with first.

Posted by hermsen 2021-08-13

5 mar 2021: CODESYS based Primary Host node sneak preview

The CODESYS based Sparkplug Primary Host acts as a lightweight CODESYS alternative to Ignition's Primary Host Node (Primary SCADA). Any compatible CODESYS runtime can be turned into a Primary Host and can detect any connected Edge Of Network node, Device, Metrics and capabilities associated, just like Ignition's Primary SCADA Host can!
Since we will (obviously) not implement a full fledged SCADA in the PLC, you can bring your own SCADA aka BYOS. Just install a SCADA of your favorite choice on a machine somewhere in your architecture and connect it with the CODESYS Primaryhost. No SCADA? No problem! You can always run a local target or web visualisation in the CODESYS controller on top of your project or even do both!... read more

Posted by hermsen 2021-08-13